Posted February 08, 2009


I'm not terribly impressed with Valves programming in general, so my guess would be that they simply forgot about it during development. The thing with mirrors is that they introduce a second rendering queue into the process. Basically, you turn all objects around, render that, then render the normal level over it with the mirror surface being transparent (or you can do it with framebuffer textures, but that doesn't work too well on PCs as framebuffer access is usually pretty slow on anything before the current generation of graphics cards). Whichever way you chose, you have to reininitialize the engine to the new view point and depending on the kind of optimizations you employ (specifically, how aggressively you generate nodes in the BSP tree), the reinitialization can take a while and in the worst case flush out objects that are needed for the current view, which would then have to be reloaded. If you didn't think about that when you started doing the optimizations, it can be pretty hard to add them lateron.