@needle-tools/three 0.153.0 → 0.154.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +112 -364
- package/build/three.js +112 -364
- package/build/three.min.js +1 -1
- package/build/three.module.js +113 -346
- package/build/three.module.min.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +2 -1
- package/examples/jsm/controls/FlyControls.js +25 -9
- package/examples/jsm/controls/OrbitControls.js +7 -1
- package/examples/jsm/csm/CSM.js +1 -1
- package/examples/jsm/effects/AnaglyphEffect.js +1 -1
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +1 -1
- package/examples/jsm/environments/RoomEnvironment.js +6 -2
- package/examples/jsm/lines/LineMaterial.js +1 -1
- package/examples/jsm/loaders/3DMLoader.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +5 -1
- package/examples/jsm/loaders/AMFLoader.js +5 -1
- package/examples/jsm/loaders/ColladaLoader.js +4 -1
- package/examples/jsm/loaders/FBXLoader.js +9 -2
- package/examples/jsm/loaders/LDrawLoader.js +4 -7
- package/examples/jsm/loaders/PLYLoader.js +16 -6
- package/examples/jsm/loaders/VRMLLoader.js +16 -4
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -2
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -35
- package/examples/jsm/nodes/Nodes.js +20 -15
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +21 -8
- package/examples/jsm/nodes/accessors/CameraNode.js +25 -4
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +7 -1
- package/examples/jsm/nodes/accessors/InstanceNode.js +2 -4
- package/examples/jsm/nodes/accessors/MaterialNode.js +55 -47
- package/examples/jsm/nodes/accessors/ModelNode.js +3 -1
- package/examples/jsm/nodes/accessors/MorphNode.js +70 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +3 -2
- package/examples/jsm/nodes/accessors/Object3DNode.js +10 -2
- package/examples/jsm/nodes/accessors/SceneNode.js +46 -0
- package/examples/jsm/nodes/accessors/SkinningNode.js +43 -62
- package/examples/jsm/nodes/accessors/TangentNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureBicubicNode.js +94 -0
- package/examples/jsm/nodes/accessors/TextureNode.js +68 -6
- package/examples/jsm/nodes/accessors/TextureSizeNode.js +35 -0
- package/examples/jsm/nodes/accessors/UVNode.js +1 -1
- package/examples/jsm/nodes/code/CodeNode.js +3 -0
- package/examples/jsm/nodes/code/FunctionNode.js +25 -4
- package/examples/jsm/nodes/core/BypassNode.js +2 -2
- package/examples/jsm/nodes/core/ContextNode.js +2 -0
- package/examples/jsm/nodes/core/IndexNode.js +66 -0
- package/examples/jsm/nodes/core/LightingModel.js +2 -1
- package/examples/jsm/nodes/core/Node.js +12 -15
- package/examples/jsm/nodes/core/NodeBuilder.js +24 -5
- package/examples/jsm/nodes/core/PropertyNode.js +4 -0
- package/examples/jsm/nodes/core/StackNode.js +1 -1
- package/examples/jsm/nodes/core/UniformNode.js +1 -1
- package/examples/jsm/nodes/core/VarNode.js +1 -3
- package/examples/jsm/nodes/display/BlendModeNode.js +9 -9
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +7 -7
- package/examples/jsm/nodes/display/ColorSpaceNode.js +50 -49
- package/examples/jsm/nodes/display/NormalMapNode.js +3 -3
- package/examples/jsm/nodes/display/ToneMappingNode.js +8 -8
- package/examples/jsm/nodes/display/ViewportDepthNode.js +69 -0
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +34 -0
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +6 -5
- package/examples/jsm/nodes/display/ViewportTextureNode.js +23 -15
- package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +5 -5
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -8
- package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +43 -0
- package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +4 -4
- package/examples/jsm/nodes/functions/BSDF/D_GGX.js +2 -2
- package/examples/jsm/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
- package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +2 -4
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/examples/jsm/nodes/functions/PhongLightingModel.js +7 -7
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +129 -18
- package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/examples/jsm/nodes/functions/material/getRoughness.js +3 -3
- package/examples/jsm/nodes/geometry/RangeNode.js +1 -1
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +2 -2
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +91 -62
- package/examples/jsm/nodes/lighting/LightUtils.js +2 -2
- package/examples/jsm/nodes/lighting/LightingContextNode.js +17 -15
- package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/SpotLightNode.js +3 -3
- package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -15
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -15
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -10
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -9
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +41 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +1 -14
- package/examples/jsm/nodes/materials/NodeMaterial.js +79 -28
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -9
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -7
- package/examples/jsm/nodes/materialx/lib/mx_hsv.js +3 -3
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +14 -14
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +4 -4
- package/examples/jsm/nodes/math/MathNode.js +6 -0
- 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 +24 -4
- package/examples/jsm/nodes/utils/LoopNode.js +1 -1
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +1 -1
- package/examples/jsm/objects/GroundProjectedSkybox.js +1 -1
- package/examples/jsm/objects/Reflector.js +1 -1
- package/examples/jsm/objects/Refractor.js +1 -1
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/Water.js +1 -1
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/offscreen/scene.js +1 -0
- package/examples/jsm/postprocessing/EffectComposer.js +2 -0
- package/examples/jsm/postprocessing/OutlinePass.js +1 -3
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -12
- package/examples/jsm/postprocessing/SavePass.js +3 -1
- package/examples/jsm/postprocessing/TAARenderPass.js +14 -2
- package/examples/jsm/postprocessing/TexturePass.js +2 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +9 -10
- package/examples/jsm/renderers/common/Backend.js +2 -0
- package/examples/jsm/renderers/common/Background.js +7 -6
- package/examples/jsm/renderers/common/Pipelines.js +26 -14
- package/examples/jsm/renderers/common/RenderObject.js +18 -0
- package/examples/jsm/renderers/common/RenderObjects.js +29 -29
- package/examples/jsm/renderers/common/Renderer.js +48 -6
- package/examples/jsm/renderers/common/nodes/Nodes.js +1 -1
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +340 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +23 -19
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +123 -41
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +29 -9
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +4 -0
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +8 -13
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +85 -3
- package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +5 -1
- package/examples/jsm/shaders/BlendShader.js +1 -2
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/CopyShader.js +2 -2
- package/examples/jsm/shaders/ToonShader.js +4 -4
- package/examples/jsm/shaders/WaterRefractionShader.js +1 -1
- package/examples/jsm/webxr/OculusHandPointerModel.js +34 -13
- package/package.json +2 -1
- package/src/Three.Legacy.js +0 -228
- package/src/animation/PropertyBinding.js +1 -1
- package/src/constants.js +1 -1
- package/src/core/BufferAttribute.js +0 -24
- package/src/core/BufferGeometry.js +0 -7
- package/src/loaders/Loader.js +2 -0
- package/src/loaders/MaterialLoader.js +1 -0
- package/src/materials/Material.js +3 -0
- package/src/objects/Skeleton.js +0 -2
- package/src/renderers/WebGLRenderer.js +9 -21
- package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
- package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +9 -1
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +10 -6
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -2
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/points.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +4 -2
- package/src/renderers/webgl/WebGLObjects.js +23 -3
- package/src/renderers/webgl/WebGLProgram.js +24 -5
- package/src/renderers/webgl/WebGLPrograms.js +3 -0
- package/src/renderers/webxr/WebXRManager.js +11 -29
- package/src/scenes/Scene.js +0 -14
- package/examples/jsm/nodes/core/InstanceIndexNode.js +0 -45
- /package/src/renderers/shaders/ShaderChunk/{encodings_fragment.glsl.js → colorspace_fragment.glsl.js} +0 -0
- /package/src/renderers/shaders/ShaderChunk/{encodings_pars_fragment.glsl.js → colorspace_pars_fragment.glsl.js} +0 -0
- /package/src/renderers/shaders/ShaderChunk/{output_fragment.glsl.js → opaque_fragment.glsl.js} +0 -0
|
@@ -10,8 +10,8 @@ export { default as AttributeNode, attribute } from './core/AttributeNode.js';
|
|
|
10
10
|
export { default as BypassNode, bypass } from './core/BypassNode.js';
|
|
11
11
|
export { default as CacheNode, cache } from './core/CacheNode.js';
|
|
12
12
|
export { default as ConstNode } from './core/ConstNode.js';
|
|
13
|
-
export { default as ContextNode, context } from './core/ContextNode.js';
|
|
14
|
-
export { default as
|
|
13
|
+
export { default as ContextNode, context, label } from './core/ContextNode.js';
|
|
14
|
+
export { default as IndexNode, vertexIndex, instanceIndex } from './core/IndexNode.js';
|
|
15
15
|
export { default as LightingModel, lightingModel } from './core/LightingModel.js';
|
|
16
16
|
export { default as Node, addNodeClass, createNodeFromType } from './core/Node.js';
|
|
17
17
|
export { default as NodeAttribute } from './core/NodeAttribute.js';
|
|
@@ -28,14 +28,14 @@ export { default as PropertyNode, property, diffuseColor, roughness, metalness,
|
|
|
28
28
|
export { default as StackNode, stack } from './core/StackNode.js';
|
|
29
29
|
export { default as TempNode } from './core/TempNode.js';
|
|
30
30
|
export { default as UniformNode, uniform } from './core/UniformNode.js';
|
|
31
|
-
export { default as VarNode,
|
|
31
|
+
export { default as VarNode, temp } from './core/VarNode.js';
|
|
32
32
|
export { default as VaryingNode, varying } from './core/VaryingNode.js';
|
|
33
33
|
|
|
34
34
|
import * as NodeUtils from './core/NodeUtils.js';
|
|
35
35
|
export { NodeUtils };
|
|
36
36
|
|
|
37
37
|
// math
|
|
38
|
-
export { default as MathNode, EPSILON, INFINITY, radians, degrees, exp, exp2, log, log2, sqrt, inverseSqrt, floor, ceil, normalize, fract, sin, cos, tan, asin, acos, atan, abs, sign, length, negate, oneMinus, dFdx, dFdy, round, reciprocal, atan2, min, max, mod, step, reflect, distance, difference, dot, cross, pow, pow2, pow3, pow4, transformDirection, mix, clamp, saturate, refract, smoothstep, faceForward } from './math/MathNode.js';
|
|
38
|
+
export { default as MathNode, EPSILON, INFINITY, radians, degrees, exp, exp2, log, log2, sqrt, inverseSqrt, floor, ceil, normalize, fract, sin, cos, tan, asin, acos, atan, abs, sign, length, negate, oneMinus, dFdx, dFdy, round, reciprocal, trunc, fwidth, atan2, min, max, mod, step, reflect, distance, difference, dot, cross, pow, pow2, pow3, pow4, transformDirection, mix, clamp, saturate, refract, smoothstep, faceForward } from './math/MathNode.js';
|
|
39
39
|
export { default as OperatorNode, add, sub, mul, div, remainder, equal, assign, lessThan, greaterThan, lessThanEqual, greaterThanEqual, and, or, xor, bitAnd, bitOr, bitXor, shiftLeft, shiftRight } from './math/OperatorNode.js';
|
|
40
40
|
export { default as CondNode, cond } from './math/CondNode.js';
|
|
41
41
|
|
|
@@ -63,46 +63,51 @@ export * from './shadernode/ShaderNode.js';
|
|
|
63
63
|
|
|
64
64
|
// accessors
|
|
65
65
|
export { default as BitangentNode, bitangentGeometry, bitangentLocal, bitangentView, bitangentWorld, transformedBitangentView, transformedBitangentWorld } from './accessors/BitangentNode.js';
|
|
66
|
-
export { default as BufferAttributeNode, bufferAttribute, dynamicBufferAttribute } from './accessors/BufferAttributeNode.js';
|
|
66
|
+
export { default as BufferAttributeNode, bufferAttribute, dynamicBufferAttribute, instancedBufferAttribute, instancedDynamicBufferAttribute } from './accessors/BufferAttributeNode.js';
|
|
67
67
|
export { default as BufferNode, buffer } from './accessors/BufferNode.js';
|
|
68
|
-
export { default as CameraNode, cameraProjectionMatrix, cameraViewMatrix, cameraNormalMatrix, cameraWorldMatrix, cameraPosition } from './accessors/CameraNode.js';
|
|
68
|
+
export { default as CameraNode, cameraProjectionMatrix, cameraViewMatrix, cameraNormalMatrix, cameraWorldMatrix, cameraPosition, cameraNear, cameraFar } from './accessors/CameraNode.js';
|
|
69
69
|
export { default as CubeTextureNode, cubeTexture } from './accessors/CubeTextureNode.js';
|
|
70
70
|
export { default as ExtendedMaterialNode, materialNormal } from './accessors/ExtendedMaterialNode.js';
|
|
71
71
|
export { default as InstanceNode, instance } from './accessors/InstanceNode.js';
|
|
72
|
-
export { default as MaterialNode,
|
|
72
|
+
export { default as MaterialNode, materialAlphaTest, materialColor, materialShininess, materialEmissive, materialOpacity, materialSpecularColor, materialReflectivity, materialRoughness, materialMetalness, materialRotation, materialSheen, materialSheenRoughness } from './accessors/MaterialNode.js';
|
|
73
73
|
export { default as MaterialReferenceNode, materialReference } from './accessors/MaterialReferenceNode.js';
|
|
74
|
-
export { default as
|
|
74
|
+
export { default as MorphNode, morph } from './accessors/MorphNode.js';
|
|
75
|
+
export { default as TextureBicubicNode, textureBicubic } from './accessors/TextureBicubicNode.js';
|
|
76
|
+
export { default as ModelNode, modelDirection, modelViewMatrix, modelNormalMatrix, modelWorldMatrix, modelPosition, modelViewPosition, modelScale } from './accessors/ModelNode.js';
|
|
75
77
|
export { default as ModelViewProjectionNode, modelViewProjection } from './accessors/ModelViewProjectionNode.js';
|
|
76
|
-
export { default as NormalNode, normalGeometry, normalLocal, normalView, normalWorld, transformedNormalView, transformedNormalWorld } from './accessors/NormalNode.js';
|
|
77
|
-
export { default as Object3DNode, objectDirection, objectViewMatrix, objectNormalMatrix, objectWorldMatrix, objectPosition, objectViewPosition } from './accessors/Object3DNode.js';
|
|
78
|
+
export { default as NormalNode, normalGeometry, normalLocal, normalView, normalWorld, transformedNormalView, transformedNormalWorld, transformedClearcoatNormalView } from './accessors/NormalNode.js';
|
|
79
|
+
export { default as Object3DNode, objectDirection, objectViewMatrix, objectNormalMatrix, objectWorldMatrix, objectPosition, objectScale, objectViewPosition } from './accessors/Object3DNode.js';
|
|
78
80
|
export { default as PointUVNode, pointUV } from './accessors/PointUVNode.js';
|
|
79
81
|
export { default as PositionNode, positionGeometry, positionLocal, positionWorld, positionWorldDirection, positionView, positionViewDirection } from './accessors/PositionNode.js';
|
|
80
82
|
export { default as ReferenceNode, reference } from './accessors/ReferenceNode.js';
|
|
81
83
|
export { default as ReflectVectorNode, reflectVector } from './accessors/ReflectVectorNode.js';
|
|
82
84
|
export { default as SkinningNode, skinning } from './accessors/SkinningNode.js';
|
|
85
|
+
export { default as SceneNode, backgroundBlurriness } from './accessors/SceneNode.js';
|
|
83
86
|
export { default as StorageBufferNode, storage } from './accessors/StorageBufferNode.js';
|
|
84
87
|
export { default as TangentNode, tangentGeometry, tangentLocal, tangentView, tangentWorld, transformedTangentView, transformedTangentWorld } from './accessors/TangentNode.js';
|
|
85
|
-
export { default as TextureNode, texture, sampler } from './accessors/TextureNode.js';
|
|
88
|
+
export { default as TextureNode, texture, /*textureLevel,*/ sampler } from './accessors/TextureNode.js';
|
|
86
89
|
export { default as UVNode, uv } from './accessors/UVNode.js';
|
|
87
90
|
export { default as UserDataNode, userData } from './accessors/UserDataNode.js';
|
|
88
91
|
|
|
89
92
|
// display
|
|
90
93
|
export { default as BlendModeNode, burn, dodge, overlay, screen } from './display/BlendModeNode.js';
|
|
91
94
|
export { default as ColorAdjustmentNode, saturation, vibrance, hue, lumaCoeffs, luminance } from './display/ColorAdjustmentNode.js';
|
|
92
|
-
export { default as ColorSpaceNode,
|
|
95
|
+
export { default as ColorSpaceNode, linearToColorSpace, colorSpaceToLinear, linearTosRGB, sRGBToLinear } from './display/ColorSpaceNode.js';
|
|
93
96
|
export { default as FrontFacingNode, frontFacing, faceDirection } from './display/FrontFacingNode.js';
|
|
94
97
|
export { default as NormalMapNode, normalMap, TBNViewMatrix } from './display/NormalMapNode.js';
|
|
95
98
|
export { default as PosterizeNode, posterize } from './display/PosterizeNode.js';
|
|
96
99
|
export { default as ToneMappingNode, toneMapping } from './display/ToneMappingNode.js';
|
|
97
100
|
export { default as ViewportNode, viewportCoordinate, viewportResolution, viewportTopLeft, viewportBottomLeft, viewportTopRight, viewportBottomRight } from './display/ViewportNode.js';
|
|
98
|
-
export { default as ViewportTextureNode, viewportTexture } from './display/ViewportTextureNode.js';
|
|
101
|
+
export { default as ViewportTextureNode, viewportTexture, viewportMipTexture } from './display/ViewportTextureNode.js';
|
|
99
102
|
export { default as ViewportSharedTextureNode, viewportSharedTexture } from './display/ViewportSharedTextureNode.js';
|
|
103
|
+
export { default as ViewportDepthTextureNode, viewportDepthTexture } from './display/ViewportDepthTextureNode.js';
|
|
104
|
+
export { default as ViewportDepthNode, viewZToOrthographicDepth, orthographicDepthToViewZ, viewZToPerspectiveDepth, perspectiveDepthToViewZ, depth, depthTexture } from './display/ViewportDepthNode.js';
|
|
100
105
|
|
|
101
106
|
// code
|
|
102
107
|
export { default as ExpressionNode, expression } from './code/ExpressionNode.js';
|
|
103
|
-
export { default as CodeNode, code, js } from './code/CodeNode.js';
|
|
108
|
+
export { default as CodeNode, code, js, wgsl, glsl } from './code/CodeNode.js';
|
|
104
109
|
export { default as FunctionCallNode, call } from './code/FunctionCallNode.js';
|
|
105
|
-
export { default as FunctionNode,
|
|
110
|
+
export { default as FunctionNode, wgslFn, glslFn } from './code/FunctionNode.js';
|
|
106
111
|
export { default as ScriptableNode, scriptable, global } from './code/ScriptableNode.js';
|
|
107
112
|
export { default as ScriptableValueNode, scriptableValue } from './code/ScriptableValueNode.js';
|
|
108
113
|
|
|
@@ -17,6 +17,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
17
17
|
this.bufferOffset = bufferOffset;
|
|
18
18
|
|
|
19
19
|
this.usage = StaticDrawUsage;
|
|
20
|
+
this.instanced = false;
|
|
20
21
|
|
|
21
22
|
}
|
|
22
23
|
|
|
@@ -34,7 +35,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
34
35
|
buffer.setUsage( this.usage );
|
|
35
36
|
|
|
36
37
|
this.attribute = bufferAttribute;
|
|
37
|
-
this.attribute.isInstancedBufferAttribute =
|
|
38
|
+
this.attribute.isInstancedBufferAttribute = this.instanced; // @TODO: Add a possible: InstancedInterleavedBufferAttribute
|
|
38
39
|
|
|
39
40
|
}
|
|
40
41
|
|
|
@@ -69,18 +70,30 @@ class BufferAttributeNode extends InputNode {
|
|
|
69
70
|
|
|
70
71
|
}
|
|
71
72
|
|
|
73
|
+
setUsage( value ) {
|
|
74
|
+
|
|
75
|
+
this.usage = value;
|
|
76
|
+
|
|
77
|
+
return this;
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
setInstanced( value ) {
|
|
82
|
+
|
|
83
|
+
this.instanced = value;
|
|
84
|
+
|
|
85
|
+
return this;
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
72
89
|
}
|
|
73
90
|
|
|
74
91
|
export default BufferAttributeNode;
|
|
75
92
|
|
|
76
93
|
export const bufferAttribute = ( array, type, stride, offset ) => nodeObject( new BufferAttributeNode( array, type, stride, offset ) );
|
|
77
|
-
export const dynamicBufferAttribute = ( array, type, stride, offset ) =>
|
|
78
|
-
|
|
79
|
-
const node = bufferAttribute( array, type, stride, offset );
|
|
80
|
-
node.usage = DynamicDrawUsage;
|
|
81
|
-
|
|
82
|
-
return node;
|
|
94
|
+
export const dynamicBufferAttribute = ( array, type, stride, offset ) => bufferAttribute( array, type, stride, offset ).setUsage( DynamicDrawUsage );
|
|
83
95
|
|
|
84
|
-
|
|
96
|
+
export const instancedBufferAttribute = ( array, type, stride, offset ) => bufferAttribute( array, type, stride, offset ).setInstanced( true );
|
|
97
|
+
export const instancedDynamicBufferAttribute = ( array, type, stride, offset ) => dynamicBufferAttribute( array, type, stride, offset ).setInstanced( true );
|
|
85
98
|
|
|
86
99
|
addNodeClass( BufferAttributeNode );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Object3DNode from './Object3DNode.js';
|
|
2
2
|
import { addNodeClass } from '../core/Node.js';
|
|
3
|
+
import { label } from '../core/ContextNode.js';
|
|
3
4
|
import { nodeImmutable } from '../shadernode/ShaderNode.js';
|
|
4
5
|
|
|
5
6
|
class CameraNode extends Object3DNode {
|
|
@@ -18,6 +19,10 @@ class CameraNode extends Object3DNode {
|
|
|
18
19
|
|
|
19
20
|
return 'mat4';
|
|
20
21
|
|
|
22
|
+
} else if ( scope === CameraNode.NEAR || scope === CameraNode.FAR ) {
|
|
23
|
+
|
|
24
|
+
return 'float';
|
|
25
|
+
|
|
21
26
|
}
|
|
22
27
|
|
|
23
28
|
return super.getNodeType( builder );
|
|
@@ -30,13 +35,21 @@ class CameraNode extends Object3DNode {
|
|
|
30
35
|
const uniformNode = this._uniformNode;
|
|
31
36
|
const scope = this.scope;
|
|
32
37
|
|
|
33
|
-
if ( scope === CameraNode.
|
|
38
|
+
if ( scope === CameraNode.VIEW_MATRIX ) {
|
|
39
|
+
|
|
40
|
+
uniformNode.value = camera.matrixWorldInverse;
|
|
41
|
+
|
|
42
|
+
} else if ( scope === CameraNode.PROJECTION_MATRIX ) {
|
|
34
43
|
|
|
35
44
|
uniformNode.value = camera.projectionMatrix;
|
|
36
45
|
|
|
37
|
-
} else if ( scope === CameraNode.
|
|
46
|
+
} else if ( scope === CameraNode.NEAR ) {
|
|
38
47
|
|
|
39
|
-
uniformNode.value = camera.
|
|
48
|
+
uniformNode.value = camera.near;
|
|
49
|
+
|
|
50
|
+
} else if ( scope === CameraNode.FAR ) {
|
|
51
|
+
|
|
52
|
+
uniformNode.value = camera.far;
|
|
40
53
|
|
|
41
54
|
} else {
|
|
42
55
|
|
|
@@ -56,6 +69,10 @@ class CameraNode extends Object3DNode {
|
|
|
56
69
|
|
|
57
70
|
this._uniformNode.nodeType = 'mat4';
|
|
58
71
|
|
|
72
|
+
} else if ( scope === CameraNode.NEAR || scope === CameraNode.FAR ) {
|
|
73
|
+
|
|
74
|
+
this._uniformNode.nodeType = 'float';
|
|
75
|
+
|
|
59
76
|
}
|
|
60
77
|
|
|
61
78
|
return super.generate( builder );
|
|
@@ -65,10 +82,14 @@ class CameraNode extends Object3DNode {
|
|
|
65
82
|
}
|
|
66
83
|
|
|
67
84
|
CameraNode.PROJECTION_MATRIX = 'projectionMatrix';
|
|
85
|
+
CameraNode.NEAR = 'near';
|
|
86
|
+
CameraNode.FAR = 'far';
|
|
68
87
|
|
|
69
88
|
export default CameraNode;
|
|
70
89
|
|
|
71
|
-
export const cameraProjectionMatrix = nodeImmutable( CameraNode, CameraNode.PROJECTION_MATRIX );
|
|
90
|
+
export const cameraProjectionMatrix = label( nodeImmutable( CameraNode, CameraNode.PROJECTION_MATRIX ), 'projectionMatrix' );
|
|
91
|
+
export const cameraNear = nodeImmutable( CameraNode, CameraNode.NEAR );
|
|
92
|
+
export const cameraFar = nodeImmutable( CameraNode, CameraNode.FAR );
|
|
72
93
|
export const cameraViewMatrix = nodeImmutable( CameraNode, CameraNode.VIEW_MATRIX );
|
|
73
94
|
export const cameraNormalMatrix = nodeImmutable( CameraNode, CameraNode.NORMAL_MATRIX );
|
|
74
95
|
export const cameraWorldMatrix = nodeImmutable( CameraNode, CameraNode.WORLD_MATRIX );
|
|
@@ -20,7 +20,7 @@ class ExtendedMaterialNode extends MaterialNode {
|
|
|
20
20
|
const scope = this.scope;
|
|
21
21
|
let type = null;
|
|
22
22
|
|
|
23
|
-
if ( scope === ExtendedMaterialNode.NORMAL ) {
|
|
23
|
+
if ( scope === ExtendedMaterialNode.NORMAL || scope === ExtendedMaterialNode.CLEARCOAT_NORMAL ) {
|
|
24
24
|
|
|
25
25
|
type = 'vec3';
|
|
26
26
|
|
|
@@ -41,6 +41,10 @@ class ExtendedMaterialNode extends MaterialNode {
|
|
|
41
41
|
|
|
42
42
|
node = material.normalMap ? normalMap( this.getTexture( 'normalMap' ), materialReference( 'normalScale', 'vec2' ) ) : normalView;
|
|
43
43
|
|
|
44
|
+
} else if ( scope === ExtendedMaterialNode.CLEARCOAT_NORMAL ) {
|
|
45
|
+
|
|
46
|
+
node = material.clearcoatNormalMap ? normalMap( this.getTexture( 'clearcoatNormalMap' ), materialReference( 'clearcoatNormalScale', 'vec2' ) ) : normalView;
|
|
47
|
+
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
return node || super.construct( builder );
|
|
@@ -50,9 +54,11 @@ class ExtendedMaterialNode extends MaterialNode {
|
|
|
50
54
|
}
|
|
51
55
|
|
|
52
56
|
ExtendedMaterialNode.NORMAL = 'normal';
|
|
57
|
+
ExtendedMaterialNode.CLEARCOAT_NORMAL = 'clearcoatNormal';
|
|
53
58
|
|
|
54
59
|
export default ExtendedMaterialNode;
|
|
55
60
|
|
|
56
61
|
export const materialNormal = nodeImmutable( ExtendedMaterialNode, ExtendedMaterialNode.NORMAL );
|
|
62
|
+
export const materialClearcoatNormal = nodeImmutable( ExtendedMaterialNode, ExtendedMaterialNode.CLEARCOAT_NORMAL );
|
|
57
63
|
|
|
58
64
|
addNodeClass( ExtendedMaterialNode );
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Node, { addNodeClass } from '../core/Node.js';
|
|
2
|
-
import {
|
|
2
|
+
import { instancedBufferAttribute, instancedDynamicBufferAttribute } from './BufferAttributeNode.js';
|
|
3
3
|
import { normalLocal } from './NormalNode.js';
|
|
4
4
|
import { positionLocal } from './PositionNode.js';
|
|
5
5
|
import { nodeProxy, vec3, mat3, mat4 } from '../shadernode/ShaderNode.js';
|
|
@@ -27,7 +27,7 @@ class InstanceNode extends Node {
|
|
|
27
27
|
const instaceAttribute = instanceMesh.instanceMatrix;
|
|
28
28
|
const array = instaceAttribute.array;
|
|
29
29
|
|
|
30
|
-
const bufferFn = instaceAttribute.usage === DynamicDrawUsage ?
|
|
30
|
+
const bufferFn = instaceAttribute.usage === DynamicDrawUsage ? instancedDynamicBufferAttribute : instancedBufferAttribute;
|
|
31
31
|
|
|
32
32
|
const instanceBuffers = [
|
|
33
33
|
// F.Signature -> bufferAttribute( array, type, stride, offset )
|
|
@@ -60,8 +60,6 @@ class InstanceNode extends Node {
|
|
|
60
60
|
builder.stack.assign( positionLocal, instancePosition );
|
|
61
61
|
builder.stack.assign( normalLocal, instanceNormal );
|
|
62
62
|
|
|
63
|
-
return builder.stack;
|
|
64
|
-
|
|
65
63
|
}
|
|
66
64
|
|
|
67
65
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node, { addNodeClass } from '../core/Node.js';
|
|
2
|
-
import { uniform } from '../core/UniformNode.js';
|
|
3
2
|
import { materialReference } from './MaterialReferenceNode.js';
|
|
4
|
-
import {
|
|
5
|
-
import { nodeImmutable, vec3 } from '../shadernode/ShaderNode.js';
|
|
3
|
+
import { nodeImmutable } from '../shadernode/ShaderNode.js';
|
|
6
4
|
|
|
7
5
|
class MaterialNode extends Node {
|
|
8
6
|
|
|
@@ -27,15 +25,11 @@ class MaterialNode extends Node {
|
|
|
27
25
|
|
|
28
26
|
return 'float';
|
|
29
27
|
|
|
30
|
-
} else if ( scope === MaterialNode.
|
|
31
|
-
|
|
32
|
-
return 'vec2';
|
|
33
|
-
|
|
34
|
-
} else if ( scope === MaterialNode.EMISSIVE ) {
|
|
28
|
+
} else if ( scope === MaterialNode.EMISSIVE || scope === MaterialNode.SHEEN ) {
|
|
35
29
|
|
|
36
30
|
return 'vec3';
|
|
37
31
|
|
|
38
|
-
} else if ( scope === MaterialNode.ROUGHNESS || scope === MaterialNode.METALNESS || scope === MaterialNode.SPECULAR || scope === MaterialNode.SHININESS ) {
|
|
32
|
+
} else if ( scope === MaterialNode.ROUGHNESS || scope === MaterialNode.METALNESS || scope === MaterialNode.SPECULAR || scope === MaterialNode.SHININESS || scope === MaterialNode.CLEARCOAT_ROUGHNESS || scope === MaterialNode.SHEEN_ROUGHNESS ) {
|
|
39
33
|
|
|
40
34
|
return 'float';
|
|
41
35
|
|
|
@@ -64,7 +58,6 @@ class MaterialNode extends Node {
|
|
|
64
58
|
//@TODO: Check if it can be cached by property name.
|
|
65
59
|
|
|
66
60
|
const textureRefNode = materialReference( property, 'texture' );
|
|
67
|
-
textureRefNode.node.uvNode = materialUV;
|
|
68
61
|
|
|
69
62
|
return textureRefNode;
|
|
70
63
|
|
|
@@ -173,59 +166,68 @@ class MaterialNode extends Node {
|
|
|
173
166
|
|
|
174
167
|
}
|
|
175
168
|
|
|
176
|
-
} else if ( scope === MaterialNode.
|
|
169
|
+
} else if ( scope === MaterialNode.CLEARCOAT ) {
|
|
177
170
|
|
|
178
|
-
|
|
171
|
+
const clearcoatNode = this.getFloat( 'clearcoat' );
|
|
172
|
+
|
|
173
|
+
if ( material.clearcoatMap && material.clearcoatMap.isTexture === true ) {
|
|
174
|
+
|
|
175
|
+
node = clearcoatNode.mul( this.getTexture( 'clearcoatMap' ).r );
|
|
176
|
+
|
|
177
|
+
} else {
|
|
178
|
+
|
|
179
|
+
node = clearcoatNode;
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
} else if ( scope === MaterialNode.CLEARCOAT_ROUGHNESS ) {
|
|
184
|
+
|
|
185
|
+
const clearcoatRoughnessNode = this.getFloat( 'clearcoatRoughness' );
|
|
179
186
|
|
|
180
|
-
|
|
187
|
+
if ( material.clearcoatRoughnessMap && material.clearcoatRoughnessMap.isTexture === true ) {
|
|
181
188
|
|
|
182
|
-
|
|
189
|
+
node = clearcoatRoughnessNode.mul( this.getTexture( 'clearcoatRoughnessMap' ).r );
|
|
183
190
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
material.clearcoatNormalMap ||
|
|
196
|
-
material.clearcoatRoughnessMap ||
|
|
197
|
-
material.iridescenceMap ||
|
|
198
|
-
material.iridescenceThicknessMap ||
|
|
199
|
-
material.specularIntensityMap ||
|
|
200
|
-
material.specularColorMap ||
|
|
201
|
-
material.transmissionMap ||
|
|
202
|
-
material.thicknessMap ||
|
|
203
|
-
material.sheenColorMap ||
|
|
204
|
-
material.sheenRoughnessMap;
|
|
191
|
+
} else {
|
|
192
|
+
|
|
193
|
+
node = clearcoatRoughnessNode;
|
|
194
|
+
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
} else if ( scope === MaterialNode.SHEEN ) {
|
|
198
|
+
|
|
199
|
+
const sheenNode = this.getColor( 'sheenColor' ).mul( this.getFloat( 'sheen' ) ); // Move this mul() to CPU
|
|
200
|
+
|
|
201
|
+
if ( material.sheenColorMap && material.sheenColorMap.isTexture === true ) {
|
|
205
202
|
|
|
206
|
-
|
|
203
|
+
node = sheenNode.mul( this.getTexture( 'sheenColorMap' ).rgb );
|
|
207
204
|
|
|
208
|
-
|
|
209
|
-
if ( uvScaleMap.isWebGLRenderTarget ) {
|
|
205
|
+
} else {
|
|
210
206
|
|
|
211
|
-
|
|
207
|
+
node = sheenNode;
|
|
212
208
|
|
|
213
|
-
|
|
209
|
+
}
|
|
214
210
|
|
|
215
|
-
|
|
211
|
+
} else if ( scope === MaterialNode.SHEEN_ROUGHNESS ) {
|
|
216
212
|
|
|
217
|
-
|
|
213
|
+
const sheenRoughnessNode = this.getFloat( 'sheenRoughness' );
|
|
218
214
|
|
|
219
|
-
|
|
215
|
+
if ( material.sheenRoughnessMap && material.sheenRoughnessMap.isTexture === true ) {
|
|
220
216
|
|
|
221
|
-
node =
|
|
217
|
+
node = sheenRoughnessNode.mul( this.getTexture( 'sheenRoughnessMap' ).a );
|
|
222
218
|
|
|
223
219
|
} else {
|
|
224
220
|
|
|
225
|
-
node =
|
|
221
|
+
node = sheenRoughnessNode;
|
|
226
222
|
|
|
227
223
|
}
|
|
228
224
|
|
|
225
|
+
node = node.clamp( 0.07, 1.0 );
|
|
226
|
+
|
|
227
|
+
} else if ( scope === MaterialNode.ROTATION ) {
|
|
228
|
+
|
|
229
|
+
node = this.getFloat( 'rotation' );
|
|
230
|
+
|
|
229
231
|
} else {
|
|
230
232
|
|
|
231
233
|
const outputType = this.getNodeType( builder );
|
|
@@ -248,13 +250,15 @@ MaterialNode.SPECULAR_COLOR = 'specularColor';
|
|
|
248
250
|
MaterialNode.REFLECTIVITY = 'reflectivity';
|
|
249
251
|
MaterialNode.ROUGHNESS = 'roughness';
|
|
250
252
|
MaterialNode.METALNESS = 'metalness';
|
|
253
|
+
MaterialNode.CLEARCOAT = 'clearcoat';
|
|
254
|
+
MaterialNode.CLEARCOAT_ROUGHNESS = 'clearcoatRoughness';
|
|
251
255
|
MaterialNode.EMISSIVE = 'emissive';
|
|
252
256
|
MaterialNode.ROTATION = 'rotation';
|
|
253
|
-
MaterialNode.
|
|
257
|
+
MaterialNode.SHEEN = 'sheen';
|
|
258
|
+
MaterialNode.SHEEN_ROUGHNESS = 'sheenRoughness';
|
|
254
259
|
|
|
255
260
|
export default MaterialNode;
|
|
256
261
|
|
|
257
|
-
export const materialUV = nodeImmutable( MaterialNode, MaterialNode.UV );
|
|
258
262
|
export const materialAlphaTest = nodeImmutable( MaterialNode, MaterialNode.ALPHA_TEST );
|
|
259
263
|
export const materialColor = nodeImmutable( MaterialNode, MaterialNode.COLOR );
|
|
260
264
|
export const materialShininess = nodeImmutable( MaterialNode, MaterialNode.SHININESS );
|
|
@@ -264,6 +268,10 @@ export const materialSpecularColor = nodeImmutable( MaterialNode, MaterialNode.S
|
|
|
264
268
|
export const materialReflectivity = nodeImmutable( MaterialNode, MaterialNode.REFLECTIVITY );
|
|
265
269
|
export const materialRoughness = nodeImmutable( MaterialNode, MaterialNode.ROUGHNESS );
|
|
266
270
|
export const materialMetalness = nodeImmutable( MaterialNode, MaterialNode.METALNESS );
|
|
271
|
+
export const materialClearcoat = nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT );
|
|
272
|
+
export const materialClearcoatRoughness = nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT_ROUGHNESS );
|
|
267
273
|
export const materialRotation = nodeImmutable( MaterialNode, MaterialNode.ROTATION );
|
|
274
|
+
export const materialSheen = nodeImmutable( MaterialNode, MaterialNode.SHEEN );
|
|
275
|
+
export const materialSheenRoughness = nodeImmutable( MaterialNode, MaterialNode.SHEEN_ROUGHNESS );
|
|
268
276
|
|
|
269
277
|
addNodeClass( MaterialNode );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Object3DNode from './Object3DNode.js';
|
|
2
2
|
import { addNodeClass } from '../core/Node.js';
|
|
3
|
+
import { label } from '../core/ContextNode.js';
|
|
3
4
|
import { nodeImmutable } from '../shadernode/ShaderNode.js';
|
|
4
5
|
|
|
5
6
|
class ModelNode extends Object3DNode {
|
|
@@ -23,10 +24,11 @@ class ModelNode extends Object3DNode {
|
|
|
23
24
|
export default ModelNode;
|
|
24
25
|
|
|
25
26
|
export const modelDirection = nodeImmutable( ModelNode, ModelNode.DIRECTION );
|
|
26
|
-
export const modelViewMatrix = nodeImmutable( ModelNode, ModelNode.VIEW_MATRIX );
|
|
27
|
+
export const modelViewMatrix = label( nodeImmutable( ModelNode, ModelNode.VIEW_MATRIX ), 'modelViewMatrix' );
|
|
27
28
|
export const modelNormalMatrix = nodeImmutable( ModelNode, ModelNode.NORMAL_MATRIX );
|
|
28
29
|
export const modelWorldMatrix = nodeImmutable( ModelNode, ModelNode.WORLD_MATRIX );
|
|
29
30
|
export const modelPosition = nodeImmutable( ModelNode, ModelNode.POSITION );
|
|
31
|
+
export const modelScale = nodeImmutable( ModelNode, ModelNode.SCALE );
|
|
30
32
|
export const modelViewPosition = nodeImmutable( ModelNode, ModelNode.VIEW_POSITION );
|
|
31
33
|
|
|
32
34
|
addNodeClass( ModelNode );
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import Node, { addNodeClass } from '../core/Node.js';
|
|
2
|
+
import { NodeUpdateType } from '../core/constants.js';
|
|
3
|
+
import { nodeProxy } from '../shadernode/ShaderNode.js';
|
|
4
|
+
import { uniform } from '../core/UniformNode.js';
|
|
5
|
+
import { reference } from './ReferenceNode.js';
|
|
6
|
+
import { bufferAttribute } from './BufferAttributeNode.js';
|
|
7
|
+
import { positionLocal } from './PositionNode.js';
|
|
8
|
+
|
|
9
|
+
class MorphNode extends Node {
|
|
10
|
+
|
|
11
|
+
constructor( mesh ) {
|
|
12
|
+
|
|
13
|
+
super( 'void' );
|
|
14
|
+
|
|
15
|
+
this.mesh = mesh;
|
|
16
|
+
this.morphBaseInfluence = uniform( 1 );
|
|
17
|
+
|
|
18
|
+
this.updateType = NodeUpdateType.OBJECT;
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
constructAttribute( builder, name, assignNode = positionLocal ) {
|
|
23
|
+
|
|
24
|
+
const mesh = this.mesh;
|
|
25
|
+
const attributes = mesh.geometry.morphAttributes[ name ];
|
|
26
|
+
|
|
27
|
+
builder.stack.assign( assignNode, assignNode.mul( this.morphBaseInfluence ) );
|
|
28
|
+
|
|
29
|
+
for ( let i = 0; i < attributes.length; i ++ ) {
|
|
30
|
+
|
|
31
|
+
const attribute = attributes[ i ];
|
|
32
|
+
|
|
33
|
+
const bufferAttrib = bufferAttribute( attribute.array, 'vec3' );
|
|
34
|
+
const influence = reference( i, 'float', mesh.morphTargetInfluences );
|
|
35
|
+
|
|
36
|
+
builder.stack.assign( assignNode, assignNode.add( bufferAttrib.mul( influence ) ) );
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
construct( builder ) {
|
|
43
|
+
|
|
44
|
+
this.constructAttribute( builder, 'position' );
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
update() {
|
|
49
|
+
|
|
50
|
+
const morphBaseInfluence = this.morphBaseInfluence;
|
|
51
|
+
|
|
52
|
+
if ( this.mesh.geometry.morphTargetsRelative ) {
|
|
53
|
+
|
|
54
|
+
morphBaseInfluence.value = 1;
|
|
55
|
+
|
|
56
|
+
} else {
|
|
57
|
+
|
|
58
|
+
morphBaseInfluence.value = 1 - this.mesh.morphTargetInfluences.reduce( ( a, b ) => a + b, 0 );
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export default MorphNode;
|
|
67
|
+
|
|
68
|
+
export const morph = nodeProxy( MorphNode );
|
|
69
|
+
|
|
70
|
+
addNodeClass( MorphNode );
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Node, { addNodeClass } from '../core/Node.js';
|
|
2
2
|
import { attribute } from '../core/AttributeNode.js';
|
|
3
|
-
import { label } from '../core/VarNode.js';
|
|
4
3
|
import { varying } from '../core/VaryingNode.js';
|
|
4
|
+
import { property } from '../core/PropertyNode.js';
|
|
5
5
|
import { normalize } from '../math/MathNode.js';
|
|
6
6
|
import { cameraViewMatrix } from './CameraNode.js';
|
|
7
7
|
import { modelNormalMatrix } from './ModelNode.js';
|
|
@@ -89,7 +89,8 @@ export const normalGeometry = nodeImmutable( NormalNode, NormalNode.GEOMETRY );
|
|
|
89
89
|
export const normalLocal = nodeImmutable( NormalNode, NormalNode.LOCAL );
|
|
90
90
|
export const normalView = nodeImmutable( NormalNode, NormalNode.VIEW );
|
|
91
91
|
export const normalWorld = nodeImmutable( NormalNode, NormalNode.WORLD );
|
|
92
|
-
export const transformedNormalView =
|
|
92
|
+
export const transformedNormalView = property( 'vec3', 'TransformedNormalView' );
|
|
93
93
|
export const transformedNormalWorld = transformedNormalView.transformDirection( cameraViewMatrix ).normalize();
|
|
94
|
+
export const transformedClearcoatNormalView = property( 'vec3', 'TransformedClearcoatNormalView' );
|
|
94
95
|
|
|
95
96
|
addNodeClass( NormalNode );
|
|
@@ -32,7 +32,7 @@ class Object3DNode extends Node {
|
|
|
32
32
|
|
|
33
33
|
return 'mat3';
|
|
34
34
|
|
|
35
|
-
} else if ( scope === Object3DNode.POSITION || scope === Object3DNode.VIEW_POSITION || scope === Object3DNode.DIRECTION ) {
|
|
35
|
+
} else if ( scope === Object3DNode.POSITION || scope === Object3DNode.VIEW_POSITION || scope === Object3DNode.DIRECTION || scope === Object3DNode.SCALE ) {
|
|
36
36
|
|
|
37
37
|
return 'vec3';
|
|
38
38
|
|
|
@@ -64,6 +64,12 @@ class Object3DNode extends Node {
|
|
|
64
64
|
|
|
65
65
|
uniformNode.value.setFromMatrixPosition( object.matrixWorld );
|
|
66
66
|
|
|
67
|
+
} else if ( scope === Object3DNode.SCALE ) {
|
|
68
|
+
|
|
69
|
+
uniformNode.value = uniformNode.value || new Vector3();
|
|
70
|
+
|
|
71
|
+
uniformNode.value.setFromMatrixScale( object.matrixWorld );
|
|
72
|
+
|
|
67
73
|
} else if ( scope === Object3DNode.DIRECTION ) {
|
|
68
74
|
|
|
69
75
|
uniformNode.value = uniformNode.value || new Vector3();
|
|
@@ -95,7 +101,7 @@ class Object3DNode extends Node {
|
|
|
95
101
|
|
|
96
102
|
this._uniformNode.nodeType = 'mat3';
|
|
97
103
|
|
|
98
|
-
} else if ( scope === Object3DNode.POSITION || scope === Object3DNode.VIEW_POSITION || scope === Object3DNode.DIRECTION ) {
|
|
104
|
+
} else if ( scope === Object3DNode.POSITION || scope === Object3DNode.VIEW_POSITION || scope === Object3DNode.DIRECTION || scope === Object3DNode.SCALE ) {
|
|
99
105
|
|
|
100
106
|
this._uniformNode.nodeType = 'vec3';
|
|
101
107
|
|
|
@@ -127,6 +133,7 @@ Object3DNode.VIEW_MATRIX = 'viewMatrix';
|
|
|
127
133
|
Object3DNode.NORMAL_MATRIX = 'normalMatrix';
|
|
128
134
|
Object3DNode.WORLD_MATRIX = 'worldMatrix';
|
|
129
135
|
Object3DNode.POSITION = 'position';
|
|
136
|
+
Object3DNode.SCALE = 'scale';
|
|
130
137
|
Object3DNode.VIEW_POSITION = 'viewPosition';
|
|
131
138
|
Object3DNode.DIRECTION = 'direction';
|
|
132
139
|
|
|
@@ -137,6 +144,7 @@ export const objectViewMatrix = nodeProxy( Object3DNode, Object3DNode.VIEW_MATRI
|
|
|
137
144
|
export const objectNormalMatrix = nodeProxy( Object3DNode, Object3DNode.NORMAL_MATRIX );
|
|
138
145
|
export const objectWorldMatrix = nodeProxy( Object3DNode, Object3DNode.WORLD_MATRIX );
|
|
139
146
|
export const objectPosition = nodeProxy( Object3DNode, Object3DNode.POSITION );
|
|
147
|
+
export const objectScale = nodeProxy( Object3DNode, Object3DNode.SCALE );
|
|
140
148
|
export const objectViewPosition = nodeProxy( Object3DNode, Object3DNode.VIEW_POSITION );
|
|
141
149
|
|
|
142
150
|
addNodeClass( Object3DNode );
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import { addNodeClass } from '../core/Node.js';
|
|
3
|
+
import { nodeImmutable } from '../shadernode/ShaderNode.js';
|
|
4
|
+
import { reference } from './ReferenceNode.js';
|
|
5
|
+
|
|
6
|
+
class SceneNode extends Node {
|
|
7
|
+
|
|
8
|
+
constructor( scope = SceneNode.BACKGROUND_BLURRINESS, scene = null ) {
|
|
9
|
+
|
|
10
|
+
super();
|
|
11
|
+
|
|
12
|
+
this.scope = scope;
|
|
13
|
+
this.scene = scene;
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
construct( builder ) {
|
|
18
|
+
|
|
19
|
+
const scope = this.scope;
|
|
20
|
+
const scene = this.scene !== null ? this.scene : builder.scene;
|
|
21
|
+
|
|
22
|
+
let output;
|
|
23
|
+
|
|
24
|
+
if ( scope === SceneNode.BACKGROUND_BLURRINESS ) {
|
|
25
|
+
|
|
26
|
+
output = reference( 'backgroundBlurriness', 'float', scene );
|
|
27
|
+
|
|
28
|
+
} else {
|
|
29
|
+
|
|
30
|
+
console.error( 'THREE.SceneNode: Unknown scope:', scope );
|
|
31
|
+
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return output;
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
SceneNode.BACKGROUND_BLURRINESS = 'backgroundBlurriness';
|
|
41
|
+
|
|
42
|
+
export default SceneNode;
|
|
43
|
+
|
|
44
|
+
export const backgroundBlurriness = nodeImmutable( SceneNode, SceneNode.BACKGROUND_BLURRINESS );
|
|
45
|
+
|
|
46
|
+
addNodeClass( SceneNode );
|