super-three 0.155.0 → 0.157.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/build/three.cjs +361 -324
- package/build/three.js +361 -324
- package/build/three.min.js +2 -2
- package/build/three.module.js +354 -323
- package/build/three.module.min.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +17 -0
- package/examples/jsm/controls/DragControls.js +3 -2
- package/examples/jsm/controls/OrbitControls.js +13 -5
- package/examples/jsm/csm/CSMShader.js +59 -21
- package/examples/jsm/exporters/EXRExporter.js +102 -24
- package/examples/jsm/exporters/GLTFExporter.js +1 -1
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +8726 -4
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +8737 -4
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/libs/tween.module.js +790 -735
- package/examples/jsm/libs/utif.module.js +1644 -1558
- package/examples/jsm/lights/LightProbeGenerator.js +37 -3
- package/examples/jsm/lines/LineMaterial.js +90 -156
- package/examples/jsm/loaders/3DMLoader.js +378 -104
- package/examples/jsm/loaders/DDSLoader.js +46 -3
- package/examples/jsm/loaders/EXRLoader.js +4 -4
- package/examples/jsm/loaders/FBXLoader.js +2 -0
- package/examples/jsm/loaders/GLTFLoader.js +18 -8
- package/examples/jsm/loaders/KTX2Loader.js +126 -77
- package/examples/jsm/loaders/LDrawLoader.js +22 -16
- package/examples/jsm/loaders/LogLuvLoader.js +2 -2
- package/examples/jsm/loaders/MMDLoader.js +10 -7
- package/examples/jsm/loaders/RGBELoader.js +48 -66
- package/examples/jsm/loaders/STLLoader.js +7 -0
- package/examples/jsm/loaders/USDZLoader.js +215 -12
- package/examples/jsm/materials/MeshGouraudMaterial.js +22 -18
- package/examples/jsm/nodes/Nodes.js +8 -1
- package/examples/jsm/nodes/accessors/BitangentNode.js +1 -1
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +30 -4
- package/examples/jsm/nodes/accessors/BufferNode.js +1 -1
- package/examples/jsm/nodes/accessors/CameraNode.js +1 -1
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +19 -4
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +4 -5
- package/examples/jsm/nodes/accessors/InstanceNode.js +2 -2
- package/examples/jsm/nodes/accessors/LineMaterialNode.js +29 -0
- package/examples/jsm/nodes/accessors/MaterialNode.js +23 -13
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +12 -9
- package/examples/jsm/nodes/accessors/ModelNode.js +1 -1
- package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +5 -4
- package/examples/jsm/nodes/accessors/MorphNode.js +4 -4
- package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
- package/examples/jsm/nodes/accessors/Object3DNode.js +3 -3
- package/examples/jsm/nodes/accessors/PointUVNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReferenceNode.js +13 -7
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +2 -2
- package/examples/jsm/nodes/accessors/SceneNode.js +2 -2
- package/examples/jsm/nodes/accessors/SkinningNode.js +2 -2
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +1 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +1 -1
- package/examples/jsm/nodes/accessors/TextureBicubicNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureNode.js +18 -8
- package/examples/jsm/nodes/accessors/TextureSizeNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureStoreNode.js +29 -0
- package/examples/jsm/nodes/accessors/UVNode.js +1 -1
- package/examples/jsm/nodes/accessors/UserDataNode.js +2 -2
- package/examples/jsm/nodes/code/CodeNode.js +1 -1
- package/examples/jsm/nodes/code/ExpressionNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionCallNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionNode.js +18 -7
- package/examples/jsm/nodes/code/ScriptableNode.js +2 -2
- package/examples/jsm/nodes/code/ScriptableValueNode.js +2 -2
- package/examples/jsm/nodes/core/ArrayUniformNode.js +1 -1
- package/examples/jsm/nodes/core/AttributeNode.js +3 -3
- package/examples/jsm/nodes/core/BypassNode.js +1 -1
- package/examples/jsm/nodes/core/CacheNode.js +1 -1
- package/examples/jsm/nodes/core/ConstNode.js +1 -1
- package/examples/jsm/nodes/core/ContextNode.js +2 -2
- package/examples/jsm/nodes/core/IndexNode.js +1 -1
- package/examples/jsm/nodes/core/InputNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +45 -14
- package/examples/jsm/nodes/core/NodeBuilder.js +83 -15
- package/examples/jsm/nodes/core/NodeFrame.js +37 -14
- package/examples/jsm/nodes/core/NodeUniform.js +1 -1
- package/examples/jsm/nodes/core/OutputStructNode.js +62 -0
- package/examples/jsm/nodes/core/PropertyNode.js +3 -1
- package/examples/jsm/nodes/core/StackNode.js +5 -5
- package/examples/jsm/nodes/core/StructTypeNode.js +24 -0
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/UniformNode.js +3 -1
- package/examples/jsm/nodes/core/VarNode.js +1 -1
- package/examples/jsm/nodes/core/VaryingNode.js +1 -1
- package/examples/jsm/nodes/core/constants.js +1 -1
- package/examples/jsm/nodes/display/BlendModeNode.js +2 -2
- package/examples/jsm/nodes/display/BumpMapNode.js +2 -2
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -2
- package/examples/jsm/nodes/display/ColorSpaceNode.js +2 -2
- package/examples/jsm/nodes/display/FrontFacingNode.js +1 -1
- package/examples/jsm/nodes/display/NormalMapNode.js +2 -2
- package/examples/jsm/nodes/display/PosterizeNode.js +2 -2
- package/examples/jsm/nodes/display/ToneMappingNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportDepthNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportNode.js +21 -7
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportTextureNode.js +1 -1
- package/examples/jsm/nodes/fog/FogExp2Node.js +2 -2
- package/examples/jsm/nodes/fog/FogNode.js +2 -2
- package/examples/jsm/nodes/fog/FogRangeNode.js +2 -2
- package/examples/jsm/nodes/geometry/RangeNode.js +2 -2
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AONode.js +2 -2
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +4 -4
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +4 -4
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +2 -2
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/IESSpotLightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightingContextNode.js +3 -3
- package/examples/jsm/nodes/lighting/LightingNode.js +1 -1
- package/examples/jsm/nodes/lighting/LightsNode.js +4 -4
- package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/SpotLightNode.js +4 -4
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +449 -0
- package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +54 -0
- package/examples/jsm/nodes/materials/Materials.js +2 -0
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/NodeMaterial.js +39 -29
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +2 -2
- package/examples/jsm/nodes/math/CondNode.js +1 -1
- package/examples/jsm/nodes/math/HashNode.js +34 -0
- package/examples/jsm/nodes/math/MathNode.js +2 -2
- package/examples/jsm/nodes/math/OperatorNode.js +1 -1
- package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +85 -28
- package/examples/jsm/nodes/utils/ArrayElementNode.js +1 -1
- package/examples/jsm/nodes/utils/ConvertNode.js +1 -1
- package/examples/jsm/nodes/utils/DiscardNode.js +1 -1
- package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -2
- package/examples/jsm/nodes/utils/JoinNode.js +1 -1
- package/examples/jsm/nodes/utils/LoopNode.js +11 -11
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -2
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/PackingNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +2 -2
- package/examples/jsm/nodes/utils/RotateUVNode.js +2 -2
- package/examples/jsm/nodes/utils/SetNode.js +62 -0
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +2 -2
- package/examples/jsm/nodes/utils/SplitNode.js +2 -2
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +2 -2
- package/examples/jsm/nodes/utils/TimerNode.js +2 -2
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +2 -2
- package/examples/jsm/objects/Sky.js +1 -3
- package/examples/jsm/postprocessing/FilmPass.js +3 -5
- package/examples/jsm/postprocessing/OutputPass.js +3 -2
- package/examples/jsm/postprocessing/RenderPass.js +30 -12
- package/examples/jsm/postprocessing/SAOPass.js +23 -98
- package/examples/jsm/postprocessing/SSAOPass.js +10 -30
- package/examples/jsm/renderers/common/Backend.js +11 -8
- package/examples/jsm/renderers/common/Background.js +2 -2
- package/examples/jsm/renderers/common/Binding.js +6 -0
- package/examples/jsm/renderers/common/Bindings.js +4 -5
- package/examples/jsm/renderers/common/Pipelines.js +9 -9
- package/examples/jsm/renderers/common/RenderContext.js +3 -0
- package/examples/jsm/renderers/common/RenderContexts.js +26 -1
- package/examples/jsm/renderers/common/RenderList.js +12 -4
- package/examples/jsm/renderers/common/RenderObject.js +43 -15
- package/examples/jsm/renderers/common/RenderObjects.js +8 -14
- package/examples/jsm/renderers/common/Renderer.js +52 -16
- package/examples/jsm/renderers/common/SampledTexture.js +6 -3
- package/examples/jsm/renderers/common/Sampler.js +1 -1
- package/examples/jsm/renderers/common/StorageBuffer.js +1 -1
- package/examples/jsm/renderers/common/StorageTexture.js +19 -0
- package/examples/jsm/renderers/common/Textures.js +166 -21
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +35 -0
- package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +21 -11
- package/examples/jsm/renderers/common/nodes/NodeSampler.js +1 -7
- package/examples/jsm/renderers/common/nodes/Nodes.js +79 -18
- package/examples/jsm/renderers/webgl/WebGLBackend.js +702 -0
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +207 -20
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +84 -0
- package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +26 -0
- package/examples/jsm/renderers/webgl/utils/WebGLState.js +529 -0
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +212 -0
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +242 -0
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +340 -0
- package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodeBuilder.js +4 -4
- package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodes.js +14 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +282 -43
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +18 -2
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +93 -60
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +2 -2
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +15 -2
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -14
- package/examples/jsm/renderers/webgpu/utils/WebGPUTexturePassUtils.js +285 -0
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +205 -284
- package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +6 -5
- package/examples/jsm/shaders/FilmShader.js +11 -54
- package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +4 -4
- package/examples/jsm/shaders/OutputShader.js +2 -2
- package/examples/jsm/shaders/SAOShader.js +0 -13
- package/examples/jsm/shaders/SSAOShader.js +33 -26
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +6 -6
- package/examples/jsm/utils/BufferGeometryUtils.js +6 -4
- package/package.json +1 -1
- package/src/Three.js +1 -2
- package/src/animation/AnimationUtils.js +3 -20
- package/src/animation/KeyframeTrack.js +8 -8
- package/src/audio/Audio.js +6 -0
- package/src/cameras/Camera.js +1 -5
- package/src/cameras/CubeCamera.js +14 -8
- package/src/constants.js +10 -1
- package/src/core/Object3D.js +1 -14
- package/src/core/RenderTarget.js +16 -7
- package/src/core/UniformsGroup.js +2 -2
- package/src/extras/core/CurvePath.js +4 -1
- package/src/loaders/DataTextureLoader.js +0 -2
- package/src/loaders/MaterialLoader.js +1 -1
- package/src/loaders/ObjectLoader.js +6 -0
- package/src/materials/Material.js +10 -10
- package/src/math/Color.js +1 -5
- package/src/math/ColorManagement.js +82 -60
- package/src/math/Vector2.js +2 -2
- package/src/math/Vector3.js +3 -3
- package/src/math/Vector4.js +4 -4
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Sprite.js +2 -2
- package/src/renderers/WebGLRenderer.js +42 -51
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +35 -2
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -9
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +19 -15
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -6
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +16 -16
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +11 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +2 -2
- package/src/renderers/webgl/WebGLBackground.js +9 -17
- package/src/renderers/webgl/WebGLLights.js +14 -3
- package/src/renderers/webgl/WebGLProgram.js +36 -5
- package/src/renderers/webgl/WebGLPrograms.js +9 -1
- package/src/renderers/webgl/WebGLTextures.js +19 -8
- package/src/renderers/webgl/WebGLUtils.js +25 -20
- package/src/scenes/Fog.js +1 -0
- package/src/scenes/FogExp2.js +1 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +2 -2
- package/src/utils.js +9 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureMipmapUtils.js +0 -163
- package/src/lights/AmbientLightProbe.js +0 -21
- package/src/lights/HemisphereLightProbe.js +0 -30
- /package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/SlotNode.js +0 -0
|
@@ -20,7 +20,7 @@ class ContextNode extends Node {
|
|
|
20
20
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
setup( builder ) {
|
|
24
24
|
|
|
25
25
|
const previousContext = builder.getContext();
|
|
26
26
|
|
|
@@ -58,4 +58,4 @@ export const label = ( node, name ) => context( node, { label: name } );
|
|
|
58
58
|
addNodeElement( 'context', context );
|
|
59
59
|
addNodeElement( 'label', label );
|
|
60
60
|
|
|
61
|
-
addNodeClass( ContextNode );
|
|
61
|
+
addNodeClass( 'ContextNode', ContextNode );
|
|
@@ -28,7 +28,21 @@ class Node extends EventDispatcher {
|
|
|
28
28
|
|
|
29
29
|
get type() {
|
|
30
30
|
|
|
31
|
-
return this.constructor.
|
|
31
|
+
return this.constructor.type;
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
getSelf() {
|
|
36
|
+
|
|
37
|
+
// Returns non-node object.
|
|
38
|
+
|
|
39
|
+
return this.self || this;
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
updateReference() {
|
|
44
|
+
|
|
45
|
+
return this;
|
|
32
46
|
|
|
33
47
|
}
|
|
34
48
|
|
|
@@ -97,13 +111,21 @@ class Node extends EventDispatcher {
|
|
|
97
111
|
|
|
98
112
|
}
|
|
99
113
|
|
|
100
|
-
getNodeType(
|
|
114
|
+
getNodeType( builder ) {
|
|
115
|
+
|
|
116
|
+
const nodeProperties = builder.getNodeProperties( this );
|
|
117
|
+
|
|
118
|
+
if ( nodeProperties.outputNode ) {
|
|
119
|
+
|
|
120
|
+
return nodeProperties.outputNode.getNodeType( builder );
|
|
121
|
+
|
|
122
|
+
}
|
|
101
123
|
|
|
102
124
|
return this.nodeType;
|
|
103
125
|
|
|
104
126
|
}
|
|
105
127
|
|
|
106
|
-
|
|
128
|
+
getShared( builder ) {
|
|
107
129
|
|
|
108
130
|
const hash = this.getHash( builder );
|
|
109
131
|
const nodeFromHash = builder.getNodeFromHash( hash );
|
|
@@ -112,7 +134,7 @@ class Node extends EventDispatcher {
|
|
|
112
134
|
|
|
113
135
|
}
|
|
114
136
|
|
|
115
|
-
|
|
137
|
+
setup( builder ) {
|
|
116
138
|
|
|
117
139
|
const nodeProperties = builder.getNodeProperties( this );
|
|
118
140
|
|
|
@@ -127,6 +149,14 @@ class Node extends EventDispatcher {
|
|
|
127
149
|
|
|
128
150
|
}
|
|
129
151
|
|
|
152
|
+
construct( builder ) { // @deprecated, r157
|
|
153
|
+
|
|
154
|
+
console.warn( 'THREE.Node: construct() is deprecated. Use setup() instead.' );
|
|
155
|
+
|
|
156
|
+
return this.setup( builder );
|
|
157
|
+
|
|
158
|
+
}
|
|
159
|
+
|
|
130
160
|
analyze( builder ) {
|
|
131
161
|
|
|
132
162
|
const nodeData = builder.getDataFromNode( this );
|
|
@@ -178,7 +208,7 @@ class Node extends EventDispatcher {
|
|
|
178
208
|
|
|
179
209
|
build( builder, output = null ) {
|
|
180
210
|
|
|
181
|
-
const refNode = this.
|
|
211
|
+
const refNode = this.getShared( builder );
|
|
182
212
|
|
|
183
213
|
if ( this !== refNode ) {
|
|
184
214
|
|
|
@@ -190,7 +220,7 @@ class Node extends EventDispatcher {
|
|
|
190
220
|
builder.addChain( this );
|
|
191
221
|
|
|
192
222
|
/* Build stages expected results:
|
|
193
|
-
- "
|
|
223
|
+
- "setup" -> Node
|
|
194
224
|
- "analyze" -> null
|
|
195
225
|
- "generate" -> String
|
|
196
226
|
*/
|
|
@@ -198,18 +228,18 @@ class Node extends EventDispatcher {
|
|
|
198
228
|
|
|
199
229
|
const buildStage = builder.getBuildStage();
|
|
200
230
|
|
|
201
|
-
if ( buildStage === '
|
|
231
|
+
if ( buildStage === 'setup' ) {
|
|
202
232
|
|
|
203
233
|
const properties = builder.getNodeProperties( this );
|
|
204
234
|
|
|
205
235
|
if ( properties.initialized !== true || builder.context.tempRead === false ) {
|
|
206
236
|
|
|
207
|
-
const
|
|
237
|
+
const stackNodesBeforeSetup = builder.stack.nodes.length;
|
|
208
238
|
|
|
209
239
|
properties.initialized = true;
|
|
210
|
-
properties.outputNode = this.
|
|
240
|
+
properties.outputNode = this.setup( builder );
|
|
211
241
|
|
|
212
|
-
if ( properties.outputNode !== null && builder.stack.nodes.length !==
|
|
242
|
+
if ( properties.outputNode !== null && builder.stack.nodes.length !== stackNodesBeforeSetup ) {
|
|
213
243
|
|
|
214
244
|
properties.outputNode = builder.stack;
|
|
215
245
|
|
|
@@ -432,12 +462,13 @@ class Node extends EventDispatcher {
|
|
|
432
462
|
|
|
433
463
|
export default Node;
|
|
434
464
|
|
|
435
|
-
export function addNodeClass( nodeClass ) {
|
|
465
|
+
export function addNodeClass( type, nodeClass ) {
|
|
436
466
|
|
|
437
|
-
if ( typeof nodeClass !== 'function' || !
|
|
438
|
-
if ( NodeClasses.has(
|
|
467
|
+
if ( typeof nodeClass !== 'function' || ! type ) throw new Error( `Node class ${ type } is not a class` );
|
|
468
|
+
if ( NodeClasses.has( type ) ) throw new Error( `Redefinition of node class ${ type }` );
|
|
439
469
|
|
|
440
|
-
NodeClasses.set(
|
|
470
|
+
NodeClasses.set( type, nodeClass );
|
|
471
|
+
nodeClass.type = type;
|
|
441
472
|
|
|
442
473
|
}
|
|
443
474
|
|
|
@@ -8,11 +8,18 @@ import NodeCache from './NodeCache.js';
|
|
|
8
8
|
import { createNodeMaterialFromType } from '../materials/NodeMaterial.js';
|
|
9
9
|
import { NodeUpdateType, defaultBuildStages, shaderStages } from './constants.js';
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
FloatNodeUniform, Vector2NodeUniform, Vector3NodeUniform, Vector4NodeUniform,
|
|
13
|
+
ColorNodeUniform, Matrix3NodeUniform, Matrix4NodeUniform
|
|
14
|
+
} from '../../renderers/common/nodes/NodeUniform.js';
|
|
15
|
+
|
|
16
|
+
import { REVISION, RenderTarget, NoColorSpace, LinearEncoding, sRGBEncoding, SRGBColorSpace, Color, Vector2, Vector3, Vector4, Float16BufferAttribute } from 'three';
|
|
12
17
|
|
|
13
18
|
import { stack } from './StackNode.js';
|
|
14
19
|
import { maxMipLevel } from '../utils/MaxMipLevelNode.js';
|
|
15
20
|
|
|
21
|
+
import CubeRenderTarget from '../../renderers/common/CubeRenderTarget.js';
|
|
22
|
+
|
|
16
23
|
const typeFromLength = new Map( [
|
|
17
24
|
[ 2, 'vec2' ],
|
|
18
25
|
[ 3, 'vec3' ],
|
|
@@ -43,10 +50,10 @@ const toFloat = ( value ) => {
|
|
|
43
50
|
|
|
44
51
|
class NodeBuilder {
|
|
45
52
|
|
|
46
|
-
constructor( object, renderer, parser, scene = null ) {
|
|
53
|
+
constructor( object, renderer, parser, scene = null, material = null ) {
|
|
47
54
|
|
|
48
55
|
this.object = object;
|
|
49
|
-
this.material = ( object && object.material ) || null;
|
|
56
|
+
this.material = material || ( object && object.material ) || null;
|
|
50
57
|
this.geometry = ( object && object.geometry ) || null;
|
|
51
58
|
this.renderer = renderer;
|
|
52
59
|
this.parser = parser;
|
|
@@ -69,6 +76,7 @@ class NodeBuilder {
|
|
|
69
76
|
this.flowNodes = { vertex: [], fragment: [], compute: [] };
|
|
70
77
|
this.flowCode = { vertex: '', fragment: '', compute: [] };
|
|
71
78
|
this.uniforms = { vertex: [], fragment: [], compute: [], index: 0 };
|
|
79
|
+
this.structs = { vertex: [], fragment: [], compute: [], index: 0 };
|
|
72
80
|
this.codes = { vertex: [], fragment: [], compute: [] };
|
|
73
81
|
this.bindings = { vertex: [], fragment: [], compute: [] };
|
|
74
82
|
this.bindingsOffset = { vertex: 0, fragment: 0, compute: 0 };
|
|
@@ -98,6 +106,18 @@ class NodeBuilder {
|
|
|
98
106
|
|
|
99
107
|
}
|
|
100
108
|
|
|
109
|
+
getRenderTarget( width, height, options ) {
|
|
110
|
+
|
|
111
|
+
return new RenderTarget( width, height, options );
|
|
112
|
+
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
getCubeRenderTarget( size, options ) {
|
|
116
|
+
|
|
117
|
+
return new CubeRenderTarget( size, options );
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
|
|
101
121
|
includes( node ) {
|
|
102
122
|
|
|
103
123
|
return this.nodes.includes( node );
|
|
@@ -128,14 +148,26 @@ class NodeBuilder {
|
|
|
128
148
|
|
|
129
149
|
addNode( node ) {
|
|
130
150
|
|
|
131
|
-
if ( this.nodes.
|
|
151
|
+
if ( this.nodes.includes( node ) === false ) {
|
|
152
|
+
|
|
153
|
+
this.nodes.push( node );
|
|
154
|
+
|
|
155
|
+
this.setHashNode( node, node.getHash( this ) );
|
|
156
|
+
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
buildUpdateNodes() {
|
|
162
|
+
|
|
163
|
+
for ( const node of this.nodes ) {
|
|
132
164
|
|
|
133
165
|
const updateType = node.getUpdateType();
|
|
134
166
|
const updateBeforeType = node.getUpdateBeforeType();
|
|
135
167
|
|
|
136
168
|
if ( updateType !== NodeUpdateType.NONE ) {
|
|
137
169
|
|
|
138
|
-
this.updateNodes.push( node );
|
|
170
|
+
this.updateNodes.push( node.getSelf() );
|
|
139
171
|
|
|
140
172
|
}
|
|
141
173
|
|
|
@@ -145,10 +177,6 @@ class NodeBuilder {
|
|
|
145
177
|
|
|
146
178
|
}
|
|
147
179
|
|
|
148
|
-
this.nodes.push( node );
|
|
149
|
-
|
|
150
|
-
this.setHashNode( node, node.getHash( this ) );
|
|
151
|
-
|
|
152
180
|
}
|
|
153
181
|
|
|
154
182
|
}
|
|
@@ -331,6 +359,8 @@ class NodeBuilder {
|
|
|
331
359
|
|
|
332
360
|
getType( type ) {
|
|
333
361
|
|
|
362
|
+
if ( type === 'color' ) return 'vec3';
|
|
363
|
+
|
|
334
364
|
return type;
|
|
335
365
|
|
|
336
366
|
}
|
|
@@ -561,17 +591,19 @@ class NodeBuilder {
|
|
|
561
591
|
|
|
562
592
|
if ( nodeData === undefined ) {
|
|
563
593
|
|
|
564
|
-
nodeData = {
|
|
594
|
+
nodeData = {};
|
|
565
595
|
|
|
566
596
|
cache.setNodeData( node, nodeData );
|
|
567
597
|
|
|
568
598
|
}
|
|
569
599
|
|
|
570
|
-
|
|
600
|
+
if ( nodeData[ shaderStage ] === undefined ) nodeData[ shaderStage ] = {};
|
|
601
|
+
|
|
602
|
+
return nodeData[ shaderStage ];
|
|
571
603
|
|
|
572
604
|
}
|
|
573
605
|
|
|
574
|
-
getNodeProperties( node, shaderStage =
|
|
606
|
+
getNodeProperties( node, shaderStage = 'any' ) {
|
|
575
607
|
|
|
576
608
|
const nodeData = this.getDataFromNode( node, shaderStage );
|
|
577
609
|
|
|
@@ -601,6 +633,27 @@ class NodeBuilder {
|
|
|
601
633
|
|
|
602
634
|
}
|
|
603
635
|
|
|
636
|
+
getStructTypeFromNode( node, shaderStage = this.shaderStage, name = null ) {
|
|
637
|
+
|
|
638
|
+
const nodeData = this.getDataFromNode( node, shaderStage );
|
|
639
|
+
|
|
640
|
+
let nodeStruct = nodeData.structType;
|
|
641
|
+
|
|
642
|
+
if ( nodeStruct === undefined ) {
|
|
643
|
+
|
|
644
|
+
const index = this.structs.index ++;
|
|
645
|
+
|
|
646
|
+
node.name = `StructType${index}`;
|
|
647
|
+
this.structs[ shaderStage ].push( node );
|
|
648
|
+
|
|
649
|
+
nodeData.structType = node;
|
|
650
|
+
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
return node;
|
|
654
|
+
|
|
655
|
+
}
|
|
656
|
+
|
|
604
657
|
getUniformFromNode( node, type, shaderStage = this.shaderStage, name = null ) {
|
|
605
658
|
|
|
606
659
|
const nodeData = this.getDataFromNode( node, shaderStage );
|
|
@@ -648,7 +701,7 @@ class NodeBuilder {
|
|
|
648
701
|
|
|
649
702
|
getVaryingFromNode( node, type ) {
|
|
650
703
|
|
|
651
|
-
const nodeData = this.getDataFromNode( node,
|
|
704
|
+
const nodeData = this.getDataFromNode( node, 'any' );
|
|
652
705
|
|
|
653
706
|
let nodeVarying = nodeData.varying;
|
|
654
707
|
|
|
@@ -812,7 +865,7 @@ class NodeBuilder {
|
|
|
812
865
|
|
|
813
866
|
getVar( type, name ) {
|
|
814
867
|
|
|
815
|
-
return `${type} ${name}`;
|
|
868
|
+
return `${ this.getType( type ) } ${ name }`;
|
|
816
869
|
|
|
817
870
|
}
|
|
818
871
|
|
|
@@ -892,7 +945,7 @@ class NodeBuilder {
|
|
|
892
945
|
|
|
893
946
|
build() {
|
|
894
947
|
|
|
895
|
-
//
|
|
948
|
+
// setup() -> stage 1: create possible new nodes and returns an output reference node
|
|
896
949
|
// analyze() -> stage 2: analyze nodes to possible optimization and validation
|
|
897
950
|
// generate() -> stage 3: generate shader
|
|
898
951
|
|
|
@@ -936,11 +989,26 @@ class NodeBuilder {
|
|
|
936
989
|
// stage 4: build code for a specific output
|
|
937
990
|
|
|
938
991
|
this.buildCode();
|
|
992
|
+
this.buildUpdateNodes();
|
|
939
993
|
|
|
940
994
|
return this;
|
|
941
995
|
|
|
942
996
|
}
|
|
943
997
|
|
|
998
|
+
getNodeUniform( uniformNode, type ) {
|
|
999
|
+
|
|
1000
|
+
if ( type === 'float' ) return new FloatNodeUniform( uniformNode );
|
|
1001
|
+
if ( type === 'vec2' ) return new Vector2NodeUniform( uniformNode );
|
|
1002
|
+
if ( type === 'vec3' ) return new Vector3NodeUniform( uniformNode );
|
|
1003
|
+
if ( type === 'vec4' ) return new Vector4NodeUniform( uniformNode );
|
|
1004
|
+
if ( type === 'color' ) return new ColorNodeUniform( uniformNode );
|
|
1005
|
+
if ( type === 'mat3' ) return new Matrix3NodeUniform( uniformNode );
|
|
1006
|
+
if ( type === 'mat4' ) return new Matrix4NodeUniform( uniformNode );
|
|
1007
|
+
|
|
1008
|
+
throw new Error( `Uniform "${type}" not declared.` );
|
|
1009
|
+
|
|
1010
|
+
}
|
|
1011
|
+
|
|
944
1012
|
createNodeMaterial( type ) {
|
|
945
1013
|
|
|
946
1014
|
return createNodeMaterialFromType( type );
|
|
@@ -12,10 +12,8 @@ class NodeFrame {
|
|
|
12
12
|
|
|
13
13
|
this.startTime = null;
|
|
14
14
|
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
17
|
-
this.renderMap = new WeakMap();
|
|
18
|
-
this.renderBeforeMap = new WeakMap();
|
|
15
|
+
this.updateMap = new WeakMap();
|
|
16
|
+
this.updateBeforeMap = new WeakMap();
|
|
19
17
|
|
|
20
18
|
this.renderer = null;
|
|
21
19
|
this.material = null;
|
|
@@ -25,15 +23,37 @@ class NodeFrame {
|
|
|
25
23
|
|
|
26
24
|
}
|
|
27
25
|
|
|
26
|
+
_getMaps( referenceMap, nodeRef ) {
|
|
27
|
+
|
|
28
|
+
let maps = referenceMap.get( nodeRef );
|
|
29
|
+
|
|
30
|
+
if ( maps === undefined ) {
|
|
31
|
+
|
|
32
|
+
maps = {
|
|
33
|
+
renderMap: new WeakMap(),
|
|
34
|
+
frameMap: new WeakMap()
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
referenceMap.set( nodeRef, maps );
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return maps;
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
28
45
|
updateBeforeNode( node ) {
|
|
29
46
|
|
|
30
47
|
const updateType = node.getUpdateBeforeType();
|
|
48
|
+
const reference = node.updateReference( this );
|
|
49
|
+
|
|
50
|
+
const { frameMap, renderMap } = this._getMaps( this.updateBeforeMap, reference );
|
|
31
51
|
|
|
32
52
|
if ( updateType === NodeUpdateType.FRAME ) {
|
|
33
53
|
|
|
34
|
-
if (
|
|
54
|
+
if ( frameMap.get( node ) !== this.frameId ) {
|
|
35
55
|
|
|
36
|
-
|
|
56
|
+
frameMap.set( node, this.frameId );
|
|
37
57
|
|
|
38
58
|
node.updateBefore( this );
|
|
39
59
|
|
|
@@ -41,10 +61,10 @@ class NodeFrame {
|
|
|
41
61
|
|
|
42
62
|
} else if ( updateType === NodeUpdateType.RENDER ) {
|
|
43
63
|
|
|
44
|
-
if (
|
|
64
|
+
if ( renderMap.get( node ) !== this.renderId || frameMap.get( node ) !== this.frameId ) {
|
|
45
65
|
|
|
46
|
-
|
|
47
|
-
|
|
66
|
+
renderMap.set( node, this.renderId );
|
|
67
|
+
frameMap.set( node, this.frameId );
|
|
48
68
|
|
|
49
69
|
node.updateBefore( this );
|
|
50
70
|
|
|
@@ -61,12 +81,15 @@ class NodeFrame {
|
|
|
61
81
|
updateNode( node ) {
|
|
62
82
|
|
|
63
83
|
const updateType = node.getUpdateType();
|
|
84
|
+
const reference = node.updateReference( this );
|
|
85
|
+
|
|
86
|
+
const { frameMap, renderMap } = this._getMaps( this.updateMap, reference );
|
|
64
87
|
|
|
65
88
|
if ( updateType === NodeUpdateType.FRAME ) {
|
|
66
89
|
|
|
67
|
-
if (
|
|
90
|
+
if ( frameMap.get( node ) !== this.frameId ) {
|
|
68
91
|
|
|
69
|
-
|
|
92
|
+
frameMap.set( node, this.frameId );
|
|
70
93
|
|
|
71
94
|
node.update( this );
|
|
72
95
|
|
|
@@ -74,10 +97,10 @@ class NodeFrame {
|
|
|
74
97
|
|
|
75
98
|
} else if ( updateType === NodeUpdateType.RENDER ) {
|
|
76
99
|
|
|
77
|
-
if (
|
|
100
|
+
if ( renderMap.get( node ) !== this.renderId || frameMap.get( node ) !== this.frameId ) {
|
|
78
101
|
|
|
79
|
-
|
|
80
|
-
|
|
102
|
+
renderMap.set( node, this.renderId );
|
|
103
|
+
frameMap.set( node, this.frameId );
|
|
81
104
|
|
|
82
105
|
node.update( this );
|
|
83
106
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import Node, { addNodeClass } from './Node.js';
|
|
2
|
+
import StructTypeNode from './StructTypeNode.js';
|
|
3
|
+
import { nodeProxy } from '../shadernode/ShaderNode.js';
|
|
4
|
+
|
|
5
|
+
class OutputStructNode extends Node {
|
|
6
|
+
|
|
7
|
+
constructor( ...members ) {
|
|
8
|
+
|
|
9
|
+
super();
|
|
10
|
+
|
|
11
|
+
this.isOutputStructNode = true;
|
|
12
|
+
this.members = members;
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
setup( builder ) {
|
|
17
|
+
|
|
18
|
+
super.setup( builder );
|
|
19
|
+
|
|
20
|
+
const members = this.members;
|
|
21
|
+
const types = [];
|
|
22
|
+
|
|
23
|
+
for ( let i = 0; i < members.length; i++ ) {
|
|
24
|
+
|
|
25
|
+
types.push( members[ i ].getNodeType( builder ) );
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
this.nodeType = builder.getStructTypeFromNode( new StructTypeNode( types ) ).name;
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
generate( builder, output ) {
|
|
34
|
+
|
|
35
|
+
const nodeVar = builder.getVarFromNode( this, this.nodeType );
|
|
36
|
+
nodeVar.isOutputStructVar = true;
|
|
37
|
+
|
|
38
|
+
const propertyName = builder.getPropertyName( nodeVar );
|
|
39
|
+
|
|
40
|
+
const members = this.members;
|
|
41
|
+
|
|
42
|
+
const structPrefix = propertyName !== '' ? propertyName + '.' : '';
|
|
43
|
+
|
|
44
|
+
for ( let i = 0; i < members.length; i++ ) {
|
|
45
|
+
|
|
46
|
+
const snippet = members[ i ].build( builder, output );
|
|
47
|
+
|
|
48
|
+
builder.addLineFlowCode( `${structPrefix}m${i} = ${snippet}` );
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return propertyName;
|
|
53
|
+
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export default OutputStructNode;
|
|
59
|
+
|
|
60
|
+
export const outputStruct = nodeProxy( OutputStructNode );
|
|
61
|
+
|
|
62
|
+
addNodeClass( 'OutputStructNode', OutputStructNode );
|
|
@@ -57,5 +57,7 @@ export const iridescenceThickness = nodeImmutable( PropertyNode, 'float', 'Iride
|
|
|
57
57
|
export const specularColor = nodeImmutable( PropertyNode, 'color', 'SpecularColor' );
|
|
58
58
|
export const shininess = nodeImmutable( PropertyNode, 'float', 'Shininess' );
|
|
59
59
|
export const output = nodeImmutable( PropertyNode, 'vec4', 'Output' );
|
|
60
|
+
export const dashSize = nodeImmutable( PropertyNode, 'float', 'dashSize' );
|
|
61
|
+
export const gapSize = nodeImmutable( PropertyNode, 'float', 'gapSize' );
|
|
60
62
|
|
|
61
|
-
addNodeClass( PropertyNode );
|
|
63
|
+
addNodeClass( 'PropertyNode', PropertyNode );
|
|
@@ -4,7 +4,7 @@ import { bypass } from '../core/BypassNode.js';
|
|
|
4
4
|
import { expression } from '../code/ExpressionNode.js';
|
|
5
5
|
import { cond } from '../math/CondNode.js';
|
|
6
6
|
import { loop } from '../utils/LoopNode.js';
|
|
7
|
-
import {
|
|
7
|
+
import { ShaderNode, nodeProxy } from '../shadernode/ShaderNode.js';
|
|
8
8
|
|
|
9
9
|
class StackNode extends Node {
|
|
10
10
|
|
|
@@ -39,7 +39,7 @@ class StackNode extends Node {
|
|
|
39
39
|
|
|
40
40
|
if( boolNode, method ) {
|
|
41
41
|
|
|
42
|
-
const methodNode =
|
|
42
|
+
const methodNode = new ShaderNode( method );
|
|
43
43
|
this._currentCond = cond( boolNode, methodNode );
|
|
44
44
|
|
|
45
45
|
return this.add( this._currentCond );
|
|
@@ -48,7 +48,7 @@ class StackNode extends Node {
|
|
|
48
48
|
|
|
49
49
|
elseif( boolNode, method ) {
|
|
50
50
|
|
|
51
|
-
const methodNode =
|
|
51
|
+
const methodNode = new ShaderNode( method );
|
|
52
52
|
const ifNode = cond( boolNode, methodNode );
|
|
53
53
|
|
|
54
54
|
this._currentCond.elseNode = ifNode;
|
|
@@ -60,7 +60,7 @@ class StackNode extends Node {
|
|
|
60
60
|
|
|
61
61
|
else( method ) {
|
|
62
62
|
|
|
63
|
-
this._currentCond.elseNode =
|
|
63
|
+
this._currentCond.elseNode = new ShaderNode( method );
|
|
64
64
|
|
|
65
65
|
return this;
|
|
66
66
|
|
|
@@ -96,4 +96,4 @@ export default StackNode;
|
|
|
96
96
|
|
|
97
97
|
export const stack = nodeProxy( StackNode );
|
|
98
98
|
|
|
99
|
-
addNodeClass( StackNode );
|
|
99
|
+
addNodeClass( 'StackNode', StackNode );
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Node, { addNodeClass } from './Node.js';
|
|
2
|
+
|
|
3
|
+
class StructTypeNode extends Node {
|
|
4
|
+
|
|
5
|
+
constructor( types ) {
|
|
6
|
+
|
|
7
|
+
super();
|
|
8
|
+
|
|
9
|
+
this.types = types;
|
|
10
|
+
this.isStructTypeNode = true;
|
|
11
|
+
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
getMemberTypes() {
|
|
15
|
+
|
|
16
|
+
return this.types;
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default StructTypeNode;
|
|
23
|
+
|
|
24
|
+
addNodeClass( 'StructTypeNode', StructTypeNode );
|
|
@@ -39,6 +39,8 @@ class UniformNode extends InputNode {
|
|
|
39
39
|
const nodeUniform = builder.getUniformFromNode( sharedNode, sharedNodeType, builder.shaderStage, builder.context.label );
|
|
40
40
|
const propertyName = builder.getPropertyName( nodeUniform );
|
|
41
41
|
|
|
42
|
+
if ( builder.context.label !== undefined ) delete builder.context.label;
|
|
43
|
+
|
|
42
44
|
return builder.format( propertyName, type, output );
|
|
43
45
|
|
|
44
46
|
}
|
|
@@ -58,4 +60,4 @@ export const uniform = ( arg1, arg2 ) => {
|
|
|
58
60
|
|
|
59
61
|
};
|
|
60
62
|
|
|
61
|
-
addNodeClass( UniformNode );
|
|
63
|
+
addNodeClass( 'UniformNode', UniformNode );
|
|
@@ -22,6 +22,6 @@ export const NodeType = {
|
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
export const defaultShaderStages = [ 'fragment', 'vertex' ];
|
|
25
|
-
export const defaultBuildStages = [ '
|
|
25
|
+
export const defaultBuildStages = [ 'setup', 'analyze', 'generate' ];
|
|
26
26
|
export const shaderStages = [ ...defaultShaderStages, 'compute' ];
|
|
27
27
|
export const vectorComponents = [ 'x', 'y', 'z', 'w' ];
|
|
@@ -48,7 +48,7 @@ class BlendModeNode extends TempNode {
|
|
|
48
48
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
setup() {
|
|
52
52
|
|
|
53
53
|
const { blendMode, baseNode, blendNode } = this;
|
|
54
54
|
const params = { base: baseNode, blend: blendNode };
|
|
@@ -96,4 +96,4 @@ addNodeElement( 'dodge', dodge );
|
|
|
96
96
|
addNodeElement( 'overlay', overlay );
|
|
97
97
|
addNodeElement( 'screen', screen );
|
|
98
98
|
|
|
99
|
-
addNodeClass( BlendModeNode );
|
|
99
|
+
addNodeClass( 'BlendModeNode', BlendModeNode );
|
|
@@ -55,7 +55,7 @@ class BumpMapNode extends TempNode {
|
|
|
55
55
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
setup() {
|
|
59
59
|
|
|
60
60
|
const bumpScale = this.scaleNode !== null ? this.scaleNode : 1;
|
|
61
61
|
const dHdxy = dHdxy_fwd( { bumpTexture: this.texture, bumpScale } );
|
|
@@ -74,4 +74,4 @@ export default BumpMapNode;
|
|
|
74
74
|
|
|
75
75
|
export const bumpMap = nodeProxy( BumpMapNode );
|
|
76
76
|
|
|
77
|
-
addNodeClass( BumpMapNode );
|
|
77
|
+
addNodeClass( 'BumpMapNode', BumpMapNode );
|