@babylonjs/core 6.45.0 → 6.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animation.js +1 -1
- package/Animations/animation.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +2 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Bones/skeleton.js +2 -2
- package/Bones/skeleton.js.map +1 -1
- package/Cameras/camera.d.ts +3 -3
- package/Cameras/camera.js +2 -1
- package/Cameras/camera.js.map +1 -1
- package/Cameras/cameraInputsManager.js +1 -1
- package/Cameras/cameraInputsManager.js.map +1 -1
- package/Cameras/targetCamera.js +4 -0
- package/Cameras/targetCamera.js.map +1 -1
- package/Compute/computeShader.d.ts +4 -2
- package/Compute/computeShader.js +7 -3
- package/Compute/computeShader.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.js +6 -6
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +2 -1
- package/Engines/Extensions/engine.computeShader.js +1 -0
- package/Engines/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/Extensions/engine.rawTexture.js +3 -3
- package/Engines/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/Native/nativePipelineContext.js +1 -1
- package/Engines/Native/nativePipelineContext.js.map +1 -1
- package/Engines/WebGL/webGLPipelineContext.js +1 -1
- package/Engines/WebGL/webGLPipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js +7 -3
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/engine.d.ts +1 -1
- package/Engines/thinEngine.js +2 -2
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +2 -15
- package/Engines/webgpuEngine.js.map +1 -1
- package/Layers/glowLayer.js +2 -1
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +2 -1
- package/Layers/highlightLayer.js.map +1 -1
- package/Lights/light.js +2 -1
- package/Lights/light.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +9 -0
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Loading/sceneLoader.d.ts +6 -1
- package/Loading/sceneLoader.js +6 -5
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.js +2 -1
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +2 -1
- package/Materials/Node/nodeMaterial.js +5 -1
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.d.ts +1 -1
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrMaterial.js +2 -1
- package/Materials/PBR/pbrMaterial.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.js +2 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js +2 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
- package/Materials/Textures/baseTexture.js +2 -1
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.js +2 -1
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/rawCubeTexture.js +1 -1
- package/Materials/Textures/rawCubeTexture.js.map +1 -1
- package/Materials/Textures/texture.js +2 -1
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/colorCurves.d.ts +1 -1
- package/Materials/colorCurves.functions.d.ts +5 -0
- package/Materials/colorCurves.functions.js +8 -0
- package/Materials/colorCurves.functions.js.map +1 -0
- package/Materials/colorCurves.js +8 -8
- package/Materials/colorCurves.js.map +1 -1
- package/Materials/fresnelParameters.js +1 -1
- package/Materials/fresnelParameters.js.map +1 -1
- package/Materials/imageProcessingConfiguration.d.ts +3 -48
- package/Materials/imageProcessingConfiguration.defines.d.ts +46 -0
- package/Materials/imageProcessingConfiguration.defines.js +27 -0
- package/Materials/imageProcessingConfiguration.defines.js.map +1 -0
- package/Materials/imageProcessingConfiguration.functions.d.ts +13 -0
- package/Materials/imageProcessingConfiguration.functions.js +41 -0
- package/Materials/imageProcessingConfiguration.functions.js.map +1 -0
- package/Materials/imageProcessingConfiguration.js +18 -69
- package/Materials/imageProcessingConfiguration.js.map +1 -1
- package/Materials/material.js +2 -1
- package/Materials/material.js.map +1 -1
- package/Materials/materialHelper.d.ts +33 -33
- package/Materials/materialHelper.js +244 -286
- package/Materials/materialHelper.js.map +1 -1
- package/Materials/materialPluginBase.js +2 -1
- package/Materials/materialPluginBase.js.map +1 -1
- package/Materials/materialStencilState.js +2 -1
- package/Materials/materialStencilState.js.map +1 -1
- package/Materials/shaderMaterial.js +1 -1
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/standardMaterial.d.ts +1 -1
- package/Materials/standardMaterial.js +2 -1
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBuffer.js +2 -2
- package/Materials/uniformBuffer.js.map +1 -1
- package/Maths/math.color.d.ts +392 -66
- package/Maths/math.color.js +541 -65
- package/Maths/math.color.js.map +1 -1
- package/Maths/math.like.d.ts +17 -28
- package/Maths/math.like.js.map +1 -1
- package/Maths/math.plane.d.ts +2 -1
- package/Maths/math.plane.js.map +1 -1
- package/Maths/math.polar.d.ts +1 -1
- package/Maths/math.polar.js.map +1 -1
- package/Maths/math.scalar.d.ts +6 -6
- package/Maths/math.scalar.functions.d.ts +51 -0
- package/Maths/math.scalar.functions.js +80 -0
- package/Maths/math.scalar.functions.js.map +1 -0
- package/Maths/math.scalar.js +48 -73
- package/Maths/math.scalar.js.map +1 -1
- package/Maths/math.vector.d.ts +571 -72
- package/Maths/math.vector.js +917 -119
- package/Maths/math.vector.js.map +1 -1
- package/Maths/math.viewport.d.ts +2 -1
- package/Maths/math.viewport.js.map +1 -1
- package/Maths/tensor.d.ts +411 -0
- package/Maths/tensor.js +3 -0
- package/Maths/tensor.js.map +1 -0
- package/Meshes/Node/Blocks/Set/setColorsBlock.js +20 -4
- package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -1
- package/Meshes/Node/nodeGeometry.js +2 -1
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/mesh.js +2 -2
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +4 -0
- package/Meshes/mesh.vertexData.js +10 -0
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/transformNode.js +2 -1
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/arrayTools.d.ts +2 -19
- package/Misc/arrayTools.js.map +1 -1
- package/Misc/decorators.d.ts +0 -80
- package/Misc/decorators.functions.d.ts +7 -0
- package/Misc/decorators.functions.js +52 -0
- package/Misc/decorators.functions.js.map +1 -0
- package/Misc/decorators.js +2 -318
- package/Misc/decorators.js.map +1 -1
- package/Misc/decorators.serialization.d.ts +81 -0
- package/Misc/decorators.serialization.js +269 -0
- package/Misc/decorators.serialization.js.map +1 -0
- package/Misc/index.d.ts +1 -0
- package/Misc/index.js +1 -0
- package/Misc/index.js.map +1 -1
- package/Misc/sceneRecorder.js +1 -1
- package/Misc/sceneRecorder.js.map +1 -1
- package/Misc/sceneSerializer.js +8 -1
- package/Misc/sceneSerializer.js.map +1 -1
- package/Misc/tools.functions.d.ts +14 -0
- package/Misc/tools.functions.js +23 -0
- package/Misc/tools.functions.js.map +1 -0
- package/Misc/tools.js +5 -6
- package/Misc/tools.js.map +1 -1
- package/Morph/morphTarget.js +2 -1
- package/Morph/morphTarget.js.map +1 -1
- package/Particles/EmitterTypes/boxParticleEmitter.js +8 -8
- package/Particles/EmitterTypes/boxParticleEmitter.js.map +1 -1
- package/Particles/baseParticleSystem.d.ts +8 -11
- package/Particles/baseParticleSystem.js +9 -40
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +71 -1
- package/Particles/gpuParticleSystem.js +102 -1
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particle.d.ts +3 -3
- package/Particles/particle.js +3 -3
- package/Particles/particle.js.map +1 -1
- package/Particles/particleSystem.d.ts +81 -455
- package/Particles/particleSystem.functions.d.ts +61 -0
- package/Particles/particleSystem.functions.js +79 -0
- package/Particles/particleSystem.functions.js.map +1 -0
- package/Particles/particleSystem.js +390 -1984
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.d.ts +485 -0
- package/Particles/thinParticleSystem.js +1768 -0
- package/Particles/thinParticleSystem.js.map +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +2 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +2 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +2 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +2 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.js +2 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.js +2 -1
- package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/blurPostProcess.js +2 -1
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.js +2 -1
- package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.js +2 -1
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.js +2 -1
- package/PostProcesses/convolutionPostProcess.js.map +1 -1
- package/PostProcesses/displayPassPostProcess.js +1 -1
- package/PostProcesses/displayPassPostProcess.js.map +1 -1
- package/PostProcesses/filterPostProcess.js +2 -1
- package/PostProcesses/filterPostProcess.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.js +1 -1
- package/PostProcesses/fxaaPostProcess.js.map +1 -1
- package/PostProcesses/grainPostProcess.js +2 -1
- package/PostProcesses/grainPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.js +2 -1
- package/PostProcesses/motionBlurPostProcess.js.map +1 -1
- package/PostProcesses/passPostProcess.js +1 -1
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.js +2 -1
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/refractionPostProcess.js +2 -1
- package/PostProcesses/refractionPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +2 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +2 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.js +2 -1
- package/PostProcesses/sharpenPostProcess.js.map +1 -1
- package/Probes/reflectionProbe.js +2 -1
- package/Probes/reflectionProbe.js.map +1 -1
- package/Sprites/spriteManager.d.ts +4 -0
- package/Sprites/spriteManager.js.map +1 -1
- package/XR/features/WebXRControllerTeleportation.d.ts +9 -0
- package/XR/features/WebXRControllerTeleportation.js +75 -31
- package/XR/features/WebXRControllerTeleportation.js.map +1 -1
- package/node.js +2 -1
- package/node.js.map +1 -1
- package/package.json +1 -1
- package/types.d.ts +105 -0
- package/types.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativePipelineContext.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Native/nativePipelineContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { Effect } from \"../../Materials/effect\";\r\nimport type { IMatrixLike, IVector2Like, IVector3Like, IVector4Like, IColor3Like, IColor4Like, IQuaternionLike } from \"../../Maths/math.like\";\r\nimport type { IPipelineContext } from \"../IPipelineContext\";\r\nimport type { NativeEngine } from \"../nativeEngine\";\r\nimport type { NativeProgram } from \"./nativeInterfaces\";\r\n\r\nexport class NativePipelineContext implements IPipelineContext {\r\n public isCompiled: boolean = false;\r\n public compilationError?: Error;\r\n\r\n public readonly isAsync: boolean;\r\n\r\n public program: NativeProgram;\r\n\r\n public get isReady(): boolean {\r\n if (this.compilationError) {\r\n const message = this.compilationError.message;\r\n throw new Error(\"SHADER ERROR\" + (typeof message === \"string\" ? \"\\n\" + message : \"\"));\r\n }\r\n return this.isCompiled;\r\n }\r\n\r\n public onCompiled?: () => void;\r\n\r\n public _getVertexShaderCode(): string | null {\r\n return null;\r\n }\r\n\r\n public _getFragmentShaderCode(): string | null {\r\n return null;\r\n }\r\n\r\n private _engine: NativeEngine;\r\n private _valueCache: { [key: string]: any } = {};\r\n private _uniforms: { [key: string]: Nullable<WebGLUniformLocation> };\r\n\r\n constructor(engine: NativeEngine, isAsync: boolean) {\r\n this._engine = engine;\r\n this.isAsync = isAsync;\r\n }\r\n\r\n public _fillEffectInformation(\r\n effect: Effect,\r\n uniformBuffersNames: { [key: string]: number },\r\n uniformsNames: string[],\r\n uniforms: { [key: string]: Nullable<WebGLUniformLocation> },\r\n samplerList: string[],\r\n samplers: { [key: string]: number },\r\n attributesNames: string[],\r\n attributes: number[]\r\n ) {\r\n const engine = this._engine;\r\n if (engine.supportsUniformBuffers) {\r\n for (const name in uniformBuffersNames) {\r\n effect.bindUniformBlock(name, uniformBuffersNames[name]);\r\n }\r\n }\r\n\r\n const effectAvailableUniforms = this._engine.getUniforms(this, uniformsNames);\r\n effectAvailableUniforms.forEach((uniform, index) => {\r\n uniforms[uniformsNames[index]] = uniform;\r\n });\r\n this._uniforms = uniforms;\r\n\r\n let index: number;\r\n for (index = 0; index < samplerList.length; index++) {\r\n const sampler = effect.getUniform(samplerList[index]);\r\n if (sampler == null) {\r\n samplerList.splice(index, 1);\r\n index--;\r\n }\r\n }\r\n\r\n samplerList.forEach((name, index) => {\r\n samplers[name] = index;\r\n });\r\n\r\n attributes.push(...engine.getAttributes(this, attributesNames));\r\n }\r\n\r\n /**\r\n * Release all associated resources.\r\n **/\r\n public dispose() {\r\n this._uniforms = {};\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheMatrix(uniformName: string, matrix: IMatrixLike): boolean {\r\n const cache = this._valueCache[uniformName];\r\n const flag = matrix.updateFlag;\r\n if (cache !== undefined && cache === flag) {\r\n return false;\r\n }\r\n\r\n this._valueCache[uniformName] = flag;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat2(uniformName: string, x: number, y: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache) {\r\n cache = [x, y];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat3(uniformName: string, x: number, y: number, z: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache) {\r\n cache = [x, y, z];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n if (cache[2] !== z) {\r\n cache[2] = z;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat4(uniformName: string, x: number, y: number, z: number, w: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache) {\r\n cache = [x, y, z, w];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n if (cache[2] !== z) {\r\n cache[2] = z;\r\n changed = true;\r\n }\r\n if (cache[3] !== w) {\r\n cache[3] = w;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * Sets an integer value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value Value to be set.\r\n */\r\n public setInt(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this._engine.setInt(this._uniforms[uniformName]!, value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int2.\r\n * @param y Second int in int2.\r\n */\r\n public setInt2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this._engine.setInt2(this._uniforms[uniformName], x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int3.\r\n * @param y Second int in int3.\r\n * @param z Third int in int3.\r\n */\r\n public setInt3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this._engine.setInt3(this._uniforms[uniformName], x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int4.\r\n * @param y Second int in int4.\r\n * @param z Third int in int4.\r\n * @param w Fourth int in int4.\r\n */\r\n public setInt4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this._engine.setInt4(this._uniforms[uniformName], x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an int array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setIntArray(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray2(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setIntArray2(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray3(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setIntArray3(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray4(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setIntArray4(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned integer value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value Value to be set.\r\n */\r\n public setUInt(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this._engine.setUInt(this._uniforms[uniformName]!, value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a unsigned int2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint2.\r\n * @param y Second unsigned int in uint2.\r\n */\r\n public setUInt2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this._engine.setUInt2(this._uniforms[uniformName], x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a unsigned int3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint3.\r\n * @param y Second unsigned int in uint3.\r\n * @param z Third unsigned int in uint3.\r\n */\r\n public setUInt3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this._engine.setUInt3(this._uniforms[uniformName], x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a unsigned int4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint4.\r\n * @param y Second unsigned int in uint4.\r\n * @param z Third unsigned int in uint4.\r\n * @param w Fourth unsigned int in uint4.\r\n */\r\n public setUInt4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this._engine.setUInt4(this._uniforms[uniformName], x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setUIntArray(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray2(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setUIntArray2(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray3(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setUIntArray3(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray4(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setUIntArray4(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an float array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setFloatArray(uniformName: string, array: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setFloatArray(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an float array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setFloatArray2(uniformName: string, array: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setFloatArray2(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an float array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setFloatArray3(uniformName: string, array: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setFloatArray3(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an float array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setFloatArray4(uniformName: string, array: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setFloatArray4(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setArray(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray2(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setArray2(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray3(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setArray3(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray4(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setArray4(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets matrices on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrices matrices to be set.\r\n */\r\n public setMatrices(uniformName: string, matrices: Float32Array): void {\r\n if (!matrices) {\r\n return;\r\n }\r\n\r\n this._valueCache[uniformName] = null;\r\n this._engine.setMatrices(this._uniforms[uniformName]!, matrices);\r\n }\r\n\r\n /**\r\n * Sets matrix on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix(uniformName: string, matrix: IMatrixLike): void {\r\n if (this._cacheMatrix(uniformName, matrix)) {\r\n if (!this._engine.setMatrices(this._uniforms[uniformName]!, matrix.toArray() as Float32Array)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a 3x3 matrix on a uniform variable. (Specified as [1,2,3,4,5,6,7,8,9] will result in [1,2,3][4,5,6][7,8,9] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix3x3(uniformName: string, matrix: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setMatrix3x3(this._uniforms[uniformName]!, matrix);\r\n }\r\n\r\n /**\r\n * Sets a 2x2 matrix on a uniform variable. (Specified as [1,2,3,4] will result in [1,2][3,4] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix2x2(uniformName: string, matrix: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setMatrix2x2(this._uniforms[uniformName]!, matrix);\r\n }\r\n\r\n /**\r\n * Sets a float on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value value to be set.\r\n */\r\n public setFloat(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this._engine.setFloat(this._uniforms[uniformName]!, value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a boolean on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param bool value to be set.\r\n */\r\n public setBool(uniformName: string, bool: boolean): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === bool) {\r\n return;\r\n }\r\n\r\n if (this._engine.setInt(this._uniforms[uniformName]!, bool ? 1 : 0)) {\r\n this._valueCache[uniformName] = bool ? 1 : 0;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector2 vector2 to be set.\r\n */\r\n public setVector2(uniformName: string, vector2: IVector2Like): void {\r\n if (this._cacheFloat2(uniformName, vector2.x, vector2.y)) {\r\n if (!this._engine.setFloat2(this._uniforms[uniformName]!, vector2.x, vector2.y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float2.\r\n * @param y Second float in float2.\r\n */\r\n public setFloat2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this._engine.setFloat2(this._uniforms[uniformName]!, x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector3 Value to be set.\r\n */\r\n public setVector3(uniformName: string, vector3: IVector3Like): void {\r\n if (this._cacheFloat3(uniformName, vector3.x, vector3.y, vector3.z)) {\r\n if (!this._engine.setFloat3(this._uniforms[uniformName]!, vector3.x, vector3.y, vector3.z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float3.\r\n * @param y Second float in float3.\r\n * @param z Third float in float3.\r\n */\r\n public setFloat3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this._engine.setFloat3(this._uniforms[uniformName]!, x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector4 Value to be set.\r\n */\r\n public setVector4(uniformName: string, vector4: IVector4Like): void {\r\n if (this._cacheFloat4(uniformName, vector4.x, vector4.y, vector4.z, vector4.w)) {\r\n if (!this._engine.setFloat4(this._uniforms[uniformName]!, vector4.x, vector4.y, vector4.z, vector4.w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Quaternion on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param quaternion Value to be set.\r\n */\r\n public setQuaternion(uniformName: string, quaternion: IQuaternionLike): void {\r\n if (this._cacheFloat4(uniformName, quaternion.x, quaternion.y, quaternion.z, quaternion.w)) {\r\n if (!this._engine.setFloat4(this._uniforms[uniformName]!, quaternion.x, quaternion.y, quaternion.z, quaternion.w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float4.\r\n * @param y Second float in float4.\r\n * @param z Third float in float4.\r\n * @param w Fourth float in float4.\r\n */\r\n public setFloat4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this._engine.setFloat4(this._uniforms[uniformName]!, x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n */\r\n public setColor3(uniformName: string, color3: IColor3Like): void {\r\n if (this._cacheFloat3(uniformName, color3.r, color3.g, color3.b)) {\r\n if (!this._engine.setFloat3(this._uniforms[uniformName]!, color3.r, color3.g, color3.b)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n * @param alpha Alpha value to be set.\r\n */\r\n public setColor4(uniformName: string, color3: IColor3Like, alpha: number): void {\r\n if (this._cacheFloat4(uniformName, color3.r, color3.g, color3.b, alpha)) {\r\n if (!this._engine.setFloat4(this._uniforms[uniformName]!, color3.r, color3.g, color3.b, alpha)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable\r\n * @param uniformName defines the name of the variable\r\n * @param color4 defines the value to be set\r\n */\r\n public setDirectColor4(uniformName: string, color4: IColor4Like): void {\r\n if (this._cacheFloat4(uniformName, color4.r, color4.g, color4.b, color4.a)) {\r\n if (!this._engine.setFloat4(this._uniforms[uniformName]!, color4.r, color4.g, color4.b, color4.a)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"nativePipelineContext.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Native/nativePipelineContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { Effect } from \"../../Materials/effect\";\r\nimport type { IMatrixLike, IVector2Like, IVector3Like, IVector4Like, IColor3Like, IColor4Like, IQuaternionLike } from \"../../Maths/math.like\";\r\nimport type { IPipelineContext } from \"../IPipelineContext\";\r\nimport type { NativeEngine } from \"../nativeEngine\";\r\nimport type { NativeProgram } from \"./nativeInterfaces\";\r\n\r\nexport class NativePipelineContext implements IPipelineContext {\r\n public isCompiled: boolean = false;\r\n public compilationError?: Error;\r\n\r\n public readonly isAsync: boolean;\r\n\r\n public program: NativeProgram;\r\n\r\n public get isReady(): boolean {\r\n if (this.compilationError) {\r\n const message = this.compilationError.message;\r\n throw new Error(\"SHADER ERROR\" + (typeof message === \"string\" ? \"\\n\" + message : \"\"));\r\n }\r\n return this.isCompiled;\r\n }\r\n\r\n public onCompiled?: () => void;\r\n\r\n public _getVertexShaderCode(): string | null {\r\n return null;\r\n }\r\n\r\n public _getFragmentShaderCode(): string | null {\r\n return null;\r\n }\r\n\r\n private _engine: NativeEngine;\r\n private _valueCache: { [key: string]: any } = {};\r\n private _uniforms: { [key: string]: Nullable<WebGLUniformLocation> };\r\n\r\n constructor(engine: NativeEngine, isAsync: boolean) {\r\n this._engine = engine;\r\n this.isAsync = isAsync;\r\n }\r\n\r\n public _fillEffectInformation(\r\n effect: Effect,\r\n uniformBuffersNames: { [key: string]: number },\r\n uniformsNames: string[],\r\n uniforms: { [key: string]: Nullable<WebGLUniformLocation> },\r\n samplerList: string[],\r\n samplers: { [key: string]: number },\r\n attributesNames: string[],\r\n attributes: number[]\r\n ) {\r\n const engine = this._engine;\r\n if (engine.supportsUniformBuffers) {\r\n for (const name in uniformBuffersNames) {\r\n effect.bindUniformBlock(name, uniformBuffersNames[name]);\r\n }\r\n }\r\n\r\n const effectAvailableUniforms = this._engine.getUniforms(this, uniformsNames);\r\n effectAvailableUniforms.forEach((uniform, index) => {\r\n uniforms[uniformsNames[index]] = uniform;\r\n });\r\n this._uniforms = uniforms;\r\n\r\n let index: number;\r\n for (index = 0; index < samplerList.length; index++) {\r\n const sampler = effect.getUniform(samplerList[index]);\r\n if (sampler == null) {\r\n samplerList.splice(index, 1);\r\n index--;\r\n }\r\n }\r\n\r\n samplerList.forEach((name, index) => {\r\n samplers[name] = index;\r\n });\r\n\r\n attributes.push(...engine.getAttributes(this, attributesNames));\r\n }\r\n\r\n /**\r\n * Release all associated resources.\r\n **/\r\n public dispose() {\r\n this._uniforms = {};\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheMatrix(uniformName: string, matrix: IMatrixLike): boolean {\r\n const cache = this._valueCache[uniformName];\r\n const flag = matrix.updateFlag;\r\n if (cache !== undefined && cache === flag) {\r\n return false;\r\n }\r\n\r\n this._valueCache[uniformName] = flag;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat2(uniformName: string, x: number, y: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache) {\r\n cache = [x, y];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat3(uniformName: string, x: number, y: number, z: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache) {\r\n cache = [x, y, z];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n if (cache[2] !== z) {\r\n cache[2] = z;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat4(uniformName: string, x: number, y: number, z: number, w: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache) {\r\n cache = [x, y, z, w];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n if (cache[2] !== z) {\r\n cache[2] = z;\r\n changed = true;\r\n }\r\n if (cache[3] !== w) {\r\n cache[3] = w;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * Sets an integer value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value Value to be set.\r\n */\r\n public setInt(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this._engine.setInt(this._uniforms[uniformName]!, value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int2.\r\n * @param y Second int in int2.\r\n */\r\n public setInt2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this._engine.setInt2(this._uniforms[uniformName], x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int3.\r\n * @param y Second int in int3.\r\n * @param z Third int in int3.\r\n */\r\n public setInt3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this._engine.setInt3(this._uniforms[uniformName], x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int4.\r\n * @param y Second int in int4.\r\n * @param z Third int in int4.\r\n * @param w Fourth int in int4.\r\n */\r\n public setInt4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this._engine.setInt4(this._uniforms[uniformName], x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an int array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setIntArray(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray2(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setIntArray2(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray3(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setIntArray3(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray4(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setIntArray4(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned integer value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value Value to be set.\r\n */\r\n public setUInt(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this._engine.setUInt(this._uniforms[uniformName]!, value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a unsigned int2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint2.\r\n * @param y Second unsigned int in uint2.\r\n */\r\n public setUInt2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this._engine.setUInt2(this._uniforms[uniformName], x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a unsigned int3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint3.\r\n * @param y Second unsigned int in uint3.\r\n * @param z Third unsigned int in uint3.\r\n */\r\n public setUInt3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this._engine.setUInt3(this._uniforms[uniformName], x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a unsigned int4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint4.\r\n * @param y Second unsigned int in uint4.\r\n * @param z Third unsigned int in uint4.\r\n * @param w Fourth unsigned int in uint4.\r\n */\r\n public setUInt4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this._engine.setUInt4(this._uniforms[uniformName], x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setUIntArray(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray2(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setUIntArray2(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray3(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setUIntArray3(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray4(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setUIntArray4(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an float array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setFloatArray(uniformName: string, array: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setFloatArray(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an float array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setFloatArray2(uniformName: string, array: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setFloatArray2(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an float array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setFloatArray3(uniformName: string, array: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setFloatArray3(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an float array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setFloatArray4(uniformName: string, array: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setFloatArray4(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setArray(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray2(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setArray2(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray3(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setArray3(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets an array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray4(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setArray4(this._uniforms[uniformName]!, array);\r\n }\r\n\r\n /**\r\n * Sets matrices on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrices matrices to be set.\r\n */\r\n public setMatrices(uniformName: string, matrices: Float32Array): void {\r\n if (!matrices) {\r\n return;\r\n }\r\n\r\n this._valueCache[uniformName] = null;\r\n this._engine.setMatrices(this._uniforms[uniformName]!, matrices);\r\n }\r\n\r\n /**\r\n * Sets matrix on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix(uniformName: string, matrix: IMatrixLike): void {\r\n if (this._cacheMatrix(uniformName, matrix)) {\r\n if (!this._engine.setMatrices(this._uniforms[uniformName]!, matrix.asArray() as Float32Array)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a 3x3 matrix on a uniform variable. (Specified as [1,2,3,4,5,6,7,8,9] will result in [1,2,3][4,5,6][7,8,9] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix3x3(uniformName: string, matrix: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setMatrix3x3(this._uniforms[uniformName]!, matrix);\r\n }\r\n\r\n /**\r\n * Sets a 2x2 matrix on a uniform variable. (Specified as [1,2,3,4] will result in [1,2][3,4] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix2x2(uniformName: string, matrix: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this._engine.setMatrix2x2(this._uniforms[uniformName]!, matrix);\r\n }\r\n\r\n /**\r\n * Sets a float on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value value to be set.\r\n */\r\n public setFloat(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this._engine.setFloat(this._uniforms[uniformName]!, value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a boolean on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param bool value to be set.\r\n */\r\n public setBool(uniformName: string, bool: boolean): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === bool) {\r\n return;\r\n }\r\n\r\n if (this._engine.setInt(this._uniforms[uniformName]!, bool ? 1 : 0)) {\r\n this._valueCache[uniformName] = bool ? 1 : 0;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector2 vector2 to be set.\r\n */\r\n public setVector2(uniformName: string, vector2: IVector2Like): void {\r\n if (this._cacheFloat2(uniformName, vector2.x, vector2.y)) {\r\n if (!this._engine.setFloat2(this._uniforms[uniformName]!, vector2.x, vector2.y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float2.\r\n * @param y Second float in float2.\r\n */\r\n public setFloat2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this._engine.setFloat2(this._uniforms[uniformName]!, x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector3 Value to be set.\r\n */\r\n public setVector3(uniformName: string, vector3: IVector3Like): void {\r\n if (this._cacheFloat3(uniformName, vector3.x, vector3.y, vector3.z)) {\r\n if (!this._engine.setFloat3(this._uniforms[uniformName]!, vector3.x, vector3.y, vector3.z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float3.\r\n * @param y Second float in float3.\r\n * @param z Third float in float3.\r\n */\r\n public setFloat3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this._engine.setFloat3(this._uniforms[uniformName]!, x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector4 Value to be set.\r\n */\r\n public setVector4(uniformName: string, vector4: IVector4Like): void {\r\n if (this._cacheFloat4(uniformName, vector4.x, vector4.y, vector4.z, vector4.w)) {\r\n if (!this._engine.setFloat4(this._uniforms[uniformName]!, vector4.x, vector4.y, vector4.z, vector4.w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Quaternion on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param quaternion Value to be set.\r\n */\r\n public setQuaternion(uniformName: string, quaternion: IQuaternionLike): void {\r\n if (this._cacheFloat4(uniformName, quaternion.x, quaternion.y, quaternion.z, quaternion.w)) {\r\n if (!this._engine.setFloat4(this._uniforms[uniformName]!, quaternion.x, quaternion.y, quaternion.z, quaternion.w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float4.\r\n * @param y Second float in float4.\r\n * @param z Third float in float4.\r\n * @param w Fourth float in float4.\r\n */\r\n public setFloat4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this._engine.setFloat4(this._uniforms[uniformName]!, x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n */\r\n public setColor3(uniformName: string, color3: IColor3Like): void {\r\n if (this._cacheFloat3(uniformName, color3.r, color3.g, color3.b)) {\r\n if (!this._engine.setFloat3(this._uniforms[uniformName]!, color3.r, color3.g, color3.b)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n * @param alpha Alpha value to be set.\r\n */\r\n public setColor4(uniformName: string, color3: IColor3Like, alpha: number): void {\r\n if (this._cacheFloat4(uniformName, color3.r, color3.g, color3.b, alpha)) {\r\n if (!this._engine.setFloat4(this._uniforms[uniformName]!, color3.r, color3.g, color3.b, alpha)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable\r\n * @param uniformName defines the name of the variable\r\n * @param color4 defines the value to be set\r\n */\r\n public setDirectColor4(uniformName: string, color4: IColor4Like): void {\r\n if (this._cacheFloat4(uniformName, color4.r, color4.g, color4.b, color4.a)) {\r\n if (!this._engine.setFloat4(this._uniforms[uniformName]!, color4.r, color4.g, color4.b, color4.a)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -386,7 +386,7 @@ export class WebGLPipelineContext {
|
|
|
386
386
|
*/
|
|
387
387
|
setMatrix(uniformName, matrix) {
|
|
388
388
|
if (this._cacheMatrix(uniformName, matrix)) {
|
|
389
|
-
if (!this.engine.setMatrices(this._uniforms[uniformName], matrix.
|
|
389
|
+
if (!this.engine.setMatrices(this._uniforms[uniformName], matrix.asArray())) {
|
|
390
390
|
this._valueCache[uniformName] = null;
|
|
391
391
|
}
|
|
392
392
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webGLPipelineContext.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGL/webGLPipelineContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IPipelineContext } from \"../IPipelineContext\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { Effect } from \"../../Materials/effect\";\r\nimport type { IMatrixLike, IVector2Like, IVector3Like, IVector4Like, IColor3Like, IColor4Like, IQuaternionLike } from \"../../Maths/math.like\";\r\nimport type { ThinEngine } from \"../thinEngine\";\r\n\r\n/** @internal */\r\nexport class WebGLPipelineContext implements IPipelineContext {\r\n private _valueCache: { [key: string]: any } = {};\r\n private _uniforms: { [key: string]: Nullable<WebGLUniformLocation> };\r\n\r\n public engine: ThinEngine;\r\n public program: Nullable<WebGLProgram>;\r\n public context?: WebGLRenderingContext;\r\n public vertexShader?: WebGLShader;\r\n public fragmentShader?: WebGLShader;\r\n public isParallelCompiled: boolean;\r\n public onCompiled?: () => void;\r\n public transformFeedback?: WebGLTransformFeedback | null;\r\n\r\n public vertexCompilationError: Nullable<string> = null;\r\n public fragmentCompilationError: Nullable<string> = null;\r\n public programLinkError: Nullable<string> = null;\r\n public programValidationError: Nullable<string> = null;\r\n\r\n /** @internal */\r\n public _isDisposed = false;\r\n\r\n public get isAsync() {\r\n return this.isParallelCompiled;\r\n }\r\n\r\n public get isReady(): boolean {\r\n if (this.program) {\r\n if (this.isParallelCompiled) {\r\n return this.engine._isRenderingStateCompiled(this);\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public _handlesSpectorRebuildCallback(onCompiled: (program: WebGLProgram) => void): void {\r\n if (onCompiled && this.program) {\r\n onCompiled(this.program);\r\n }\r\n }\r\n\r\n public _fillEffectInformation(\r\n effect: Effect,\r\n uniformBuffersNames: { [key: string]: number },\r\n uniformsNames: string[],\r\n uniforms: { [key: string]: Nullable<WebGLUniformLocation> },\r\n samplerList: string[],\r\n samplers: { [key: string]: number },\r\n attributesNames: string[],\r\n attributes: number[]\r\n ) {\r\n const engine = this.engine;\r\n if (engine.supportsUniformBuffers) {\r\n for (const name in uniformBuffersNames) {\r\n effect.bindUniformBlock(name, uniformBuffersNames[name]);\r\n }\r\n }\r\n\r\n const effectAvailableUniforms = this.engine.getUniforms(this, uniformsNames);\r\n effectAvailableUniforms.forEach((uniform, index) => {\r\n uniforms[uniformsNames[index]] = uniform;\r\n });\r\n this._uniforms = uniforms;\r\n\r\n let index: number;\r\n for (index = 0; index < samplerList.length; index++) {\r\n const sampler = effect.getUniform(samplerList[index]);\r\n if (sampler == null) {\r\n samplerList.splice(index, 1);\r\n index--;\r\n }\r\n }\r\n\r\n samplerList.forEach((name, index) => {\r\n samplers[name] = index;\r\n });\r\n\r\n for (const attr of engine.getAttributes(this, attributesNames)) {\r\n attributes.push(attr);\r\n }\r\n }\r\n\r\n /**\r\n * Release all associated resources.\r\n **/\r\n public dispose() {\r\n this._uniforms = {};\r\n this._isDisposed = true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheMatrix(uniformName: string, matrix: IMatrixLike): boolean {\r\n const cache = this._valueCache[uniformName];\r\n const flag = matrix.updateFlag;\r\n if (cache !== undefined && cache === flag) {\r\n return false;\r\n }\r\n\r\n this._valueCache[uniformName] = flag;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat2(uniformName: string, x: number, y: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache || cache.length !== 2) {\r\n cache = [x, y];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat3(uniformName: string, x: number, y: number, z: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache || cache.length !== 3) {\r\n cache = [x, y, z];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n if (cache[2] !== z) {\r\n cache[2] = z;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat4(uniformName: string, x: number, y: number, z: number, w: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache || cache.length !== 4) {\r\n cache = [x, y, z, w];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n if (cache[2] !== z) {\r\n cache[2] = z;\r\n changed = true;\r\n }\r\n if (cache[3] !== w) {\r\n cache[3] = w;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * Sets an integer value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value Value to be set.\r\n */\r\n public setInt(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this.engine.setInt(this._uniforms[uniformName], value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int2.\r\n * @param y Second int in int2.\r\n */\r\n public setInt2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this.engine.setInt2(this._uniforms[uniformName], x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int3.\r\n * @param y Second int in int3.\r\n * @param z Third int in int3.\r\n */\r\n public setInt3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this.engine.setInt3(this._uniforms[uniformName], x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int4.\r\n * @param y Second int in int4.\r\n * @param z Third int in int4.\r\n * @param w Fourth int in int4.\r\n */\r\n public setInt4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this.engine.setInt4(this._uniforms[uniformName], x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an int array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setIntArray(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray2(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setIntArray2(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray3(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setIntArray3(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray4(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setIntArray4(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned integer value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value Value to be set.\r\n */\r\n public setUInt(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this.engine.setUInt(this._uniforms[uniformName], value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets an unsigned int2 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint2.\r\n * @param y Second unsigned int in uint2.\r\n */\r\n public setUInt2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this.engine.setUInt2(this._uniforms[uniformName], x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an unsigned int3 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint3.\r\n * @param y Second unsigned int in uint3.\r\n * @param z Third unsigned int in uint3.\r\n */\r\n public setUInt3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this.engine.setUInt3(this._uniforms[uniformName], x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an unsigned int4 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint4.\r\n * @param y Second unsigned int in uint4.\r\n * @param z Third unsigned int in uint4.\r\n * @param w Fourth unsigned int in uint4.\r\n */\r\n public setUInt4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this.engine.setUInt4(this._uniforms[uniformName], x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setUIntArray(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray2(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setUIntArray2(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray3(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setUIntArray3(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray4(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setUIntArray4(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setArray(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray2(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setArray2(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray3(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setArray3(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray4(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setArray4(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets matrices on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrices matrices to be set.\r\n */\r\n public setMatrices(uniformName: string, matrices: Float32Array): void {\r\n if (!matrices) {\r\n return;\r\n }\r\n\r\n this._valueCache[uniformName] = null;\r\n this.engine.setMatrices(this._uniforms[uniformName], matrices);\r\n }\r\n\r\n /**\r\n * Sets matrix on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix(uniformName: string, matrix: IMatrixLike): void {\r\n if (this._cacheMatrix(uniformName, matrix)) {\r\n if (!this.engine.setMatrices(this._uniforms[uniformName], matrix.toArray() as Float32Array)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a 3x3 matrix on a uniform variable. (Specified as [1,2,3,4,5,6,7,8,9] will result in [1,2,3][4,5,6][7,8,9] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix3x3(uniformName: string, matrix: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setMatrix3x3(this._uniforms[uniformName], matrix);\r\n }\r\n\r\n /**\r\n * Sets a 2x2 matrix on a uniform variable. (Specified as [1,2,3,4] will result in [1,2][3,4] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix2x2(uniformName: string, matrix: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setMatrix2x2(this._uniforms[uniformName], matrix);\r\n }\r\n\r\n /**\r\n * Sets a float on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value value to be set.\r\n */\r\n public setFloat(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this.engine.setFloat(this._uniforms[uniformName], value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector2 vector2 to be set.\r\n */\r\n public setVector2(uniformName: string, vector2: IVector2Like): void {\r\n if (this._cacheFloat2(uniformName, vector2.x, vector2.y)) {\r\n if (!this.engine.setFloat2(this._uniforms[uniformName], vector2.x, vector2.y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float2.\r\n * @param y Second float in float2.\r\n */\r\n public setFloat2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this.engine.setFloat2(this._uniforms[uniformName], x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector3 Value to be set.\r\n */\r\n public setVector3(uniformName: string, vector3: IVector3Like): void {\r\n if (this._cacheFloat3(uniformName, vector3.x, vector3.y, vector3.z)) {\r\n if (!this.engine.setFloat3(this._uniforms[uniformName], vector3.x, vector3.y, vector3.z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float3.\r\n * @param y Second float in float3.\r\n * @param z Third float in float3.\r\n */\r\n public setFloat3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this.engine.setFloat3(this._uniforms[uniformName], x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector4 Value to be set.\r\n */\r\n public setVector4(uniformName: string, vector4: IVector4Like): void {\r\n if (this._cacheFloat4(uniformName, vector4.x, vector4.y, vector4.z, vector4.w)) {\r\n if (!this.engine.setFloat4(this._uniforms[uniformName], vector4.x, vector4.y, vector4.z, vector4.w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Quaternion on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param quaternion Value to be set.\r\n */\r\n public setQuaternion(uniformName: string, quaternion: IQuaternionLike): void {\r\n if (this._cacheFloat4(uniformName, quaternion.x, quaternion.y, quaternion.z, quaternion.w)) {\r\n if (!this.engine.setFloat4(this._uniforms[uniformName], quaternion.x, quaternion.y, quaternion.z, quaternion.w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float4.\r\n * @param y Second float in float4.\r\n * @param z Third float in float4.\r\n * @param w Fourth float in float4.\r\n */\r\n public setFloat4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this.engine.setFloat4(this._uniforms[uniformName], x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n */\r\n public setColor3(uniformName: string, color3: IColor3Like): void {\r\n if (this._cacheFloat3(uniformName, color3.r, color3.g, color3.b)) {\r\n if (!this.engine.setFloat3(this._uniforms[uniformName], color3.r, color3.g, color3.b)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n * @param alpha Alpha value to be set.\r\n */\r\n public setColor4(uniformName: string, color3: IColor3Like, alpha: number): void {\r\n if (this._cacheFloat4(uniformName, color3.r, color3.g, color3.b, alpha)) {\r\n if (!this.engine.setFloat4(this._uniforms[uniformName], color3.r, color3.g, color3.b, alpha)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable\r\n * @param uniformName defines the name of the variable\r\n * @param color4 defines the value to be set\r\n */\r\n public setDirectColor4(uniformName: string, color4: IColor4Like): void {\r\n if (this._cacheFloat4(uniformName, color4.r, color4.g, color4.b, color4.a)) {\r\n if (!this.engine.setFloat4(this._uniforms[uniformName], color4.r, color4.g, color4.b, color4.a)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n public _getVertexShaderCode(): string | null {\r\n return this.vertexShader ? this.engine._getShaderSource(this.vertexShader) : null;\r\n }\r\n\r\n public _getFragmentShaderCode(): string | null {\r\n return this.fragmentShader ? this.engine._getShaderSource(this.fragmentShader) : null;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"webGLPipelineContext.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGL/webGLPipelineContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IPipelineContext } from \"../IPipelineContext\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { Effect } from \"../../Materials/effect\";\r\nimport type { IMatrixLike, IVector2Like, IVector3Like, IVector4Like, IColor3Like, IColor4Like, IQuaternionLike } from \"../../Maths/math.like\";\r\nimport type { ThinEngine } from \"../thinEngine\";\r\n\r\n/** @internal */\r\nexport class WebGLPipelineContext implements IPipelineContext {\r\n private _valueCache: { [key: string]: any } = {};\r\n private _uniforms: { [key: string]: Nullable<WebGLUniformLocation> };\r\n\r\n public engine: ThinEngine;\r\n public program: Nullable<WebGLProgram>;\r\n public context?: WebGLRenderingContext;\r\n public vertexShader?: WebGLShader;\r\n public fragmentShader?: WebGLShader;\r\n public isParallelCompiled: boolean;\r\n public onCompiled?: () => void;\r\n public transformFeedback?: WebGLTransformFeedback | null;\r\n\r\n public vertexCompilationError: Nullable<string> = null;\r\n public fragmentCompilationError: Nullable<string> = null;\r\n public programLinkError: Nullable<string> = null;\r\n public programValidationError: Nullable<string> = null;\r\n\r\n /** @internal */\r\n public _isDisposed = false;\r\n\r\n public get isAsync() {\r\n return this.isParallelCompiled;\r\n }\r\n\r\n public get isReady(): boolean {\r\n if (this.program) {\r\n if (this.isParallelCompiled) {\r\n return this.engine._isRenderingStateCompiled(this);\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public _handlesSpectorRebuildCallback(onCompiled: (program: WebGLProgram) => void): void {\r\n if (onCompiled && this.program) {\r\n onCompiled(this.program);\r\n }\r\n }\r\n\r\n public _fillEffectInformation(\r\n effect: Effect,\r\n uniformBuffersNames: { [key: string]: number },\r\n uniformsNames: string[],\r\n uniforms: { [key: string]: Nullable<WebGLUniformLocation> },\r\n samplerList: string[],\r\n samplers: { [key: string]: number },\r\n attributesNames: string[],\r\n attributes: number[]\r\n ) {\r\n const engine = this.engine;\r\n if (engine.supportsUniformBuffers) {\r\n for (const name in uniformBuffersNames) {\r\n effect.bindUniformBlock(name, uniformBuffersNames[name]);\r\n }\r\n }\r\n\r\n const effectAvailableUniforms = this.engine.getUniforms(this, uniformsNames);\r\n effectAvailableUniforms.forEach((uniform, index) => {\r\n uniforms[uniformsNames[index]] = uniform;\r\n });\r\n this._uniforms = uniforms;\r\n\r\n let index: number;\r\n for (index = 0; index < samplerList.length; index++) {\r\n const sampler = effect.getUniform(samplerList[index]);\r\n if (sampler == null) {\r\n samplerList.splice(index, 1);\r\n index--;\r\n }\r\n }\r\n\r\n samplerList.forEach((name, index) => {\r\n samplers[name] = index;\r\n });\r\n\r\n for (const attr of engine.getAttributes(this, attributesNames)) {\r\n attributes.push(attr);\r\n }\r\n }\r\n\r\n /**\r\n * Release all associated resources.\r\n **/\r\n public dispose() {\r\n this._uniforms = {};\r\n this._isDisposed = true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheMatrix(uniformName: string, matrix: IMatrixLike): boolean {\r\n const cache = this._valueCache[uniformName];\r\n const flag = matrix.updateFlag;\r\n if (cache !== undefined && cache === flag) {\r\n return false;\r\n }\r\n\r\n this._valueCache[uniformName] = flag;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat2(uniformName: string, x: number, y: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache || cache.length !== 2) {\r\n cache = [x, y];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat3(uniformName: string, x: number, y: number, z: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache || cache.length !== 3) {\r\n cache = [x, y, z];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n if (cache[2] !== z) {\r\n cache[2] = z;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _cacheFloat4(uniformName: string, x: number, y: number, z: number, w: number): boolean {\r\n let cache = this._valueCache[uniformName];\r\n if (!cache || cache.length !== 4) {\r\n cache = [x, y, z, w];\r\n this._valueCache[uniformName] = cache;\r\n return true;\r\n }\r\n\r\n let changed = false;\r\n if (cache[0] !== x) {\r\n cache[0] = x;\r\n changed = true;\r\n }\r\n if (cache[1] !== y) {\r\n cache[1] = y;\r\n changed = true;\r\n }\r\n if (cache[2] !== z) {\r\n cache[2] = z;\r\n changed = true;\r\n }\r\n if (cache[3] !== w) {\r\n cache[3] = w;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * Sets an integer value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value Value to be set.\r\n */\r\n public setInt(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this.engine.setInt(this._uniforms[uniformName], value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int2.\r\n * @param y Second int in int2.\r\n */\r\n public setInt2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this.engine.setInt2(this._uniforms[uniformName], x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int3.\r\n * @param y Second int in int3.\r\n * @param z Third int in int3.\r\n */\r\n public setInt3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this.engine.setInt3(this._uniforms[uniformName], x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a int4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int4.\r\n * @param y Second int in int4.\r\n * @param z Third int in int4.\r\n * @param w Fourth int in int4.\r\n */\r\n public setInt4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this.engine.setInt4(this._uniforms[uniformName], x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an int array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setIntArray(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray2(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setIntArray2(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray3(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setIntArray3(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray4(uniformName: string, array: Int32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setIntArray4(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned integer value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value Value to be set.\r\n */\r\n public setUInt(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this.engine.setUInt(this._uniforms[uniformName], value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets an unsigned int2 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint2.\r\n * @param y Second unsigned int in uint2.\r\n */\r\n public setUInt2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this.engine.setUInt2(this._uniforms[uniformName], x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an unsigned int3 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint3.\r\n * @param y Second unsigned int in uint3.\r\n * @param z Third unsigned int in uint3.\r\n */\r\n public setUInt3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this.engine.setUInt3(this._uniforms[uniformName], x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an unsigned int4 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First unsigned int in uint4.\r\n * @param y Second unsigned int in uint4.\r\n * @param z Third unsigned int in uint4.\r\n * @param w Fourth unsigned int in uint4.\r\n */\r\n public setUInt4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this.engine.setUInt4(this._uniforms[uniformName], x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setUIntArray(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray2(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setUIntArray2(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray3(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setUIntArray3(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an unsigned int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setUIntArray4(uniformName: string, array: Uint32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setUIntArray4(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setArray(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray2(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setArray2(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray3(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setArray3(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets an array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray4(uniformName: string, array: number[]): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setArray4(this._uniforms[uniformName], array);\r\n }\r\n\r\n /**\r\n * Sets matrices on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrices matrices to be set.\r\n */\r\n public setMatrices(uniformName: string, matrices: Float32Array): void {\r\n if (!matrices) {\r\n return;\r\n }\r\n\r\n this._valueCache[uniformName] = null;\r\n this.engine.setMatrices(this._uniforms[uniformName], matrices);\r\n }\r\n\r\n /**\r\n * Sets matrix on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix(uniformName: string, matrix: IMatrixLike): void {\r\n if (this._cacheMatrix(uniformName, matrix)) {\r\n if (!this.engine.setMatrices(this._uniforms[uniformName], matrix.asArray() as Float32Array)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a 3x3 matrix on a uniform variable. (Specified as [1,2,3,4,5,6,7,8,9] will result in [1,2,3][4,5,6][7,8,9] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix3x3(uniformName: string, matrix: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setMatrix3x3(this._uniforms[uniformName], matrix);\r\n }\r\n\r\n /**\r\n * Sets a 2x2 matrix on a uniform variable. (Specified as [1,2,3,4] will result in [1,2][3,4] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix2x2(uniformName: string, matrix: Float32Array): void {\r\n this._valueCache[uniformName] = null;\r\n this.engine.setMatrix2x2(this._uniforms[uniformName], matrix);\r\n }\r\n\r\n /**\r\n * Sets a float on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value value to be set.\r\n */\r\n public setFloat(uniformName: string, value: number): void {\r\n const cache = this._valueCache[uniformName];\r\n if (cache !== undefined && cache === value) {\r\n return;\r\n }\r\n\r\n if (this.engine.setFloat(this._uniforms[uniformName], value)) {\r\n this._valueCache[uniformName] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector2 vector2 to be set.\r\n */\r\n public setVector2(uniformName: string, vector2: IVector2Like): void {\r\n if (this._cacheFloat2(uniformName, vector2.x, vector2.y)) {\r\n if (!this.engine.setFloat2(this._uniforms[uniformName], vector2.x, vector2.y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float2.\r\n * @param y Second float in float2.\r\n */\r\n public setFloat2(uniformName: string, x: number, y: number): void {\r\n if (this._cacheFloat2(uniformName, x, y)) {\r\n if (!this.engine.setFloat2(this._uniforms[uniformName], x, y)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector3 Value to be set.\r\n */\r\n public setVector3(uniformName: string, vector3: IVector3Like): void {\r\n if (this._cacheFloat3(uniformName, vector3.x, vector3.y, vector3.z)) {\r\n if (!this.engine.setFloat3(this._uniforms[uniformName], vector3.x, vector3.y, vector3.z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float3.\r\n * @param y Second float in float3.\r\n * @param z Third float in float3.\r\n */\r\n public setFloat3(uniformName: string, x: number, y: number, z: number): void {\r\n if (this._cacheFloat3(uniformName, x, y, z)) {\r\n if (!this.engine.setFloat3(this._uniforms[uniformName], x, y, z)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Vector4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector4 Value to be set.\r\n */\r\n public setVector4(uniformName: string, vector4: IVector4Like): void {\r\n if (this._cacheFloat4(uniformName, vector4.x, vector4.y, vector4.z, vector4.w)) {\r\n if (!this.engine.setFloat4(this._uniforms[uniformName], vector4.x, vector4.y, vector4.z, vector4.w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Quaternion on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param quaternion Value to be set.\r\n */\r\n public setQuaternion(uniformName: string, quaternion: IQuaternionLike): void {\r\n if (this._cacheFloat4(uniformName, quaternion.x, quaternion.y, quaternion.z, quaternion.w)) {\r\n if (!this.engine.setFloat4(this._uniforms[uniformName], quaternion.x, quaternion.y, quaternion.z, quaternion.w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a float4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float4.\r\n * @param y Second float in float4.\r\n * @param z Third float in float4.\r\n * @param w Fourth float in float4.\r\n */\r\n public setFloat4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (this._cacheFloat4(uniformName, x, y, z, w)) {\r\n if (!this.engine.setFloat4(this._uniforms[uniformName], x, y, z, w)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n */\r\n public setColor3(uniformName: string, color3: IColor3Like): void {\r\n if (this._cacheFloat3(uniformName, color3.r, color3.g, color3.b)) {\r\n if (!this.engine.setFloat3(this._uniforms[uniformName], color3.r, color3.g, color3.b)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n * @param alpha Alpha value to be set.\r\n */\r\n public setColor4(uniformName: string, color3: IColor3Like, alpha: number): void {\r\n if (this._cacheFloat4(uniformName, color3.r, color3.g, color3.b, alpha)) {\r\n if (!this.engine.setFloat4(this._uniforms[uniformName], color3.r, color3.g, color3.b, alpha)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable\r\n * @param uniformName defines the name of the variable\r\n * @param color4 defines the value to be set\r\n */\r\n public setDirectColor4(uniformName: string, color4: IColor4Like): void {\r\n if (this._cacheFloat4(uniformName, color4.r, color4.g, color4.b, color4.a)) {\r\n if (!this.engine.setFloat4(this._uniforms[uniformName], color4.r, color4.g, color4.b, color4.a)) {\r\n this._valueCache[uniformName] = null;\r\n }\r\n }\r\n }\r\n\r\n public _getVertexShaderCode(): string | null {\r\n return this.vertexShader ? this.engine._getShaderSource(this.vertexShader) : null;\r\n }\r\n\r\n public _getFragmentShaderCode(): string | null {\r\n return this.fragmentShader ? this.engine._getShaderSource(this.fragmentShader) : null;\r\n }\r\n}\r\n"]}
|
|
@@ -90,9 +90,13 @@ export class WebGPUComputeContext {
|
|
|
90
90
|
break;
|
|
91
91
|
}
|
|
92
92
|
case ComputeBindingType.UniformBuffer:
|
|
93
|
-
case ComputeBindingType.StorageBuffer:
|
|
94
|
-
|
|
95
|
-
const dataBuffer =
|
|
93
|
+
case ComputeBindingType.StorageBuffer:
|
|
94
|
+
case ComputeBindingType.DataBuffer: {
|
|
95
|
+
const dataBuffer = type === ComputeBindingType.DataBuffer
|
|
96
|
+
? object
|
|
97
|
+
: type === ComputeBindingType.UniformBuffer
|
|
98
|
+
? object.getBuffer()
|
|
99
|
+
: object.getBuffer();
|
|
96
100
|
const webgpuBuffer = dataBuffer.underlyingResource;
|
|
97
101
|
if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {
|
|
98
102
|
entries[indexInGroupEntries].resource.buffer = webgpuBuffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpuComputeContext.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuComputeContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StorageBuffer } from \"../../Buffers/storageBuffer\";\r\nimport type { IComputeContext } from \"../../Compute/IComputeContext\";\r\nimport type { BaseTexture } from \"../../Materials/Textures/baseTexture\";\r\nimport type { TextureSampler } from \"../../Materials/Textures/textureSampler\";\r\nimport type { UniformBuffer } from \"../../Materials/uniformBuffer\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport type { ComputeBindingList, ComputeBindingMapping } from \"../Extensions/engine.computeShader\";\r\nimport { ComputeBindingType } from \"../Extensions/engine.computeShader\";\r\nimport type { WebGPUCacheSampler } from \"./webgpuCacheSampler\";\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport type { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\r\nimport type { ExternalTexture } from \"core/Materials/Textures/externalTexture\";\r\n\r\n/** @internal */\r\nexport class WebGPUComputeContext implements IComputeContext {\r\n private static _Counter = 0;\r\n\r\n public readonly uniqueId: number;\r\n\r\n private _device: GPUDevice;\r\n private _cacheSampler: WebGPUCacheSampler;\r\n private _bindGroups: GPUBindGroup[];\r\n private _bindGroupEntries: GPUBindGroupEntry[][];\r\n\r\n public getBindGroups(bindings: ComputeBindingList, computePipeline: GPUComputePipeline, bindingsMapping?: ComputeBindingMapping): GPUBindGroup[] {\r\n if (!bindingsMapping) {\r\n throw new Error(\"WebGPUComputeContext.getBindGroups: bindingsMapping is required until browsers support reflection for wgsl shaders!\");\r\n }\r\n if (this._bindGroups.length === 0) {\r\n const bindGroupEntriesExist = this._bindGroupEntries.length > 0;\r\n for (const key in bindings) {\r\n const binding = bindings[key],\r\n location = bindingsMapping[key],\r\n group = location.group,\r\n index = location.binding,\r\n type = binding.type,\r\n object = binding.object;\r\n let indexInGroupEntries = binding.indexInGroupEntries;\r\n\r\n let entries = this._bindGroupEntries[group];\r\n if (!entries) {\r\n entries = this._bindGroupEntries[group] = [];\r\n }\r\n\r\n switch (type) {\r\n case ComputeBindingType.Sampler: {\r\n const sampler = object as TextureSampler;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n entries[indexInGroupEntries].resource = this._cacheSampler.getSampler(sampler);\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: this._cacheSampler.getSampler(sampler),\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.Texture:\r\n case ComputeBindingType.TextureWithoutSampler: {\r\n const texture = object as BaseTexture;\r\n const hardwareTexture = texture._texture!._hardwareTexture as WebGPUHardwareTexture;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n if (type === ComputeBindingType.Texture) {\r\n entries[indexInGroupEntries++].resource = this._cacheSampler.getSampler(texture._texture!);\r\n }\r\n entries[indexInGroupEntries].resource = hardwareTexture.view!;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n if (type === ComputeBindingType.Texture) {\r\n entries.push({\r\n binding: index - 1,\r\n resource: this._cacheSampler.getSampler(texture._texture!),\r\n });\r\n }\r\n entries.push({\r\n binding: index,\r\n resource: hardwareTexture.view!,\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.StorageTexture: {\r\n const texture = object as BaseTexture;\r\n const hardwareTexture = texture._texture!._hardwareTexture as WebGPUHardwareTexture;\r\n if ((hardwareTexture.textureAdditionalUsages & WebGPUConstants.TextureUsage.StorageBinding) === 0) {\r\n Logger.Error(`computeDispatch: The texture (name=${texture.name}, uniqueId=${texture.uniqueId}) is not a storage texture!`, 50);\r\n }\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n entries[indexInGroupEntries].resource = hardwareTexture.viewForWriting!;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: hardwareTexture.viewForWriting!,\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.ExternalTexture: {\r\n const texture = object as ExternalTexture;\r\n const externalTexture = texture.underlyingResource;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n entries[indexInGroupEntries].resource = this._device.importExternalTexture({ source: externalTexture });\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: this._device.importExternalTexture({ source: externalTexture }),\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.UniformBuffer:\r\n case ComputeBindingType.StorageBuffer: {\r\n const buffer = type === ComputeBindingType.UniformBuffer ? (object as UniformBuffer) : (object as StorageBuffer);\r\n const dataBuffer = buffer.getBuffer()!;\r\n const webgpuBuffer = dataBuffer.underlyingResource as GPUBuffer;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n (entries[indexInGroupEntries].resource as GPUBufferBinding).buffer = webgpuBuffer;\r\n (entries[indexInGroupEntries].resource as GPUBufferBinding).size = dataBuffer.capacity;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: {\r\n buffer: webgpuBuffer,\r\n offset: 0,\r\n size: dataBuffer.capacity,\r\n },\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < this._bindGroupEntries.length; ++i) {\r\n const entries = this._bindGroupEntries[i];\r\n if (!entries) {\r\n this._bindGroups[i] = undefined as any;\r\n continue;\r\n }\r\n this._bindGroups[i] = this._device.createBindGroup({\r\n layout: computePipeline.getBindGroupLayout(i),\r\n entries,\r\n });\r\n }\r\n\r\n this._bindGroups.length = this._bindGroupEntries.length;\r\n }\r\n\r\n return this._bindGroups;\r\n }\r\n\r\n constructor(device: GPUDevice, cacheSampler: WebGPUCacheSampler) {\r\n this._device = device;\r\n this._cacheSampler = cacheSampler;\r\n this.uniqueId = WebGPUComputeContext._Counter++;\r\n this._bindGroupEntries = [];\r\n this.clear();\r\n }\r\n\r\n public clear(): void {\r\n this._bindGroups = [];\r\n // Don't reset _bindGroupEntries if they have already been created, they are still ok even if we have to clear _bindGroups (the layout of the compute shader can't change once created)\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"webgpuComputeContext.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuComputeContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataBuffer } from \"core/Buffers/dataBuffer\";\r\nimport type { StorageBuffer } from \"../../Buffers/storageBuffer\";\r\nimport type { IComputeContext } from \"../../Compute/IComputeContext\";\r\nimport type { BaseTexture } from \"../../Materials/Textures/baseTexture\";\r\nimport type { TextureSampler } from \"../../Materials/Textures/textureSampler\";\r\nimport type { UniformBuffer } from \"../../Materials/uniformBuffer\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport type { ComputeBindingList, ComputeBindingMapping } from \"../Extensions/engine.computeShader\";\r\nimport { ComputeBindingType } from \"../Extensions/engine.computeShader\";\r\nimport type { WebGPUCacheSampler } from \"./webgpuCacheSampler\";\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport type { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\r\nimport type { ExternalTexture } from \"core/Materials/Textures/externalTexture\";\r\n\r\n/** @internal */\r\nexport class WebGPUComputeContext implements IComputeContext {\r\n private static _Counter = 0;\r\n\r\n public readonly uniqueId: number;\r\n\r\n private _device: GPUDevice;\r\n private _cacheSampler: WebGPUCacheSampler;\r\n private _bindGroups: GPUBindGroup[];\r\n private _bindGroupEntries: GPUBindGroupEntry[][];\r\n\r\n public getBindGroups(bindings: ComputeBindingList, computePipeline: GPUComputePipeline, bindingsMapping?: ComputeBindingMapping): GPUBindGroup[] {\r\n if (!bindingsMapping) {\r\n throw new Error(\"WebGPUComputeContext.getBindGroups: bindingsMapping is required until browsers support reflection for wgsl shaders!\");\r\n }\r\n if (this._bindGroups.length === 0) {\r\n const bindGroupEntriesExist = this._bindGroupEntries.length > 0;\r\n for (const key in bindings) {\r\n const binding = bindings[key],\r\n location = bindingsMapping[key],\r\n group = location.group,\r\n index = location.binding,\r\n type = binding.type,\r\n object = binding.object;\r\n let indexInGroupEntries = binding.indexInGroupEntries;\r\n\r\n let entries = this._bindGroupEntries[group];\r\n if (!entries) {\r\n entries = this._bindGroupEntries[group] = [];\r\n }\r\n\r\n switch (type) {\r\n case ComputeBindingType.Sampler: {\r\n const sampler = object as TextureSampler;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n entries[indexInGroupEntries].resource = this._cacheSampler.getSampler(sampler);\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: this._cacheSampler.getSampler(sampler),\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.Texture:\r\n case ComputeBindingType.TextureWithoutSampler: {\r\n const texture = object as BaseTexture;\r\n const hardwareTexture = texture._texture!._hardwareTexture as WebGPUHardwareTexture;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n if (type === ComputeBindingType.Texture) {\r\n entries[indexInGroupEntries++].resource = this._cacheSampler.getSampler(texture._texture!);\r\n }\r\n entries[indexInGroupEntries].resource = hardwareTexture.view!;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n if (type === ComputeBindingType.Texture) {\r\n entries.push({\r\n binding: index - 1,\r\n resource: this._cacheSampler.getSampler(texture._texture!),\r\n });\r\n }\r\n entries.push({\r\n binding: index,\r\n resource: hardwareTexture.view!,\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.StorageTexture: {\r\n const texture = object as BaseTexture;\r\n const hardwareTexture = texture._texture!._hardwareTexture as WebGPUHardwareTexture;\r\n if ((hardwareTexture.textureAdditionalUsages & WebGPUConstants.TextureUsage.StorageBinding) === 0) {\r\n Logger.Error(`computeDispatch: The texture (name=${texture.name}, uniqueId=${texture.uniqueId}) is not a storage texture!`, 50);\r\n }\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n entries[indexInGroupEntries].resource = hardwareTexture.viewForWriting!;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: hardwareTexture.viewForWriting!,\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.ExternalTexture: {\r\n const texture = object as ExternalTexture;\r\n const externalTexture = texture.underlyingResource;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n entries[indexInGroupEntries].resource = this._device.importExternalTexture({ source: externalTexture });\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: this._device.importExternalTexture({ source: externalTexture }),\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.UniformBuffer:\r\n case ComputeBindingType.StorageBuffer:\r\n case ComputeBindingType.DataBuffer: {\r\n const dataBuffer =\r\n type === ComputeBindingType.DataBuffer\r\n ? (object as DataBuffer)\r\n : type === ComputeBindingType.UniformBuffer\r\n ? (object as UniformBuffer).getBuffer()!\r\n : (object as StorageBuffer).getBuffer()!;\r\n const webgpuBuffer = dataBuffer.underlyingResource as GPUBuffer;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n (entries[indexInGroupEntries].resource as GPUBufferBinding).buffer = webgpuBuffer;\r\n (entries[indexInGroupEntries].resource as GPUBufferBinding).size = dataBuffer.capacity;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: {\r\n buffer: webgpuBuffer,\r\n offset: 0,\r\n size: dataBuffer.capacity,\r\n },\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < this._bindGroupEntries.length; ++i) {\r\n const entries = this._bindGroupEntries[i];\r\n if (!entries) {\r\n this._bindGroups[i] = undefined as any;\r\n continue;\r\n }\r\n this._bindGroups[i] = this._device.createBindGroup({\r\n layout: computePipeline.getBindGroupLayout(i),\r\n entries,\r\n });\r\n }\r\n\r\n this._bindGroups.length = this._bindGroupEntries.length;\r\n }\r\n\r\n return this._bindGroups;\r\n }\r\n\r\n constructor(device: GPUDevice, cacheSampler: WebGPUCacheSampler) {\r\n this._device = device;\r\n this._cacheSampler = cacheSampler;\r\n this.uniqueId = WebGPUComputeContext._Counter++;\r\n this._bindGroupEntries = [];\r\n this.clear();\r\n }\r\n\r\n public clear(): void {\r\n this._bindGroups = [];\r\n // Don't reset _bindGroupEntries if they have already been created, they are still ok even if we have to clear _bindGroups (the layout of the compute shader can't change once created)\r\n }\r\n}\r\n"]}
|
package/Engines/engine.d.ts
CHANGED
|
@@ -2947,7 +2947,7 @@ interface XRHand extends Map<XRHandJoint, XRJointSpace> {
|
|
|
2947
2947
|
readonly LITTLE_PHALANX_TIP: number;
|
|
2948
2948
|
}
|
|
2949
2949
|
|
|
2950
|
-
abstract class XRHand extends Map<
|
|
2950
|
+
abstract class XRHand extends Map<XRHandJoint, XRJointSpace> implements XRHand {}
|
|
2951
2951
|
|
|
2952
2952
|
// WebXR Layers
|
|
2953
2953
|
|
package/Engines/thinEngine.js
CHANGED
|
@@ -34,13 +34,13 @@ export class ThinEngine {
|
|
|
34
34
|
*/
|
|
35
35
|
// Not mixed with Version for tooling purpose.
|
|
36
36
|
static get NpmPackage() {
|
|
37
|
-
return "babylonjs@6.
|
|
37
|
+
return "babylonjs@6.46.0";
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Returns the current version of the framework
|
|
41
41
|
*/
|
|
42
42
|
static get Version() {
|
|
43
|
-
return "6.
|
|
43
|
+
return "6.46.0";
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Returns a string describing the current engine
|