super-three 0.141.0 → 0.144.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/README.md +8 -8
- package/build/three.cjs +1558 -1034
- package/build/three.js +1558 -1034
- package/build/three.min.js +1 -1
- package/build/three.module.js +2012 -1243
- package/examples/js/animation/MMDPhysics.js +1 -16
- package/examples/js/controls/ArcballControls.js +16 -3
- package/examples/js/controls/FirstPersonControls.js +0 -7
- package/examples/js/controls/FlyControls.js +0 -8
- package/examples/js/controls/OrbitControls.js +0 -4
- package/examples/js/controls/PointerLockControls.js +0 -8
- package/examples/js/controls/TrackballControls.js +0 -2
- package/examples/js/controls/TransformControls.js +20 -16
- package/examples/js/effects/AnaglyphEffect.js +2 -2
- package/examples/js/effects/OutlineEffect.js +4 -24
- package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/js/effects/PeppersGhostEffect.js +2 -2
- package/examples/js/effects/StereoEffect.js +2 -2
- package/examples/js/environments/RoomEnvironment.js +22 -0
- package/examples/js/exporters/ColladaExporter.js +4 -13
- package/examples/js/exporters/DRACOExporter.js +0 -12
- package/examples/js/exporters/GLTFExporter.js +28 -29
- package/examples/js/exporters/OBJExporter.js +2 -23
- package/examples/js/exporters/PLYExporter.js +12 -24
- package/examples/js/exporters/STLExporter.js +0 -7
- package/examples/js/exporters/USDZExporter.js +6 -0
- package/examples/js/geometries/ConvexGeometry.js +1 -1
- package/examples/js/geometries/ParametricGeometry.js +1 -8
- package/examples/js/interactive/SelectionHelper.js +2 -0
- package/examples/js/libs/ktx-parse.umd.js +1 -0
- package/examples/js/libs/meshopt_decoder.js +98 -32
- package/examples/js/loaders/ColladaLoader.js +1 -0
- package/examples/js/loaders/DRACOLoader.js +2 -25
- package/examples/js/loaders/EXRLoader.js +2 -13
- package/examples/js/loaders/FBXLoader.js +10 -3
- package/examples/js/loaders/FontLoader.js +3 -16
- package/examples/js/loaders/GLTFLoader.js +52 -36
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
- package/examples/js/loaders/LDrawLoader.js +139 -74
- package/examples/js/loaders/OBJLoader.js +7 -13
- package/examples/js/loaders/PCDLoader.js +59 -14
- package/examples/js/loaders/PLYLoader.js +3 -3
- package/examples/js/loaders/SVGLoader.js +4 -3
- package/examples/js/loaders/TIFFLoader.js +31 -0
- package/examples/js/loaders/VRMLLoader.js +33 -24
- package/examples/js/loaders/VTKLoader.js +1 -1
- package/examples/js/loaders/lwo/LWO2Parser.js +8 -7
- package/examples/js/loaders/lwo/LWO3Parser.js +8 -7
- package/examples/js/materials/MeshGouraudMaterial.js +385 -0
- package/examples/js/math/ColorConverter.js +0 -50
- package/examples/js/misc/GPUComputationRenderer.js +23 -0
- package/examples/js/misc/Volume.js +198 -190
- package/examples/js/misc/VolumeSlice.js +90 -88
- package/examples/js/modifiers/SimplifyModifier.js +1 -1
- package/examples/js/objects/GroundProjectedEnv.js +193 -0
- package/examples/js/objects/Reflector.js +9 -2
- package/examples/js/objects/ReflectorForSSRPass.js +3 -4
- package/examples/js/objects/Refractor.js +10 -4
- package/examples/js/objects/ShadowMesh.js +5 -1
- package/examples/js/postprocessing/OutlinePass.js +5 -3
- package/examples/js/renderers/CSS2DRenderer.js +2 -2
- package/examples/js/renderers/CSS3DRenderer.js +2 -2
- package/examples/js/renderers/Projector.js +2 -23
- package/examples/js/shaders/LuminosityShader.js +1 -1
- package/examples/js/shaders/MMDToonShader.js +6 -2
- package/examples/js/shaders/ToneMapShader.js +1 -1
- package/examples/js/utils/BufferGeometryUtils.js +1 -1
- package/examples/js/utils/GeometryUtils.js +2 -18
- package/examples/js/utils/PackedPhongMaterial.js +1 -1
- package/examples/js/utils/SceneUtils.js +0 -16
- package/examples/jsm/animation/MMDPhysics.js +3 -22
- package/examples/jsm/controls/ArcballControls.js +17 -2
- package/examples/jsm/controls/FirstPersonControls.js +0 -7
- package/examples/jsm/controls/FlyControls.js +0 -7
- package/examples/jsm/controls/OrbitControls.js +0 -5
- package/examples/jsm/controls/PointerLockControls.js +0 -7
- package/examples/jsm/controls/TrackballControls.js +0 -3
- package/examples/jsm/controls/TransformControls.js +18 -16
- package/examples/jsm/effects/AnaglyphEffect.js +2 -2
- package/examples/jsm/effects/OutlineEffect.js +4 -25
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
- package/examples/jsm/effects/StereoEffect.js +2 -2
- package/examples/jsm/environments/RoomEnvironment.js +23 -0
- package/examples/jsm/exporters/ColladaExporter.js +4 -13
- package/examples/jsm/exporters/DRACOExporter.js +0 -13
- package/examples/jsm/exporters/GLTFExporter.js +29 -31
- package/examples/jsm/exporters/KTX2Exporter.js +29 -29
- package/examples/jsm/exporters/OBJExporter.js +0 -18
- package/examples/jsm/exporters/PLYExporter.js +14 -22
- package/examples/jsm/exporters/STLExporter.js +1 -9
- package/examples/jsm/exporters/USDZExporter.js +14 -3
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/ParametricGeometry.js +0 -6
- package/examples/jsm/interactive/HTMLMesh.js +9 -9
- package/examples/jsm/interactive/SelectionHelper.js +5 -3
- package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
- package/examples/jsm/libs/utif.module.js +1579 -0
- package/examples/jsm/libs/zstddec.module.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -28
- package/examples/jsm/loaders/EXRLoader.js +3 -13
- package/examples/jsm/loaders/FBXLoader.js +10 -3
- package/examples/jsm/loaders/FontLoader.js +3 -16
- package/examples/jsm/loaders/GLTFLoader.js +52 -36
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
- package/examples/jsm/loaders/KTX2Loader.js +192 -30
- package/examples/jsm/loaders/LDrawLoader.js +135 -74
- package/examples/jsm/loaders/OBJLoader.js +6 -14
- package/examples/jsm/loaders/PCDLoader.js +59 -13
- package/examples/jsm/loaders/PLYLoader.js +3 -3
- package/examples/jsm/loaders/RGBELoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +4 -3
- package/examples/jsm/loaders/TIFFLoader.js +36 -0
- package/examples/jsm/loaders/USDZLoader.js +393 -0
- package/examples/jsm/loaders/VRMLLoader.js +23 -25
- package/examples/jsm/loaders/VTKLoader.js +1 -1
- package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
- package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
- package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
- package/examples/jsm/math/ColorConverter.js +1 -49
- package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
- package/examples/jsm/misc/Volume.js +169 -171
- package/examples/jsm/misc/VolumeSlice.js +78 -80
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
- package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
- package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/math/AngleEditor.js +1 -1
- package/examples/jsm/node-editor/math/DotEditor.js +1 -1
- package/examples/jsm/node-editor/math/InvertEditor.js +1 -1
- package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
- package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
- package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
- package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
- package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
- package/examples/jsm/node-editor/utils/PreviewEditor.js +3 -3
- package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
- package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
- package/examples/jsm/nodes/Nodes.js +43 -13
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
- package/examples/jsm/nodes/accessors/NormalNode.js +4 -4
- package/examples/jsm/nodes/accessors/PositionNode.js +5 -5
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
- package/examples/jsm/nodes/core/AttributeNode.js +3 -3
- package/examples/jsm/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
- package/examples/jsm/nodes/core/FunctionNode.js +2 -2
- package/examples/jsm/nodes/core/Node.js +14 -12
- package/examples/jsm/nodes/core/NodeBuilder.js +12 -12
- package/examples/jsm/nodes/core/NodeUtils.js +23 -1
- package/examples/jsm/nodes/core/{NodeVary.js → NodeVarying.js} +3 -3
- package/examples/jsm/nodes/core/{VaryNode.js → VaryingNode.js} +7 -7
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
- package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -0
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
- package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
- package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +31 -0
- package/examples/jsm/nodes/materials/Materials.js +13 -25
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
- package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
- package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
- package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
- package/examples/jsm/nodes/math/MathNode.js +2 -12
- package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
- package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
- package/examples/jsm/nodes/shadernode/ShaderNode.js +5 -5
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +8 -5
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +20 -6
- package/examples/jsm/nodes/utils/ConvertNode.js +8 -3
- package/examples/jsm/nodes/utils/JoinNode.js +7 -7
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +2 -1
- package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
- package/examples/jsm/nodes/utils/SplitNode.js +21 -5
- package/examples/jsm/nodes/utils/TimerNode.js +2 -2
- package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
- package/examples/jsm/objects/Reflector.js +12 -5
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
- package/examples/jsm/objects/Refractor.js +12 -6
- package/examples/jsm/objects/ShadowMesh.js +8 -2
- package/examples/jsm/postprocessing/OutlinePass.js +5 -3
- package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
- package/examples/jsm/renderers/Projector.js +2 -24
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +329 -218
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +39 -3
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +66 -81
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +25 -30
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/LuminosityShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +2 -2
- package/examples/jsm/shaders/ToneMapShader.js +1 -1
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -1
- package/examples/jsm/utils/GeometryUtils.js +17 -25
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
- package/examples/jsm/utils/SceneUtils.js +1 -21
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
- package/examples/jsm/webxr/VRButton.js +1 -7
- package/package.json +18 -14
- package/src/Three.Legacy.js +262 -36
- package/src/Three.js +3 -2
- package/src/animation/AnimationAction.js +6 -5
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +1 -1
- package/src/animation/AnimationUtils.js +204 -199
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/PropertyBinding.js +24 -5
- package/src/cameras/CubeCamera.js +0 -7
- package/src/constants.js +2 -4
- package/src/core/BufferAttribute.js +81 -111
- package/src/core/BufferGeometry.js +3 -41
- package/src/core/InstancedBufferAttribute.js +0 -10
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +56 -7
- package/src/core/Object3D.js +22 -5
- package/src/core/Uniform.js +0 -7
- package/src/core/UniformsGroup.js +92 -0
- package/src/extras/DataUtils.js +104 -88
- package/src/extras/core/Path.js +1 -0
- package/src/extras/core/ShapePath.js +1 -4
- package/src/extras/curves/CatmullRomCurve3.js +4 -2
- package/src/geometries/BoxGeometry.js +1 -1
- package/src/geometries/CapsuleGeometry.js +1 -1
- package/src/geometries/CircleGeometry.js +1 -1
- package/src/geometries/ConeGeometry.js +1 -1
- package/src/geometries/CylinderGeometry.js +2 -1
- package/src/geometries/DodecahedronGeometry.js +1 -1
- package/src/geometries/EdgesGeometry.js +5 -4
- package/src/geometries/ExtrudeGeometry.js +2 -11
- package/src/geometries/IcosahedronGeometry.js +1 -1
- package/src/geometries/LatheGeometry.js +2 -2
- package/src/geometries/OctahedronGeometry.js +1 -1
- package/src/geometries/PlaneGeometry.js +2 -1
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +2 -1
- package/src/geometries/SphereGeometry.js +2 -1
- package/src/geometries/TetrahedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +2 -1
- package/src/geometries/TorusKnotGeometry.js +2 -1
- package/src/geometries/TubeGeometry.js +2 -1
- package/src/geometries/WireframeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +97 -38
- package/src/helpers/DirectionalLightHelper.js +1 -0
- package/src/helpers/HemisphereLightHelper.js +1 -0
- package/src/helpers/PlaneHelper.js +6 -9
- package/src/helpers/PolarGridHelper.js +18 -14
- package/src/helpers/SpotLightHelper.js +1 -0
- package/src/lights/SpotLight.js +2 -0
- package/src/loaders/FileLoader.js +12 -1
- package/src/loaders/LoadingManager.js +1 -1
- package/src/loaders/MaterialLoader.js +49 -7
- package/src/loaders/ObjectLoader.js +4 -41
- package/src/materials/Material.js +1 -33
- package/src/materials/Materials.js +0 -27
- package/src/materials/MeshLambertMaterial.js +28 -1
- package/src/materials/ShaderMaterial.js +3 -7
- package/src/math/Color.js +3 -13
- package/src/math/MathUtils.js +1 -7
- package/src/math/Matrix3.js +1 -7
- package/src/math/Matrix4.js +3 -27
- package/src/math/Quaternion.js +1 -21
- package/src/math/Vector2.js +4 -24
- package/src/math/Vector3.js +7 -46
- package/src/math/Vector4.js +4 -24
- package/src/renderers/WebGLRenderer.js +84 -8
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
- package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -12
- package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib.js +31 -31
- package/src/renderers/shaders/UniformsLib.js +12 -11
- package/src/renderers/shaders/UniformsUtils.js +14 -0
- package/src/renderers/webgl/WebGLBackground.js +2 -2
- package/src/renderers/webgl/WebGLLights.js +37 -13
- package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
- package/src/renderers/webgl/WebGLProgram.js +6 -11
- package/src/renderers/webgl/WebGLPrograms.js +30 -26
- package/src/renderers/webgl/WebGLRenderLists.js +5 -4
- package/src/renderers/webgl/WebGLRenderStates.js +5 -4
- package/src/renderers/webgl/WebGLShaderCache.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +10 -15
- package/src/renderers/webgl/WebGLState.js +47 -0
- package/src/renderers/webgl/WebGLUniforms.js +4 -4
- package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
- package/src/renderers/webgl/WebGLUtils.js +2 -0
- package/src/renderers/webvr/WebVRManager.js +42 -9
- package/src/renderers/webvr/WebVRUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +45 -37
- package/src/renderers/webxr/WebXRManager.js +58 -33
- package/src/scenes/Scene.js +16 -3
- package/src/textures/Source.js +1 -1
- package/src/utils.js +1 -1
- package/examples/js/controls/experimental/CameraControls.js +0 -1048
- package/examples/js/loaders/KTX2Loader.js +0 -558
- package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
- package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
- package/examples/jsm/package.json +0 -3
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
- package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
|
@@ -18,12 +18,12 @@ import NodeFunctionInput from './core/NodeFunctionInput.js';
|
|
|
18
18
|
import NodeKeywords from './core/NodeKeywords.js';
|
|
19
19
|
import NodeUniform from './core/NodeUniform.js';
|
|
20
20
|
import NodeVar from './core/NodeVar.js';
|
|
21
|
-
import
|
|
21
|
+
import NodeVarying from './core/NodeVarying.js';
|
|
22
22
|
import PropertyNode from './core/PropertyNode.js';
|
|
23
23
|
import TempNode from './core/TempNode.js';
|
|
24
24
|
import UniformNode from './core/UniformNode.js';
|
|
25
25
|
import VarNode from './core/VarNode.js';
|
|
26
|
-
import
|
|
26
|
+
import VaryingNode from './core/VaryingNode.js';
|
|
27
27
|
|
|
28
28
|
// accessors
|
|
29
29
|
import BufferNode from './accessors/BufferNode.js';
|
|
@@ -39,16 +39,20 @@ import Object3DNode from './accessors/Object3DNode.js';
|
|
|
39
39
|
import PointUVNode from './accessors/PointUVNode.js';
|
|
40
40
|
import PositionNode from './accessors/PositionNode.js';
|
|
41
41
|
import ReferenceNode from './accessors/ReferenceNode.js';
|
|
42
|
-
import
|
|
42
|
+
import ReflectVectorNode from './accessors/ReflectVectorNode.js';
|
|
43
43
|
import SkinningNode from './accessors/SkinningNode.js';
|
|
44
44
|
import TextureNode from './accessors/TextureNode.js';
|
|
45
45
|
import UVNode from './accessors/UVNode.js';
|
|
46
46
|
import UserDataNode from './accessors/UserDataNode.js';
|
|
47
47
|
|
|
48
|
+
// geometry
|
|
49
|
+
import RangeNode from './geometry/RangeNode.js';
|
|
50
|
+
|
|
48
51
|
// gpgpu
|
|
49
52
|
import ComputeNode from './gpgpu/ComputeNode.js';
|
|
50
53
|
|
|
51
54
|
// display
|
|
55
|
+
import ColorAdjustmentNode from './display/ColorAdjustmentNode.js';
|
|
52
56
|
import ColorSpaceNode from './display/ColorSpaceNode.js';
|
|
53
57
|
import FrontFacingNode from './display/FrontFacingNode.js';
|
|
54
58
|
import NormalMapNode from './display/NormalMapNode.js';
|
|
@@ -76,6 +80,7 @@ import JoinNode from './utils/JoinNode.js';
|
|
|
76
80
|
import MatcapUVNode from './utils/MatcapUVNode.js';
|
|
77
81
|
import MaxMipLevelNode from './utils/MaxMipLevelNode.js';
|
|
78
82
|
import OscNode from './utils/OscNode.js';
|
|
83
|
+
import RotateUVNode from './utils/RotateUVNode.js';
|
|
79
84
|
import SplitNode from './utils/SplitNode.js';
|
|
80
85
|
import SpriteSheetUVNode from './utils/SpriteSheetUVNode.js';
|
|
81
86
|
import TimerNode from './utils/TimerNode.js';
|
|
@@ -85,6 +90,10 @@ import NodeLoader from './loaders/NodeLoader.js';
|
|
|
85
90
|
import NodeObjectLoader from './loaders/NodeObjectLoader.js';
|
|
86
91
|
import NodeMaterialLoader from './loaders/NodeMaterialLoader.js';
|
|
87
92
|
|
|
93
|
+
// parsers
|
|
94
|
+
import WGSLNodeParser from './parsers/WGSLNodeParser.js';
|
|
95
|
+
import GLSLNodeParser from './parsers/GLSLNodeParser.js';
|
|
96
|
+
|
|
88
97
|
// procedural
|
|
89
98
|
import CheckerNode from './procedural/CheckerNode.js';
|
|
90
99
|
|
|
@@ -101,6 +110,9 @@ export * from './materials/Materials.js';
|
|
|
101
110
|
// shader node
|
|
102
111
|
export * from './shadernode/ShaderNodeElements.js';
|
|
103
112
|
|
|
113
|
+
// shader stages
|
|
114
|
+
export { defaultShaderStages } from './core/NodeBuilder.js';
|
|
115
|
+
|
|
104
116
|
const nodeLib = {
|
|
105
117
|
// core
|
|
106
118
|
ArrayUniformNode,
|
|
@@ -122,14 +134,17 @@ const nodeLib = {
|
|
|
122
134
|
NodeKeywords,
|
|
123
135
|
NodeUniform,
|
|
124
136
|
NodeVar,
|
|
125
|
-
|
|
137
|
+
NodeVarying,
|
|
126
138
|
PropertyNode,
|
|
127
139
|
TempNode,
|
|
128
140
|
UniformNode,
|
|
129
141
|
VarNode,
|
|
130
|
-
|
|
142
|
+
VaryingNode,
|
|
143
|
+
|
|
144
|
+
// geometry
|
|
145
|
+
RangeNode,
|
|
131
146
|
|
|
132
|
-
//
|
|
147
|
+
// gpgpu
|
|
133
148
|
ComputeNode,
|
|
134
149
|
|
|
135
150
|
// accessors
|
|
@@ -146,13 +161,14 @@ const nodeLib = {
|
|
|
146
161
|
PointUVNode,
|
|
147
162
|
PositionNode,
|
|
148
163
|
ReferenceNode,
|
|
149
|
-
|
|
164
|
+
ReflectVectorNode,
|
|
150
165
|
SkinningNode,
|
|
151
166
|
TextureNode,
|
|
152
167
|
UVNode,
|
|
153
168
|
UserDataNode,
|
|
154
169
|
|
|
155
170
|
// display
|
|
171
|
+
ColorAdjustmentNode,
|
|
156
172
|
ColorSpaceNode,
|
|
157
173
|
FrontFacingNode,
|
|
158
174
|
NormalMapNode,
|
|
@@ -180,6 +196,7 @@ const nodeLib = {
|
|
|
180
196
|
MatcapUVNode,
|
|
181
197
|
MaxMipLevelNode,
|
|
182
198
|
OscNode,
|
|
199
|
+
RotateUVNode,
|
|
183
200
|
SplitNode,
|
|
184
201
|
SpriteSheetUVNode,
|
|
185
202
|
TimerNode,
|
|
@@ -194,7 +211,11 @@ const nodeLib = {
|
|
|
194
211
|
// loaders
|
|
195
212
|
NodeLoader,
|
|
196
213
|
NodeObjectLoader,
|
|
197
|
-
NodeMaterialLoader
|
|
214
|
+
NodeMaterialLoader,
|
|
215
|
+
|
|
216
|
+
// parsers
|
|
217
|
+
WGSLNodeParser,
|
|
218
|
+
GLSLNodeParser,
|
|
198
219
|
|
|
199
220
|
};
|
|
200
221
|
|
|
@@ -225,14 +246,17 @@ export {
|
|
|
225
246
|
NodeKeywords,
|
|
226
247
|
NodeUniform,
|
|
227
248
|
NodeVar,
|
|
228
|
-
|
|
249
|
+
NodeVarying,
|
|
229
250
|
PropertyNode,
|
|
230
251
|
TempNode,
|
|
231
252
|
UniformNode,
|
|
232
253
|
VarNode,
|
|
233
|
-
|
|
254
|
+
VaryingNode,
|
|
255
|
+
|
|
256
|
+
// geometry
|
|
257
|
+
RangeNode,
|
|
234
258
|
|
|
235
|
-
//
|
|
259
|
+
// gpgpu
|
|
236
260
|
ComputeNode,
|
|
237
261
|
|
|
238
262
|
// accessors
|
|
@@ -249,13 +273,14 @@ export {
|
|
|
249
273
|
PointUVNode,
|
|
250
274
|
PositionNode,
|
|
251
275
|
ReferenceNode,
|
|
252
|
-
|
|
276
|
+
ReflectVectorNode,
|
|
253
277
|
SkinningNode,
|
|
254
278
|
TextureNode,
|
|
255
279
|
UVNode,
|
|
256
280
|
UserDataNode,
|
|
257
281
|
|
|
258
282
|
// display
|
|
283
|
+
ColorAdjustmentNode,
|
|
259
284
|
ColorSpaceNode,
|
|
260
285
|
FrontFacingNode,
|
|
261
286
|
NormalMapNode,
|
|
@@ -283,6 +308,7 @@ export {
|
|
|
283
308
|
MatcapUVNode,
|
|
284
309
|
MaxMipLevelNode,
|
|
285
310
|
OscNode,
|
|
311
|
+
RotateUVNode,
|
|
286
312
|
SplitNode,
|
|
287
313
|
SpriteSheetUVNode,
|
|
288
314
|
TimerNode,
|
|
@@ -297,5 +323,9 @@ export {
|
|
|
297
323
|
// loaders
|
|
298
324
|
NodeLoader,
|
|
299
325
|
NodeObjectLoader,
|
|
300
|
-
NodeMaterialLoader
|
|
326
|
+
NodeMaterialLoader,
|
|
327
|
+
|
|
328
|
+
// parsers
|
|
329
|
+
WGSLNodeParser,
|
|
330
|
+
GLSLNodeParser,
|
|
301
331
|
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import TextureNode from './TextureNode.js';
|
|
2
2
|
import UniformNode from '../core/UniformNode.js';
|
|
3
|
-
import
|
|
3
|
+
import ReflectVectorNode from './ReflectVectorNode.js';
|
|
4
|
+
|
|
5
|
+
import { negate, vec3, nodeObject } from '../shadernode/ShaderNodeBaseElements.js';
|
|
4
6
|
|
|
5
7
|
class CubeTextureNode extends TextureNode {
|
|
6
8
|
|
|
@@ -20,7 +22,7 @@ class CubeTextureNode extends TextureNode {
|
|
|
20
22
|
|
|
21
23
|
getConstructHash( builder ) {
|
|
22
24
|
|
|
23
|
-
return `${ this.uuid }
|
|
25
|
+
return `${ this.uuid } / ${ builder.context.environmentContext?.uuid || '' }`;
|
|
24
26
|
|
|
25
27
|
}
|
|
26
28
|
|
|
@@ -28,7 +30,7 @@ class CubeTextureNode extends TextureNode {
|
|
|
28
30
|
|
|
29
31
|
const properties = builder.getNodeProperties( this );
|
|
30
32
|
|
|
31
|
-
const uvNode = this.uvNode || builder.context.uvNode || new
|
|
33
|
+
const uvNode = this.uvNode || builder.context.uvNode || new ReflectVectorNode();
|
|
32
34
|
let levelNode = this.levelNode || builder.context.levelNode;
|
|
33
35
|
|
|
34
36
|
if ( levelNode?.isNode === true ) {
|
|
@@ -72,9 +74,11 @@ class CubeTextureNode extends TextureNode {
|
|
|
72
74
|
|
|
73
75
|
let snippet = nodeData.snippet;
|
|
74
76
|
|
|
75
|
-
if ( builder.context.tempRead === false
|
|
77
|
+
if ( snippet === undefined || builder.context.tempRead === false ) {
|
|
76
78
|
|
|
77
|
-
const
|
|
79
|
+
const uvNodeObject = nodeObject( uvNode );
|
|
80
|
+
const cubeUV = vec3( negate( uvNodeObject.x ), uvNodeObject.yz );
|
|
81
|
+
const uvSnippet = cubeUV.build( builder, 'vec3' );
|
|
78
82
|
|
|
79
83
|
if ( levelNode ) {
|
|
80
84
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import AttributeNode from '../core/AttributeNode.js';
|
|
3
|
-
import
|
|
3
|
+
import VaryingNode from '../core/VaryingNode.js';
|
|
4
4
|
import ModelNode from '../accessors/ModelNode.js';
|
|
5
5
|
import CameraNode from '../accessors/CameraNode.js';
|
|
6
6
|
import OperatorNode from '../math/OperatorNode.js';
|
|
@@ -39,18 +39,18 @@ class NormalNode extends Node {
|
|
|
39
39
|
|
|
40
40
|
} else if ( scope === NormalNode.LOCAL ) {
|
|
41
41
|
|
|
42
|
-
outputNode = new
|
|
42
|
+
outputNode = new VaryingNode( new NormalNode( NormalNode.GEOMETRY ) );
|
|
43
43
|
|
|
44
44
|
} else if ( scope === NormalNode.VIEW ) {
|
|
45
45
|
|
|
46
46
|
const vertexNormalNode = new OperatorNode( '*', new ModelNode( ModelNode.NORMAL_MATRIX ), new NormalNode( NormalNode.LOCAL ) );
|
|
47
|
-
outputNode = new MathNode( MathNode.NORMALIZE, new
|
|
47
|
+
outputNode = new MathNode( MathNode.NORMALIZE, new VaryingNode( vertexNormalNode ) );
|
|
48
48
|
|
|
49
49
|
} else if ( scope === NormalNode.WORLD ) {
|
|
50
50
|
|
|
51
51
|
// To use INVERSE_TRANSFORM_DIRECTION only inverse the param order like this: MathNode( ..., Vector, Matrix );
|
|
52
52
|
const vertexNormalNode = new MathNode( MathNode.TRANSFORM_DIRECTION, new NormalNode( NormalNode.VIEW ), new CameraNode( CameraNode.VIEW_MATRIX ) );
|
|
53
|
-
outputNode = new MathNode( MathNode.NORMALIZE, new
|
|
53
|
+
outputNode = new MathNode( MathNode.NORMALIZE, new VaryingNode( vertexNormalNode ) );
|
|
54
54
|
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import AttributeNode from '../core/AttributeNode.js';
|
|
3
|
-
import
|
|
3
|
+
import VaryingNode from '../core/VaryingNode.js';
|
|
4
4
|
import ModelNode from '../accessors/ModelNode.js';
|
|
5
5
|
import MathNode from '../math/MathNode.js';
|
|
6
6
|
import OperatorNode from '../math/OperatorNode.js';
|
|
@@ -39,22 +39,22 @@ class PositionNode extends Node {
|
|
|
39
39
|
|
|
40
40
|
} else if ( scope === PositionNode.LOCAL ) {
|
|
41
41
|
|
|
42
|
-
outputNode = new
|
|
42
|
+
outputNode = new VaryingNode( new PositionNode( PositionNode.GEOMETRY ) );
|
|
43
43
|
|
|
44
44
|
} else if ( scope === PositionNode.WORLD ) {
|
|
45
45
|
|
|
46
46
|
const vertexPositionNode = new MathNode( MathNode.TRANSFORM_DIRECTION, new ModelNode( ModelNode.WORLD_MATRIX ), new PositionNode( PositionNode.LOCAL ) );
|
|
47
|
-
outputNode = new
|
|
47
|
+
outputNode = new VaryingNode( vertexPositionNode );
|
|
48
48
|
|
|
49
49
|
} else if ( scope === PositionNode.VIEW ) {
|
|
50
50
|
|
|
51
51
|
const vertexPositionNode = new OperatorNode( '*', new ModelNode( ModelNode.VIEW_MATRIX ), new PositionNode( PositionNode.LOCAL ) );
|
|
52
|
-
outputNode = new
|
|
52
|
+
outputNode = new VaryingNode( vertexPositionNode );
|
|
53
53
|
|
|
54
54
|
} else if ( scope === PositionNode.VIEW_DIRECTION ) {
|
|
55
55
|
|
|
56
56
|
const vertexPositionNode = new MathNode( MathNode.NEGATE, new PositionNode( PositionNode.VIEW ) );
|
|
57
|
-
outputNode = new MathNode( MathNode.NORMALIZE, new
|
|
57
|
+
outputNode = new MathNode( MathNode.NORMALIZE, new VaryingNode( vertexPositionNode ) );
|
|
58
58
|
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import {
|
|
3
|
+
transformedNormalView, positionViewDirection,
|
|
4
|
+
transformDirection, negate, reflect, cameraViewMatrix
|
|
5
|
+
} from '../shadernode/ShaderNodeBaseElements.js';
|
|
6
|
+
|
|
7
|
+
class ReflectVectorNode extends Node {
|
|
8
|
+
|
|
9
|
+
constructor() {
|
|
10
|
+
|
|
11
|
+
super( 'vec3' );
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getHash( /*builder*/ ) {
|
|
16
|
+
|
|
17
|
+
return 'reflectVector';
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
construct() {
|
|
22
|
+
|
|
23
|
+
const reflectView = reflect( negate( positionViewDirection ), transformedNormalView );
|
|
24
|
+
|
|
25
|
+
return transformDirection( reflectView, cameraViewMatrix );
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default ReflectVectorNode;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
|
-
import
|
|
2
|
+
import VaryingNode from './VaryingNode.js';
|
|
3
3
|
|
|
4
4
|
class AttributeNode extends Node {
|
|
5
5
|
|
|
@@ -58,9 +58,9 @@ class AttributeNode extends Node {
|
|
|
58
58
|
|
|
59
59
|
} else {
|
|
60
60
|
|
|
61
|
-
const
|
|
61
|
+
const nodeVarying = new VaryingNode( this );
|
|
62
62
|
|
|
63
|
-
return
|
|
63
|
+
return nodeVarying.build( builder, attribute.type );
|
|
64
64
|
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -2,15 +2,15 @@ import Node from './Node.js';
|
|
|
2
2
|
|
|
3
3
|
class CodeNode extends Node {
|
|
4
4
|
|
|
5
|
-
constructor( code = '',
|
|
5
|
+
constructor( code = '', includes = [] ) {
|
|
6
6
|
|
|
7
|
-
super(
|
|
7
|
+
super( 'code' );
|
|
8
8
|
|
|
9
9
|
this.isCodeNode = true;
|
|
10
10
|
|
|
11
11
|
this.code = code;
|
|
12
12
|
|
|
13
|
-
this._includes =
|
|
13
|
+
this._includes = includes;
|
|
14
14
|
|
|
15
15
|
}
|
|
16
16
|
|
|
@@ -40,17 +40,32 @@ class FunctionCallNode extends TempNode {
|
|
|
40
40
|
const inputs = functionNode.getInputs( builder );
|
|
41
41
|
const parameters = this.parameters;
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
if ( Array.isArray( parameters ) ) {
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
for ( let i = 0; i < parameters.length; i ++ ) {
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
const inputNode = inputs[ i ];
|
|
48
|
+
const node = parameters[ i ];
|
|
48
49
|
|
|
49
50
|
params.push( node.build( builder, inputNode.type ) );
|
|
50
51
|
|
|
51
|
-
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
} else {
|
|
55
|
+
|
|
56
|
+
for ( const inputNode of inputs ) {
|
|
57
|
+
|
|
58
|
+
const node = parameters[ inputNode.name ];
|
|
59
|
+
|
|
60
|
+
if ( node !== undefined ) {
|
|
61
|
+
|
|
62
|
+
params.push( node.build( builder, inputNode.type ) );
|
|
63
|
+
|
|
64
|
+
} else {
|
|
65
|
+
|
|
66
|
+
throw new Error( `FunctionCallNode: Input '${inputNode.name}' not found in FunctionNode.` );
|
|
52
67
|
|
|
53
|
-
|
|
68
|
+
}
|
|
54
69
|
|
|
55
70
|
}
|
|
56
71
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NodeUpdateType } from './constants.js';
|
|
2
|
-
import { getNodesKeys } from './NodeUtils.js';
|
|
2
|
+
import { getNodesKeys, getCacheKey } from './NodeUtils.js';
|
|
3
3
|
import { MathUtils } from 'three';
|
|
4
4
|
|
|
5
5
|
let _nodeId = 0;
|
|
@@ -58,6 +58,12 @@ class Node {
|
|
|
58
58
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
getCacheKey() {
|
|
62
|
+
|
|
63
|
+
return getCacheKey( this );
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
|
|
61
67
|
getHash( /*builder*/ ) {
|
|
62
68
|
|
|
63
69
|
return this.uuid;
|
|
@@ -131,15 +137,13 @@ class Node {
|
|
|
131
137
|
|
|
132
138
|
}
|
|
133
139
|
|
|
134
|
-
generate( builder ) {
|
|
140
|
+
generate( builder, output ) {
|
|
135
141
|
|
|
136
142
|
const { outputNode } = builder.getNodeProperties( this );
|
|
137
143
|
|
|
138
144
|
if ( outputNode?.isNode === true ) {
|
|
139
145
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
return outputNode.build( builder, type );
|
|
146
|
+
return outputNode.build( builder, output );
|
|
143
147
|
|
|
144
148
|
}
|
|
145
149
|
|
|
@@ -167,7 +171,7 @@ class Node {
|
|
|
167
171
|
/* expected return:
|
|
168
172
|
- "construct" -> Node
|
|
169
173
|
- "analyze" -> null
|
|
170
|
-
- "
|
|
174
|
+
- "generate" -> String
|
|
171
175
|
*/
|
|
172
176
|
let result = null;
|
|
173
177
|
|
|
@@ -176,13 +180,11 @@ class Node {
|
|
|
176
180
|
if ( buildStage === 'construct' ) {
|
|
177
181
|
|
|
178
182
|
const properties = builder.getNodeProperties( this );
|
|
179
|
-
const nodeData = builder.getDataFromNode( this );
|
|
180
|
-
|
|
181
|
-
if ( properties.initied !== true ) {
|
|
182
183
|
|
|
183
|
-
|
|
184
|
+
if ( properties.initialized !== true || builder.context.tempRead === false ) {
|
|
184
185
|
|
|
185
|
-
properties.
|
|
186
|
+
properties.initialized = true;
|
|
187
|
+
properties.outputNode = this.construct( builder );
|
|
186
188
|
|
|
187
189
|
for ( const childNode of Object.values( properties ) ) {
|
|
188
190
|
|
|
@@ -211,7 +213,7 @@ class Node {
|
|
|
211
213
|
|
|
212
214
|
result = nodeData.snippet;
|
|
213
215
|
|
|
214
|
-
if ( result === undefined ) {
|
|
216
|
+
if ( result === undefined /*|| builder.context.tempRead === false*/ ) {
|
|
215
217
|
|
|
216
218
|
result = this.generate( builder ) || '';
|
|
217
219
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import NodeUniform from './NodeUniform.js';
|
|
2
2
|
import NodeAttribute from './NodeAttribute.js';
|
|
3
|
-
import
|
|
3
|
+
import NodeVarying from './NodeVarying.js';
|
|
4
4
|
import NodeVar from './NodeVar.js';
|
|
5
5
|
import NodeCode from './NodeCode.js';
|
|
6
6
|
import NodeKeywords from './NodeKeywords.js';
|
|
@@ -55,7 +55,7 @@ class NodeBuilder {
|
|
|
55
55
|
this.uniforms = { vertex: [], fragment: [], compute: [], index: 0 };
|
|
56
56
|
this.codes = { vertex: [], fragment: [], compute: [] };
|
|
57
57
|
this.attributes = [];
|
|
58
|
-
this.
|
|
58
|
+
this.varyings = [];
|
|
59
59
|
this.vars = { vertex: [], fragment: [], compute: [] };
|
|
60
60
|
this.flow = { code: '' };
|
|
61
61
|
this.stack = [];
|
|
@@ -456,26 +456,26 @@ class NodeBuilder {
|
|
|
456
456
|
|
|
457
457
|
}
|
|
458
458
|
|
|
459
|
-
|
|
459
|
+
getVaryingFromNode( node, type ) {
|
|
460
460
|
|
|
461
461
|
const nodeData = this.getDataFromNode( node, null );
|
|
462
462
|
|
|
463
|
-
let
|
|
463
|
+
let nodeVarying = nodeData.varying;
|
|
464
464
|
|
|
465
|
-
if (
|
|
465
|
+
if ( nodeVarying === undefined ) {
|
|
466
466
|
|
|
467
|
-
const
|
|
468
|
-
const index =
|
|
467
|
+
const varyings = this.varyings;
|
|
468
|
+
const index = varyings.length;
|
|
469
469
|
|
|
470
|
-
|
|
470
|
+
nodeVarying = new NodeVarying( 'nodeVarying' + index, type );
|
|
471
471
|
|
|
472
|
-
|
|
472
|
+
varyings.push( nodeVarying );
|
|
473
473
|
|
|
474
|
-
nodeData.
|
|
474
|
+
nodeData.varying = nodeVarying;
|
|
475
475
|
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
-
return
|
|
478
|
+
return nodeVarying;
|
|
479
479
|
|
|
480
480
|
}
|
|
481
481
|
|
|
@@ -572,7 +572,7 @@ class NodeBuilder {
|
|
|
572
572
|
|
|
573
573
|
}
|
|
574
574
|
|
|
575
|
-
|
|
575
|
+
getVaryings( /*shaderStage*/ ) {
|
|
576
576
|
|
|
577
577
|
console.warn( 'Abstract function.' );
|
|
578
578
|
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
import { Color, Matrix3, Matrix4, Vector2, Vector3, Vector4 } from 'three';
|
|
2
2
|
|
|
3
|
+
export const getCacheKey = ( object ) => {
|
|
4
|
+
|
|
5
|
+
let cacheKey = '{';
|
|
6
|
+
|
|
7
|
+
if ( object.isNode === true ) {
|
|
8
|
+
|
|
9
|
+
cacheKey += `uuid:"${ object.uuid }",`;
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
for ( const property of getNodesKeys( object ) ) {
|
|
14
|
+
|
|
15
|
+
cacheKey += `${ property }:${ object[ property ].getCacheKey() },`;
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
cacheKey += '}';
|
|
20
|
+
|
|
21
|
+
return cacheKey;
|
|
22
|
+
|
|
23
|
+
};
|
|
24
|
+
|
|
3
25
|
export const getNodesKeys = ( object ) => {
|
|
4
26
|
|
|
5
27
|
const props = [];
|
|
@@ -62,7 +84,7 @@ export const getValueType = ( value ) => {
|
|
|
62
84
|
|
|
63
85
|
export const getValueFromType = ( type, ...params ) => {
|
|
64
86
|
|
|
65
|
-
const last4 = type?.slice( -4 );
|
|
87
|
+
const last4 = type?.slice( - 4 );
|
|
66
88
|
|
|
67
89
|
if ( type === 'color' ) {
|
|
68
90
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
class
|
|
1
|
+
class NodeVarying {
|
|
2
2
|
|
|
3
3
|
constructor( name, type ) {
|
|
4
4
|
|
|
5
|
-
this.
|
|
5
|
+
this.isNodeVarying = true;
|
|
6
6
|
|
|
7
7
|
this.name = name;
|
|
8
8
|
this.type = type;
|
|
@@ -11,4 +11,4 @@ class NodeVary {
|
|
|
11
11
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export default
|
|
14
|
+
export default NodeVarying;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import { NodeShaderStage } from './constants.js';
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class VaryingNode extends Node {
|
|
5
5
|
|
|
6
6
|
constructor( node, name = null ) {
|
|
7
7
|
|
|
@@ -20,7 +20,7 @@ class VaryNode extends Node {
|
|
|
20
20
|
|
|
21
21
|
getNodeType( builder ) {
|
|
22
22
|
|
|
23
|
-
//
|
|
23
|
+
// VaryingNode is auto type
|
|
24
24
|
|
|
25
25
|
return this.node.getNodeType( builder );
|
|
26
26
|
|
|
@@ -32,23 +32,23 @@ class VaryNode extends Node {
|
|
|
32
32
|
const node = this.node;
|
|
33
33
|
const name = this.name;
|
|
34
34
|
|
|
35
|
-
const
|
|
35
|
+
const nodeVarying = builder.getVaryingFromNode( this, type );
|
|
36
36
|
|
|
37
37
|
if ( name !== null ) {
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
nodeVarying.name = name;
|
|
40
40
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
const propertyName = builder.getPropertyName(
|
|
43
|
+
const propertyName = builder.getPropertyName( nodeVarying, NodeShaderStage.Vertex );
|
|
44
44
|
|
|
45
45
|
// force node run in vertex stage
|
|
46
46
|
builder.flowNodeFromShaderStage( NodeShaderStage.Vertex, node, type, propertyName );
|
|
47
47
|
|
|
48
|
-
return builder.getPropertyName(
|
|
48
|
+
return builder.getPropertyName( nodeVarying );
|
|
49
49
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
export default
|
|
54
|
+
export default VaryingNode;
|