1 |
- {"ast":null,"code":"import { Logger } from \"../Misc/logger.js\";\nimport { Observable } from \"../Misc/observable.js\";\nimport { GetDOMTextContent, IsWindowObjectExist } from \"../Misc/domManagement.js\";\nimport { Finalize, Initialize, PreProcess } from \"../Engines/Processors/shaderProcessor.js\";\nimport { ShaderStore } from \"../Engines/shaderStore.js\";\n/**\n * Effect wrapping a compute shader and let execute (dispatch) the shader\n */\nexport class ComputeEffect {\n /**\n * Creates a compute effect that can be used to execute a compute shader\n * @param baseName Name of the effect\n * @param options Set of all options to create the effect\n * @param engine The engine the effect is created for\n * @param key Effect Key identifying uniquely compiled shader variants\n */\n constructor(baseName, options, engine, key = \"\") {\n var _options$defines, _options$entryPoint;\n /**\n * String container all the define statements that should be set on the shader.\n */\n this.defines = \"\";\n /**\n * Callback that will be called when the shader is compiled.\n */\n this.onCompiled = null;\n /**\n * Callback that will be called if an error occurs during shader compilation.\n */\n this.onError = null;\n /**\n * Unique ID of the effect.\n */\n this.uniqueId = 0;\n /**\n * Observable that will be called when the shader is compiled.\n * It is recommended to use executeWhenCompile() or to make sure that scene.isReady() is called to get this observable raised.\n */\n this.onCompileObservable = new Observable();\n /**\n * Observable that will be called if an error occurs during shader compilation.\n */\n this.onErrorObservable = new Observable();\n /**\n * Observable that will be called when effect is bound.\n */\n this.onBindObservable = new Observable();\n /**\n * @internal\n * Specifies if the effect was previously ready\n */\n this._wasPreviouslyReady = false;\n this._isReady = false;\n this._compilationError = \"\";\n /** @internal */\n this._key = \"\";\n this._computeSourceCodeOverride = \"\";\n /** @internal */\n this._pipelineContext = null;\n /** @internal */\n this._computeSourceCode = \"\";\n this._rawComputeSourceCode = \"\";\n this._shaderLanguage = 1 /* ShaderLanguage.WGSL */;\n this.name = baseName;\n this._key = key;\n this._engine = engine;\n this.uniqueId = ComputeEffect._UniqueIdSeed++;\n this.defines = (_options$defines = options.defines) !== null && _options$defines !== void 0 ? _options$defines : \"\";\n this.onError = options.onError;\n this.onCompiled = options.onCompiled;\n this._entryPoint = (_options$entryPoint = options.entryPoint) !== null && _options$entryPoint !== void 0 ? _options$entryPoint : \"main\";\n this._shaderStore = ShaderStore.GetShadersStore(this._shaderLanguage);\n this._shaderRepository = ShaderStore.GetShadersRepository(this._shaderLanguage);\n this._includeShaderStore = ShaderStore.GetIncludesShadersStore(this._shaderLanguage);\n let computeSource;\n const hostDocument = IsWindowObjectExist() ? this._engine.getHostDocument() : null;\n if (typeof baseName === \"string\") {\n computeSource = baseName;\n } else if (baseName.computeSource) {\n computeSource = \"source:\" + baseName.computeSource;\n } else if (baseName.computeElement) {\n computeSource = (hostDocument === null || hostDocument === void 0 ? void 0 : hostDocument.getElementById(baseName.computeElement)) || baseName.computeElement;\n } else {\n computeSource = baseName.compute || baseName;\n }\n const processorOptions = {\n defines: this.defines.split(\"\\n\"),\n indexParameters: undefined,\n isFragment: false,\n shouldUseHighPrecisionShader: false,\n processor: null,\n supportsUniformBuffers: this._engine.supportsUniformBuffers,\n shadersRepository: this._shaderRepository,\n includesShadersStore: this._includeShaderStore,\n version: (this._engine.version * 100).toString(),\n platformName: this._engine.shaderPlatformName,\n processingContext: null,\n isNDCHalfZRange: this._engine.isNDCHalfZRange,\n useReverseDepthBuffer: this._engine.useReverseDepthBuffer,\n processCodeAfterIncludes: (shaderType, code, defines) => {\n if (!defines) {\n return code;\n }\n // We need to convert #define key value to a const\n for (const define of defines) {\n const keyValue = define.replace(\"#define\", \"\").replace(\";\", \"\").trim();\n const split = keyValue.split(\" \");\n if (split.length === 2) {\n const key = split[0];\n const value = split[1];\n if (!isNaN(parseInt(value)) || !isNaN(parseFloat(value))) {\n code = `const ${key} = ${value};\\n` + code;\n }\n }\n }\n return code;\n }\n };\n this._loadShader(computeSource, \"Compute\", \"\", computeCode => {\n Initialize(processorOptions);\n PreProcess(computeCode, processorOptions, migratedComputeCode => {\n this._rawComputeSourceCode = computeCode;\n if (options.processFinalCode) {\n migratedComputeCode = options.processFinalCode(migratedComputeCode);\n }\n const finalShaders = Finalize(migratedComputeCode, \"\", processorOptions);\n this._useFinalCode(finalShaders.vertexCode, baseName);\n }, this._engine);\n });\n }\n _useFinalCode(migratedCommputeCode, baseName) {\n if (baseName) {\n const compute = baseName.computeElement || baseName.compute || baseName.spectorName || baseName;\n this._computeSourceCode = \"//#define SHADER_NAME compute:\" + compute + \"\\n\" + migratedCommputeCode;\n } else {\n this._computeSourceCode = migratedCommputeCode;\n }\n this._prepareEffect();\n }\n /**\n * Unique key for this effect\n */\n get key() {\n return this._key;\n }\n /**\n * If the effect has been compiled and prepared.\n * @returns if the effect is compiled and prepared.\n */\n isReady() {\n try {\n return this._isReadyInternal();\n } catch {\n return false;\n }\n }\n _isReadyInternal() {\n if (this._isReady) {\n return true;\n }\n if (this._pipelineContext) {\n return this._pipelineContext.isReady;\n }\n return false;\n }\n /**\n * The engine the effect was initialized with.\n * @returns the engine.\n */\n getEngine() {\n return this._engine;\n }\n /**\n * The pipeline context for this effect\n * @returns the associated pipeline context\n */\n getPipelineContext() {\n return this._pipelineContext;\n }\n /**\n * The error from the last compilation.\n * @returns the error string.\n */\n getCompilationError() {\n return this._compilationError;\n }\n /**\n * Adds a callback to the onCompiled observable and call the callback immediately if already ready.\n * @param func The callback to be used.\n */\n executeWhenCompiled(func) {\n if (this.isReady()) {\n func(this);\n return;\n }\n this.onCompileObservable.add(effect => {\n func(effect);\n });\n if (!this._pipelineContext || this._pipelineContext.isAsync) {\n setTimeout(() => {\n this._checkIsReady(null);\n }, 16);\n }\n }\n _checkIsReady(previousPipelineContext) {\n try {\n if (this._isReadyInternal()) {\n return;\n }\n } catch (e) {\n this._processCompilationErrors(e, previousPipelineContext);\n return;\n }\n setTimeout(() => {\n this._checkIsReady(previousPipelineContext);\n }, 16);\n }\n _loadShader(shader, key, optionalKey, callback) {\n if (typeof HTMLElement !== \"undefined\") {\n // DOM element ?\n if (shader instanceof HTMLElement) {\n const shaderCode = GetDOMTextContent(shader);\n callback(shaderCode);\n return;\n }\n }\n // Direct source ?\n if (shader.substring(0, 7) === \"source:\") {\n callback(shader.substring(7));\n return;\n }\n // Base64 encoded ?\n if (shader.substring(0, 7) === \"base64:\") {\n const shaderBinary = window.atob(shader.substring(7));\n callback(shaderBinary);\n return;\n }\n // Is in local store ?\n if (this._shaderStore[shader + key + \"Shader\"]) {\n callback(this._shaderStore[shader + key + \"Shader\"]);\n return;\n }\n if (optionalKey && this._shaderStore[shader + optionalKey + \"Shader\"]) {\n callback(this._shaderStore[shader + optionalKey + \"Shader\"]);\n return;\n }\n let shaderUrl;\n if (shader[0] === \".\" || shader[0] === \"/\" || shader.indexOf(\"http\") > -1) {\n shaderUrl = shader;\n } else {\n shaderUrl = this._shaderRepository + shader;\n }\n this._engine._loadFile(shaderUrl + \".\" + key.toLowerCase() + \".fx\", callback);\n }\n /**\n * Gets the compute shader source code of this effect\n */\n get computeSourceCode() {\n var _this$_pipelineContex, _this$_pipelineContex2;\n return this._computeSourceCodeOverride ? this._computeSourceCodeOverride : (_this$_pipelineContex = (_this$_pipelineContex2 = this._pipelineContext) === null || _this$_pipelineContex2 === void 0 ? void 0 : _this$_pipelineContex2._getComputeShaderCode()) !== null && _this$_pipelineContex !== void 0 ? _this$_pipelineContex : this._computeSourceCode;\n }\n /**\n * Gets the compute shader source code before it has been processed by the preprocessor\n */\n get rawComputeSourceCode() {\n return this._rawComputeSourceCode;\n }\n /**\n * Prepares the effect\n * @internal\n */\n _prepareEffect() {\n const defines = this.defines;\n const previousPipelineContext = this._pipelineContext;\n this._isReady = false;\n try {\n const engine = this._engine;\n this._pipelineContext = engine.createComputePipelineContext();\n this._pipelineContext._name = this._key;\n engine._prepareComputePipelineContext(this._pipelineContext, this._computeSourceCodeOverride ? this._computeSourceCodeOverride : this._computeSourceCode, this._rawComputeSourceCode, this._computeSourceCodeOverride ? null : defines, this._entryPoint);\n engine._executeWhenComputeStateIsCompiled(this._pipelineContext, messages => {\n if (messages && messages.numErrors > 0) {\n this._processCompilationErrors(messages, previousPipelineContext);\n return;\n }\n this._compilationError = \"\";\n this._isReady = true;\n if (this.onCompiled) {\n this.onCompiled(this);\n }\n this.onCompileObservable.notifyObservers(this);\n this.onCompileObservable.clear();\n if (previousPipelineContext) {\n this.getEngine()._deleteComputePipelineContext(previousPipelineContext);\n }\n });\n if (this._pipelineContext.isAsync) {\n this._checkIsReady(previousPipelineContext);\n }\n } catch (e) {\n this._processCompilationErrors(e, previousPipelineContext);\n }\n }\n _processCompilationErrors(e, previousPipelineContext = null) {\n this._compilationError = \"\";\n Logger.Error(\"Unable to compile compute effect:\");\n if (this.defines) {\n Logger.Error(\"Defines:\\n\" + this.defines);\n }\n if (ComputeEffect.LogShaderCodeOnCompilationError) {\n var _this$_pipelineContex3;\n const code = (_this$_pipelineContex3 = this._pipelineContext) === null || _this$_pipelineContex3 === void 0 ? void 0 : _this$_pipelineContex3._getComputeShaderCode();\n if (code) {\n Logger.Error(\"Compute code:\");\n Logger.Error(code);\n }\n }\n if (typeof e === \"string\") {\n this._compilationError = e;\n Logger.Error(\"Error: \" + this._compilationError);\n } else {\n for (const message of e.messages) {\n let msg = \"\";\n if (message.line !== undefined) {\n msg += \"Line \" + message.line + \", \";\n }\n if (message.offset !== undefined) {\n msg += \"Offset \" + message.offset + \", \";\n }\n if (message.length !== undefined) {\n msg += \"Length \" + message.length + \", \";\n }\n msg += message.type + \": \" + message.text;\n if (this._compilationError) {\n this._compilationError += \"\\n\";\n }\n this._compilationError += msg;\n Logger.Error(msg);\n }\n }\n if (previousPipelineContext) {\n this._pipelineContext = previousPipelineContext;\n this._isReady = true;\n }\n if (this.onError) {\n this.onError(this, this._compilationError);\n }\n this.onErrorObservable.notifyObservers(this);\n }\n /**\n * Release all associated resources.\n **/\n dispose() {\n if (this._pipelineContext) {\n this._pipelineContext.dispose();\n }\n this._engine._releaseComputeEffect(this);\n }\n /**\n * This function will add a new compute shader to the shader store\n * @param name the name of the shader\n * @param computeShader compute shader content\n */\n static RegisterShader(name, computeShader) {\n ShaderStore.GetShadersStore(1 /* ShaderLanguage.WGSL */)[`${name}ComputeShader`] = computeShader;\n }\n}\nComputeEffect._UniqueIdSeed = 0;\n/**\n * Enable logging of the shader code when a compilation error occurs\n */\nComputeEffect.LogShaderCodeOnCompilationError = true;","map":{"version":3,"names":["Logger","Observable","GetDOMTextContent","IsWindowObjectExist","Finalize","Initialize","PreProcess","ShaderStore","ComputeEffect","constructor","baseName","options","engine","key","_options$defines","_options$entryPoint","defines","onCompiled","onError","uniqueId","onCompileObservable","onErrorObservable","onBindObservable","_wasPreviouslyReady","_isReady","_compilationError","_key","_computeSourceCodeOverride","_pipelineContext","_computeSourceCode","_rawComputeSourceCode","_shaderLanguage","name","_engine","_UniqueIdSeed","_entryPoint","entryPoint","_shaderStore","GetShadersStore","_shaderRepository","GetShadersRepository","_includeShaderStore","GetIncludesShadersStore","computeSource","hostDocument","getHostDocument","computeElement","getElementById","compute","processorOptions","split","indexParameters","undefined","isFragment","shouldUseHighPrecisionShader","processor","supportsUniformBuffers","shadersRepository","includesShadersStore","version","toString","platformName","shaderPlatformName","processingContext","isNDCHalfZRange","useReverseDepthBuffer","processCodeAfterIncludes","shaderType","code","define","keyValue","replace","trim","length","value","isNaN","parseInt","parseFloat","_loadShader","computeCode","migratedComputeCode","processFinalCode","finalShaders","_useFinalCode","vertexCode","migratedCommputeCode","spectorName","_prepareEffect","isReady","_isReadyInternal","getEngine","getPipelineContext","getCompilationError","executeWhenCompiled","func","add","effect","isAsync","setTimeout","_checkIsReady","previousPipelineContext","e","_processCompilationErrors","shader","optionalKey","callback","HTMLElement","shaderCode","substring","shaderBinary","window","atob","shaderUrl","indexOf","_loadFile","toLowerCase","computeSourceCode","_this$_pipelineContex","_this$_pipelineContex2","_getComputeShaderCode","rawComputeSourceCode","createComputePipelineContext","_name","_prepareComputePipelineContext","_executeWhenComputeStateIsCompiled","messages","numErrors","notifyObservers","clear","_deleteComputePipelineContext","Error","LogShaderCodeOnCompilationError","_this$_pipelineContex3","message","msg","line","offset","type","text","dispose","_releaseComputeEffect","RegisterShader","computeShader"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Compute/computeEffect.js"],"sourcesContent":["import { Logger } from \"../Misc/logger.js\";\nimport { Observable } from \"../Misc/observable.js\";\nimport { GetDOMTextContent, IsWindowObjectExist } from \"../Misc/domManagement.js\";\nimport { Finalize, Initialize, PreProcess } from \"../Engines/Processors/shaderProcessor.js\";\nimport { ShaderStore } from \"../Engines/shaderStore.js\";\n/**\n * Effect wrapping a compute shader and let execute (dispatch) the shader\n */\nexport class ComputeEffect {\n /**\n * Creates a compute effect that can be used to execute a compute shader\n * @param baseName Name of the effect\n * @param options Set of all options to create the effect\n * @param engine The engine the effect is created for\n * @param key Effect Key identifying uniquely compiled shader variants\n */\n constructor(baseName, options, engine, key = \"\") {\n /**\n * String container all the define statements that should be set on the shader.\n */\n this.defines = \"\";\n /**\n * Callback that will be called when the shader is compiled.\n */\n this.onCompiled = null;\n /**\n * Callback that will be called if an error occurs during shader compilation.\n */\n this.onError = null;\n /**\n * Unique ID of the effect.\n */\n this.uniqueId = 0;\n /**\n * Observable that will be called when the shader is compiled.\n * It is recommended to use executeWhenCompile() or to make sure that scene.isReady() is called to get this observable raised.\n */\n this.onCompileObservable = new Observable();\n /**\n * Observable that will be called if an error occurs during shader compilation.\n */\n this.onErrorObservable = new Observable();\n /**\n * Observable that will be called when effect is bound.\n */\n this.onBindObservable = new Observable();\n /**\n * @internal\n * Specifies if the effect was previously ready\n */\n this._wasPreviouslyReady = false;\n this._isReady = false;\n this._compilationError = \"\";\n /** @internal */\n this._key = \"\";\n this._computeSourceCodeOverride = \"\";\n /** @internal */\n this._pipelineContext = null;\n /** @internal */\n this._computeSourceCode = \"\";\n this._rawComputeSourceCode = \"\";\n this._shaderLanguage = 1 /* ShaderLanguage.WGSL */;\n this.name = baseName;\n this._key = key;\n this._engine = engine;\n this.uniqueId = ComputeEffect._UniqueIdSeed++;\n this.defines = options.defines ?? \"\";\n this.onError = options.onError;\n this.onCompiled = options.onCompiled;\n this._entryPoint = options.entryPoint ?? \"main\";\n this._shaderStore = ShaderStore.GetShadersStore(this._shaderLanguage);\n this._shaderRepository = ShaderStore.GetShadersRepository(this._shaderLanguage);\n this._includeShaderStore = ShaderStore.GetIncludesShadersStore(this._shaderLanguage);\n let computeSource;\n const hostDocument = IsWindowObjectExist() ? this._engine.getHostDocument() : null;\n if (typeof baseName === \"string\") {\n computeSource = baseName;\n }\n else if (baseName.computeSource) {\n computeSource = \"source:\" + baseName.computeSource;\n }\n else if (baseName.computeElement) {\n computeSource = hostDocument?.getElementById(baseName.computeElement) || baseName.computeElement;\n }\n else {\n computeSource = baseName.compute || baseName;\n }\n const processorOptions = {\n defines: this.defines.split(\"\\n\"),\n indexParameters: undefined,\n isFragment: false,\n shouldUseHighPrecisionShader: false,\n processor: null,\n supportsUniformBuffers: this._engine.supportsUniformBuffers,\n shadersRepository: this._shaderRepository,\n includesShadersStore: this._includeShaderStore,\n version: (this._engine.version * 100).toString(),\n platformName: this._engine.shaderPlatformName,\n processingContext: null,\n isNDCHalfZRange: this._engine.isNDCHalfZRange,\n useReverseDepthBuffer: this._engine.useReverseDepthBuffer,\n processCodeAfterIncludes: (shaderType, code, defines) => {\n if (!defines) {\n return code;\n }\n // We need to convert #define key value to a const\n for (const define of defines) {\n const keyValue = define.replace(\"#define\", \"\").replace(\";\", \"\").trim();\n const split = keyValue.split(\" \");\n if (split.length === 2) {\n const key = split[0];\n const value = split[1];\n if (!isNaN(parseInt(value)) || !isNaN(parseFloat(value))) {\n code = `const ${key} = ${value};\\n` + code;\n }\n }\n }\n return code;\n },\n };\n this._loadShader(computeSource, \"Compute\", \"\", (computeCode) => {\n Initialize(processorOptions);\n PreProcess(computeCode, processorOptions, (migratedComputeCode) => {\n this._rawComputeSourceCode = computeCode;\n if (options.processFinalCode) {\n migratedComputeCode = options.processFinalCode(migratedComputeCode);\n }\n const finalShaders = Finalize(migratedComputeCode, \"\", processorOptions);\n this._useFinalCode(finalShaders.vertexCode, baseName);\n }, this._engine);\n });\n }\n _useFinalCode(migratedCommputeCode, baseName) {\n if (baseName) {\n const compute = baseName.computeElement || baseName.compute || baseName.spectorName || baseName;\n this._computeSourceCode = \"//#define SHADER_NAME compute:\" + compute + \"\\n\" + migratedCommputeCode;\n }\n else {\n this._computeSourceCode = migratedCommputeCode;\n }\n this._prepareEffect();\n }\n /**\n * Unique key for this effect\n */\n get key() {\n return this._key;\n }\n /**\n * If the effect has been compiled and prepared.\n * @returns if the effect is compiled and prepared.\n */\n isReady() {\n try {\n return this._isReadyInternal();\n }\n catch {\n return false;\n }\n }\n _isReadyInternal() {\n if (this._isReady) {\n return true;\n }\n if (this._pipelineContext) {\n return this._pipelineContext.isReady;\n }\n return false;\n }\n /**\n * The engine the effect was initialized with.\n * @returns the engine.\n */\n getEngine() {\n return this._engine;\n }\n /**\n * The pipeline context for this effect\n * @returns the associated pipeline context\n */\n getPipelineContext() {\n return this._pipelineContext;\n }\n /**\n * The error from the last compilation.\n * @returns the error string.\n */\n getCompilationError() {\n return this._compilationError;\n }\n /**\n * Adds a callback to the onCompiled observable and call the callback immediately if already ready.\n * @param func The callback to be used.\n */\n executeWhenCompiled(func) {\n if (this.isReady()) {\n func(this);\n return;\n }\n this.onCompileObservable.add((effect) => {\n func(effect);\n });\n if (!this._pipelineContext || this._pipelineContext.isAsync) {\n setTimeout(() => {\n this._checkIsReady(null);\n }, 16);\n }\n }\n _checkIsReady(previousPipelineContext) {\n try {\n if (this._isReadyInternal()) {\n return;\n }\n }\n catch (e) {\n this._processCompilationErrors(e, previousPipelineContext);\n return;\n }\n setTimeout(() => {\n this._checkIsReady(previousPipelineContext);\n }, 16);\n }\n _loadShader(shader, key, optionalKey, callback) {\n if (typeof HTMLElement !== \"undefined\") {\n // DOM element ?\n if (shader instanceof HTMLElement) {\n const shaderCode = GetDOMTextContent(shader);\n callback(shaderCode);\n return;\n }\n }\n // Direct source ?\n if (shader.substring(0, 7) === \"source:\") {\n callback(shader.substring(7));\n return;\n }\n // Base64 encoded ?\n if (shader.substring(0, 7) === \"base64:\") {\n const shaderBinary = window.atob(shader.substring(7));\n callback(shaderBinary);\n return;\n }\n // Is in local store ?\n if (this._shaderStore[shader + key + \"Shader\"]) {\n callback(this._shaderStore[shader + key + \"Shader\"]);\n return;\n }\n if (optionalKey && this._shaderStore[shader + optionalKey + \"Shader\"]) {\n callback(this._shaderStore[shader + optionalKey + \"Shader\"]);\n return;\n }\n let shaderUrl;\n if (shader[0] === \".\" || shader[0] === \"/\" || shader.indexOf(\"http\") > -1) {\n shaderUrl = shader;\n }\n else {\n shaderUrl = this._shaderRepository + shader;\n }\n this._engine._loadFile(shaderUrl + \".\" + key.toLowerCase() + \".fx\", callback);\n }\n /**\n * Gets the compute shader source code of this effect\n */\n get computeSourceCode() {\n return this._computeSourceCodeOverride ? this._computeSourceCodeOverride : (this._pipelineContext?._getComputeShaderCode() ?? this._computeSourceCode);\n }\n /**\n * Gets the compute shader source code before it has been processed by the preprocessor\n */\n get rawComputeSourceCode() {\n return this._rawComputeSourceCode;\n }\n /**\n * Prepares the effect\n * @internal\n */\n _prepareEffect() {\n const defines = this.defines;\n const previousPipelineContext = this._pipelineContext;\n this._isReady = false;\n try {\n const engine = this._engine;\n this._pipelineContext = engine.createComputePipelineContext();\n this._pipelineContext._name = this._key;\n engine._prepareComputePipelineContext(this._pipelineContext, this._computeSourceCodeOverride ? this._computeSourceCodeOverride : this._computeSourceCode, this._rawComputeSourceCode, this._computeSourceCodeOverride ? null : defines, this._entryPoint);\n engine._executeWhenComputeStateIsCompiled(this._pipelineContext, (messages) => {\n if (messages && messages.numErrors > 0) {\n this._processCompilationErrors(messages, previousPipelineContext);\n return;\n }\n this._compilationError = \"\";\n this._isReady = true;\n if (this.onCompiled) {\n this.onCompiled(this);\n }\n this.onCompileObservable.notifyObservers(this);\n this.onCompileObservable.clear();\n if (previousPipelineContext) {\n this.getEngine()._deleteComputePipelineContext(previousPipelineContext);\n }\n });\n if (this._pipelineContext.isAsync) {\n this._checkIsReady(previousPipelineContext);\n }\n }\n catch (e) {\n this._processCompilationErrors(e, previousPipelineContext);\n }\n }\n _processCompilationErrors(e, previousPipelineContext = null) {\n this._compilationError = \"\";\n Logger.Error(\"Unable to compile compute effect:\");\n if (this.defines) {\n Logger.Error(\"Defines:\\n\" + this.defines);\n }\n if (ComputeEffect.LogShaderCodeOnCompilationError) {\n const code = this._pipelineContext?._getComputeShaderCode();\n if (code) {\n Logger.Error(\"Compute code:\");\n Logger.Error(code);\n }\n }\n if (typeof e === \"string\") {\n this._compilationError = e;\n Logger.Error(\"Error: \" + this._compilationError);\n }\n else {\n for (const message of e.messages) {\n let msg = \"\";\n if (message.line !== undefined) {\n msg += \"Line \" + message.line + \", \";\n }\n if (message.offset !== undefined) {\n msg += \"Offset \" + message.offset + \", \";\n }\n if (message.length !== undefined) {\n msg += \"Length \" + message.length + \", \";\n }\n msg += message.type + \": \" + message.text;\n if (this._compilationError) {\n this._compilationError += \"\\n\";\n }\n this._compilationError += msg;\n Logger.Error(msg);\n }\n }\n if (previousPipelineContext) {\n this._pipelineContext = previousPipelineContext;\n this._isReady = true;\n }\n if (this.onError) {\n this.onError(this, this._compilationError);\n }\n this.onErrorObservable.notifyObservers(this);\n }\n /**\n * Release all associated resources.\n **/\n dispose() {\n if (this._pipelineContext) {\n this._pipelineContext.dispose();\n }\n this._engine._releaseComputeEffect(this);\n }\n /**\n * This function will add a new compute shader to the shader store\n * @param name the name of the shader\n * @param computeShader compute shader content\n */\n static RegisterShader(name, computeShader) {\n ShaderStore.GetShadersStore(1 /* ShaderLanguage.WGSL */)[`${name}ComputeShader`] = computeShader;\n }\n}\nComputeEffect._UniqueIdSeed = 0;\n/**\n * Enable logging of the shader code when a compilation error occurs\n */\nComputeEffect.LogShaderCodeOnCompilationError = true;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|