3 ms·
PBR shaders are not trivial. It's incredible to me that they are readily available in all the shader languages, for free. Your common gamer thinks that the game
by moron4hire 6y ago
PBR shaders are not trivial. It's incredible to me that they are readily available in all the shader languages, for free. Your common gamer thinks that the game engine is responsible for the quality of graphics in a game. This is hugely untrue. The quality is largely down to how well the art assets have been authored to take advantage of PBR. And that tech is, for all practical purposes, free (in both senses of the word).
My only gripe with modern day graphics documentation is the huge gap in any guidance on building a well-performing rendering pipeline. There are hundreds of tutorial series that get you as far as rendering a single, lit, textured, normal mapped model. But managing multiple models, multiple lights, different types of materials, takes a very different design for resource management and is basically ignored.
The current situation is certainly better than it was 20, even 10, years ago. But that last, missing piece is pretty vital.
- dexwiz 6y agoI spent a lot of time reading this literature as an outsider to graphics development this summer. I agree resource management is the real engineering problem and the graphics code itself is the idealized code that is relatively small in comparison. My conclusion is that resource management across different hardware is a secret sauce that helps individual engines push the limits of the current generation. Listening to interviews with developers, and they rarely talk about a novel lighting formulas. Instead they talk about squeezing in high res textures or more colors. How they managed so many assets or faked a reflection. I imagine the work is incredibly tedious and makes browsers differences look trivial. Differences between hardware is largely how memory can be mapped between CPU, shared, and GPU memory.
- midnightclubbed 6y agoDid you look at Unreal engine? The entire source is open to examine and modify (registration required). Resource management can be a really big chunk of the core game engine. One reason there is less documentation is that there is generally not one right way to do it. Different games have very different requirements and solutions that work for one game/genre will hurt performance (or team productivity) for another. One infamous example was the EA Superman game which was developed using the Madden NFL engine. At a very top level that may have been a good idea (battle tested Multiplatform engine with great character rendering). The game requirements of long draw distances, scripted gameplay, and detailed city environments were (very sensibly) not something the engine had been designed for and so became enormous issues for the Superman team.
- moron4hire 6y ago> One reason there is less documentation is that there is generally not one right way to do it. Yes, but the way that most OpenGL tutorials leave you at by the time you're done is distinctly the wrong way. > Different games have very different requirements and solutions that work for one game/genre will hurt performance (or team productivity) for another. I wouldn't say different games have very different requirements. Different genres of games have different requirements. We can make a lot of assumptions about flight simulators versus real time strategy games, for example. There doesn't even seem to be that level of discussion: what the particular tradeoffs are, where, why, and when you'd want to take them.