diff --git a/demo/main.cpp b/demo/main.cpp index f88542897ff80168a37b2f3cef876e9931c4a1ad..263624ae07b76cf94c4c040737c3dac8cc5edf32 100644 --- a/demo/main.cpp +++ b/demo/main.cpp @@ -190,6 +190,14 @@ void process_freecam(fggl::gfx::Window& window, fggl::ecs::ECS& ecs, fggl::gfx:: camComp->target = pivot; } +void loadShader(fggl::gfx::ShaderCache& cache, const char* name, bool hasGeom) { + fggl::gfx::ShaderConfig config; + config.name = name; + config.vertex = config.name + "_vert.glsl"; + config.fragment = config.name + "_frag.glsl"; + cache.load(config); +} + int main(int argc, char* argv[]) { fggl::gfx::Context ctx; @@ -214,27 +222,9 @@ int main(int argc, char* argv[]) { CameraHacks hacks{win, fggl::gfx::Input::instance()}; fggl::gfx::ShaderCache cache(storage); - - fggl::gfx::ShaderConfig config; - config.name = "unlit"; - config.vertex = "unlit_vert.glsl"; - config.fragment = "unlit_frag.glsl"; - auto shader = cache.load(config); - - fggl::gfx::ShaderConfig configPhong; - configPhong.name = "phong"; - configPhong.vertex = configPhong.name + "_vert.glsl"; - configPhong.fragment = configPhong.name + "_frag.glsl"; - // configPhong.fragment = configPhong.name + "_normals_frag.glsl"; - auto shaderPhong = cache.load(configPhong); - - fggl::gfx::ShaderConfig configNormals; - configNormals.name = "normals"; - configNormals.hasGeom = true; - configNormals.vertex = configNormals.name + "_vert.glsl"; - configNormals.geometry = configNormals.name + "_geom.glsl"; - configNormals.fragment = configNormals.name + "_frag.glsl"; - auto shaderNormals = cache.load( configNormals ); + loadShader(cache, "unlit", false); + loadShader(cache, "phong", false); + loadShader(cache, "normals", true); // create ECS fggl::ecs2::World world; @@ -288,7 +278,7 @@ int main(int argc, char* argv[]) { // upload mesh to GPU and get a rendering token auto token = meshRenderer.upload( mesh ); - token.pipeline = shaderPhong; + token.pipeline = cache.get("phong"); // add the rendering token to the prototype bunkerPrototype.set<fggl::components::GfxToken>( token );