{"record":{"id":"04bc16946a002fc3","repo":"stride3d/stride","slug":"requested-renderview-renderstage-combination-doesn-t-exist","errorCode":null,"errorMessage":"Requested RenderView|RenderStage combination doesn't exist. Please add it to RenderView.RenderStages.","messagePattern":"Requested RenderView\\|RenderStage combination doesn't exist\\. Please add it to RenderView\\.RenderStages\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.Rendering/Rendering/RenderSystem.cs","lineNumber":369,"sourceCode":"        public void Draw(RenderDrawContext renderDrawContext, RenderView renderView, RenderStage renderStage)\n        {\n            using var _ = Profiler.Begin(DrawKey);\n            // Sync point: draw (from now, we should execute with a graphics device context to perform rendering)\n\n            // Look for the RenderViewStage corresponding to this RenderView | RenderStage combination\n            var renderViewStage = RenderViewStage.Invalid;\n            foreach (var currentRenderViewStage in renderView.RenderStages)\n            {\n                if (currentRenderViewStage.Index == renderStage.Index)\n                {\n                    renderViewStage = currentRenderViewStage;\n                    break;\n                }\n            }\n\n            if (renderViewStage.Index == -1)\n            {\n                throw new InvalidOperationException(\"Requested RenderView|RenderStage combination doesn't exist. Please add it to RenderView.RenderStages.\");\n            }\n\n            using (Profiler.Begin(UpdateRenderViewsKey))\n            {\n                // Perform updates once per change of RenderView\n                foreach (var renderFeature in RenderFeatures)\n                {\n                    renderFeature.Draw(renderDrawContext, renderView, renderViewStage);\n                }\n            }\n\n            // Generate and execute draw jobs\n            var renderNodes = renderViewStage.SortedRenderNodes;\n            var renderNodeCount = renderViewStage.RenderNodes.Count;\n\n            if (renderNodeCount == 0)\n                return;\n","sourceCodeStart":351,"sourceCodeEnd":387,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Rendering/Rendering/RenderSystem.cs#L351-L387","documentation":"Before drawing, RenderSystem resolves the RenderStage associated with the current RenderView via RenderView.RenderStages. If no RenderViewStage with a valid Index is found (Index == -1), the requested view/stage combination was never registered on the view, so InvalidOperationException is thrown.","triggerScenarios":"Calling RenderSystem.Draw (or the renderer invoking it) for a RenderView whose RenderStages collection does not contain the RenderStage being drawn — e.g. rendering a custom RenderStage without adding it to the view's RenderStages list.","commonSituations":"Creating a custom RenderStage (e.g. a shadow or post-effect stage) and a matching RenderView but forgetting view.RenderStages.Add(stage); stage removed from the view by other code; stage ordering/culling logic filtering the stage out of the view.","solutions":["Add the RenderStage to the RenderView before drawing: view.RenderStages.Add(myStage)","Verify the exact RenderStage instance passed to Draw is the same one registered in the view (not a duplicate)","Check any code that clears/filters view.RenderStages (visibility culling, LOD logic) so the stage isn't removed each frame"],"exampleFix":"// before\nvar view = new RenderView { Name = \"MyView\" };\nrenderSystem.RenderViews.Add(view);\nrenderSystem.Draw(context, view, myStage); // throws: stage not on view\n// after\nvar view = new RenderView { Name = \"MyView\", RenderStages = { myStage } };\nrenderSystem.RenderViews.Add(view);\nrenderSystem.Draw(context, view, myStage);","handlingStrategy":"validation","validationCode":"if (view.RenderStages == null || !view.RenderStages.Contains(stage))\n    throw new InvalidOperationException($\"Stage {stage.Name} not registered on RenderView {view.Name}\");","typeGuard":"static bool StageRegistered(RenderView view, RenderStage stage) => view.RenderStages?.Contains(stage) == true;","tryCatchPattern":"try { renderSystem.Draw(context, view, stage); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"RenderView|RenderStage\")) {\n    if (!view.RenderStages.Contains(stage)) view.RenderStages.Add(stage); // repair and retry\n}","preventionTips":["Register every RenderStage on its RenderView before the first Draw","Use the exact same RenderStage instance everywhere (no duplicate constructions)","Audit any per-frame code that mutates view.RenderStages"],"tags":["rendering","render-system","configuration"],"backgroundTag":"resource-not-found","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}