@babylonjs/core 8.12.0 → 8.13.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/BakedVertexAnimation/vertexAnimationBaker.d.ts +10 -2
- package/BakedVertexAnimation/vertexAnimationBaker.js +51 -2
- package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
- package/Cameras/camera.d.ts +6 -0
- package/Cameras/camera.js +8 -0
- package/Cameras/camera.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.d.ts +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js +27 -18
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.d.ts +55 -3
- package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.js +83 -2
- package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSetDelayBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.d.ts +1 -0
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js +23 -2
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js +5 -5
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
- package/FlowGraph/Blocks/flowGraphBlockFactory.js +10 -0
- package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
- package/FlowGraph/Blocks/flowGraphBlockNames.d.ts +5 -0
- package/FlowGraph/Blocks/flowGraphBlockNames.js +5 -0
- package/FlowGraph/Blocks/flowGraphBlockNames.js.map +1 -1
- package/FlowGraph/flowGraphRichTypes.js +10 -8
- package/FlowGraph/flowGraphRichTypes.js.map +1 -1
- package/FlowGraph/utils.d.ts +3 -3
- package/FlowGraph/utils.js +5 -4
- package/FlowGraph/utils.js.map +1 -1
- package/Instrumentation/engineInstrumentation.d.ts +2 -2
- package/Instrumentation/engineInstrumentation.js +5 -0
- package/Instrumentation/engineInstrumentation.js.map +1 -1
- package/Instrumentation/sceneInstrumentation.d.ts +1 -0
- package/Instrumentation/sceneInstrumentation.js +5 -0
- package/Instrumentation/sceneInstrumentation.js.map +1 -1
- package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.d.ts +2 -5
- package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js +8 -71
- package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +2 -0
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +7 -8
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/index.d.ts +1 -0
- package/Materials/Node/Blocks/Fragment/index.js +1 -0
- package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/smartFilterFragmentOutputBlock.d.ts +29 -0
- package/Materials/Node/Blocks/Fragment/smartFilterFragmentOutputBlock.js +100 -0
- package/Materials/Node/Blocks/Fragment/smartFilterFragmentOutputBlock.js.map +1 -0
- package/Materials/Node/nodeMaterial.js +1 -1
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +0 -2
- package/Materials/Node/nodeMaterialBuildState.js +0 -2
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Node/nodeMaterialDefault.js +2 -1
- package/Materials/Node/nodeMaterialDefault.js.map +1 -1
- package/Maths/math.vector.d.ts +14 -0
- package/Maths/math.vector.functions.d.ts +25 -1
- package/Maths/math.vector.functions.js +35 -0
- package/Maths/math.vector.functions.js.map +1 -1
- package/Maths/math.vector.js +28 -0
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/csg2.js +1 -1
- package/Meshes/csg2.js.map +1 -1
- package/Meshes/linesMesh.d.ts +2 -1
- package/Meshes/linesMesh.js +5 -0
- package/Meshes/linesMesh.js.map +1 -1
- package/Misc/environmentTextureTools.d.ts +4 -1
- package/Misc/environmentTextureTools.js +9 -2
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/observable.d.ts +1 -1
- package/Misc/observable.js.map +1 -1
- package/Morph/morphTargetManager.d.ts +5 -0
- package/Morph/morphTargetManager.js +8 -0
- package/Morph/morphTargetManager.js.map +1 -1
- package/Particles/IParticleSystem.d.ts +4 -0
- package/Particles/IParticleSystem.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.d.ts +2 -1
- package/Particles/Node/nodeParticleSystemSet.js +2 -1
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/baseParticleSystem.d.ts +4 -0
- package/Particles/baseParticleSystem.js +6 -0
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/particleSystem.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Fragment/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AAErC,uBAAuB;AAEvB,uBAAuB;AACvB,cAAc,wDAAwD,CAAC;AACvE,cAAc,mEAAmE,CAAC;AAClF,cAAc,iEAAiE,CAAC;AAChF,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,6DAA6D,CAAC;AAE5E,qBAAqB;AACrB,cAAc,qDAAqD,CAAC;AACpE,cAAc,kEAAkE,CAAC;AACjF,cAAc,8DAA8D,CAAC;AAC7E,cAAc,iDAAiD,CAAC;AAChE,cAAc,8DAA8D,CAAC;AAC7E,cAAc,0DAA0D,CAAC;AAEzE,iBAAiB;AACjB,cAAc,8DAA8D,CAAC;AAC7E,cAAc,yDAAyD,CAAC;AACxE,cAAc,0DAA0D,CAAC;AACzE,cAAc,0DAA0D,CAAC;AACzE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC","sourcesContent":["export * from \"./fragmentOutputBlock\";\r\nexport * from \"./imageProcessingBlock\";\r\nexport * from \"./perturbNormalBlock\";\r\nexport * from \"./discardBlock\";\r\nexport * from \"./frontFacingBlock\";\r\nexport * from \"./derivativeBlock\";\r\nexport * from \"./fragCoordBlock\";\r\nexport * from \"./screenSizeBlock\";\r\nexport * from \"./screenSpaceBlock\";\r\nexport * from \"./twirlBlock\";\r\nexport * from \"./TBNBlock\";\r\nexport * from \"./heightToNormalBlock\";\r\nexport * from \"./fragDepthBlock\";\r\nexport * from \"./shadowMapBlock\";\r\nexport * from \"./prePassOutputBlock\";\r\n\r\n// async-loaded shaders\r\n\r\n// imageProcessingBlock\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/helperFunctions\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/imageProcessingDeclaration\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/imageProcessingFunctions\";\r\nexport * from \"../../../../Shaders/ShadersInclude/helperFunctions\";\r\nexport * from \"../../../../Shaders/ShadersInclude/imageProcessingDeclaration\";\r\nexport * from \"../../../../Shaders/ShadersInclude/imageProcessingFunctions\";\r\n\r\n// perturbNormalBlock\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/bumpFragment\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/bumpFragmentFunctions\";\r\nexport * from \"../../../../Shaders/ShadersInclude/bumpFragment\";\r\nexport * from \"../../../../Shaders/ShadersInclude/bumpFragmentMainFunctions\";\r\nexport * from \"../../../../Shaders/ShadersInclude/bumpFragmentFunctions\";\r\n\r\n// shadowMapBlock\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/shadowMapVertexMetric\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/packingFunctions\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/shadowMapFragment\";\r\nexport * from \"../../../../Shaders/ShadersInclude/shadowMapVertexMetric\";\r\nexport * from \"../../../../Shaders/ShadersInclude/packingFunctions\";\r\nexport * from \"../../../../Shaders/ShadersInclude/shadowMapFragment\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Fragment/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AAErC,uBAAuB;AAEvB,uBAAuB;AACvB,cAAc,wDAAwD,CAAC;AACvE,cAAc,mEAAmE,CAAC;AAClF,cAAc,iEAAiE,CAAC;AAChF,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,6DAA6D,CAAC;AAE5E,qBAAqB;AACrB,cAAc,qDAAqD,CAAC;AACpE,cAAc,kEAAkE,CAAC;AACjF,cAAc,8DAA8D,CAAC;AAC7E,cAAc,iDAAiD,CAAC;AAChE,cAAc,8DAA8D,CAAC;AAC7E,cAAc,0DAA0D,CAAC;AAEzE,iBAAiB;AACjB,cAAc,8DAA8D,CAAC;AAC7E,cAAc,yDAAyD,CAAC;AACxE,cAAc,0DAA0D,CAAC;AACzE,cAAc,0DAA0D,CAAC;AACzE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC","sourcesContent":["export * from \"./fragmentOutputBlock\";\r\nexport * from \"./smartFilterFragmentOutputBlock\";\r\nexport * from \"./imageProcessingBlock\";\r\nexport * from \"./perturbNormalBlock\";\r\nexport * from \"./discardBlock\";\r\nexport * from \"./frontFacingBlock\";\r\nexport * from \"./derivativeBlock\";\r\nexport * from \"./fragCoordBlock\";\r\nexport * from \"./screenSizeBlock\";\r\nexport * from \"./screenSpaceBlock\";\r\nexport * from \"./twirlBlock\";\r\nexport * from \"./TBNBlock\";\r\nexport * from \"./heightToNormalBlock\";\r\nexport * from \"./fragDepthBlock\";\r\nexport * from \"./shadowMapBlock\";\r\nexport * from \"./prePassOutputBlock\";\r\n\r\n// async-loaded shaders\r\n\r\n// imageProcessingBlock\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/helperFunctions\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/imageProcessingDeclaration\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/imageProcessingFunctions\";\r\nexport * from \"../../../../Shaders/ShadersInclude/helperFunctions\";\r\nexport * from \"../../../../Shaders/ShadersInclude/imageProcessingDeclaration\";\r\nexport * from \"../../../../Shaders/ShadersInclude/imageProcessingFunctions\";\r\n\r\n// perturbNormalBlock\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/bumpFragment\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/bumpFragmentFunctions\";\r\nexport * from \"../../../../Shaders/ShadersInclude/bumpFragment\";\r\nexport * from \"../../../../Shaders/ShadersInclude/bumpFragmentMainFunctions\";\r\nexport * from \"../../../../Shaders/ShadersInclude/bumpFragmentFunctions\";\r\n\r\n// shadowMapBlock\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/shadowMapVertexMetric\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/packingFunctions\";\r\nexport * from \"../../../../ShadersWGSL/ShadersInclude/shadowMapFragment\";\r\nexport * from \"../../../../Shaders/ShadersInclude/shadowMapVertexMetric\";\r\nexport * from \"../../../../Shaders/ShadersInclude/packingFunctions\";\r\nexport * from \"../../../../Shaders/ShadersInclude/shadowMapFragment\";\r\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FragmentOutputBlock } from "./fragmentOutputBlock.js";
|
|
2
|
+
import type { NodeMaterialBuildState } from "../../nodeMaterialBuildState.js";
|
|
3
|
+
/** @internal */
|
|
4
|
+
export declare const SfeModeDefine = "USE_SFE_FRAMEWORK";
|
|
5
|
+
/**
|
|
6
|
+
* Block used to output the final color with Smart Filters structural support.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SmartFilterFragmentOutputBlock extends FragmentOutputBlock {
|
|
9
|
+
/**
|
|
10
|
+
* Create a new SmartFilterFragmentOutputBlock
|
|
11
|
+
* @param name defines the block name
|
|
12
|
+
*/
|
|
13
|
+
constructor(name: string);
|
|
14
|
+
/**
|
|
15
|
+
* Gets the current class name
|
|
16
|
+
* @returns the class name
|
|
17
|
+
*/
|
|
18
|
+
getClassName(): string;
|
|
19
|
+
/**
|
|
20
|
+
* Initialize the block and prepare the context for build
|
|
21
|
+
* @param state defines the state that will be used for the build
|
|
22
|
+
*/
|
|
23
|
+
initialize(state: NodeMaterialBuildState): void;
|
|
24
|
+
private _generateInputBlockAnnotation;
|
|
25
|
+
private _generateScreenSizeBlockAnnotation;
|
|
26
|
+
private _getMainUvName;
|
|
27
|
+
protected _getOutputString(): string;
|
|
28
|
+
protected _buildBlock(state: NodeMaterialBuildState): this;
|
|
29
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { FragmentOutputBlock } from "./fragmentOutputBlock.js";
|
|
2
|
+
import { NodeMaterialModes } from "../../Enums/nodeMaterialModes.js";
|
|
3
|
+
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
4
|
+
import { InputBlock } from "../Input/inputBlock.js";
|
|
5
|
+
import { ScreenSizeBlock } from "../Fragment/screenSizeBlock.js";
|
|
6
|
+
/** @internal */
|
|
7
|
+
export const SfeModeDefine = "USE_SFE_FRAMEWORK";
|
|
8
|
+
/**
|
|
9
|
+
* Block used to output the final color with Smart Filters structural support.
|
|
10
|
+
*/
|
|
11
|
+
export class SmartFilterFragmentOutputBlock extends FragmentOutputBlock {
|
|
12
|
+
/**
|
|
13
|
+
* Create a new SmartFilterFragmentOutputBlock
|
|
14
|
+
* @param name defines the block name
|
|
15
|
+
*/
|
|
16
|
+
constructor(name) {
|
|
17
|
+
super(name);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Gets the current class name
|
|
21
|
+
* @returns the class name
|
|
22
|
+
*/
|
|
23
|
+
getClassName() {
|
|
24
|
+
return "SmartFilterFragmentOutputBlock";
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Initialize the block and prepare the context for build
|
|
28
|
+
* @param state defines the state that will be used for the build
|
|
29
|
+
*/
|
|
30
|
+
initialize(state) {
|
|
31
|
+
super.initialize(state);
|
|
32
|
+
if (state.sharedData.nodeMaterial.mode !== NodeMaterialModes.SFE) {
|
|
33
|
+
state.sharedData.raiseBuildError("SmartFilterFragmentOutputBlock should not be used outside of SFE mode.");
|
|
34
|
+
}
|
|
35
|
+
if (state.sharedData.nodeMaterial.shaderLanguage !== 0 /* ShaderLanguage.GLSL */) {
|
|
36
|
+
state.sharedData.raiseBuildError("WebGPU is not supported in SmartFilters mode.");
|
|
37
|
+
}
|
|
38
|
+
// Annotate uniforms of InputBlocks and bindable blocks with their current values
|
|
39
|
+
if (!state.sharedData.formatConfig.getUniformAnnotation) {
|
|
40
|
+
state.sharedData.formatConfig.getUniformAnnotation = (name) => {
|
|
41
|
+
for (const block of state.sharedData.nodeMaterial.attachedBlocks) {
|
|
42
|
+
if (block instanceof InputBlock && block.isUniform && block.associatedVariableName === name) {
|
|
43
|
+
return this._generateInputBlockAnnotation(block);
|
|
44
|
+
}
|
|
45
|
+
if (block instanceof ScreenSizeBlock && block.associatedVariableName === name) {
|
|
46
|
+
return this._generateScreenSizeBlockAnnotation();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return "";
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Do our best to clean up variable names, as they will be used as display names.
|
|
53
|
+
state.sharedData.formatConfig.formatVariablename = (n) => {
|
|
54
|
+
let name = n;
|
|
55
|
+
const hasUnderscoredPrefix = name.length > 1 && name[1] === "_";
|
|
56
|
+
if (hasUnderscoredPrefix) {
|
|
57
|
+
name = name.substring(2);
|
|
58
|
+
}
|
|
59
|
+
return name.replace(/[^a-zA-Z]+/g, "");
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
_generateInputBlockAnnotation(inputBlock) {
|
|
63
|
+
const value = inputBlock.valueCallback ? inputBlock.valueCallback() : inputBlock.value;
|
|
64
|
+
return `// { "default": ${JSON.stringify(value)} }\n`;
|
|
65
|
+
}
|
|
66
|
+
_generateScreenSizeBlockAnnotation() {
|
|
67
|
+
return `// { "autoBind": "outputResolution" }\n`;
|
|
68
|
+
}
|
|
69
|
+
_getMainUvName(state) {
|
|
70
|
+
// Get the ScreenUVBlock's name, which is required for SFE and should be vUV.
|
|
71
|
+
// NOTE: In the future, when we move to vertex shaders, update this to check for the nearest vec2 varying output.
|
|
72
|
+
const screenUv = state.sharedData.nodeMaterial.getInputBlockByPredicate((b) => b.isAttribute && b.name === "postprocess_uv");
|
|
73
|
+
if (!screenUv || !screenUv.isAnAncestorOf(this)) {
|
|
74
|
+
return "";
|
|
75
|
+
}
|
|
76
|
+
return screenUv.associatedVariableName;
|
|
77
|
+
}
|
|
78
|
+
_getOutputString() {
|
|
79
|
+
return "outColor";
|
|
80
|
+
}
|
|
81
|
+
_buildBlock(state) {
|
|
82
|
+
super._buildBlock(state);
|
|
83
|
+
const outputString = this._getOutputString();
|
|
84
|
+
state._injectAtTop = `// { "smartFilterBlockType": "${state.sharedData.nodeMaterial.name}", "namespace": "Babylon.NME.Exports" }`;
|
|
85
|
+
state._customEntryHeader += `#ifdef ${SfeModeDefine}\n`;
|
|
86
|
+
state._customEntryHeader += `vec4 nmeMain(vec2 ${this._getMainUvName(state)}) { // main\n`;
|
|
87
|
+
state._customEntryHeader += `#else\n`;
|
|
88
|
+
state._customEntryHeader += `void main(void) {\n`;
|
|
89
|
+
state._customEntryHeader += `#endif\n`;
|
|
90
|
+
state._customEntryHeader += `vec4 ${outputString} = vec4(0.0);\n`;
|
|
91
|
+
state.compilationString += `\n#ifndef ${SfeModeDefine}\n`;
|
|
92
|
+
state.compilationString += `gl_FragColor = ${outputString};\n`;
|
|
93
|
+
state.compilationString += `#else\n`;
|
|
94
|
+
state.compilationString += `return ${outputString};\n`;
|
|
95
|
+
state.compilationString += `#endif\n`;
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
RegisterClass("BABYLON.SmartFilterFragmentOutputBlock", SmartFilterFragmentOutputBlock);
|
|
100
|
+
//# sourceMappingURL=smartFilterFragmentOutputBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smartFilterFragmentOutputBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Fragment/smartFilterFragmentOutputBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { FragmentOutputBlock } from \"./fragmentOutputBlock\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialModes } from \"../../Enums/nodeMaterialModes\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { ScreenSizeBlock } from \"../Fragment/screenSizeBlock\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/** @internal */\r\nexport const SfeModeDefine = \"USE_SFE_FRAMEWORK\";\r\n\r\n/**\r\n * Block used to output the final color with Smart Filters structural support.\r\n */\r\nexport class SmartFilterFragmentOutputBlock extends FragmentOutputBlock {\r\n /**\r\n * Create a new SmartFilterFragmentOutputBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"SmartFilterFragmentOutputBlock\";\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public override initialize(state: NodeMaterialBuildState) {\r\n super.initialize(state);\r\n\r\n if (state.sharedData.nodeMaterial.mode !== NodeMaterialModes.SFE) {\r\n state.sharedData.raiseBuildError(\"SmartFilterFragmentOutputBlock should not be used outside of SFE mode.\");\r\n }\r\n\r\n if (state.sharedData.nodeMaterial.shaderLanguage !== ShaderLanguage.GLSL) {\r\n state.sharedData.raiseBuildError(\"WebGPU is not supported in SmartFilters mode.\");\r\n }\r\n\r\n // Annotate uniforms of InputBlocks and bindable blocks with their current values\r\n if (!state.sharedData.formatConfig.getUniformAnnotation) {\r\n state.sharedData.formatConfig.getUniformAnnotation = (name: string) => {\r\n for (const block of state.sharedData.nodeMaterial.attachedBlocks) {\r\n if (block instanceof InputBlock && block.isUniform && block.associatedVariableName === name) {\r\n return this._generateInputBlockAnnotation(block);\r\n }\r\n if (block instanceof ScreenSizeBlock && block.associatedVariableName === name) {\r\n return this._generateScreenSizeBlockAnnotation();\r\n }\r\n }\r\n return \"\";\r\n };\r\n }\r\n\r\n // Do our best to clean up variable names, as they will be used as display names.\r\n state.sharedData.formatConfig.formatVariablename = (n: string) => {\r\n let name = n;\r\n\r\n const hasUnderscoredPrefix = name.length > 1 && name[1] === \"_\";\r\n if (hasUnderscoredPrefix) {\r\n name = name.substring(2);\r\n }\r\n\r\n return name.replace(/[^a-zA-Z]+/g, \"\");\r\n };\r\n }\r\n\r\n private _generateInputBlockAnnotation(inputBlock: InputBlock): string {\r\n const value = inputBlock.valueCallback ? inputBlock.valueCallback() : inputBlock.value;\r\n return `// { \"default\": ${JSON.stringify(value)} }\\n`;\r\n }\r\n\r\n private _generateScreenSizeBlockAnnotation(): string {\r\n return `// { \"autoBind\": \"outputResolution\" }\\n`;\r\n }\r\n\r\n private _getMainUvName(state: NodeMaterialBuildState): string {\r\n // Get the ScreenUVBlock's name, which is required for SFE and should be vUV.\r\n // NOTE: In the future, when we move to vertex shaders, update this to check for the nearest vec2 varying output.\r\n const screenUv = state.sharedData.nodeMaterial.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"postprocess_uv\");\r\n if (!screenUv || !screenUv.isAnAncestorOf(this)) {\r\n return \"\";\r\n }\r\n return screenUv.associatedVariableName;\r\n }\r\n\r\n protected override _getOutputString(): string {\r\n return \"outColor\";\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const outputString = this._getOutputString();\r\n\r\n state._injectAtTop = `// { \"smartFilterBlockType\": \"${state.sharedData.nodeMaterial.name}\", \"namespace\": \"Babylon.NME.Exports\" }`;\r\n\r\n state._customEntryHeader += `#ifdef ${SfeModeDefine}\\n`;\r\n state._customEntryHeader += `vec4 nmeMain(vec2 ${this._getMainUvName(state)}) { // main\\n`;\r\n state._customEntryHeader += `#else\\n`;\r\n state._customEntryHeader += `void main(void) {\\n`;\r\n state._customEntryHeader += `#endif\\n`;\r\n state._customEntryHeader += `vec4 ${outputString} = vec4(0.0);\\n`;\r\n\r\n state.compilationString += `\\n#ifndef ${SfeModeDefine}\\n`;\r\n state.compilationString += `gl_FragColor = ${outputString};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `return ${outputString};\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SmartFilterFragmentOutputBlock\", SmartFilterFragmentOutputBlock);\r\n"]}
|
|
@@ -10,7 +10,7 @@ import { NodeMaterialBuildStateSharedData } from "./nodeMaterialBuildStateShared
|
|
|
10
10
|
import { MaterialDefines } from "../../Materials/materialDefines.js";
|
|
11
11
|
import { VertexBuffer } from "../../Buffers/buffer.js";
|
|
12
12
|
import { Tools } from "../../Misc/tools.js";
|
|
13
|
-
import { SfeModeDefine } from "./Blocks/
|
|
13
|
+
import { SfeModeDefine } from "./Blocks/Fragment/smartFilterFragmentOutputBlock.js";
|
|
14
14
|
import { TransformBlock } from "./Blocks/transformBlock.js";
|
|
15
15
|
import { VertexOutputBlock } from "./Blocks/Vertex/vertexOutputBlock.js";
|
|
16
16
|
import { FragmentOutputBlock } from "./Blocks/Fragment/fragmentOutputBlock.js";
|