Debugging a 3D graphics bug in an emulator
supermodel3.com
supermodel3.com
For those curious about the architecture and the various discoveries Ian and others have made, I invite you to peruse the Supermodel development forum: http://www.supermodel3.com/Forum/viewforum.php?f=7
One of the more exciting things Ian has figured out is how the Model 3 handles transparency: http://www.supermodel3.com/Forum/viewtopic.php?f=7&t=1523
Long ago I used this in a protein visualization where you could select individual atoms (with 100s of thousands on the screen). I definitely would not want to promise a ray-sphere test that guarantees pixel-perfect consistency with the render forever.
Generally rendering Geo + Fill is cheap, it's the complex shaders and post that tend to drag down your GPU. Heck, if you're doing GPU occlusion culling you're basically doing the same idea but for rendering whole objects.
You can also do this every 1/10 frames or so to keep overhead low. UE3 and a bunch of game editors use this technique pretty extensively.
Adding one more draw call for mouse interaction, especially one that requires no shading at all, is a pretty minimal additional cost.
It's what developers went to after the even more classic GL_SELECT render mode was removed.
It's not suitable to happen every frame because the CPU stall waiting on the frame to render is unacceptable. Most engines will do a CPU raycast into the scene. I don't know why that you say it wouldn't be pixel-perfect, because it should be. The math will work out.
When you're dealing with GPUs you're never dealing with just the math. Various vendors make shortcuts in the name of performance so there's a good chance your raycast code doesn't match 100%.
Seen this a lot with "golden image" tests, one vendor's rendered scene has bunch of inconsistencies with another vendor's(or different driver version) causing sporadic test failures.
[0] https://docs.microsoft.com/en-us/windows-hardware/drivers/di...
If it’s game code, how is it so readable in its disassembled form? I may be really misunderstanding but I’d love to hear about how they are modifying the game code so cleanly if that’s what’s happening.
Edit: pretty sure this is a fix to the cpu emulator.