Hi, I wish the following Webgl features were added:
- Continue working with Google by providing what they asked to fix shader compiling stutter bug at https://issues.chromium.org/issues/40685460 - this is unfixed because of Unity not responding to request since Dec 16, 2020 11:19PM
- Help browser developers by participating in fixing other shader compiling stutter issues:
https://bugzilla.mozilla.org/show_bug.cgi?id=918941
Chromium issues 40508951, 40814782 - VAO - vertex array objects - this will reduce amount of slow webgl commands issued when changing vertex streams formats
- Sampler objects - the same for texture sampling modes (ancient UE4 webgl export did that already years ago)
- UBO for all renderers - BIRP, URP, UI renderers, particles, etc - this will get rid of multiple slow small set uniform calls (ancient UE4 webgl export did that already years ago for some parts of renderer)
- Unlock instancing and batching limits - currently there is a limit of amount of vertices per batch, and limit of instances in instancing - provide configurable options and make limits higher
- Use WEBGL_multi_draw extension - this will allow drawing many models with many lods with many materials in 1 draw call, if all geometry is in one big array buffer, using the same shader and all textures are in texture arrays. (According to Khronos Group presentations for Webgl this gives 10-60x performance increases).
- Ability to remove contents of packaged builds by providing textual lists of files to cut (as in UE)
- InEditor support for building DXT and ASTC packages with textures only, while models and sounds are in “commondata” package (already supported partially in UE4 github branches)
- Add an API to allow developing own graphic backends if you plan to continue keeping making small efforts on WebGL
- Merge changes from Chinese branch of Unity 2022 Tuanjie, which adds new c# .net version support, tools to minimize builds, memory and asset optimizations.
- Ability to remove from the build: global-metadata.dat (starts from 3426kb), unity default resources (1590kb depends on build configuration), URP XR AR VR stuff
- Add ability to unpack the builds and see which garbage got inside.
- Add ability to specify additional emscripten flags like -o2, -fno-rtti (add this as default)
- Contact emscripten and binaryen developers to inform them that in some compiling and optimization passes their tools work only in single-threaded mode, especially in LTO and wasmopt stages
- Fix the loading bar on brotli and gzip by hardcoding downloaded data sizes in the JS/HTML so loading bar works on every build configuration correctly by calculating against correct amount of downloaded/total data
- Cut everything XR AR VR related from shaders and resources.
- Make .mp3 as the only and default option, play it directly with web audio api and don’t decode (this format is the most compatible among all devices), AAC is not.
- Fix the video player to also support HTML5 sources, thoroughly test against all supported formats and fill bug reports to browser vendors as needed (hanging .mp4 playback in Chrome)
- Fix input by providing an option to auto summon keyboard on tapping the edit field AND add virtual keyboard example implementation, fix long standing bugs
- Add support for Web worker based multithreading for those HTML5 gaming platforms which forbid using SharedArrayBuffer due to its vulnerabilities, or due to inability to develop correct CORS policies for isolated ad frames and payment system frames (currently everything is based on emscripten’s pthread library, which needs SharedArrayBuffer)
- Add new C# backends + .net 10 + NativeAOT (2 new compilers emerged)
- Make stripping of WASM automatic and efficient, current 4-6mb brotli sizes are much higher than download sizes of modern WASM engines.
- Add modern 2d and 3d physics engines, not the old and buggy PhysX, or at least upgrade to Nvidia Multiverse Physics.
- Dedicate 1 WebGL developer to visiting Khronos Group events to keep the engine up-to-date with modern features.
- Make internal JSON de-(se-)rializer exposed and make it compatible with all Unity types, so we do not need external packages for this because of their build sizes.
- Ensure that both data and wasm files in all compression modes (none, gzip, brotli) and in all configurations with both decompression fallback on/off are cached in various browsers starting from at least Chrome 100.
- Make shader graph shaders smaller - simple lit shader inside .data file is 200kb.
- Make BIRP PostProcess shader smaller - it is 1 mb now.
Regards!