{"record":{"id":"90005c30d92ae6af","repo":"FyroxEngine/Fyrox","slug":"error-90005c","errorCode":null,"errorMessage":"{error}","messagePattern":"\\{error\\}","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"fyrox-impl/src/renderer/cache/shader.rs","lineNumber":402,"sourceCode":"        }\n    }\n\n    pub fn get(\n        &mut self,\n        server: &dyn GraphicsServer,\n        shader: &ShaderResource,\n    ) -> Option<&RenderPassContainer> {\n        let mut shader_state = shader.state();\n\n        if let Some(shader_state) = shader_state.data() {\n            match self.cache.get_or_insert_with(\n                &shader_state.cache_index,\n                Default::default(),\n                || RenderPassContainer::new(server, shader_state),\n            ) {\n                Ok(shader_set) => Some(shader_set),\n                Err(error) => {\n                    Log::err(format!(\"{error}\"));\n                    None\n                }\n            }\n        } else {\n            None\n        }\n    }\n\n    pub fn update(&mut self, dt: f32) {\n        self.cache.update(dt)\n    }\n\n    pub fn clear(&mut self) {\n        self.cache.clear();\n    }\n\n    pub fn alive_count(&self) -> usize {\n        self.cache.alive_count()","sourceCodeStart":384,"sourceCodeEnd":420,"githubUrl":"https://github.com/FyroxEngine/Fyrox/blob/76c91aad8eca488ce527b1af707be8b3b24ad72d/fyrox-impl/src/renderer/cache/shader.rs#L384-L420","documentation":"In Renderer::get_shader (via the cache get call), if the shader fails to compile/link on the GPU, the error is only logged with Log::err and the renderer silently falls back to None (no shader set rendered). This means geometry using that shader will not draw; the cause is reported in the log message.","triggerScenarios":"Calling renderer code that resolves a shader from ShaderManager while the shader resource has a load/compile error: shader file missing or failed to load, GLSL syntax errors, unsupported shader features on the current GPU/driver, or a shader registered under a name that cannot be fetched.","commonSituations":"Typos in shader file paths, custom material shaders that fail compilation on certain GPUs (e.g. missing precision qualifiers, unsupported extensions), shaders referencing includes that don't exist, or engine version changes that broke old built-in shader sources.","solutions":["Check the log output above this message for the actual shader compile/load error and fix the shader source","Verify the shader resource path/name passed to the material or ShaderManager resolves to an existing .shader file","Test the shader on the target GPU/driver; remove unsupported features or add fallbacks","Update the engine/assets if the shader format changed between engine versions"],"exampleFix":"// before: shader silently absent, object invisible\nlet material = MaterialResource::new(Material::from_shader(ShaderResource::load_from_memory(\"invalid glsl\")));\n// after: pre-validate shader loads before using it in a material\nlet shader = ShaderResource::load(\"data/shaders/my.shader\")?; // check ResourceState for Err\nif matches!(shader.state(), ResourceState::Ok(_)) {\n    let material = MaterialResource::new(Material::from_shader(shader));\n}","handlingStrategy":"fallback","validationCode":"// Check shader resource state before using it in a material\nlet shader = resource_manager.request::<ShaderResource>(path);\nif let ResourceState::Err(e) = shader.state() {\n    panic!(\"Shader failed to load: {:?}\", e);\n}","typeGuard":"fn is_shader_loaded(shader: &ShaderResource) -> bool {\n    matches!(shader.state(), ResourceState::Ok(_))\n}","tryCatchPattern":null,"preventionTips":["Validate all shader resources load OK before building materials","Test custom shaders on all target GPUs/drivers early","Keep shader sources in sync with the engine version's expected format"],"tags":["shader","renderer","gpu","fallback"],"backgroundTag":"shader-compile-failed","analyzedSha":"76c91aad8eca488ce527b1af707be8b3b24ad72d","analyzedAt":"2026-09-10T16:04:01.633Z","contentChangedAt":"2026-09-10T16:04:01.633Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}