{"record":{"id":"403115ccc5a156c9","repo":"BabylonJS/Babylon.js","slug":"noderendergraphinputblock-creation-options-are-mi","errorCode":null,"errorMessage":"NodeRenderGraphInputBlock: Creation options are missing for texture \"${this.name}\"","messagePattern":"NodeRenderGraphInputBlock: Creation options are missing for texture \"(.+?)\"","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/dev/core/src/FrameGraph/Node/Blocks/inputBlock.pure.ts","lineNumber":263,"sourceCode":"            } else if (this.isShadowLight()) {\r\n                this.output.value = this.getTypedValue<IShadowLight>();\r\n            } else {\r\n                if (this._storedValue === undefined || this._storedValue === null) {\r\n                    throw new Error(`NodeRenderGraphInputBlock: External input \"${this.name}\" is not set`);\r\n                }\r\n                const texture = this.getInternalTextureFromValue();\r\n                if (texture) {\r\n                    this.output.value = this._frameGraph.textureManager.importTexture(this.name, texture, this.output.value as FrameGraphTextureHandle);\r\n                }\r\n            }\r\n            return;\r\n        }\r\n\r\n        if ((this.type & NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer) !== 0) {\r\n            const textureCreateOptions = this.creationOptions;\r\n\r\n            if (!textureCreateOptions) {\r\n                throw new Error(`NodeRenderGraphInputBlock: Creation options are missing for texture \"${this.name}\"`);\r\n            }\r\n\r\n            this.output.value = this._frameGraph.textureManager.createRenderTargetTexture(this.name, textureCreateOptions);\r\n        }\r\n    }\r\n\r\n    public override dispose() {\r\n        this._storedValue = null;\r\n        this.onValueChangedObservable.clear();\r\n        super.dispose();\r\n    }\r\n\r\n    protected override _dumpPropertiesCode() {\r\n        const codes: string[] = [];\r\n        codes.push(`${this._codeVariableName}.isExternal = ${this.isExternal};`);\r\n        if (this.isAnyTexture()) {\r\n            if (!this.isExternal) {\r\n                codes.push(`${this._codeVariableName}.creationOptions = ${JSON.stringify(this.creationOptions)};`);\r","sourceCodeStart":245,"sourceCodeEnd":281,"githubUrl":"https://github.com/BabylonJS/Babylon.js/blob/0592b347b8a4ee0236089ea86a749cacfdb266d8/packages/dev/core/src/FrameGraph/Node/Blocks/inputBlock.pure.ts#L245-L281","documentation":"Texture-type input blocks need FrameGraphTextureCreationOptions (size, formats, etc.) to create their render target. If the block's type is a texture type and creationOptions were never set, _buildBlock throws before creating the render target texture.","triggerScenarios":"Constructing a NodeRenderGraphInputBlock whose connection point type includes TextureAllButBackBuffer without assigning creationOptions, then building the graph.","commonSituations":"Creating an input block for a texture but only calling setValue without options; using a factory that expects options; refactors that removed the creationOptions assignment.","solutions":["Assign inputBlock.creationOptions = { size: {...}, formats: [...] } before build","Use the appropriate helper that sets creation options for texture input blocks","If the block should only wrap an existing texture, ensure its type is not a texture-creation type or provide options anyway"],"exampleFix":"// before\nconst input = new NodeRenderGraphInputBlock(\"rt\");\ninput.type = NodeRenderGraphBlockConnectionPointTypes.Texture;\ngraph.buildAsync();\n// after\ninput.creationOptions = { size: { width: 512, height: 512 } };\ngraph.buildAsync();","handlingStrategy":"validation","validationCode":"if ((inputBlock.type & NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer) !== 0 && !inputBlock.creationOptions) {\n  throw new Error(`provide creationOptions for texture input '${inputBlock.name}'`);\n}","typeGuard":"function hasCreationOptions(b) { return !!b.creationOptions; }","tryCatchPattern":"try { graph.buildAsync(); } catch (e) { if (e.message.includes('Creation options are missing')) { console.error('Assign creationOptions to texture input blocks before building'); } else { throw e; } }","preventionTips":["Always assign creationOptions when a texture-type input block is created","Centralize texture creation options (size/formats) in a helper","Validate all texture blocks' options before buildAsync"],"tags":["render-graph","texture","missing-configuration"],"backgroundTag":"missing-required-options","analyzedSha":"0592b347b8a4ee0236089ea86a749cacfdb266d8","analyzedAt":"2026-08-30T15:11:20.442Z","schemaVersion":2},"datasetVersion":"2026-08-30T18:17:15.746Z"}