@babylonjs/core 5.0.0-alpha.57 → 5.0.0-alpha.58
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/Cameras/Inputs/BaseCameraPointersInput.d.ts +0 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +5 -5
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.d.ts +0 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +27 -28
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/camera.d.ts +4 -0
- package/Cameras/camera.js +2 -0
- package/Cameras/camera.js.map +1 -1
- package/Culling/boundingBox.d.ts +7 -1
- package/Culling/boundingBox.js +4 -0
- package/Culling/boundingBox.js.map +1 -1
- package/DeviceInput/Helpers/eventFactory.js +1 -2
- package/DeviceInput/Helpers/eventFactory.js.map +1 -1
- package/DeviceInput/Implementations/webDeviceInputSystem.d.ts +1 -0
- package/DeviceInput/Implementations/webDeviceInputSystem.js +5 -12
- package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
- package/DeviceInput/InputDevices/deviceEnums.d.ts +1 -3
- package/DeviceInput/InputDevices/deviceEnums.js +0 -2
- package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
- package/Engines/IDrawContext.d.ts +3 -0
- package/Engines/IDrawContext.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.alpha.js +1 -1
- package/Engines/WebGPU/Extensions/engine.alpha.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js +1 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.uniformBuffer.js +1 -1
- package/Engines/WebGPU/Extensions/engine.uniformBuffer.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.d.ts +1 -0
- package/Engines/WebGPU/webgpuBufferManager.js +3 -0
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.d.ts +3 -2
- package/Engines/WebGPU/webgpuCacheBindGroups.js +15 -14
- package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.d.ts +2 -0
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +17 -0
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.d.ts +21 -2
- package/Engines/WebGPU/webgpuDrawContext.js +67 -1
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuMaterialContext.d.ts +0 -6
- package/Engines/WebGPU/webgpuMaterialContext.js +0 -6
- package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.d.ts +1 -0
- package/Engines/WebGPU/webgpuShaderProcessor.js +2 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/constants.d.ts +1 -7
- package/Engines/constants.js +1 -7
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +37 -2
- package/Engines/engine.js +68 -0
- package/Engines/engine.js.map +1 -1
- package/Engines/engineFeatures.d.ts +2 -0
- package/Engines/engineFeatures.js.map +1 -1
- package/Engines/nativeEngine.js +1 -0
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.js +1 -0
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/thinEngine.d.ts +4 -0
- package/Engines/thinEngine.js +3 -2
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +14 -6
- package/Engines/webgpuEngine.js +107 -57
- package/Engines/webgpuEngine.js.map +1 -1
- package/Inputs/scene.inputManager.js +2 -3
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Layers/effectLayer.d.ts +0 -2
- package/Layers/effectLayer.js +12 -11
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/effectLayerSceneComponent.js +5 -0
- package/Layers/effectLayerSceneComponent.js.map +1 -1
- package/Layers/glowLayer.js +2 -0
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +2 -0
- package/Layers/highlightLayer.js.map +1 -1
- package/LensFlares/lensFlare.d.ts +3 -0
- package/LensFlares/lensFlare.js +5 -0
- package/LensFlares/lensFlare.js.map +1 -1
- package/LensFlares/lensFlareSystem.d.ts +2 -1
- package/LensFlares/lensFlareSystem.js +15 -12
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.d.ts +0 -2
- package/Lights/Shadows/cascadedShadowGenerator.js +3 -12
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.d.ts +0 -3
- package/Lights/Shadows/shadowGenerator.js +8 -14
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/light.js +3 -0
- package/Lights/light.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +3 -0
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.js +8 -11
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.d.ts +4 -0
- package/Materials/Node/Blocks/cloudBlock.js +27 -8
- package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorMergerBlock.d.ts +21 -0
- package/Materials/Node/Blocks/colorMergerBlock.js +48 -4
- package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorMergerBlock.d.ts +25 -0
- package/Materials/Node/Blocks/vectorMergerBlock.js +93 -23
- package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +4 -4
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +8 -4
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.js +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/baseTexture.d.ts +2 -0
- package/Materials/Textures/baseTexture.js +2 -0
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +27 -0
- package/Materials/Textures/renderTargetTexture.js +127 -14
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.js +11 -4
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/drawWrapper.d.ts +2 -1
- package/Materials/drawWrapper.js +10 -1
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/material.d.ts +3 -1
- package/Materials/material.detailMapConfiguration.d.ts +1 -1
- package/Materials/material.detailMapConfiguration.js +2 -2
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.js +18 -9
- package/Materials/material.js.map +1 -1
- package/Materials/pushMaterial.js +1 -1
- package/Materials/pushMaterial.js.map +1 -1
- package/Materials/shaderMaterial.d.ts +0 -1
- package/Materials/shaderMaterial.js +3 -4
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.d.ts +4 -4
- package/Materials/shadowDepthWrapper.js +16 -15
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.js +8 -4
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +10 -2
- package/Materials/uniformBuffer.js +17 -11
- package/Materials/uniformBuffer.js.map +1 -1
- package/Meshes/abstractMesh.d.ts +13 -0
- package/Meshes/abstractMesh.js +22 -2
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/linesMesh.js +1 -1
- package/Meshes/linesMesh.js.map +1 -1
- package/Meshes/mesh.js +15 -0
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/subMesh.d.ts +10 -9
- package/Meshes/subMesh.js +44 -43
- package/Meshes/subMesh.js.map +1 -1
- package/Misc/environmentTextureTools.js +1 -0
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/rgbdTextureTools.js +1 -0
- package/Misc/rgbdTextureTools.js.map +1 -1
- package/Misc/sceneSerializer.js +17 -17
- package/Misc/sceneSerializer.js.map +1 -1
- package/Misc/textureTools.js +2 -0
- package/Misc/textureTools.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +5 -1
- package/Particles/gpuParticleSystem.js +31 -5
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particleSystem.d.ts +5 -1
- package/Particles/particleSystem.js +35 -5
- package/Particles/particleSystem.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +2 -0
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.js +1 -0
- package/PostProcesses/bloomMergePostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.js +1 -0
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js +1 -0
- package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.js +1 -0
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +6 -0
- package/PostProcesses/postProcess.js +9 -1
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.d.ts +2 -1
- package/PostProcesses/tonemapPostProcess.js +3 -2
- package/PostProcesses/tonemapPostProcess.js.map +1 -1
- package/Rendering/boundingBoxRenderer.d.ts +5 -3
- package/Rendering/boundingBoxRenderer.js +46 -14
- package/Rendering/boundingBoxRenderer.js.map +1 -1
- package/Rendering/depthRenderer.d.ts +9 -2
- package/Rendering/depthRenderer.js +77 -43
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/depthRendererSceneComponent.js +0 -1
- package/Rendering/depthRendererSceneComponent.js.map +1 -1
- package/Rendering/edgesRenderer.d.ts +2 -0
- package/Rendering/edgesRenderer.js +11 -0
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +1 -1
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.d.ts +5 -4
- package/Rendering/outlineRenderer.js +24 -19
- package/Rendering/outlineRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.js +2 -1
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.d.ts +5 -0
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js +7 -0
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js.map +1 -0
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.d.ts +5 -0
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +7 -0
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -0
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.d.ts +5 -0
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js +7 -0
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js.map +1 -0
- package/Shaders/boundingBoxRenderer.fragment.d.ts +7 -0
- package/Shaders/boundingBoxRenderer.fragment.js +9 -0
- package/Shaders/boundingBoxRenderer.fragment.js.map +1 -0
- package/Shaders/boundingBoxRenderer.vertex.d.ts +7 -0
- package/Shaders/boundingBoxRenderer.vertex.js +9 -0
- package/Shaders/boundingBoxRenderer.vertex.js.map +1 -0
- package/Sprites/spriteManager.d.ts +3 -1
- package/Sprites/spriteManager.js +16 -5
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteRenderer.d.ts +1 -0
- package/Sprites/spriteRenderer.js +14 -0
- package/Sprites/spriteRenderer.js.map +1 -1
- package/XR/features/WebXRWalkingLocomotion.js +28 -13
- package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
- package/package.json +16 -1
- package/scene.d.ts +18 -4
- package/scene.js +99 -34
- package/scene.js.map +1 -1
|
@@ -18,12 +18,14 @@ var CloudBlock = /** @class */ (function (_super) {
|
|
|
18
18
|
/** Gets or sets the number of octaves */
|
|
19
19
|
_this.octaves = 6.0;
|
|
20
20
|
_this.registerInput("seed", NodeMaterialBlockConnectionPointTypes.AutoDetect);
|
|
21
|
+
_this.registerInput("chaos", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);
|
|
21
22
|
_this.registerInput("offsetX", NodeMaterialBlockConnectionPointTypes.Float, true);
|
|
22
23
|
_this.registerInput("offsetY", NodeMaterialBlockConnectionPointTypes.Float, true);
|
|
23
24
|
_this.registerInput("offsetZ", NodeMaterialBlockConnectionPointTypes.Float, true);
|
|
24
|
-
_this.registerOutput("output", NodeMaterialBlockConnectionPointTypes.
|
|
25
|
+
_this.registerOutput("output", NodeMaterialBlockConnectionPointTypes.Float);
|
|
25
26
|
_this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);
|
|
26
27
|
_this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);
|
|
28
|
+
_this._linkConnectionTypes(0, 1);
|
|
27
29
|
return _this;
|
|
28
30
|
}
|
|
29
31
|
/**
|
|
@@ -43,12 +45,22 @@ var CloudBlock = /** @class */ (function (_super) {
|
|
|
43
45
|
enumerable: false,
|
|
44
46
|
configurable: true
|
|
45
47
|
});
|
|
48
|
+
Object.defineProperty(CloudBlock.prototype, "chaos", {
|
|
49
|
+
/**
|
|
50
|
+
* Gets the chaos input component
|
|
51
|
+
*/
|
|
52
|
+
get: function () {
|
|
53
|
+
return this._inputs[1];
|
|
54
|
+
},
|
|
55
|
+
enumerable: false,
|
|
56
|
+
configurable: true
|
|
57
|
+
});
|
|
46
58
|
Object.defineProperty(CloudBlock.prototype, "offsetX", {
|
|
47
59
|
/**
|
|
48
60
|
* Gets the offset X input component
|
|
49
61
|
*/
|
|
50
62
|
get: function () {
|
|
51
|
-
return this._inputs[
|
|
63
|
+
return this._inputs[2];
|
|
52
64
|
},
|
|
53
65
|
enumerable: false,
|
|
54
66
|
configurable: true
|
|
@@ -58,7 +70,7 @@ var CloudBlock = /** @class */ (function (_super) {
|
|
|
58
70
|
* Gets the offset Y input component
|
|
59
71
|
*/
|
|
60
72
|
get: function () {
|
|
61
|
-
return this._inputs[
|
|
73
|
+
return this._inputs[3];
|
|
62
74
|
},
|
|
63
75
|
enumerable: false,
|
|
64
76
|
configurable: true
|
|
@@ -68,7 +80,7 @@ var CloudBlock = /** @class */ (function (_super) {
|
|
|
68
80
|
* Gets the offset Z input component
|
|
69
81
|
*/
|
|
70
82
|
get: function () {
|
|
71
|
-
return this._inputs[
|
|
83
|
+
return this._inputs[4];
|
|
72
84
|
},
|
|
73
85
|
enumerable: false,
|
|
74
86
|
configurable: true
|
|
@@ -84,7 +96,7 @@ var CloudBlock = /** @class */ (function (_super) {
|
|
|
84
96
|
configurable: true
|
|
85
97
|
});
|
|
86
98
|
CloudBlock.prototype._buildBlock = function (state) {
|
|
87
|
-
var _a;
|
|
99
|
+
var _a, _b;
|
|
88
100
|
_super.prototype._buildBlock.call(this, state);
|
|
89
101
|
if (!this.seed.isConnected) {
|
|
90
102
|
return;
|
|
@@ -92,8 +104,8 @@ var CloudBlock = /** @class */ (function (_super) {
|
|
|
92
104
|
if (!this._outputs[0].hasEndpoints) {
|
|
93
105
|
return;
|
|
94
106
|
}
|
|
95
|
-
var functionString = "
|
|
96
|
-
var fractalBrownianString = "\n float fbm(in vec2 st) {\n // Initial values\n float value = 0.0;\n float amplitude = .5;\n float frequency = 0.;\n\n // Loop of octaves\n for (int i = 0; i < OCTAVES; i++) {\n value += amplitude * cloudNoise(st);\n st *= 2.0;\n amplitude *= 0.5;\n }\n return value;\n }\n\n float fbm(in vec3 x) {\n // Initial values\n float value = 0.0;\n float amplitude = 0.5;\n for (int i = 0; i < OCTAVES; ++i) {\n value += amplitude * cloudNoise(x);\n x = x * 2.0;\n amplitude *= 0.5;\n }\n return value;\n }";
|
|
107
|
+
var functionString = "\n\n float cloudRandom(in float p) { p = fract(p * 0.011); p *= p + 7.5; p *= p + p; return fract(p); }\n\n // Based on Morgan McGuire @morgan3d\n // https://www.shadertoy.com/view/4dS3Wd\n float cloudNoise(in vec2 x, in vec2 chaos) {\n vec2 step = chaos * vec2(75., 120.) + vec2(75., 120.);\n\n vec2 i = floor(x);\n vec2 f = fract(x);\n\n float n = dot(i, step);\n\n vec2 u = f * f * (3.0 - 2.0 * f);\n return mix(\n mix(cloudRandom(n + dot(step, vec2(0, 0))), cloudRandom(n + dot(step, vec2(1, 0))), u.x),\n mix(cloudRandom(n + dot(step, vec2(0, 1))), cloudRandom(n + dot(step, vec2(1, 1))), u.x),\n u.y\n );\n }\n\n float cloudNoise(in vec3 x, in vec3 chaos) {\n vec3 step = chaos * vec3(60., 120., 75.) + vec3(60., 120., 75.);\n\n vec3 i = floor(x);\n vec3 f = fract(x);\n\n float n = dot(i, step);\n\n vec3 u = f * f * (3.0 - 2.0 * f);\n return mix(mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 0))), cloudRandom(n + dot(step, vec3(1, 0, 0))), u.x),\n mix( cloudRandom(n + dot(step, vec3(0, 1, 0))), cloudRandom(n + dot(step, vec3(1, 1, 0))), u.x), u.y),\n mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 1))), cloudRandom(n + dot(step, vec3(1, 0, 1))), u.x),\n mix( cloudRandom(n + dot(step, vec3(0, 1, 1))), cloudRandom(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);\n }";
|
|
108
|
+
var fractalBrownianString = "\n float fbm(in vec2 st, in vec2 chaos) {\n // Initial values\n float value = 0.0;\n float amplitude = .5;\n float frequency = 0.;\n\n // Loop of octaves\n for (int i = 0; i < OCTAVES; i++) {\n value += amplitude * cloudNoise(st, chaos);\n st *= 2.0;\n amplitude *= 0.5;\n }\n return value;\n }\n\n float fbm(in vec3 x, in vec3 chaos) {\n // Initial values\n float value = 0.0;\n float amplitude = 0.5;\n for (int i = 0; i < OCTAVES; ++i) {\n value += amplitude * cloudNoise(x, chaos);\n x = x * 2.0;\n amplitude *= 0.5;\n }\n return value;\n }";
|
|
97
109
|
var fbmNewName = "fbm" + this.octaves;
|
|
98
110
|
state._emitFunction('CloudBlockCode', functionString, '// CloudBlockCode');
|
|
99
111
|
state._emitFunction('CloudBlockCodeFBM' + this.octaves, fractalBrownianString.replace(/fbm/gi, fbmNewName).replace(/OCTAVES/gi, (this.octaves | 0).toString()), '// CloudBlockCode FBM');
|
|
@@ -109,7 +121,14 @@ var CloudBlock = /** @class */ (function (_super) {
|
|
|
109
121
|
if (this.offsetZ.isConnected && seedType === "vec3") {
|
|
110
122
|
state.compilationString += localVariable + ".z += 0.1 * " + this.offsetZ.associatedVariableName + ";\r\n";
|
|
111
123
|
}
|
|
112
|
-
|
|
124
|
+
var chaosValue = "";
|
|
125
|
+
if (this.chaos.isConnected) {
|
|
126
|
+
chaosValue = this.chaos.associatedVariableName;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
chaosValue = ((_b = this.seed.connectedPoint) === null || _b === void 0 ? void 0 : _b.type) === NodeMaterialBlockConnectionPointTypes.Vector2 ? "vec2(0., 0.)" : "vec3(0., 0., 0.)";
|
|
130
|
+
}
|
|
131
|
+
state.compilationString += this._declareOutput(this._outputs[0], state) + (" = " + fbmNewName + "(" + localVariable + ", " + chaosValue + ");\r\n");
|
|
113
132
|
return this;
|
|
114
133
|
};
|
|
115
134
|
CloudBlock.prototype._dumpPropertiesCode = function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudBlock.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Materials/Node/Blocks/cloudBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';\r\nimport { NodeMaterialBlockTargets } from '../Enums/nodeMaterialBlockTargets';\r\nimport { RegisterClass } from '../../../Misc/typeStore';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from '../nodeMaterialDecorator';\r\nimport { Scene } from '../../../scene';\r\n/**\r\n * block used to Generate Fractal Brownian Motion Clouds\r\n */\r\nexport class CloudBlock extends NodeMaterialBlock {\r\n /** Gets or sets the number of octaves */\r\n @editableInPropertyPage(\"Octaves\", PropertyTypeForEdition.Int)\r\n public octaves = 6.0;\r\n\r\n /**\r\n * Creates a new CloudBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n this.registerInput(\"seed\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"offsetX\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetY\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetZ\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"CloudBlock\";\r\n }\r\n\r\n /**\r\n * Gets the seed input component\r\n */\r\n public get seed(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the offset X input component\r\n */\r\n public get offsetX(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the offset Y input component\r\n */\r\n public get offsetY(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the offset Z input component\r\n */\r\n public get offsetZ(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (!this.seed.isConnected) {\r\n return;\r\n }\r\n\r\n if (!this._outputs[0].hasEndpoints) {\r\n return;\r\n }\r\n\r\n let functionString = `float cloudRandom (in vec2 st) {\r\n return fract(sin(dot(st.xy,\r\n vec2(12.9898,78.233)))*\r\n 43758.5453123);\r\n }\r\n\r\n float cloudRandom(in float p) { p = fract(p * 0.011); p *= p + 7.5; p *= p + p; return fract(p); }\r\n\r\n // Based on Morgan McGuire @morgan3d\r\n // https://www.shadertoy.com/view/4dS3Wd\r\n float cloudNoise(in vec2 st) {\r\n vec2 i = floor(st);\r\n vec2 f = fract(st);\r\n\r\n // Four corners in 2D of a tile\r\n float a = cloudRandom(i);\r\n float b = cloudRandom(i + vec2(1.0, 0.0));\r\n float c = cloudRandom(i + vec2(0.0, 1.0));\r\n float d = cloudRandom(i + vec2(1.0, 1.0));\r\n\r\n vec2 u = f * f * (3.0 - 2.0 * f);\r\n\r\n return mix(a, b, u.x) +\r\n (c - a)* u.y * (1.0 - u.x) +\r\n (d - b) * u.x * u.y;\r\n }\r\n\r\n float cloudNoise(in vec3 x) {\r\n const vec3 step = vec3(110, 241, 171);\r\n\r\n vec3 i = floor(x);\r\n vec3 f = fract(x);\r\n\r\n float n = dot(i, step);\r\n\r\n vec3 u = f * f * (3.0 - 2.0 * f);\r\n return mix(mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 0))), cloudRandom(n + dot(step, vec3(1, 0, 0))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 0))), cloudRandom(n + dot(step, vec3(1, 1, 0))), u.x), u.y),\r\n mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 1))), cloudRandom(n + dot(step, vec3(1, 0, 1))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 1))), cloudRandom(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);\r\n }`;\r\n\r\n let fractalBrownianString = `\r\n float fbm(in vec2 st) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = .5;\r\n float frequency = 0.;\r\n\r\n // Loop of octaves\r\n for (int i = 0; i < OCTAVES; i++) {\r\n value += amplitude * cloudNoise(st);\r\n st *= 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }\r\n\r\n float fbm(in vec3 x) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = 0.5;\r\n for (int i = 0; i < OCTAVES; ++i) {\r\n value += amplitude * cloudNoise(x);\r\n x = x * 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }`;\r\n\r\n const fbmNewName = `fbm${this.octaves}`;\r\n state._emitFunction('CloudBlockCode', functionString, '// CloudBlockCode');\r\n state._emitFunction('CloudBlockCodeFBM' + this.octaves, fractalBrownianString.replace(/fbm/gi, fbmNewName).replace(/OCTAVES/gi, (this.octaves | 0).toString()), '// CloudBlockCode FBM');\r\n\r\n const localVariable = state._getFreeVariableName(\"st\");\r\n const seedType = this.seed.connectedPoint?.type === NodeMaterialBlockConnectionPointTypes.Vector2 ? \"vec2\" : \"vec3\";\r\n\r\n state.compilationString += `${seedType} ${localVariable} = ${this.seed.associatedVariableName};\\r\\n`;\r\n if (this.offsetX.isConnected) {\r\n state.compilationString += `${localVariable}.x += 0.1 * ${this.offsetX.associatedVariableName};\\r\\n`;\r\n }\r\n if (this.offsetY.isConnected) {\r\n state.compilationString += `${localVariable}.y += 0.1 * ${this.offsetY.associatedVariableName};\\r\\n`;\r\n }\r\n if (this.offsetZ.isConnected && seedType === \"vec3\") {\r\n state.compilationString += `${localVariable}.z += 0.1 * ${this.offsetZ.associatedVariableName};\\r\\n`;\r\n }\r\n state.compilationString += this._declareOutput(this._outputs[0], state) + ` = vec3(0.0) + ${fbmNewName}(${localVariable});\\r\\n`;\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n var codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.octaves = ${this.octaves};\\r\\n`;\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.octaves = this.octaves;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.octaves = serializationObject.octaves;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CloudBlock\", CloudBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"cloudBlock.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Materials/Node/Blocks/cloudBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,gDAAgD,CAAC;AAGvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAE1F;;GAEG;AACH;IAAgC,8BAAiB;IAK7C;;;OAGG;IACH,oBAAmB,IAAY;QAA/B,YACI,kBAAM,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,SAWhD;QApBD,yCAAyC;QAElC,aAAO,GAAG,GAAG,CAAC;QAQjB,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC7E,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpF,KAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjF,KAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjF,KAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjF,KAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,KAAK,CAAC,CAAC;QAE3E,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACjG,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACjG,KAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;IACpC,CAAC;IAED;;;OAGG;IACI,iCAAY,GAAnB;QACI,OAAO,YAAY,CAAC;IACxB,CAAC;IAKD,sBAAW,4BAAI;QAHf;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKA,sBAAW,6BAAK;QAHjB;;WAEG;aACF;YACG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,+BAAO;QAHlB;;UAEE;aACF;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKA,sBAAW,+BAAO;QAHnB;;UAEE;aACD;YACG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKA,sBAAW,+BAAO;QAHnB;;UAEE;aACD;YACG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,8BAAM;QAHjB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAES,gCAAW,GAArB,UAAsB,KAA6B;;QAC/C,iBAAM,WAAW,YAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACxB,OAAO;SACV;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE;YAChC,OAAO;SACV;QAED,IAAI,cAAc,GAAG,skDAmCnB,CAAC;QAEH,IAAI,qBAAqB,GAAG,kzBA0B1B,CAAC;QAEH,IAAM,UAAU,GAAG,QAAM,IAAI,CAAC,OAAS,CAAC;QACxC,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;QAC3E,KAAK,CAAC,aAAa,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAEzL,IAAM,aAAa,GAAG,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACvD,IAAM,QAAQ,GAAG,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,cAAc,0CAAE,IAAI,MAAK,qCAAqC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAEpH,KAAK,CAAC,iBAAiB,IAAO,QAAQ,SAAI,aAAa,WAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,UAAO,CAAC;QACrG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC1B,KAAK,CAAC,iBAAiB,IAAO,aAAa,oBAAe,IAAI,CAAC,OAAO,CAAC,sBAAsB,UAAO,CAAC;SACxG;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC1B,KAAK,CAAC,iBAAiB,IAAO,aAAa,oBAAe,IAAI,CAAC,OAAO,CAAC,sBAAsB,UAAO,CAAC;SACxG;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,QAAQ,KAAK,MAAM,EAAE;YACjD,KAAK,CAAC,iBAAiB,IAAO,aAAa,oBAAe,IAAI,CAAC,OAAO,CAAC,sBAAsB,UAAO,CAAC;SACxG;QAED,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YACxB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;SAClD;aAAM;YACH,UAAU,GAAG,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,cAAc,0CAAE,IAAI,MAAK,qCAAqC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC;SACvI;QAED,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAG,QAAM,UAAU,SAAI,aAAa,UAAK,UAAU,WAAQ,CAAA,CAAC;QAEnI,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,wCAAmB,GAA7B;QACI,IAAI,UAAU,GAAG,iBAAM,mBAAmB,WAAE,IAAM,IAAI,CAAC,iBAAiB,mBAAc,IAAI,CAAC,OAAO,UAAO,CAAA,CAAC;QAC1G,OAAO,UAAU,CAAC;IACtB,CAAC;IAEM,8BAAS,GAAhB;QACI,IAAI,mBAAmB,GAAG,iBAAM,SAAS,WAAE,CAAC;QAE5C,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE3C,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEM,iCAAY,GAAnB,UAAoB,mBAAwB,EAAE,KAAY,EAAE,OAAe;QACvE,iBAAM,YAAY,YAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;IAC/C,CAAC;IAjMD;QADC,sBAAsB,CAAC,SAAS,EAAE,sBAAsB,CAAC,GAAG,CAAC;+CACzC;IAkMzB,iBAAC;CAAA,AArMD,CAAgC,iBAAiB,GAqMhD;SArMY,UAAU;AAuMvB,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC","sourcesContent":["import { NodeMaterialBlock } from '../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';\r\nimport { NodeMaterialBlockTargets } from '../Enums/nodeMaterialBlockTargets';\r\nimport { RegisterClass } from '../../../Misc/typeStore';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from '../nodeMaterialDecorator';\r\nimport { Scene } from '../../../scene';\r\n/**\r\n * block used to Generate Fractal Brownian Motion Clouds\r\n */\r\nexport class CloudBlock extends NodeMaterialBlock {\r\n /** Gets or sets the number of octaves */\r\n @editableInPropertyPage(\"Octaves\", PropertyTypeForEdition.Int)\r\n public octaves = 6.0;\r\n\r\n /**\r\n * Creates a new CloudBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n this.registerInput(\"seed\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"chaos\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerInput(\"offsetX\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetY\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetZ\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this._linkConnectionTypes(0, 1);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"CloudBlock\";\r\n }\r\n\r\n /**\r\n * Gets the seed input component\r\n */\r\n public get seed(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the chaos input component\r\n */\r\n public get chaos(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the offset X input component\r\n */\r\n public get offsetX(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the offset Y input component\r\n */\r\n public get offsetY(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the offset Z input component\r\n */\r\n public get offsetZ(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (!this.seed.isConnected) {\r\n return;\r\n }\r\n\r\n if (!this._outputs[0].hasEndpoints) {\r\n return;\r\n }\r\n\r\n let functionString = `\r\n\r\n float cloudRandom(in float p) { p = fract(p * 0.011); p *= p + 7.5; p *= p + p; return fract(p); }\r\n\r\n // Based on Morgan McGuire @morgan3d\r\n // https://www.shadertoy.com/view/4dS3Wd\r\n float cloudNoise(in vec2 x, in vec2 chaos) {\r\n vec2 step = chaos * vec2(75., 120.) + vec2(75., 120.);\r\n\r\n vec2 i = floor(x);\r\n vec2 f = fract(x);\r\n\r\n float n = dot(i, step);\r\n\r\n vec2 u = f * f * (3.0 - 2.0 * f);\r\n return mix(\r\n mix(cloudRandom(n + dot(step, vec2(0, 0))), cloudRandom(n + dot(step, vec2(1, 0))), u.x),\r\n mix(cloudRandom(n + dot(step, vec2(0, 1))), cloudRandom(n + dot(step, vec2(1, 1))), u.x),\r\n u.y\r\n );\r\n }\r\n\r\n float cloudNoise(in vec3 x, in vec3 chaos) {\r\n vec3 step = chaos * vec3(60., 120., 75.) + vec3(60., 120., 75.);\r\n\r\n vec3 i = floor(x);\r\n vec3 f = fract(x);\r\n\r\n float n = dot(i, step);\r\n\r\n vec3 u = f * f * (3.0 - 2.0 * f);\r\n return mix(mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 0))), cloudRandom(n + dot(step, vec3(1, 0, 0))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 0))), cloudRandom(n + dot(step, vec3(1, 1, 0))), u.x), u.y),\r\n mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 1))), cloudRandom(n + dot(step, vec3(1, 0, 1))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 1))), cloudRandom(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);\r\n }`;\r\n\r\n let fractalBrownianString = `\r\n float fbm(in vec2 st, in vec2 chaos) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = .5;\r\n float frequency = 0.;\r\n\r\n // Loop of octaves\r\n for (int i = 0; i < OCTAVES; i++) {\r\n value += amplitude * cloudNoise(st, chaos);\r\n st *= 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }\r\n\r\n float fbm(in vec3 x, in vec3 chaos) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = 0.5;\r\n for (int i = 0; i < OCTAVES; ++i) {\r\n value += amplitude * cloudNoise(x, chaos);\r\n x = x * 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }`;\r\n\r\n const fbmNewName = `fbm${this.octaves}`;\r\n state._emitFunction('CloudBlockCode', functionString, '// CloudBlockCode');\r\n state._emitFunction('CloudBlockCodeFBM' + this.octaves, fractalBrownianString.replace(/fbm/gi, fbmNewName).replace(/OCTAVES/gi, (this.octaves | 0).toString()), '// CloudBlockCode FBM');\r\n\r\n const localVariable = state._getFreeVariableName(\"st\");\r\n const seedType = this.seed.connectedPoint?.type === NodeMaterialBlockConnectionPointTypes.Vector2 ? \"vec2\" : \"vec3\";\r\n\r\n state.compilationString += `${seedType} ${localVariable} = ${this.seed.associatedVariableName};\\r\\n`;\r\n if (this.offsetX.isConnected) {\r\n state.compilationString += `${localVariable}.x += 0.1 * ${this.offsetX.associatedVariableName};\\r\\n`;\r\n }\r\n if (this.offsetY.isConnected) {\r\n state.compilationString += `${localVariable}.y += 0.1 * ${this.offsetY.associatedVariableName};\\r\\n`;\r\n }\r\n if (this.offsetZ.isConnected && seedType === \"vec3\") {\r\n state.compilationString += `${localVariable}.z += 0.1 * ${this.offsetZ.associatedVariableName};\\r\\n`;\r\n }\r\n\r\n let chaosValue = \"\";\r\n if (this.chaos.isConnected) {\r\n chaosValue = this.chaos.associatedVariableName;\r\n } else {\r\n chaosValue = this.seed.connectedPoint?.type === NodeMaterialBlockConnectionPointTypes.Vector2 ? \"vec2(0., 0.)\" : \"vec3(0., 0., 0.)\";\r\n }\r\n\r\n state.compilationString += this._declareOutput(this._outputs[0], state) + ` = ${fbmNewName}(${localVariable}, ${chaosValue});\\r\\n`;\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n var codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.octaves = ${this.octaves};\\r\\n`;\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.octaves = this.octaves;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.octaves = serializationObject.octaves;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CloudBlock\", CloudBlock);\r\n"]}
|
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
import { NodeMaterialBlock } from '../nodeMaterialBlock';
|
|
2
2
|
import { NodeMaterialBuildState } from '../nodeMaterialBuildState';
|
|
3
3
|
import { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';
|
|
4
|
+
import { Scene } from '../../../scene';
|
|
4
5
|
/**
|
|
5
6
|
* Block used to create a Color3/4 out of individual inputs (one for each component)
|
|
6
7
|
*/
|
|
7
8
|
export declare class ColorMergerBlock extends NodeMaterialBlock {
|
|
9
|
+
/**
|
|
10
|
+
* Gets or sets the swizzle for r (meaning which compoent to affect to the output.r)
|
|
11
|
+
*/
|
|
12
|
+
rSwizzle: "r" | "g" | "b" | "a";
|
|
13
|
+
/**
|
|
14
|
+
* Gets or sets the swizzle for g (meaning which compoent to affect to the output.g)
|
|
15
|
+
*/
|
|
16
|
+
gSwizzle: "r" | "g" | "b" | "a";
|
|
17
|
+
/**
|
|
18
|
+
* Gets or sets the swizzle for b (meaning which compoent to affect to the output.b)
|
|
19
|
+
*/
|
|
20
|
+
bSwizzle: "r" | "g" | "b" | "a";
|
|
21
|
+
/**
|
|
22
|
+
* Gets or sets the swizzle for a (meaning which compoent to affect to the output.a)
|
|
23
|
+
*/
|
|
24
|
+
aSwizzle: "r" | "g" | "b" | "a";
|
|
8
25
|
/**
|
|
9
26
|
* Create a new ColorMergerBlock
|
|
10
27
|
* @param name defines the block name
|
|
@@ -49,5 +66,9 @@ export declare class ColorMergerBlock extends NodeMaterialBlock {
|
|
|
49
66
|
*/
|
|
50
67
|
get rgb(): NodeMaterialConnectionPoint;
|
|
51
68
|
protected _inputRename(name: string): string;
|
|
69
|
+
private _buildSwizzle;
|
|
52
70
|
protected _buildBlock(state: NodeMaterialBuildState): this;
|
|
71
|
+
serialize(): any;
|
|
72
|
+
_deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
|
|
73
|
+
protected _dumpPropertiesCode(): string;
|
|
53
74
|
}
|
|
@@ -14,6 +14,22 @@ var ColorMergerBlock = /** @class */ (function (_super) {
|
|
|
14
14
|
*/
|
|
15
15
|
function ColorMergerBlock(name) {
|
|
16
16
|
var _this = _super.call(this, name, NodeMaterialBlockTargets.Neutral) || this;
|
|
17
|
+
/**
|
|
18
|
+
* Gets or sets the swizzle for r (meaning which compoent to affect to the output.r)
|
|
19
|
+
*/
|
|
20
|
+
_this.rSwizzle = "r";
|
|
21
|
+
/**
|
|
22
|
+
* Gets or sets the swizzle for g (meaning which compoent to affect to the output.g)
|
|
23
|
+
*/
|
|
24
|
+
_this.gSwizzle = "g";
|
|
25
|
+
/**
|
|
26
|
+
* Gets or sets the swizzle for b (meaning which compoent to affect to the output.b)
|
|
27
|
+
*/
|
|
28
|
+
_this.bSwizzle = "b";
|
|
29
|
+
/**
|
|
30
|
+
* Gets or sets the swizzle for a (meaning which compoent to affect to the output.a)
|
|
31
|
+
*/
|
|
32
|
+
_this.aSwizzle = "a";
|
|
17
33
|
_this.registerInput("rgb ", NodeMaterialBlockConnectionPointTypes.Color3, true);
|
|
18
34
|
_this.registerInput("r", NodeMaterialBlockConnectionPointTypes.Float, true);
|
|
19
35
|
_this.registerInput("g", NodeMaterialBlockConnectionPointTypes.Float, true);
|
|
@@ -117,6 +133,10 @@ var ColorMergerBlock = /** @class */ (function (_super) {
|
|
|
117
133
|
}
|
|
118
134
|
return name;
|
|
119
135
|
};
|
|
136
|
+
ColorMergerBlock.prototype._buildSwizzle = function (len) {
|
|
137
|
+
var swizzle = this.rSwizzle + this.gSwizzle + this.bSwizzle + this.aSwizzle;
|
|
138
|
+
return "." + swizzle.substr(0, len);
|
|
139
|
+
};
|
|
120
140
|
ColorMergerBlock.prototype._buildBlock = function (state) {
|
|
121
141
|
_super.prototype._buildBlock.call(this, state);
|
|
122
142
|
var rInput = this.r;
|
|
@@ -128,22 +148,46 @@ var ColorMergerBlock = /** @class */ (function (_super) {
|
|
|
128
148
|
var color3Output = this._outputs[1];
|
|
129
149
|
if (rgbInput.isConnected) {
|
|
130
150
|
if (color4Output.hasEndpoints) {
|
|
131
|
-
state.compilationString += this._declareOutput(color4Output, state) + (" = vec4(" + rgbInput.associatedVariableName + ", " + (aInput.isConnected ? this._writeVariable(aInput) : "0.0") + ");\r\n");
|
|
151
|
+
state.compilationString += this._declareOutput(color4Output, state) + (" = vec4(" + rgbInput.associatedVariableName + ", " + (aInput.isConnected ? this._writeVariable(aInput) : "0.0") + ")" + this._buildSwizzle(4) + ";\r\n");
|
|
132
152
|
}
|
|
133
153
|
if (color3Output.hasEndpoints) {
|
|
134
|
-
state.compilationString += this._declareOutput(color3Output, state) + (" = " + rgbInput.associatedVariableName + ";\r\n");
|
|
154
|
+
state.compilationString += this._declareOutput(color3Output, state) + (" = " + rgbInput.associatedVariableName + this._buildSwizzle(3) + ";\r\n");
|
|
135
155
|
}
|
|
136
156
|
}
|
|
137
157
|
else {
|
|
138
158
|
if (color4Output.hasEndpoints) {
|
|
139
|
-
state.compilationString += this._declareOutput(color4Output, state) + (" = vec4(" + (rInput.isConnected ? this._writeVariable(rInput) : "0.0") + ", " + (gInput.isConnected ? this._writeVariable(gInput) : "0.0") + ", " + (bInput.isConnected ? this._writeVariable(bInput) : "0.0") + ", " + (aInput.isConnected ? this._writeVariable(aInput) : "0.0") + ");\r\n");
|
|
159
|
+
state.compilationString += this._declareOutput(color4Output, state) + (" = vec4(" + (rInput.isConnected ? this._writeVariable(rInput) : "0.0") + ", " + (gInput.isConnected ? this._writeVariable(gInput) : "0.0") + ", " + (bInput.isConnected ? this._writeVariable(bInput) : "0.0") + ", " + (aInput.isConnected ? this._writeVariable(aInput) : "0.0") + ")" + this._buildSwizzle(4) + ";\r\n");
|
|
140
160
|
}
|
|
141
161
|
if (color3Output.hasEndpoints) {
|
|
142
|
-
state.compilationString += this._declareOutput(color3Output, state) + (" = vec3(" + (rInput.isConnected ? this._writeVariable(rInput) : "0.0") + ", " + (gInput.isConnected ? this._writeVariable(gInput) : "0.0") + ", " + (bInput.isConnected ? this._writeVariable(bInput) : "0.0") + ");\r\n");
|
|
162
|
+
state.compilationString += this._declareOutput(color3Output, state) + (" = vec3(" + (rInput.isConnected ? this._writeVariable(rInput) : "0.0") + ", " + (gInput.isConnected ? this._writeVariable(gInput) : "0.0") + ", " + (bInput.isConnected ? this._writeVariable(bInput) : "0.0") + ")" + this._buildSwizzle(3) + ";\r\n");
|
|
143
163
|
}
|
|
144
164
|
}
|
|
145
165
|
return this;
|
|
146
166
|
};
|
|
167
|
+
ColorMergerBlock.prototype.serialize = function () {
|
|
168
|
+
var serializationObject = _super.prototype.serialize.call(this);
|
|
169
|
+
serializationObject.rSwizzle = this.rSwizzle;
|
|
170
|
+
serializationObject.gSwizzle = this.gSwizzle;
|
|
171
|
+
serializationObject.bSwizzle = this.bSwizzle;
|
|
172
|
+
serializationObject.aSwizzle = this.aSwizzle;
|
|
173
|
+
return serializationObject;
|
|
174
|
+
};
|
|
175
|
+
ColorMergerBlock.prototype._deserialize = function (serializationObject, scene, rootUrl) {
|
|
176
|
+
var _a, _b, _c, _d;
|
|
177
|
+
_super.prototype._deserialize.call(this, serializationObject, scene, rootUrl);
|
|
178
|
+
this.rSwizzle = (_a = serializationObject.rSwizzle) !== null && _a !== void 0 ? _a : "r";
|
|
179
|
+
this.gSwizzle = (_b = serializationObject.gSwizzle) !== null && _b !== void 0 ? _b : "g";
|
|
180
|
+
this.bSwizzle = (_c = serializationObject.bSwizzle) !== null && _c !== void 0 ? _c : "b";
|
|
181
|
+
this.aSwizzle = (_d = serializationObject.aSwizzle) !== null && _d !== void 0 ? _d : "a";
|
|
182
|
+
};
|
|
183
|
+
ColorMergerBlock.prototype._dumpPropertiesCode = function () {
|
|
184
|
+
var codeString = _super.prototype._dumpPropertiesCode.call(this);
|
|
185
|
+
codeString += this._codeVariableName + ".rSwizzle = " + this.rSwizzle + "};\r\n";
|
|
186
|
+
codeString += this._codeVariableName + ".gSwizzle = " + this.gSwizzle + "};\r\n";
|
|
187
|
+
codeString += this._codeVariableName + ".bSwizzle = " + this.bSwizzle + "};\r\n";
|
|
188
|
+
codeString += this._codeVariableName + ".aSwizzle = " + this.aSwizzle + "};\r\n";
|
|
189
|
+
return codeString;
|
|
190
|
+
};
|
|
147
191
|
return ColorMergerBlock;
|
|
148
192
|
}(NodeMaterialBlock));
|
|
149
193
|
export { ColorMergerBlock };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorMergerBlock.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Materials/Node/Blocks/colorMergerBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';\r\nimport { RegisterClass } from '../../../Misc/typeStore';\r\n\r\n/**\r\n * Block used to create a Color3/4 out of individual inputs (one for each component)\r\n */\r\nexport class ColorMergerBlock extends NodeMaterialBlock {\r\n /**\r\n * Create a new ColorMergerBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"rgb \", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"ColorMergerBlock\";\r\n }\r\n\r\n /**\r\n * Gets the rgb component (input)\r\n */\r\n public get rgbIn(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the r component (input)\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the g component (input)\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the b component (input)\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the a component (input)\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the rgba component (output)\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb component (output)\r\n */\r\n public get rgbOut(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the rgb component (output)\r\n * @deprecated Please use rgbOut instead.\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this.rgbOut;\r\n }\r\n\r\n protected _inputRename(name: string) {\r\n if (name === \"rgb \") {\r\n return \"rgbIn\";\r\n }\r\n return name;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let rInput = this.r;\r\n let gInput = this.g;\r\n let bInput = this.b;\r\n let aInput = this.a;\r\n let rgbInput = this.rgbIn;\r\n\r\n let color4Output = this._outputs[0];\r\n let color3Output = this._outputs[1];\r\n\r\n if (rgbInput.isConnected) {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color4Output, state) + ` = vec4(${rgbInput.associatedVariableName}, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"});\\r\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color3Output, state) + ` = ${rgbInput.associatedVariableName};\\r\\n`;\r\n }\r\n } else {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color4Output, state) + ` = vec4(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"}, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"});\\r\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color3Output, state) + ` = vec3(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"});\\r\\n`;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ColorMergerBlock\", ColorMergerBlock);"]}
|
|
1
|
+
{"version":3,"file":"colorMergerBlock.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Materials/Node/Blocks/colorMergerBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';\r\nimport { RegisterClass } from '../../../Misc/typeStore';\r\nimport { Scene } from '../../../scene';\r\n\r\n/**\r\n * Block used to create a Color3/4 out of individual inputs (one for each component)\r\n */\r\nexport class ColorMergerBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the swizzle for r (meaning which compoent to affect to the output.r)\r\n */\r\n public rSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"r\";\r\n /**\r\n * Gets or sets the swizzle for g (meaning which compoent to affect to the output.g)\r\n */\r\n public gSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"g\";\r\n /**\r\n * Gets or sets the swizzle for b (meaning which compoent to affect to the output.b)\r\n */\r\n public bSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"b\";\r\n /**\r\n * Gets or sets the swizzle for a (meaning which compoent to affect to the output.a)\r\n */\r\n public aSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"a\";\r\n\r\n /**\r\n * Create a new ColorMergerBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"rgb \", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"ColorMergerBlock\";\r\n }\r\n\r\n /**\r\n * Gets the rgb component (input)\r\n */\r\n public get rgbIn(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the r component (input)\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the g component (input)\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the b component (input)\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the a component (input)\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the rgba component (output)\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb component (output)\r\n */\r\n public get rgbOut(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the rgb component (output)\r\n * @deprecated Please use rgbOut instead.\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this.rgbOut;\r\n }\r\n\r\n protected _inputRename(name: string) {\r\n if (name === \"rgb \") {\r\n return \"rgbIn\";\r\n }\r\n return name;\r\n }\r\n\r\n private _buildSwizzle(len: number) {\r\n let swizzle = this.rSwizzle + this.gSwizzle + this.bSwizzle + this.aSwizzle;\r\n return \".\" + swizzle.substr(0, len);\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let rInput = this.r;\r\n let gInput = this.g;\r\n let bInput = this.b;\r\n let aInput = this.a;\r\n let rgbInput = this.rgbIn;\r\n\r\n let color4Output = this._outputs[0];\r\n let color3Output = this._outputs[1];\r\n\r\n if (rgbInput.isConnected) {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color4Output, state) + ` = vec4(${rgbInput.associatedVariableName}, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"})${this._buildSwizzle(4)};\\r\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color3Output, state) + ` = ${rgbInput.associatedVariableName}${this._buildSwizzle(3)};\\r\\n`;\r\n }\r\n } else {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color4Output, state) + ` = vec4(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"}, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"})${this._buildSwizzle(4)};\\r\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color3Output, state) + ` = vec3(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"})${this._buildSwizzle(3)};\\r\\n`;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.rSwizzle = this.rSwizzle;\r\n serializationObject.gSwizzle = this.gSwizzle;\r\n serializationObject.bSwizzle = this.bSwizzle;\r\n serializationObject.aSwizzle = this.aSwizzle;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.rSwizzle = serializationObject.rSwizzle ?? \"r\";\r\n this.gSwizzle = serializationObject.gSwizzle ?? \"g\";\r\n this.bSwizzle = serializationObject.bSwizzle ?? \"b\";\r\n this.aSwizzle = serializationObject.aSwizzle ?? \"a\";\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n var codeString = super._dumpPropertiesCode();\r\n codeString += `${this._codeVariableName}.rSwizzle = ${this.rSwizzle}};\\r\\n`;\r\n codeString += `${this._codeVariableName}.gSwizzle = ${this.gSwizzle}};\\r\\n`;\r\n codeString += `${this._codeVariableName}.bSwizzle = ${this.bSwizzle}};\\r\\n`;\r\n codeString += `${this._codeVariableName}.aSwizzle = ${this.aSwizzle}};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ColorMergerBlock\", ColorMergerBlock);"]}
|
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
import { NodeMaterialBlock } from '../nodeMaterialBlock';
|
|
2
2
|
import { NodeMaterialBuildState } from '../nodeMaterialBuildState';
|
|
3
3
|
import { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';
|
|
4
|
+
import { Scene } from '../../../scene';
|
|
4
5
|
/**
|
|
5
6
|
* Block used to create a Vector2/3/4 out of individual inputs (one for each component)
|
|
6
7
|
*/
|
|
7
8
|
export declare class VectorMergerBlock extends NodeMaterialBlock {
|
|
9
|
+
/**
|
|
10
|
+
* Gets or sets the swizzle for x (meaning which compoent to affect to the output.x)
|
|
11
|
+
*/
|
|
12
|
+
xSwizzle: "x" | "y" | "z" | "w";
|
|
13
|
+
/**
|
|
14
|
+
* Gets or sets the swizzle for y (meaning which compoent to affect to the output.y)
|
|
15
|
+
*/
|
|
16
|
+
ySwizzle: "x" | "y" | "z" | "w";
|
|
17
|
+
/**
|
|
18
|
+
* Gets or sets the swizzle for z (meaning which compoent to affect to the output.z)
|
|
19
|
+
*/
|
|
20
|
+
zSwizzle: "x" | "y" | "z" | "w";
|
|
21
|
+
/**
|
|
22
|
+
* Gets or sets the swizzle for w (meaning which compoent to affect to the output.w)
|
|
23
|
+
*/
|
|
24
|
+
wSwizzle: "x" | "y" | "z" | "w";
|
|
8
25
|
/**
|
|
9
26
|
* Create a new VectorMergerBlock
|
|
10
27
|
* @param name defines the block name
|
|
@@ -15,6 +32,10 @@ export declare class VectorMergerBlock extends NodeMaterialBlock {
|
|
|
15
32
|
* @returns the class name
|
|
16
33
|
*/
|
|
17
34
|
getClassName(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Gets the xyzw component (input)
|
|
37
|
+
*/
|
|
38
|
+
get xyzwIn(): NodeMaterialConnectionPoint;
|
|
18
39
|
/**
|
|
19
40
|
* Gets the xyz component (input)
|
|
20
41
|
*/
|
|
@@ -70,5 +91,9 @@ export declare class VectorMergerBlock extends NodeMaterialBlock {
|
|
|
70
91
|
*/
|
|
71
92
|
get xyz(): NodeMaterialConnectionPoint;
|
|
72
93
|
protected _inputRename(name: string): string;
|
|
94
|
+
private _buildSwizzle;
|
|
73
95
|
protected _buildBlock(state: NodeMaterialBuildState): this;
|
|
96
|
+
serialize(): any;
|
|
97
|
+
_deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
|
|
98
|
+
protected _dumpPropertiesCode(): string;
|
|
74
99
|
}
|