Can someone explain like I’m 5 the process to build shaders for a release build? I don’t understand why this is something that I have to do manually rather than the engine or some batch file, and I’m not sure how to do it correctly. The tutorial explaining the steps is too vague. I don’t care about shaders and barely know what they are, I just want a release build.
Here is what I think is happening but I really have no idea:
Every time a frame is drawn, a (or many) shader is calculated to determine how to color things in the frame. A lot of these shaders wind up being reusable, but calculating them is expensive. The game can calculate them at runtime but it’ll slow things down. It’s better to generate as many as possible beforehand.
Therefore when the tutorial at http://docs.aws.amazon.com/lumberyard/latest/userguide/game-build-release.html gives this vague advice:
Generate the shader list by opening Lumberyard Editor and navigating through the levels that you want to ship while in game mode until all the shaders are generated.
What it means is “go into your levels and move the camera around and try to get every weird angle and condition possible”. But I still don’t understand. I go into the level and move the camera around all the time. Has lumberyard been generating shaders this whole time? There is no special step to like, “start collecting shader data”. How do I know when “all shaders are generated”? Isn’t it kind of impossible to generate ALL shaders? It says that the editor puts shaders into Cache/PROJECTNAME/pc/user/cache/shaders/shaderlist.txt. If I look at this file for my project it hasn’t been changed since 8/18/2017, even though I’ve opened the editor many times since then. Is there an article somewhere that explains this process at a very basic level, like to somebody new to game dev who barely knows what a shader is? Do all game engines do this?
The tutorial explaining how to make a release build needs to do a better job of explaining what this is, why it’s necessary, and how concretely to do it. There can’t be a vague directive like “navigate through the level(s) until all shaders are generated” since I don’t know how or why to generate shaders or how to tell when all shaders have been generated. It assumes too much knowledge for what should be a straightforward and elementary operation.