> Uses ubershaders to guarantee no stutters due to pipeline compilation. I may sound way out of the loop here, but... How come this was never a problem for older dx9/dx11/GL games and emulators?
RT64: N64 graphics renderer in emulators and native ports
21–30 of 54 posts
Re: RT64: N64 graphics renderer in emulators and native ports
#22> Uses ubershaders to guarantee no stutters due to pipeline compilation. I may sound way out of the loop here, but... How come this was never a problem for older dx9/dx11/GL games and emulators?
Re: RT64: N64 graphics renderer in emulators and native ports
#23> Uses ubershaders to guarantee no stutters due to pipeline compilation. I may sound way out of the loop here, but... How come this was never a problem for older dx9/dx11/GL games and emulators?
https://www.unrealengine.com/en-US/tech-blog/game-engines-an...
Re: RT64: N64 graphics renderer in emulators and native ports
#24Earlier quoted context omitted.
Older games used precompiled shaders. These are inaccessible to the game devs and usually handled by the hardware makers, so the platform OEM for consoles and the video card OEM on PCs. Game devs have begged for the ability to write their own shaders for years and finally got it with DX11 and Vulkan. And that's when things went to hell. Instead of the shaders being written and compiled for the specific hardware, they…
Compiling shaders directly from a high level representation to the GPU ISA only really happens on consoles. In DirectX on PC, shaders have been compiled into an intermediate form going back to Direct3D 8. All of these intermediate forms are lowered into an ISA-specific instruction set by the drivers. This final compilation step is triggered lazily when a draw happens, so if you are working on a "modern" engine that u…
No, that's not correct. In fact, it's mostly the other way around. Consoles have known hardware and thus games can ship with precompiled shaders. I know this has been done since at least PS2 era since I enjoy taking apart game assets.
While on PC, you can't know what GPU is in the consumer device.
For example, Steam has this whole concept of precompiled shader downloads in order to mitigate the effect for the end user.
Re: RT64: N64 graphics renderer in emulators and native ports
#25Earlier quoted context omitted.
Compiling shaders directly from a high level representation to the GPU ISA only really happens on consoles. In DirectX on PC, shaders have been compiled into an intermediate form going back to Direct3D 8. All of these intermediate forms are lowered into an ISA-specific instruction set by the drivers. This final compilation step is triggered lazily when a draw happens, so if you are working on a "modern" engine that u…
> Compiling shaders directly from a high level representation to the GPU ISA only really happens on consoles. No, that's not correct. In fact, it's mostly the other way around. Consoles have known hardware and thus games can ship with precompiled shaders. I know this has been done since at least PS2 era since I enjoy taking apart game assets. While on PC, you can't know what GPU is in the consumer device. For example…
That's what I said. Consoles ship GPU machine code, PCs ship textual shaders (in the case of OpenGL) or some intermediate representation (DXIL, DXBC, SPIRV, ...)
Re: RT64: N64 graphics renderer in emulators and native ports
#26I guess the big test will be running Kaze Emanuar’s code through it.
For those who haven't heard, Kaze is the guy who optimized Mario 64's code, fixed some physics bugs, etc., claims roughly 6x speedup, so that he can make a mod / ROM-hack that runs smoother despite having better graphics: https://www.youtube.com/watch?v=t_rzYnXEQlE
Re: RT64: N64 graphics renderer in emulators and native ports
#27Earlier quoted context omitted.
It predates dolphin's use of it, though don't ask me by how long. Here's a reference to the term from 2008: https://realtimecollisiondetection.net/blog/?p=73
Ubershader actually has three different opposite meanings, unfortunately. The classic usage is a single source shader which is specialized using #define's and compiled down to hundreds of shaders. This is what Christer uses in that blog post above (and Aras does as well in his ubershader blog post) Dolphin used it to mean a single source shader that used runtime branches to cover all the bases as a fallback while a s…
Re: RT64: N64 graphics renderer in emulators and native ports
#28I guess the big test will be running Kaze Emanuar’s code through it.
For those who haven't heard, Kaze is the guy who optimized Mario 64's code, fixed some physics bugs, etc., claims roughly 6x speedup, so that he can make a mod / ROM-hack that runs smoother despite having better graphics: https://www.youtube.com/watch?v=t_rzYnXEQlE
I don't think he uses either one in serious code, but if he did, good luck emulating it.
Re: RT64: N64 graphics renderer in emulators and native ports
#29Earlier quoted context omitted.
For those who haven't heard, Kaze is the guy who optimized Mario 64's code, fixed some physics bugs, etc., claims roughly 6x speedup, so that he can make a mod / ROM-hack that runs smoother despite having better graphics: https://www.youtube.com/watch?v=t_rzYnXEQlE
And discovered you could disable cache writeback to have a region of fast RAM without bus contention, and ways to use the hidden 9th bit in each byte which is only usd by certain graphics framebuffer operations. I don't think he uses either one in serious code, but if he did, good luck emulating it.
Re: RT64: N64 graphics renderer in emulators and native ports
#30Here's a 2022 video that shows it in action https://www.reddit.com/r/Games/comments/v42611/dario_on_twit...