super-three 0.167.0 → 0.169.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 +532 -173
- package/build/three.module.js +532 -174
- package/build/three.module.min.js +1 -1
- package/build/three.webgpu.js +18173 -14266
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +79941 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +0 -4
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/controls/ArcballControls.js +174 -158
- package/examples/jsm/controls/DragControls.js +260 -132
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +777 -786
- package/examples/jsm/controls/PointerLockControls.js +24 -15
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +97 -62
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/environments/RoomEnvironment.js +1 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +6 -1
- package/examples/jsm/exporters/KTX2Exporter.js +21 -13
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +9 -7
- package/examples/jsm/exporters/USDZExporter.js +29 -8
- package/examples/jsm/geometries/DecalGeometry.js +4 -1
- package/examples/jsm/geometries/InstancedPointsGeometry.js +1 -1
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lights/LightProbeGenerator.js +24 -10
- package/examples/jsm/loaders/ColladaLoader.js +9 -6
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +30 -20
- package/examples/jsm/loaders/GLTFLoader.js +5 -10
- package/examples/jsm/loaders/KTX2Loader.js +27 -12
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +8 -5
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/VRMLLoader.js +10 -10
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/misc/Timer.js +1 -1
- package/examples/jsm/modifiers/CurveModifierGPU.js +233 -0
- package/examples/jsm/objects/LensflareMesh.js +322 -0
- package/examples/jsm/objects/SkyMesh.js +187 -0
- package/examples/jsm/objects/Water2Mesh.js +158 -0
- package/examples/jsm/objects/WaterMesh.js +101 -0
- package/examples/jsm/physics/JoltPhysics.js +1 -1
- package/examples/jsm/physics/RapierPhysics.js +21 -1
- package/examples/jsm/postprocessing/OutlinePass.js +31 -46
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -2
- package/examples/jsm/shaders/OutputShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -2
- package/examples/jsm/transpiler/TSLEncoder.js +8 -8
- package/examples/jsm/utils/GeometryCompressionUtils.js +37 -122
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/TextureUtils.js +2 -1
- package/examples/jsm/utils/TextureUtilsGPU.js +63 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/package.json +3 -2
- package/src/Three.WebGPU.Nodes.js +200 -0
- package/src/Three.WebGPU.js +7 -0
- package/src/Three.js +1 -0
- package/src/audio/Audio.js +2 -2
- package/src/constants.js +1 -1
- package/src/core/BufferAttribute.js +0 -9
- package/src/core/Clock.js +1 -1
- package/src/core/InterleavedBuffer.js +0 -9
- package/src/extras/Controls.js +32 -0
- package/src/geometries/CylinderGeometry.js +11 -4
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/ObjectLoader.js +3 -3
- package/src/{nodes/loaders → loaders/nodes}/NodeLoader.js +25 -5
- package/src/{nodes/loaders → loaders/nodes}/NodeMaterialLoader.js +21 -18
- package/src/{nodes/loaders → loaders/nodes}/NodeObjectLoader.js +19 -0
- package/src/materials/Material.js +4 -7
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +156 -0
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +56 -59
- package/src/{nodes/materials → materials/nodes}/LineBasicNodeMaterial.js +8 -5
- package/src/{nodes/materials → materials/nodes}/LineDashedNodeMaterial.js +12 -10
- package/src/{nodes/materials → materials/nodes}/MeshBasicNodeMaterial.js +16 -12
- package/src/{nodes/materials → materials/nodes}/MeshLambertNodeMaterial.js +10 -6
- package/src/{nodes/materials → materials/nodes}/MeshMatcapNodeMaterial.js +13 -9
- package/src/{nodes/materials → materials/nodes}/MeshNormalNodeMaterial.js +13 -9
- package/src/{nodes/materials → materials/nodes}/MeshPhongNodeMaterial.js +14 -9
- package/src/{nodes/materials → materials/nodes}/MeshPhysicalNodeMaterial.js +22 -18
- package/src/{nodes/materials → materials/nodes}/MeshSSSNodeMaterial.js +10 -7
- package/src/{nodes/materials → materials/nodes}/MeshStandardNodeMaterial.js +22 -12
- package/src/{nodes/materials → materials/nodes}/MeshToonNodeMaterial.js +9 -5
- package/src/{nodes/materials → materials/nodes}/NodeMaterial.js +71 -115
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -1
- package/src/{nodes/materials → materials/nodes}/PointsNodeMaterial.js +8 -5
- package/src/{nodes/materials → materials/nodes}/ShadowNodeMaterial.js +9 -5
- package/src/{nodes/materials → materials/nodes}/SpriteNodeMaterial.js +47 -14
- package/src/{nodes/materials → materials/nodes}/VolumeNodeMaterial.js +24 -22
- package/src/materials/nodes/manager/NodeMaterialObserver.js +302 -0
- package/src/math/Triangle.js +24 -0
- package/src/nodes/Nodes.js +103 -159
- package/src/nodes/TSL.js +179 -0
- package/src/nodes/accessors/AccessorsUtils.js +8 -8
- package/src/nodes/accessors/BatchNode.js +53 -21
- package/src/nodes/accessors/{BitangentNode.js → Bitangent.js} +9 -9
- package/src/nodes/accessors/BufferAttributeNode.js +8 -5
- package/src/nodes/accessors/BufferNode.js +7 -4
- package/src/nodes/accessors/Camera.js +13 -0
- package/src/nodes/accessors/ClippingNode.js +19 -13
- package/src/nodes/accessors/CubeTextureNode.js +9 -8
- package/src/nodes/accessors/InstanceNode.js +19 -15
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +8 -5
- package/src/nodes/accessors/Lights.js +51 -0
- package/src/nodes/accessors/MaterialNode.js +56 -55
- package/src/nodes/accessors/MaterialProperties.js +3 -0
- package/src/nodes/accessors/MaterialReferenceNode.js +9 -4
- package/src/nodes/accessors/ModelNode.js +47 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +12 -9
- package/src/nodes/accessors/MorphNode.js +17 -13
- package/src/nodes/accessors/Normal.js +88 -0
- package/src/nodes/accessors/Object3DNode.js +17 -33
- package/src/nodes/accessors/PointUVNode.js +9 -5
- package/src/nodes/accessors/Position.js +10 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +171 -0
- package/src/nodes/accessors/ReferenceNode.js +50 -7
- package/src/nodes/accessors/ReflectVector.js +10 -0
- package/src/nodes/accessors/RendererReferenceNode.js +12 -6
- package/src/nodes/accessors/SceneNode.js +9 -6
- package/src/nodes/accessors/SkinningNode.js +88 -21
- package/src/nodes/accessors/StorageBufferNode.js +22 -5
- package/src/nodes/accessors/StorageTextureNode.js +9 -6
- package/src/nodes/accessors/Tangent.js +22 -0
- package/src/nodes/accessors/Texture3DNode.js +16 -13
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +3 -32
- package/src/nodes/accessors/TextureNode.js +29 -23
- package/src/nodes/accessors/TextureSizeNode.js +10 -9
- package/src/nodes/accessors/{UniformsNode.js → UniformArrayNode.js} +26 -14
- package/src/nodes/accessors/UserDataNode.js +10 -7
- package/src/nodes/accessors/VelocityNode.js +134 -0
- package/src/nodes/accessors/VertexColorNode.js +7 -4
- package/src/nodes/code/CodeNode.js +9 -5
- package/src/nodes/code/ExpressionNode.js +10 -6
- package/src/nodes/code/FunctionCallNode.js +8 -5
- package/src/nodes/code/FunctionNode.js +8 -23
- package/src/nodes/code/ScriptableNode.js +13 -10
- package/src/nodes/code/ScriptableValueNode.js +9 -7
- package/src/nodes/core/AssignNode.js +12 -9
- package/src/nodes/core/AttributeNode.js +12 -21
- package/src/nodes/core/BypassNode.js +11 -7
- package/src/nodes/core/CacheNode.js +10 -6
- package/src/nodes/core/ConstNode.js +6 -3
- package/src/nodes/core/ContextNode.js +21 -11
- package/src/nodes/core/IndexNode.js +35 -8
- package/src/nodes/core/InputNode.js +7 -3
- package/src/nodes/core/MRTNode.js +16 -7
- package/src/nodes/core/Node.js +19 -40
- package/src/nodes/core/NodeBuilder.js +117 -38
- package/src/nodes/core/NodeUtils.js +49 -6
- package/src/nodes/core/OutputStructNode.js +10 -6
- package/src/nodes/core/ParameterNode.js +7 -4
- package/src/nodes/core/PropertyNode.js +36 -32
- package/src/nodes/core/StackNode.js +31 -11
- package/src/nodes/core/StructTypeNode.js +7 -3
- package/src/nodes/core/TempNode.js +8 -4
- package/src/nodes/core/UniformGroupNode.js +14 -11
- package/src/nodes/core/UniformNode.js +7 -4
- package/src/nodes/core/VarNode.js +12 -8
- package/src/nodes/core/VaryingNode.js +10 -6
- package/src/nodes/display/AfterImageNode.js +15 -9
- package/src/nodes/display/AnaglyphPassNode.js +67 -0
- package/src/nodes/display/AnamorphicNode.js +17 -11
- package/src/nodes/display/BleachBypass.js +26 -0
- package/src/nodes/display/BlendMode.js +54 -0
- package/src/nodes/display/BloomNode.js +27 -19
- package/src/nodes/display/BumpMapNode.js +13 -12
- package/src/nodes/display/ColorAdjustment.js +46 -0
- package/src/nodes/display/ColorSpaceFunctions.js +38 -0
- package/src/nodes/display/ColorSpaceNode.js +67 -61
- package/src/nodes/display/DenoiseNode.js +23 -17
- package/src/nodes/display/DepthOfFieldNode.js +12 -7
- package/src/nodes/display/DotScreenNode.js +13 -22
- package/src/nodes/display/FXAANode.js +21 -16
- package/src/nodes/display/FilmNode.js +11 -7
- package/src/nodes/display/FrontFacingNode.js +10 -6
- package/src/nodes/display/GTAONode.js +22 -15
- package/src/nodes/display/GaussianBlurNode.js +14 -8
- package/src/nodes/display/Lut3DNode.js +10 -6
- package/src/nodes/display/MotionBlur.js +25 -0
- package/src/nodes/display/NormalMapNode.js +13 -13
- package/src/nodes/display/ParallaxBarrierPassNode.js +58 -0
- package/src/nodes/display/PassNode.js +95 -8
- package/src/nodes/display/PixelationPassNode.js +20 -8
- package/src/nodes/display/PosterizeNode.js +8 -7
- package/src/nodes/display/RGBShiftNode.js +11 -7
- package/src/nodes/display/RenderOutputNode.js +15 -11
- package/src/nodes/display/SSAAPassNode.js +287 -0
- package/src/nodes/display/ScreenNode.js +181 -0
- package/src/nodes/display/Sepia.js +17 -0
- package/src/nodes/display/SobelOperatorNode.js +13 -8
- package/src/nodes/display/StereoCompositePassNode.js +110 -0
- package/src/nodes/display/StereoPassNode.js +83 -0
- package/src/nodes/display/ToneMappingFunctions.js +190 -0
- package/src/nodes/display/ToneMappingNode.js +15 -175
- package/src/nodes/display/ToonOutlinePassNode.js +111 -0
- package/src/nodes/display/TransitionNode.js +12 -8
- package/src/nodes/display/ViewportDepthNode.js +34 -29
- package/src/nodes/display/ViewportDepthTextureNode.js +10 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +10 -9
- package/src/nodes/display/ViewportTextureNode.js +11 -11
- package/src/nodes/fog/FogExp2Node.js +8 -7
- package/src/nodes/fog/FogNode.js +10 -8
- package/src/nodes/fog/FogRangeNode.js +8 -7
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +6 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +1 -1
- package/src/nodes/functions/PhongLightingModel.js +5 -5
- package/src/nodes/functions/PhysicalLightingModel.js +34 -33
- package/src/nodes/functions/ShadowMaskModel.js +1 -1
- package/src/nodes/functions/ToonLightingModel.js +3 -3
- package/src/nodes/functions/material/getGeometryRoughness.js +4 -4
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +9 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +99 -0
- package/src/nodes/gpgpu/BarrierNode.js +40 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +98 -0
- package/src/nodes/gpgpu/ComputeNode.js +10 -6
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +100 -0
- package/src/nodes/lighting/AONode.js +6 -3
- package/src/nodes/lighting/AmbientLightNode.js +6 -8
- package/src/nodes/lighting/AnalyticLightNode.js +225 -36
- package/src/nodes/lighting/BasicEnvironmentNode.js +8 -4
- package/src/nodes/lighting/BasicLightMapNode.js +7 -4
- package/src/nodes/lighting/DirectionalLightNode.js +7 -9
- package/src/nodes/lighting/EnvironmentNode.js +23 -19
- package/src/nodes/lighting/HemisphereLightNode.js +11 -11
- package/src/nodes/lighting/IESSpotLightNode.js +7 -9
- package/src/nodes/lighting/IrradianceNode.js +6 -3
- package/src/nodes/lighting/LightProbeNode.js +53 -0
- package/src/nodes/lighting/LightUtils.js +3 -3
- package/src/nodes/lighting/LightingContextNode.js +19 -18
- package/src/nodes/lighting/LightingNode.js +7 -3
- package/src/nodes/lighting/LightsNode.js +112 -75
- package/src/nodes/lighting/PointLightNode.js +12 -13
- package/src/nodes/lighting/RectAreaLightNode.js +11 -11
- package/src/nodes/lighting/SpotLightNode.js +14 -16
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +36 -31
- package/src/nodes/materialx/lib/mx_noise.js +96 -96
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/{CondNode.js → ConditionalNode.js} +38 -10
- package/src/nodes/math/Hash.js +13 -0
- package/src/nodes/math/MathNode.js +127 -124
- package/src/nodes/math/MathUtils.js +0 -7
- package/src/nodes/math/OperatorNode.js +97 -52
- package/src/nodes/math/TriNoise3D.js +19 -29
- package/src/nodes/pmrem/PMREMNode.js +61 -15
- package/src/nodes/pmrem/PMREMUtils.js +46 -46
- package/src/nodes/procedural/Checker.js +14 -0
- package/src/nodes/tsl/TSLBase.js +30 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +105 -97
- package/src/nodes/utils/ArrayElementNode.js +8 -4
- package/src/nodes/utils/ConvertNode.js +7 -3
- package/src/nodes/utils/CubeMapNode.js +160 -0
- package/src/nodes/utils/Discard.js +8 -0
- package/src/nodes/utils/EquirectUVNode.js +9 -6
- package/src/nodes/utils/FlipNode.js +68 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +9 -5
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +16 -6
- package/src/nodes/utils/MatcapUVNode.js +10 -7
- package/src/nodes/utils/MaxMipLevelNode.js +8 -5
- package/src/nodes/utils/OscNode.js +12 -8
- package/src/nodes/utils/Packing.js +4 -0
- package/src/nodes/utils/RTTNode.js +11 -8
- package/src/nodes/utils/ReflectorNode.js +12 -4
- package/src/nodes/utils/RemapNode.js +12 -8
- package/src/nodes/utils/RotateNode.js +8 -13
- package/src/nodes/utils/SetNode.js +7 -4
- package/src/nodes/utils/SplitNode.js +7 -3
- package/src/nodes/utils/SpriteSheetUVNode.js +10 -6
- package/src/nodes/utils/SpriteUtils.js +47 -0
- package/src/nodes/utils/StorageArrayElementNode.js +11 -12
- package/src/nodes/utils/TimerNode.js +8 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +11 -9
- package/src/nodes/utils/UVUtils.js +19 -0
- package/src/nodes/utils/ViewportUtils.js +14 -0
- package/src/objects/BatchedMesh.js +78 -13
- package/src/objects/LOD.js +21 -0
- package/src/objects/Line.js +1 -0
- package/src/objects/Mesh.js +7 -23
- package/src/objects/Points.js +2 -0
- package/src/renderers/WebGLRenderer.js +88 -41
- package/src/renderers/common/Backend.js +2 -2
- package/src/renderers/common/Background.js +3 -1
- package/src/renderers/common/BindGroup.js +3 -1
- package/src/renderers/common/Bindings.js +13 -15
- package/src/renderers/common/BundleGroup.js +26 -0
- package/src/renderers/common/ClippingContext.js +15 -5
- package/src/renderers/common/CubeRenderTarget.js +9 -3
- package/src/renderers/common/PostProcessing.js +4 -1
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderContext.js +23 -0
- package/src/renderers/common/RenderList.js +1 -1
- package/src/renderers/common/RenderObject.js +117 -6
- package/src/renderers/common/RenderObjects.js +8 -1
- package/src/renderers/common/Renderer.js +128 -94
- package/src/renderers/common/SampledTexture.js +12 -3
- package/src/renderers/common/Textures.js +8 -12
- package/src/renderers/common/extras/PMREMGenerator.js +19 -22
- package/src/renderers/common/nodes/NodeBuilderState.js +4 -4
- package/src/renderers/common/nodes/NodeLibrary.js +118 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +2 -2
- package/src/renderers/common/nodes/Nodes.js +65 -19
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLCapabilities.js +9 -0
- package/src/renderers/webgl/WebGLProgram.js +3 -1
- package/src/renderers/webgl/WebGLPrograms.js +21 -17
- package/src/renderers/webgl/WebGLProperties.js +7 -0
- package/src/renderers/webgl/WebGLState.js +21 -0
- package/src/renderers/webgl/WebGLTextures.js +83 -4
- package/src/renderers/webgl-fallback/WebGLBackend.js +135 -110
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +60 -12
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +6 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +20 -2
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +89 -37
- package/src/renderers/webgpu/WebGPUBackend.js +112 -86
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +42 -0
- package/src/renderers/webgpu/WebGPURenderer.js +9 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +59 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +105 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +189 -73
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +6 -16
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +45 -21
- package/src/renderers/webgpu/utils/WebGPUConstants.js +2 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +7 -16
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +43 -26
- package/src/renderers/webgpu/utils/WebGPUUtils.js +19 -2
- package/src/renderers/webxr/WebXRManager.js +32 -25
- package/src/utils.js +33 -1
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/RotateUVNode.js +0 -35
- /package/src/nodes/accessors/{UVNode.js → UV.js} +0 -0
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import ReferenceNode from './ReferenceNode.js';
|
|
2
2
|
//import { renderGroup } from '../core/UniformGroupNode.js';
|
|
3
3
|
//import { NodeUpdateType } from '../core/constants.js';
|
|
4
|
-
import {
|
|
5
|
-
import { nodeObject } from '../shadernode/ShaderNode.js';
|
|
4
|
+
import { nodeObject } from '../tsl/TSLBase.js';
|
|
6
5
|
|
|
7
6
|
class MaterialReferenceNode extends ReferenceNode {
|
|
8
7
|
|
|
8
|
+
static get type() {
|
|
9
|
+
|
|
10
|
+
return 'MaterialReferenceNode';
|
|
11
|
+
|
|
12
|
+
}
|
|
13
|
+
|
|
9
14
|
constructor( property, inputType, material = null ) {
|
|
10
15
|
|
|
11
16
|
super( property, inputType, material );
|
|
@@ -14,6 +19,8 @@ class MaterialReferenceNode extends ReferenceNode {
|
|
|
14
19
|
|
|
15
20
|
//this.updateType = NodeUpdateType.RENDER;
|
|
16
21
|
|
|
22
|
+
this.isMaterialReferenceNode = true;
|
|
23
|
+
|
|
17
24
|
}
|
|
18
25
|
|
|
19
26
|
/*setNodeType( node ) {
|
|
@@ -37,5 +44,3 @@ class MaterialReferenceNode extends ReferenceNode {
|
|
|
37
44
|
export default MaterialReferenceNode;
|
|
38
45
|
|
|
39
46
|
export const materialReference = ( name, type, material ) => nodeObject( new MaterialReferenceNode( name, type, material ) );
|
|
40
|
-
|
|
41
|
-
addNodeClass( 'MaterialReferenceNode', MaterialReferenceNode );
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import Object3DNode from './Object3DNode.js';
|
|
2
|
-
import {
|
|
3
|
-
import { nodeImmutable } from '../shadernode/ShaderNode.js';
|
|
2
|
+
import { Fn, nodeImmutable } from '../tsl/TSLBase.js';
|
|
4
3
|
import { uniform } from '../core/UniformNode.js';
|
|
5
4
|
|
|
6
5
|
import { Matrix4 } from '../../math/Matrix4.js';
|
|
6
|
+
import { cameraViewMatrix } from './Camera.js';
|
|
7
|
+
import { Matrix3 } from '../../math/Matrix3.js';
|
|
7
8
|
|
|
8
9
|
class ModelNode extends Object3DNode {
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
static get type() {
|
|
12
|
+
|
|
13
|
+
return 'ModelNode';
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
constructor( scope ) {
|
|
11
18
|
|
|
12
19
|
super( scope );
|
|
13
20
|
|
|
@@ -25,13 +32,41 @@ class ModelNode extends Object3DNode {
|
|
|
25
32
|
|
|
26
33
|
export default ModelNode;
|
|
27
34
|
|
|
28
|
-
export const modelDirection = nodeImmutable( ModelNode, ModelNode.DIRECTION );
|
|
29
|
-
export const
|
|
30
|
-
export const
|
|
31
|
-
export const
|
|
32
|
-
export const
|
|
33
|
-
export const
|
|
34
|
-
export const
|
|
35
|
-
export const
|
|
35
|
+
export const modelDirection = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.DIRECTION );
|
|
36
|
+
export const modelWorldMatrix = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.WORLD_MATRIX );
|
|
37
|
+
export const modelPosition = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.POSITION );
|
|
38
|
+
export const modelScale = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.SCALE );
|
|
39
|
+
export const modelViewPosition = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.VIEW_POSITION );
|
|
40
|
+
export const modelNormalMatrix = /*@__PURE__*/ uniform( new Matrix3() ).onObjectUpdate( ( { object }, self ) => self.value.getNormalMatrix( object.matrixWorld ) );
|
|
41
|
+
export const modelWorldMatrixInverse = /*@__PURE__*/ uniform( new Matrix4() ).onObjectUpdate( ( { object }, self ) => self.value.copy( object.matrixWorld ).invert() );
|
|
42
|
+
export const modelViewMatrix = /*@__PURE__*/ cameraViewMatrix.mul( modelWorldMatrix ).toVar( 'modelViewMatrix' );
|
|
43
|
+
|
|
44
|
+
export const highPrecisionModelViewMatrix = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
45
|
+
|
|
46
|
+
builder.context.isHighPrecisionModelViewMatrix = true;
|
|
47
|
+
|
|
48
|
+
return uniform( 'mat4' ).onObjectUpdate( ( { object, camera } ) => {
|
|
49
|
+
|
|
50
|
+
return object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
|
|
51
|
+
|
|
52
|
+
} );
|
|
53
|
+
|
|
54
|
+
} ).once() )().toVar( 'highPrecisionModelViewMatrix' );
|
|
55
|
+
|
|
56
|
+
export const highPrecisionModelNormalViewMatrix = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
57
|
+
|
|
58
|
+
const isHighPrecisionModelViewMatrix = builder.context.isHighPrecisionModelViewMatrix;
|
|
59
|
+
|
|
60
|
+
return uniform( 'mat3' ).onObjectUpdate( ( { object, camera } ) => {
|
|
61
|
+
|
|
62
|
+
if ( isHighPrecisionModelViewMatrix !== true ) {
|
|
63
|
+
|
|
64
|
+
object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
|
|
65
|
+
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return object.normalMatrix.getNormalMatrix( object.modelViewMatrix );
|
|
69
|
+
|
|
70
|
+
} );
|
|
36
71
|
|
|
37
|
-
|
|
72
|
+
} ).once() )().toVar( 'highPrecisionModelNormalMatrix' );
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import { addNodeClass } from '../core/Node.js';
|
|
2
1
|
import TempNode from '../core/TempNode.js';
|
|
3
|
-
import { cameraProjectionMatrix } from './
|
|
2
|
+
import { cameraProjectionMatrix } from './Camera.js';
|
|
3
|
+
import { positionLocal } from './Position.js';
|
|
4
|
+
import { nodeProxy, varying } from '../tsl/TSLBase.js';
|
|
4
5
|
import { modelViewMatrix } from './ModelNode.js';
|
|
5
|
-
import { positionLocal } from './PositionNode.js';
|
|
6
|
-
import { nodeProxy } from '../shadernode/ShaderNode.js';
|
|
7
|
-
import { varying } from '../core/VaryingNode.js';
|
|
8
6
|
|
|
9
7
|
class ModelViewProjectionNode extends TempNode {
|
|
10
8
|
|
|
9
|
+
static get type() {
|
|
10
|
+
|
|
11
|
+
return 'ModelViewProjectionNode';
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
11
15
|
constructor( positionNode = null ) {
|
|
12
16
|
|
|
13
17
|
super( 'vec4' );
|
|
@@ -25,8 +29,9 @@ class ModelViewProjectionNode extends TempNode {
|
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
const position = this.positionNode || positionLocal;
|
|
32
|
+
const viewMatrix = builder.renderer.nodes.modelViewMatrix || modelViewMatrix;
|
|
28
33
|
|
|
29
|
-
return cameraProjectionMatrix.mul(
|
|
34
|
+
return cameraProjectionMatrix.mul( viewMatrix ).mul( position );
|
|
30
35
|
|
|
31
36
|
}
|
|
32
37
|
|
|
@@ -34,6 +39,4 @@ class ModelViewProjectionNode extends TempNode {
|
|
|
34
39
|
|
|
35
40
|
export default ModelViewProjectionNode;
|
|
36
41
|
|
|
37
|
-
export const modelViewProjection = nodeProxy( ModelViewProjectionNode );
|
|
38
|
-
|
|
39
|
-
addNodeClass( 'ModelViewProjectionNode', ModelViewProjectionNode );
|
|
42
|
+
export const modelViewProjection = /*@__PURE__*/ nodeProxy( ModelViewProjectionNode );
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
|
-
import { float, nodeProxy,
|
|
3
|
+
import { float, nodeProxy, Fn } from '../tsl/TSLBase.js';
|
|
4
4
|
import { uniform } from '../core/UniformNode.js';
|
|
5
5
|
import { reference } from './ReferenceNode.js';
|
|
6
|
-
import { positionLocal } from './
|
|
7
|
-
import { normalLocal } from './
|
|
6
|
+
import { positionLocal } from './Position.js';
|
|
7
|
+
import { normalLocal } from './Normal.js';
|
|
8
8
|
import { textureLoad } from './TextureNode.js';
|
|
9
9
|
import { instanceIndex, vertexIndex } from '../core/IndexNode.js';
|
|
10
|
-
import { ivec2, int } from '../
|
|
11
|
-
import {
|
|
10
|
+
import { ivec2, int } from '../tsl/TSLBase.js';
|
|
11
|
+
import { Loop } from '../utils/LoopNode.js';
|
|
12
12
|
|
|
13
13
|
import { DataArrayTexture } from '../../textures/DataArrayTexture.js';
|
|
14
14
|
import { Vector2 } from '../../math/Vector2.js';
|
|
15
15
|
import { Vector4 } from '../../math/Vector4.js';
|
|
16
16
|
import { FloatType } from '../../constants.js';
|
|
17
17
|
|
|
18
|
-
const _morphTextures = new WeakMap();
|
|
18
|
+
const _morphTextures = /*@__PURE__*/ new WeakMap();
|
|
19
19
|
const _morphVec4 = /*@__PURE__*/ new Vector4();
|
|
20
20
|
|
|
21
|
-
const getMorph =
|
|
21
|
+
const getMorph = /*@__PURE__*/ Fn( ( { bufferMap, influence, stride, width, depth, offset } ) => {
|
|
22
22
|
|
|
23
23
|
const texelIndex = int( vertexIndex ).mul( stride ).add( offset );
|
|
24
24
|
|
|
@@ -160,6 +160,12 @@ function getEntry( geometry ) {
|
|
|
160
160
|
|
|
161
161
|
class MorphNode extends Node {
|
|
162
162
|
|
|
163
|
+
static get type() {
|
|
164
|
+
|
|
165
|
+
return 'MorphNode';
|
|
166
|
+
|
|
167
|
+
}
|
|
168
|
+
|
|
163
169
|
constructor( mesh ) {
|
|
164
170
|
|
|
165
171
|
super( 'void' );
|
|
@@ -176,7 +182,7 @@ class MorphNode extends Node {
|
|
|
176
182
|
const { geometry } = builder;
|
|
177
183
|
|
|
178
184
|
const hasMorphPosition = geometry.morphAttributes.position !== undefined;
|
|
179
|
-
const hasMorphNormals = geometry.morphAttributes.normal !== undefined;
|
|
185
|
+
const hasMorphNormals = geometry.hasAttribute( 'normal' ) && geometry.morphAttributes.normal !== undefined;
|
|
180
186
|
|
|
181
187
|
const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
|
|
182
188
|
const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
|
|
@@ -190,7 +196,7 @@ class MorphNode extends Node {
|
|
|
190
196
|
|
|
191
197
|
const width = int( size.width );
|
|
192
198
|
|
|
193
|
-
|
|
199
|
+
Loop( morphTargetsCount, ( { i } ) => {
|
|
194
200
|
|
|
195
201
|
const influence = float( 0 ).toVar();
|
|
196
202
|
|
|
@@ -254,6 +260,4 @@ class MorphNode extends Node {
|
|
|
254
260
|
|
|
255
261
|
export default MorphNode;
|
|
256
262
|
|
|
257
|
-
export const morphReference = nodeProxy( MorphNode );
|
|
258
|
-
|
|
259
|
-
addNodeClass( 'MorphNode', MorphNode );
|
|
263
|
+
export const morphReference = /*@__PURE__*/ nodeProxy( MorphNode );
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { attribute } from '../core/AttributeNode.js';
|
|
2
|
+
import { cameraViewMatrix } from './Camera.js';
|
|
3
|
+
import { modelNormalMatrix, modelWorldMatrix } from './ModelNode.js';
|
|
4
|
+
import { mat3, vec3 } from '../tsl/TSLBase.js';
|
|
5
|
+
import { positionView } from './Position.js';
|
|
6
|
+
import { Fn, varying } from '../tsl/TSLBase.js';
|
|
7
|
+
import { faceDirection } from '../display/FrontFacingNode.js';
|
|
8
|
+
|
|
9
|
+
export const normalGeometry = /*@__PURE__*/ attribute( 'normal', 'vec3' );
|
|
10
|
+
|
|
11
|
+
export const normalLocal = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
12
|
+
|
|
13
|
+
if ( builder.geometry.hasAttribute( 'normal' ) === false ) {
|
|
14
|
+
|
|
15
|
+
console.warn( 'TSL.NormalNode: Vertex attribute "normal" not found on geometry.' );
|
|
16
|
+
|
|
17
|
+
return vec3( 0, 1, 0 );
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return normalGeometry;
|
|
22
|
+
|
|
23
|
+
}, 'vec3' ).once() )().toVar( 'normalLocal' );
|
|
24
|
+
|
|
25
|
+
export const normalFlat = /*@__PURE__*/ positionView.dFdx().cross( positionView.dFdy() ).normalize().toVar( 'normalFlat' );
|
|
26
|
+
|
|
27
|
+
export const normalView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
28
|
+
|
|
29
|
+
let node;
|
|
30
|
+
|
|
31
|
+
if ( builder.material.flatShading === true ) {
|
|
32
|
+
|
|
33
|
+
node = normalFlat;
|
|
34
|
+
|
|
35
|
+
} else {
|
|
36
|
+
|
|
37
|
+
node = varying( transformNormalToView( normalLocal ), 'v_normalView' ).normalize();
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return node;
|
|
42
|
+
|
|
43
|
+
}, 'vec3' ).once() )().toVar( 'normalView' );
|
|
44
|
+
|
|
45
|
+
export const normalWorld = /*@__PURE__*/ varying( normalView.transformDirection( cameraViewMatrix ), 'v_normalWorld' ).normalize().toVar( 'normalWorld' );
|
|
46
|
+
|
|
47
|
+
export const transformedNormalView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
48
|
+
|
|
49
|
+
return builder.context.setupNormal();
|
|
50
|
+
|
|
51
|
+
}, 'vec3' ).once() )().mul( faceDirection ).toVar( 'transformedNormalView' );
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
export const transformedNormalWorld = /*@__PURE__*/ transformedNormalView.transformDirection( cameraViewMatrix ).toVar( 'transformedNormalWorld' );
|
|
55
|
+
|
|
56
|
+
export const transformedClearcoatNormalView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
57
|
+
|
|
58
|
+
return builder.context.setupClearcoatNormal();
|
|
59
|
+
|
|
60
|
+
}, 'vec3' ).once() )().mul( faceDirection ).toVar( 'transformedClearcoatNormalView' );
|
|
61
|
+
|
|
62
|
+
export const transformNormal = /*@__PURE__*/ Fn( ( [ normal, matrix = modelWorldMatrix ] ) => {
|
|
63
|
+
|
|
64
|
+
const m = mat3( matrix );
|
|
65
|
+
|
|
66
|
+
const transformedNormal = normal.div( vec3( m[ 0 ].dot( m[ 0 ] ), m[ 1 ].dot( m[ 1 ] ), m[ 2 ].dot( m[ 2 ] ) ) );
|
|
67
|
+
|
|
68
|
+
return m.mul( transformedNormal ).xyz;
|
|
69
|
+
|
|
70
|
+
} );
|
|
71
|
+
|
|
72
|
+
export const transformNormalToView = /*@__PURE__*/ Fn( ( [ normal ], builder ) => {
|
|
73
|
+
|
|
74
|
+
const modelNormalViewMatrix = builder.renderer.nodes.modelNormalViewMatrix;
|
|
75
|
+
|
|
76
|
+
if ( modelNormalViewMatrix !== null ) {
|
|
77
|
+
|
|
78
|
+
return modelNormalViewMatrix.transformDirection( normal );
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
//
|
|
83
|
+
|
|
84
|
+
const transformedNormal = modelNormalMatrix.mul( normal );
|
|
85
|
+
|
|
86
|
+
return cameraViewMatrix.transformDirection( transformedNormal );
|
|
87
|
+
|
|
88
|
+
} );
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
3
|
import UniformNode from '../core/UniformNode.js';
|
|
4
|
-
import { nodeProxy } from '../
|
|
4
|
+
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
5
5
|
|
|
6
6
|
import { Vector3 } from '../../math/Vector3.js';
|
|
7
7
|
|
|
8
8
|
class Object3DNode extends Node {
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
static get type() {
|
|
11
|
+
|
|
12
|
+
return 'Object3DNode';
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
constructor( scope, object3d = null ) {
|
|
11
17
|
|
|
12
18
|
super();
|
|
13
19
|
|
|
@@ -24,14 +30,10 @@ class Object3DNode extends Node {
|
|
|
24
30
|
|
|
25
31
|
const scope = this.scope;
|
|
26
32
|
|
|
27
|
-
if ( scope === Object3DNode.WORLD_MATRIX
|
|
33
|
+
if ( scope === Object3DNode.WORLD_MATRIX ) {
|
|
28
34
|
|
|
29
35
|
return 'mat4';
|
|
30
36
|
|
|
31
|
-
} else if ( scope === Object3DNode.NORMAL_MATRIX ) {
|
|
32
|
-
|
|
33
|
-
return 'mat3';
|
|
34
|
-
|
|
35
37
|
} else if ( scope === Object3DNode.POSITION || scope === Object3DNode.VIEW_POSITION || scope === Object3DNode.DIRECTION || scope === Object3DNode.SCALE ) {
|
|
36
38
|
|
|
37
39
|
return 'vec3';
|
|
@@ -46,15 +48,7 @@ class Object3DNode extends Node {
|
|
|
46
48
|
const uniformNode = this._uniformNode;
|
|
47
49
|
const scope = this.scope;
|
|
48
50
|
|
|
49
|
-
if ( scope === Object3DNode.
|
|
50
|
-
|
|
51
|
-
uniformNode.value = object.modelViewMatrix;
|
|
52
|
-
|
|
53
|
-
} else if ( scope === Object3DNode.NORMAL_MATRIX ) {
|
|
54
|
-
|
|
55
|
-
uniformNode.value = object.normalMatrix;
|
|
56
|
-
|
|
57
|
-
} else if ( scope === Object3DNode.WORLD_MATRIX ) {
|
|
51
|
+
if ( scope === Object3DNode.WORLD_MATRIX ) {
|
|
58
52
|
|
|
59
53
|
uniformNode.value = object.matrixWorld;
|
|
60
54
|
|
|
@@ -93,14 +87,10 @@ class Object3DNode extends Node {
|
|
|
93
87
|
|
|
94
88
|
const scope = this.scope;
|
|
95
89
|
|
|
96
|
-
if ( scope === Object3DNode.WORLD_MATRIX
|
|
90
|
+
if ( scope === Object3DNode.WORLD_MATRIX ) {
|
|
97
91
|
|
|
98
92
|
this._uniformNode.nodeType = 'mat4';
|
|
99
93
|
|
|
100
|
-
} else if ( scope === Object3DNode.NORMAL_MATRIX ) {
|
|
101
|
-
|
|
102
|
-
this._uniformNode.nodeType = 'mat3';
|
|
103
|
-
|
|
104
94
|
} else if ( scope === Object3DNode.POSITION || scope === Object3DNode.VIEW_POSITION || scope === Object3DNode.DIRECTION || scope === Object3DNode.SCALE ) {
|
|
105
95
|
|
|
106
96
|
this._uniformNode.nodeType = 'vec3';
|
|
@@ -129,8 +119,6 @@ class Object3DNode extends Node {
|
|
|
129
119
|
|
|
130
120
|
}
|
|
131
121
|
|
|
132
|
-
Object3DNode.VIEW_MATRIX = 'viewMatrix';
|
|
133
|
-
Object3DNode.NORMAL_MATRIX = 'normalMatrix';
|
|
134
122
|
Object3DNode.WORLD_MATRIX = 'worldMatrix';
|
|
135
123
|
Object3DNode.POSITION = 'position';
|
|
136
124
|
Object3DNode.SCALE = 'scale';
|
|
@@ -139,12 +127,8 @@ Object3DNode.DIRECTION = 'direction';
|
|
|
139
127
|
|
|
140
128
|
export default Object3DNode;
|
|
141
129
|
|
|
142
|
-
export const objectDirection = nodeProxy( Object3DNode, Object3DNode.DIRECTION );
|
|
143
|
-
export const
|
|
144
|
-
export const
|
|
145
|
-
export const
|
|
146
|
-
export const
|
|
147
|
-
export const objectScale = nodeProxy( Object3DNode, Object3DNode.SCALE );
|
|
148
|
-
export const objectViewPosition = nodeProxy( Object3DNode, Object3DNode.VIEW_POSITION );
|
|
149
|
-
|
|
150
|
-
addNodeClass( 'Object3DNode', Object3DNode );
|
|
130
|
+
export const objectDirection = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.DIRECTION );
|
|
131
|
+
export const objectWorldMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.WORLD_MATRIX );
|
|
132
|
+
export const objectPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.POSITION );
|
|
133
|
+
export const objectScale = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.SCALE );
|
|
134
|
+
export const objectViewPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.VIEW_POSITION );
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import Node
|
|
2
|
-
import { nodeImmutable } from '../
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import { nodeImmutable } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
4
|
class PointUVNode extends Node {
|
|
5
5
|
|
|
6
|
+
static get type() {
|
|
7
|
+
|
|
8
|
+
return 'PointUVNode';
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
6
12
|
constructor() {
|
|
7
13
|
|
|
8
14
|
super( 'vec2' );
|
|
@@ -21,6 +27,4 @@ class PointUVNode extends Node {
|
|
|
21
27
|
|
|
22
28
|
export default PointUVNode;
|
|
23
29
|
|
|
24
|
-
export const pointUV = nodeImmutable( PointUVNode );
|
|
25
|
-
|
|
26
|
-
addNodeClass( 'PointUVNode', PointUVNode );
|
|
30
|
+
export const pointUV = /*@__PURE__*/ nodeImmutable( PointUVNode );
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { attribute } from '../core/AttributeNode.js';
|
|
2
|
+
import { modelWorldMatrix, modelViewMatrix } from './ModelNode.js';
|
|
3
|
+
|
|
4
|
+
export const positionGeometry = /*@__PURE__*/ attribute( 'position', 'vec3' );
|
|
5
|
+
export const positionLocal = /*@__PURE__*/ positionGeometry.varying( 'positionLocal' );
|
|
6
|
+
export const positionPrevious = /*@__PURE__*/ positionGeometry.varying( 'positionPrevious' );
|
|
7
|
+
export const positionWorld = /*@__PURE__*/ modelWorldMatrix.mul( positionLocal ).xyz.varying( 'v_positionWorld' );
|
|
8
|
+
export const positionWorldDirection = /*@__PURE__*/ positionLocal.transformDirection( modelWorldMatrix ).varying( 'v_positionWorldDirection' ).normalize().toVar( 'positionWorldDirection' );
|
|
9
|
+
export const positionView = /*@__PURE__*/ modelViewMatrix.mul( positionLocal ).xyz.varying( 'v_positionView' );
|
|
10
|
+
export const positionViewDirection = /*@__PURE__*/ positionView.negate().varying( 'v_positionViewDirection' ).normalize().toVar( 'positionViewDirection' );
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import { NodeUpdateType } from '../core/constants.js';
|
|
3
|
+
import { uniform } from '../core/UniformNode.js';
|
|
4
|
+
import { nodeObject } from '../tsl/TSLCore.js';
|
|
5
|
+
import ArrayElementNode from '../utils/ArrayElementNode.js';
|
|
6
|
+
|
|
7
|
+
class ReferenceElementNode extends ArrayElementNode {
|
|
8
|
+
|
|
9
|
+
static get type() {
|
|
10
|
+
|
|
11
|
+
return 'ReferenceElementNode';
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
constructor( referenceNode, indexNode ) {
|
|
16
|
+
|
|
17
|
+
super( referenceNode, indexNode );
|
|
18
|
+
|
|
19
|
+
this.referenceNode = referenceNode;
|
|
20
|
+
|
|
21
|
+
this.isReferenceElementNode = true;
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
getNodeType() {
|
|
26
|
+
|
|
27
|
+
return this.referenceNode.uniformType;
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
generate( builder ) {
|
|
32
|
+
|
|
33
|
+
const snippet = super.generate( builder );
|
|
34
|
+
const arrayType = this.referenceNode.getNodeType();
|
|
35
|
+
const elementType = this.getNodeType();
|
|
36
|
+
|
|
37
|
+
return builder.format( snippet, arrayType, elementType );
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
class ReferenceBaseNode extends Node {
|
|
44
|
+
|
|
45
|
+
static get type() {
|
|
46
|
+
|
|
47
|
+
return 'ReferenceBaseNode';
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
constructor( property, uniformType, object = null, count = null ) {
|
|
52
|
+
|
|
53
|
+
super();
|
|
54
|
+
|
|
55
|
+
this.property = property;
|
|
56
|
+
this.uniformType = uniformType;
|
|
57
|
+
this.object = object;
|
|
58
|
+
this.count = count;
|
|
59
|
+
|
|
60
|
+
this.properties = property.split( '.' );
|
|
61
|
+
this.reference = object;
|
|
62
|
+
this.node = null;
|
|
63
|
+
this.group = null;
|
|
64
|
+
|
|
65
|
+
this.updateType = NodeUpdateType.OBJECT;
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
setGroup( group ) {
|
|
70
|
+
|
|
71
|
+
this.group = group;
|
|
72
|
+
|
|
73
|
+
return this;
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
element( indexNode ) {
|
|
78
|
+
|
|
79
|
+
return nodeObject( new ReferenceElementNode( this, nodeObject( indexNode ) ) );
|
|
80
|
+
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
setNodeType( uniformType ) {
|
|
84
|
+
|
|
85
|
+
const node = uniform( null, uniformType ).getSelf();
|
|
86
|
+
|
|
87
|
+
if ( this.group !== null ) {
|
|
88
|
+
|
|
89
|
+
node.setGroup( this.group );
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
this.node = node;
|
|
94
|
+
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
getNodeType( builder ) {
|
|
98
|
+
|
|
99
|
+
if ( this.node === null ) {
|
|
100
|
+
|
|
101
|
+
this.updateReference( builder );
|
|
102
|
+
this.updateValue();
|
|
103
|
+
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return this.node.getNodeType( builder );
|
|
107
|
+
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
getValueFromReference( object = this.reference ) {
|
|
111
|
+
|
|
112
|
+
const { properties } = this;
|
|
113
|
+
|
|
114
|
+
let value = object[ properties[ 0 ] ];
|
|
115
|
+
|
|
116
|
+
for ( let i = 1; i < properties.length; i ++ ) {
|
|
117
|
+
|
|
118
|
+
value = value[ properties[ i ] ];
|
|
119
|
+
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return value;
|
|
123
|
+
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
updateReference( state ) {
|
|
127
|
+
|
|
128
|
+
this.reference = this.object !== null ? this.object : state.object;
|
|
129
|
+
|
|
130
|
+
return this.reference;
|
|
131
|
+
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
setup() {
|
|
135
|
+
|
|
136
|
+
this.updateValue();
|
|
137
|
+
|
|
138
|
+
return this.node;
|
|
139
|
+
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
update( /*frame*/ ) {
|
|
143
|
+
|
|
144
|
+
this.updateValue();
|
|
145
|
+
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
updateValue() {
|
|
149
|
+
|
|
150
|
+
if ( this.node === null ) this.setNodeType( this.uniformType );
|
|
151
|
+
|
|
152
|
+
const value = this.getValueFromReference();
|
|
153
|
+
|
|
154
|
+
if ( Array.isArray( value ) ) {
|
|
155
|
+
|
|
156
|
+
this.node.array = value;
|
|
157
|
+
|
|
158
|
+
} else {
|
|
159
|
+
|
|
160
|
+
this.node.value = value;
|
|
161
|
+
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export default ReferenceBaseNode;
|
|
169
|
+
|
|
170
|
+
export const reference = ( name, type, object ) => nodeObject( new ReferenceBaseNode( name, type, object ) );
|
|
171
|
+
export const referenceBuffer = ( name, type, count, object ) => nodeObject( new ReferenceBaseNode( name, type, object, count ) );
|