@babylonjs/core 7.19.1 → 7.20.1
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/Bones/bone.js +3 -3
- package/Bones/bone.js.map +1 -1
- package/Bones/boneLookController.js +3 -3
- package/Bones/boneLookController.js.map +1 -1
- package/Buffers/buffer.nonFloatVertexBuffers.js +1 -1
- package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +8 -2
- package/Collisions/gpuPicker.js +41 -20
- package/Collisions/gpuPicker.js.map +1 -1
- package/Compat/compatibilityOptions.d.ts +13 -6
- package/Compat/compatibilityOptions.js +20 -4
- package/Compat/compatibilityOptions.js.map +1 -1
- package/Compat/index.d.ts +1 -1
- package/Compat/index.js +1 -1
- package/Compat/index.js.map +1 -1
- package/Culling/boundingBox.js +5 -5
- package/Culling/boundingBox.js.map +1 -1
- package/Culling/boundingInfo.js +2 -2
- package/Culling/boundingInfo.js.map +1 -1
- package/Culling/boundingSphere.js +2 -2
- package/Culling/boundingSphere.js.map +1 -1
- package/Culling/ray.js +2 -2
- package/Culling/ray.js.map +1 -1
- package/Debug/debugLayer.d.ts +3 -0
- package/Debug/debugLayer.js +15 -0
- package/Debug/debugLayer.js.map +1 -1
- package/Engines/Processors/shaderProcessor.d.ts +1 -0
- package/Engines/Processors/shaderProcessor.js +1 -0
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.js +1 -0
- package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessingContext.d.ts +1 -1
- package/Engines/WebGPU/webgpuShaderProcessingContext.js +4 -2
- package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +2 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +12 -5
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -4
- package/Engines/WebGPU/webgpuTextureManager.js +90 -75
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/abstractEngine.d.ts +2 -2
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/engine.js +11 -2
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.d.ts +1 -1
- package/Engines/nativeEngine.js +2 -1
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/thinEngine.d.ts +1 -1
- package/Engines/thinEngine.functions.d.ts +1 -1
- package/Engines/thinEngine.functions.js +2 -1
- package/Engines/thinEngine.functions.js.map +1 -1
- package/Engines/thinEngine.js +2 -2
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +9 -5
- package/Engines/webgpuEngine.js +35 -22
- package/Engines/webgpuEngine.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
- package/Layers/effectLayer.d.ts +16 -1
- package/Layers/effectLayer.js +32 -2
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.d.ts +1 -2
- package/Layers/glowLayer.js +16 -3
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.d.ts +5 -4
- package/Layers/highlightLayer.js +35 -11
- package/Layers/highlightLayer.js.map +1 -1
- package/Layers/index.d.ts +10 -0
- package/Layers/index.js +12 -0
- package/Layers/index.js.map +1 -1
- package/Lights/Shadows/index.d.ts +8 -0
- package/Lights/Shadows/index.js +9 -0
- package/Lights/Shadows/index.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.d.ts +18 -5
- package/Lights/Shadows/shadowGenerator.js +44 -5
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Loading/sceneLoader.d.ts +155 -16
- package/Loading/sceneLoader.js +197 -99
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +8 -1
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +1 -1
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Textures/Loaders/hdrTextureLoader.js +3 -3
- package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
- package/Materials/Textures/hdrCubeTexture.js +2 -2
- package/Materials/Textures/hdrCubeTexture.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.js +2 -2
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.js +3 -3
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/effect.functions.d.ts +1 -1
- package/Materials/effect.functions.js +6 -3
- package/Materials/effect.functions.js.map +1 -1
- package/Materials/effect.js +1 -1
- package/Materials/effect.js.map +1 -1
- package/Materials/standardMaterial.d.ts +1 -1
- package/Materials/standardMaterial.js +1 -1
- package/Materials/standardMaterial.js.map +1 -1
- package/Maths/math.color.js +3 -3
- package/Maths/math.color.js.map +1 -1
- package/Maths/math.constants.d.ts +1 -2
- package/Maths/math.constants.js +1 -2
- package/Maths/math.constants.js.map +1 -1
- package/Maths/math.like.d.ts +9 -0
- package/Maths/math.like.js.map +1 -1
- package/Maths/math.vector.d.ts +23 -23
- package/Maths/math.vector.js +56 -25
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Builders/boxBuilder.js +5 -5
- package/Meshes/Builders/boxBuilder.js.map +1 -1
- package/Meshes/Builders/capsuleBuilder.js +4 -4
- package/Meshes/Builders/capsuleBuilder.js.map +1 -1
- package/Meshes/Builders/cylinderBuilder.js +8 -8
- package/Meshes/Builders/cylinderBuilder.js.map +1 -1
- package/Meshes/Builders/decalBuilder.js +3 -3
- package/Meshes/Builders/decalBuilder.js.map +1 -1
- package/Meshes/Builders/discBuilder.js +3 -3
- package/Meshes/Builders/discBuilder.js.map +1 -1
- package/Meshes/Builders/goldbergBuilder.js +2 -2
- package/Meshes/Builders/goldbergBuilder.js.map +1 -1
- package/Meshes/Builders/groundBuilder.js +2 -2
- package/Meshes/Builders/groundBuilder.js.map +1 -1
- package/Meshes/Builders/icoSphereBuilder.js +2 -2
- package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
- package/Meshes/Builders/planeBuilder.js +5 -5
- package/Meshes/Builders/planeBuilder.js.map +1 -1
- package/Meshes/Builders/polygonBuilder.js +4 -4
- package/Meshes/Builders/polygonBuilder.js.map +1 -1
- package/Meshes/Builders/polyhedronBuilder.js +3 -3
- package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
- package/Meshes/Builders/ribbonBuilder.js +4 -4
- package/Meshes/Builders/ribbonBuilder.js.map +1 -1
- package/Meshes/Builders/sphereBuilder.js +2 -2
- package/Meshes/Builders/sphereBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.js +2 -2
- package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
- package/Meshes/Builders/torusBuilder.js +2 -2
- package/Meshes/Builders/torusBuilder.js.map +1 -1
- package/Meshes/Builders/torusKnotBuilder.js +2 -2
- package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
- package/Meshes/geometry.js +7 -7
- package/Meshes/geometry.js.map +1 -1
- package/Misc/HighDynamicRange/hdr.d.ts +40 -42
- package/Misc/HighDynamicRange/hdr.js +209 -202
- package/Misc/HighDynamicRange/hdr.js.map +1 -1
- package/Misc/HighDynamicRange/index.d.ts +1 -1
- package/Misc/HighDynamicRange/index.js +1 -1
- package/Misc/HighDynamicRange/index.js.map +1 -1
- package/Misc/arrayTools.d.ts +12 -17
- package/Misc/arrayTools.js +18 -23
- package/Misc/arrayTools.js.map +1 -1
- package/Misc/dumpTools.d.ts +50 -47
- package/Misc/dumpTools.js +153 -143
- package/Misc/dumpTools.js.map +1 -1
- package/Misc/environmentTextureTools.js +2 -2
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/equirectangularCapture.js +2 -2
- package/Misc/equirectangularCapture.js.map +1 -1
- package/Misc/index.d.ts +6 -1
- package/Misc/index.js +7 -1
- package/Misc/index.js.map +1 -1
- package/Misc/rgbdTextureTools.d.ts +1 -0
- package/Misc/rgbdTextureTools.js +16 -2
- package/Misc/rgbdTextureTools.js.map +1 -1
- package/Misc/screenshotTools.js +3 -3
- package/Misc/screenshotTools.js.map +1 -1
- package/Physics/v1/physicsImpostor.js +2 -2
- package/Physics/v1/physicsImpostor.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.js +2 -2
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/PostProcesses/blurPostProcess.d.ts +6 -0
- package/PostProcesses/blurPostProcess.js +20 -2
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/index.d.ts +8 -0
- package/PostProcesses/index.js +10 -0
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/passPostProcess.d.ts +2 -0
- package/PostProcesses/passPostProcess.js +24 -2
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +17 -2
- package/PostProcesses/postProcess.js +38 -1
- package/PostProcesses/postProcess.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js +17 -0
- package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +1 -1
- package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/kernelBlurFragment.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js +20 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js +19 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js +9 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurVertex.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js +9 -0
- package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +4 -4
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/shadowMapFragment.js +5 -5
- package/ShadersWGSL/ShadersInclude/shadowMapFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.d.ts +7 -0
- package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js +26 -0
- package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +12 -0
- package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js +19 -0
- package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js +4 -4
- package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js +17 -0
- package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -0
- package/ShadersWGSL/background.fragment.js +1 -1
- package/ShadersWGSL/background.fragment.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +2 -2
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/depthBoxBlur.fragment.d.ts +5 -0
- package/ShadersWGSL/depthBoxBlur.fragment.js +14 -0
- package/ShadersWGSL/depthBoxBlur.fragment.js.map +1 -0
- package/ShadersWGSL/glowBlurPostProcess.fragment.d.ts +5 -0
- package/ShadersWGSL/glowBlurPostProcess.fragment.js +15 -0
- package/ShadersWGSL/glowBlurPostProcess.fragment.js.map +1 -0
- package/ShadersWGSL/glowMapGeneration.fragment.d.ts +8 -0
- package/ShadersWGSL/glowMapGeneration.fragment.js +74 -0
- package/ShadersWGSL/glowMapGeneration.fragment.js.map +1 -0
- package/ShadersWGSL/glowMapGeneration.vertex.d.ts +17 -0
- package/ShadersWGSL/glowMapGeneration.vertex.js +92 -0
- package/ShadersWGSL/glowMapGeneration.vertex.js.map +1 -0
- package/ShadersWGSL/glowMapMerge.fragment.d.ts +5 -0
- package/ShadersWGSL/glowMapMerge.fragment.js +32 -0
- package/ShadersWGSL/glowMapMerge.fragment.js.map +1 -0
- package/ShadersWGSL/glowMapMerge.vertex.d.ts +5 -0
- package/ShadersWGSL/glowMapMerge.vertex.js +16 -0
- package/ShadersWGSL/glowMapMerge.vertex.js.map +1 -0
- package/ShadersWGSL/kernelBlur.fragment.d.ts +9 -0
- package/ShadersWGSL/kernelBlur.fragment.js +48 -0
- package/ShadersWGSL/kernelBlur.fragment.js.map +1 -0
- package/ShadersWGSL/kernelBlur.vertex.d.ts +7 -0
- package/ShadersWGSL/kernelBlur.vertex.js +21 -0
- package/ShadersWGSL/kernelBlur.vertex.js.map +1 -0
- package/ShadersWGSL/pass.fragment.d.ts +5 -0
- package/ShadersWGSL/pass.fragment.js +12 -0
- package/ShadersWGSL/pass.fragment.js.map +1 -0
- package/ShadersWGSL/passCube.fragment.d.ts +5 -0
- package/ShadersWGSL/passCube.fragment.js +31 -0
- package/ShadersWGSL/passCube.fragment.js.map +1 -0
- package/ShadersWGSL/rgbdDecode.fragment.d.ts +6 -0
- package/ShadersWGSL/rgbdDecode.fragment.js +14 -0
- package/ShadersWGSL/rgbdDecode.fragment.js.map +1 -0
- package/ShadersWGSL/rgbdEncode.fragment.d.ts +6 -0
- package/ShadersWGSL/rgbdEncode.fragment.js +14 -0
- package/ShadersWGSL/rgbdEncode.fragment.js.map +1 -0
- package/ShadersWGSL/shadowMap.fragment.d.ts +9 -0
- package/ShadersWGSL/shadowMap.fragment.js +39 -0
- package/ShadersWGSL/shadowMap.fragment.js.map +1 -0
- package/ShadersWGSL/shadowMap.vertex.d.ts +22 -0
- package/ShadersWGSL/shadowMap.vertex.js +89 -0
- package/ShadersWGSL/shadowMap.vertex.js.map +1 -0
- package/package.json +1 -1
|
@@ -24,122 +24,115 @@ import * as WebGPUConstants from "./webgpuConstants.js";
|
|
|
24
24
|
|
|
25
25
|
import { WebGPUHardwareTexture } from "./webgpuHardwareTexture.js";
|
|
26
26
|
import { WebGPUTextureHelper } from "./webgpuTextureHelper.js";
|
|
27
|
+
import { Finalize, Initialize, Process } from "../Processors/shaderProcessor.js";
|
|
27
28
|
// TODO WEBGPU improve mipmap generation by using compute shaders
|
|
28
|
-
// TODO WEBGPU use WGSL instead of GLSL
|
|
29
29
|
const mipmapVertexSource = `
|
|
30
|
-
const
|
|
31
|
-
const
|
|
30
|
+
const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));
|
|
31
|
+
const tex = array<vec2<f32>, 4>( vec2f(0.0f, 0.0f), vec2f(1.0f, 0.0f), vec2f(0.0f, 1.0f), vec2f(1.0f, 1.0f));
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
varying vTex: vec2f;
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
@vertex
|
|
36
|
+
fn main(input : VertexInputs) -> FragmentInputs {
|
|
37
|
+
vertexOutputs.vTex = tex[input.vertexIndex];
|
|
38
|
+
vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);
|
|
38
39
|
}
|
|
39
40
|
`;
|
|
40
41
|
const mipmapFragmentSource = `
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
var imgSampler: sampler;
|
|
43
|
+
var img: texture_2d<f32>;
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
layout(location = 0) out vec4 outColor;
|
|
45
|
+
varying vTex: vec2f;
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
@fragment
|
|
48
|
+
fn main(input: FragmentInputs) -> FragmentOutputs {
|
|
49
|
+
fragmentOutputs.color = textureSample(img, imgSampler, input.vTex);
|
|
49
50
|
}
|
|
50
51
|
`;
|
|
51
52
|
const invertYPreMultiplyAlphaVertexSource = `
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const vec2 pos[4] = vec2[4](vec2(-1.0f, 1.0f), vec2(1.0f, 1.0f), vec2(-1.0f, -1.0f), vec2(1.0f, -1.0f));
|
|
55
|
-
const vec2 tex[4] = vec2[4](vec2(0.0f, 0.0f), vec2(1.0f, 0.0f), vec2(0.0f, 1.0f), vec2(1.0f, 1.0f));
|
|
53
|
+
const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));
|
|
54
|
+
const tex = array<vec2<f32>, 4>( vec2f(0.0f, 0.0f), vec2f(1.0f, 0.0f), vec2f(0.0f, 1.0f), vec2f(1.0f, 1.0f));
|
|
56
55
|
|
|
57
|
-
|
|
56
|
+
var img: texture_2d<f32>;
|
|
58
57
|
|
|
59
58
|
#ifdef INVERTY
|
|
60
|
-
|
|
59
|
+
varying vTextureSize: vec2f;
|
|
61
60
|
#endif
|
|
62
61
|
|
|
63
|
-
|
|
62
|
+
@vertex
|
|
63
|
+
fn main(input : VertexInputs) -> FragmentInputs {
|
|
64
64
|
#ifdef INVERTY
|
|
65
|
-
vTextureSize =
|
|
65
|
+
vertexOutputs.vTextureSize = vec2f(textureDimensions(img, 0));
|
|
66
66
|
#endif
|
|
67
|
-
|
|
67
|
+
vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);
|
|
68
68
|
}
|
|
69
69
|
`;
|
|
70
70
|
const invertYPreMultiplyAlphaFragmentSource = `
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
layout(set = 0, binding = 0) uniform texture2D img;
|
|
71
|
+
var img: texture_2d<f32>;
|
|
74
72
|
|
|
75
73
|
#ifdef INVERTY
|
|
76
|
-
|
|
74
|
+
varying vTextureSize: vec2f;
|
|
77
75
|
#endif
|
|
78
|
-
layout(location = 0) out vec4 outColor;
|
|
79
76
|
|
|
80
|
-
|
|
77
|
+
@fragment
|
|
78
|
+
fn main(input: FragmentInputs) -> FragmentOutputs {
|
|
81
79
|
#ifdef INVERTY
|
|
82
|
-
|
|
80
|
+
var color: vec4f = textureLoad(img, vec2i(i32(input.position.x), i32(input.vTextureSize.y - input.position.y)), 0);
|
|
83
81
|
#else
|
|
84
|
-
|
|
82
|
+
var color: vec4f = textureLoad(img, vec2i(input.position.xy), 0);
|
|
85
83
|
#endif
|
|
86
84
|
#ifdef PREMULTIPLYALPHA
|
|
87
|
-
color.rgb
|
|
85
|
+
fragmentOutputs.color = vec4f(color.rgb * color.a, color.a);
|
|
88
86
|
#endif
|
|
89
|
-
|
|
87
|
+
fragmentOutputs.color = color;
|
|
90
88
|
}
|
|
91
89
|
`;
|
|
92
90
|
const invertYPreMultiplyAlphaWithOfstVertexSource = invertYPreMultiplyAlphaVertexSource;
|
|
93
91
|
const invertYPreMultiplyAlphaWithOfstFragmentSource = `
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
float ofstY;
|
|
100
|
-
float width;
|
|
101
|
-
float height;
|
|
102
|
-
};
|
|
92
|
+
var img: texture_2d<f32>;
|
|
93
|
+
uniform ofstX: f32;
|
|
94
|
+
uniform ofstY: f32;
|
|
95
|
+
uniform width: f32;
|
|
96
|
+
uniform height: f32;
|
|
103
97
|
|
|
104
98
|
#ifdef INVERTY
|
|
105
|
-
|
|
99
|
+
varying vTextureSize: vec2f;
|
|
106
100
|
#endif
|
|
107
|
-
layout(location = 0) out vec4 outColor;
|
|
108
101
|
|
|
109
|
-
|
|
110
|
-
|
|
102
|
+
@fragment
|
|
103
|
+
fn main(input: FragmentInputs) -> FragmentOutputs {
|
|
104
|
+
if (input.position.x < uniforms.ofstX || input.position.x >= uniforms.ofstX + uniforms.width) {
|
|
111
105
|
discard;
|
|
112
106
|
}
|
|
113
|
-
if (
|
|
107
|
+
if (input.position.y < uniforms.ofstY || input.position.y >= uniforms.ofstY + uniforms.height) {
|
|
114
108
|
discard;
|
|
115
109
|
}
|
|
116
110
|
#ifdef INVERTY
|
|
117
|
-
|
|
111
|
+
var color: vec4f = textureLoad(img, vec2i(i32(input.position.x), i32(uniforms.ofstY + uniforms.height - (input.position.y - uniforms.ofstY))), 0);
|
|
118
112
|
#else
|
|
119
|
-
|
|
113
|
+
var color: vec4f = textureLoad(img, vec2i(input.position.xy), 0);
|
|
120
114
|
#endif
|
|
121
115
|
#ifdef PREMULTIPLYALPHA
|
|
122
|
-
color.rgb
|
|
116
|
+
color = vec4f(color.rgb * color.a, color.a);
|
|
123
117
|
#endif
|
|
124
|
-
|
|
118
|
+
fragmentOutputs.color = color;
|
|
125
119
|
}
|
|
126
120
|
`;
|
|
127
121
|
const clearVertexSource = `
|
|
128
|
-
const
|
|
122
|
+
const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));
|
|
129
123
|
|
|
130
|
-
|
|
131
|
-
|
|
124
|
+
@vertex
|
|
125
|
+
fn main(input : VertexInputs) -> FragmentInputs {
|
|
126
|
+
vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);
|
|
132
127
|
}
|
|
133
128
|
`;
|
|
134
129
|
const clearFragmentSource = `
|
|
135
|
-
|
|
136
|
-
uniform vec4 color;
|
|
137
|
-
};
|
|
130
|
+
uniform color: vec4f;
|
|
138
131
|
|
|
139
|
-
layout(location = 0) out vec4 outColor;
|
|
140
132
|
|
|
141
|
-
|
|
142
|
-
|
|
133
|
+
@fragment
|
|
134
|
+
fn main(input: FragmentInputs) -> FragmentOutputs {
|
|
135
|
+
fragmentOutputs.color = uniforms.color;
|
|
143
136
|
}
|
|
144
137
|
`;
|
|
145
138
|
const copyVideoToTextureVertexSource = `
|
|
@@ -264,7 +257,7 @@ export class WebGPUTextureManager {
|
|
|
264
257
|
//------------------------------------------------------------------------------
|
|
265
258
|
// Initialization / Helpers
|
|
266
259
|
//------------------------------------------------------------------------------
|
|
267
|
-
constructor(engine, device,
|
|
260
|
+
constructor(engine, device, bufferManager, enabledExtensions) {
|
|
268
261
|
this._pipelines = {};
|
|
269
262
|
this._compiledShaders = [];
|
|
270
263
|
this._videoPipelines = {};
|
|
@@ -272,8 +265,6 @@ export class WebGPUTextureManager {
|
|
|
272
265
|
this._deferredReleaseTextures = [];
|
|
273
266
|
this._engine = engine;
|
|
274
267
|
this._device = device;
|
|
275
|
-
this._glslang = glslang;
|
|
276
|
-
this._tintWASM = tintWASM;
|
|
277
268
|
this._bufferManager = bufferManager;
|
|
278
269
|
if (enabledExtensions.indexOf("rg11b10ufloat-renderable" /* WebGPUConstants.FeatureName.RG11B10UFloatRenderable */) !== -1) {
|
|
279
270
|
const keys = Object.keys(renderableTextureFormatToIndex);
|
|
@@ -300,7 +291,7 @@ export class WebGPUTextureManager {
|
|
|
300
291
|
}
|
|
301
292
|
let pipelineAndBGL = this._pipelines[format][index];
|
|
302
293
|
if (!pipelineAndBGL) {
|
|
303
|
-
let defines = "
|
|
294
|
+
let defines = "";
|
|
304
295
|
if (type === PipelineType.InvertYPremultiplyAlpha || type === PipelineType.InvertYPremultiplyAlphaWithOfst) {
|
|
305
296
|
if (params.invertY) {
|
|
306
297
|
defines += "#define INVERTY\n";
|
|
@@ -311,17 +302,41 @@ export class WebGPUTextureManager {
|
|
|
311
302
|
}
|
|
312
303
|
let modules = this._compiledShaders[index];
|
|
313
304
|
if (!modules) {
|
|
314
|
-
let vertexCode =
|
|
315
|
-
let fragmentCode =
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
305
|
+
let vertexCode = shadersForPipelineType[type].vertex;
|
|
306
|
+
let fragmentCode = shadersForPipelineType[type].fragment;
|
|
307
|
+
const processorOptions = {
|
|
308
|
+
defines: defines.split("\n"),
|
|
309
|
+
indexParameters: null,
|
|
310
|
+
isFragment: false,
|
|
311
|
+
shouldUseHighPrecisionShader: true,
|
|
312
|
+
processor: this._engine._getShaderProcessor(1 /* ShaderLanguage.WGSL */),
|
|
313
|
+
supportsUniformBuffers: true,
|
|
314
|
+
shadersRepository: "",
|
|
315
|
+
includesShadersStore: {},
|
|
316
|
+
version: (this._engine.version * 100).toString(),
|
|
317
|
+
platformName: this._engine.shaderPlatformName,
|
|
318
|
+
processingContext: this._engine._getShaderProcessingContext(1 /* ShaderLanguage.WGSL */, true),
|
|
319
|
+
isNDCHalfZRange: this._engine.isNDCHalfZRange,
|
|
320
|
+
useReverseDepthBuffer: this._engine.useReverseDepthBuffer,
|
|
321
|
+
};
|
|
322
|
+
Initialize(processorOptions);
|
|
323
|
+
// Disable special additions not needed here
|
|
324
|
+
processorOptions.processor.pureMode = true;
|
|
325
|
+
Process(vertexCode, processorOptions, (migratedVertexCode) => {
|
|
326
|
+
vertexCode = migratedVertexCode;
|
|
327
|
+
}, this._engine);
|
|
328
|
+
processorOptions.isFragment = true;
|
|
329
|
+
Process(fragmentCode, processorOptions, (migratedFragmentCode) => {
|
|
330
|
+
fragmentCode = migratedFragmentCode;
|
|
331
|
+
}, this._engine);
|
|
332
|
+
const final = Finalize(vertexCode, fragmentCode, processorOptions);
|
|
333
|
+
// Restore
|
|
334
|
+
processorOptions.processor.pureMode = false;
|
|
320
335
|
const vertexModule = this._device.createShaderModule({
|
|
321
|
-
code: vertexCode,
|
|
336
|
+
code: final.vertexCode,
|
|
322
337
|
});
|
|
323
338
|
const fragmentModule = this._device.createShaderModule({
|
|
324
|
-
code: fragmentCode,
|
|
339
|
+
code: final.fragmentCode,
|
|
325
340
|
});
|
|
326
341
|
modules = this._compiledShaders[index] = [vertexModule, fragmentModule];
|
|
327
342
|
}
|
|
@@ -730,10 +745,6 @@ export class WebGPUTextureManager {
|
|
|
730
745
|
entries: [
|
|
731
746
|
{
|
|
732
747
|
binding: 0,
|
|
733
|
-
resource: this._mipmapSampler,
|
|
734
|
-
},
|
|
735
|
-
{
|
|
736
|
-
binding: 1,
|
|
737
748
|
resource: gpuTexture.createView({
|
|
738
749
|
format,
|
|
739
750
|
dimension: is3D ? "3d" /* WebGPUConstants.TextureViewDimension.E3d */ : "2d" /* WebGPUConstants.TextureViewDimension.E2d */,
|
|
@@ -743,6 +754,10 @@ export class WebGPUTextureManager {
|
|
|
743
754
|
baseArrayLayer: faceIndex,
|
|
744
755
|
}),
|
|
745
756
|
},
|
|
757
|
+
{
|
|
758
|
+
binding: 1,
|
|
759
|
+
resource: this._mipmapSampler,
|
|
760
|
+
},
|
|
746
761
|
],
|
|
747
762
|
});
|
|
748
763
|
if (webgpuHardwareTexture) {
|