▲ | defen 3 days ago | |
> possibly because the industry took the path he was advocating against back in the day What path did he advocate? And what path did the industry take instead? | ||
▲ | jasonwatkinspdx 2 days ago | parent [-] | |
Well way back in the day there was the old Direct3D vs OpenGL debate, where Carmack heavily favored an open standard and ecosystem. And what ended up happening is NVIDIA just has defacto control of things now. But more technically, when he was experimenting with what became the Doom 3 engine, he favored a model of extending the basic OpenGL state machine to be able to do lots of passes with a wider variety of blending modes. Basically, you get "dumb" triangles, but can render so many billions of them per frame you build up visual complexity, shadows, lighting, etc that way. The other model has its roots in Renderman and similar offline rendering frameworks. Here a small shader kernel is invoked per vertex and per fragment. Your shader can run whatever code it wants subject to some limitations. So you get "smart" triangles, and build up complexity, shadows, lighting, etc through having complex shaders. The shadow algorithm used in Doom 3 is a great example of the difference. Doom 3 figures out the shadow volume, and renders it as triangles with the OpenGL modes set such that how many shadow volumes a given pixel intersects is recorded in the stencil buffer. Then you can render the scene geometry with a blending mode where the stencil selects if you're inside shadow or not. This is in contrast to shadow map style algorithms, where you render from the PoV of the light into a depth buffer, then inside your fragment shader you sample that shadow map to figure out if the fragment is occluded from the light or not. Anyhow, Doom 3 is the only major game to use stencil volume shadows afaik. And not to hang Carmack's dissatisfaction on just that alone, I think it is clear he didn't want a graphics world where NVIDIA was running everything. I also think not being able to keep up with Unreal Engine's momentum was maybe part of it too. |