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
|
@@ -3,11 +3,10 @@ import NodeAttribute from './NodeAttribute.js';
|
|
|
3
3
|
import NodeVarying from './NodeVarying.js';
|
|
4
4
|
import NodeVar from './NodeVar.js';
|
|
5
5
|
import NodeCode from './NodeCode.js';
|
|
6
|
-
import NodeKeywords from './NodeKeywords.js';
|
|
7
6
|
import NodeCache from './NodeCache.js';
|
|
8
7
|
import ParameterNode from './ParameterNode.js';
|
|
9
8
|
import FunctionNode from '../code/FunctionNode.js';
|
|
10
|
-
import
|
|
9
|
+
import NodeMaterial from '../../materials/nodes/NodeMaterial.js';
|
|
11
10
|
import { NodeUpdateType, defaultBuildStages, shaderStages } from './constants.js';
|
|
12
11
|
|
|
13
12
|
import {
|
|
@@ -16,7 +15,7 @@ import {
|
|
|
16
15
|
} from '../../renderers/common/nodes/NodeUniform.js';
|
|
17
16
|
|
|
18
17
|
import { stack } from './StackNode.js';
|
|
19
|
-
import { getCurrentStack, setCurrentStack } from '../
|
|
18
|
+
import { getCurrentStack, setCurrentStack } from '../tsl/TSLBase.js';
|
|
20
19
|
|
|
21
20
|
import CubeRenderTarget from '../../renderers/common/CubeRenderTarget.js';
|
|
22
21
|
import ChainMap from '../../renderers/common/ChainMap.js';
|
|
@@ -80,6 +79,8 @@ class NodeBuilder {
|
|
|
80
79
|
this.updateAfterNodes = [];
|
|
81
80
|
this.hashNodes = {};
|
|
82
81
|
|
|
82
|
+
this.monitor = null;
|
|
83
|
+
|
|
83
84
|
this.lightsNode = null;
|
|
84
85
|
this.environmentNode = null;
|
|
85
86
|
this.fogNode = null;
|
|
@@ -108,12 +109,9 @@ class NodeBuilder {
|
|
|
108
109
|
this.stacks = [];
|
|
109
110
|
this.tab = '\t';
|
|
110
111
|
|
|
111
|
-
this.instanceBindGroups = true;
|
|
112
|
-
|
|
113
112
|
this.currentFunctionNode = null;
|
|
114
113
|
|
|
115
114
|
this.context = {
|
|
116
|
-
keywords: new NodeKeywords(),
|
|
117
115
|
material: this.material
|
|
118
116
|
};
|
|
119
117
|
|
|
@@ -125,9 +123,11 @@ class NodeBuilder {
|
|
|
125
123
|
this.shaderStage = null;
|
|
126
124
|
this.buildStage = null;
|
|
127
125
|
|
|
126
|
+
this.useComparisonMethod = false;
|
|
127
|
+
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
getBindGroupsCache() {
|
|
131
131
|
|
|
132
132
|
let bindGroupsCache = rendererCache.get( this.renderer );
|
|
133
133
|
|
|
@@ -171,7 +171,7 @@ class NodeBuilder {
|
|
|
171
171
|
|
|
172
172
|
_getBindGroup( groupName, bindings ) {
|
|
173
173
|
|
|
174
|
-
const bindGroupsCache = this.
|
|
174
|
+
const bindGroupsCache = this.getBindGroupsCache();
|
|
175
175
|
|
|
176
176
|
//
|
|
177
177
|
|
|
@@ -197,14 +197,15 @@ class NodeBuilder {
|
|
|
197
197
|
|
|
198
198
|
if ( bindGroup === undefined ) {
|
|
199
199
|
|
|
200
|
-
bindGroup = new BindGroup( groupName, bindingsArray );
|
|
200
|
+
bindGroup = new BindGroup( groupName, bindingsArray, this.bindingsIndexes[ groupName ].group, bindingsArray );
|
|
201
|
+
|
|
201
202
|
bindGroupsCache.set( bindingsArray, bindGroup );
|
|
202
203
|
|
|
203
204
|
}
|
|
204
205
|
|
|
205
206
|
} else {
|
|
206
207
|
|
|
207
|
-
bindGroup = new BindGroup( groupName, bindingsArray );
|
|
208
|
+
bindGroup = new BindGroup( groupName, bindingsArray, this.bindingsIndexes[ groupName ].group, bindingsArray );
|
|
208
209
|
|
|
209
210
|
}
|
|
210
211
|
|
|
@@ -276,6 +277,23 @@ class NodeBuilder {
|
|
|
276
277
|
|
|
277
278
|
}
|
|
278
279
|
|
|
280
|
+
sortBindingGroups() {
|
|
281
|
+
|
|
282
|
+
const bindingsGroups = this.getBindings();
|
|
283
|
+
|
|
284
|
+
bindingsGroups.sort( ( a, b ) => ( a.bindings[ 0 ].groupNode.order - b.bindings[ 0 ].groupNode.order ) );
|
|
285
|
+
|
|
286
|
+
for ( let i = 0; i < bindingsGroups.length; i ++ ) {
|
|
287
|
+
|
|
288
|
+
const bindingGroup = bindingsGroups[ i ];
|
|
289
|
+
this.bindingsIndexes[ bindingGroup.name ].group = i;
|
|
290
|
+
|
|
291
|
+
bindingGroup.index = i;
|
|
292
|
+
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
}
|
|
296
|
+
|
|
279
297
|
setHashNode( node, hash ) {
|
|
280
298
|
|
|
281
299
|
this.hashNodes[ hash ] = node;
|
|
@@ -310,13 +328,13 @@ class NodeBuilder {
|
|
|
310
328
|
|
|
311
329
|
if ( updateBeforeType !== NodeUpdateType.NONE ) {
|
|
312
330
|
|
|
313
|
-
this.updateBeforeNodes.push( node );
|
|
331
|
+
this.updateBeforeNodes.push( node.getSelf() );
|
|
314
332
|
|
|
315
333
|
}
|
|
316
334
|
|
|
317
335
|
if ( updateAfterType !== NodeUpdateType.NONE ) {
|
|
318
336
|
|
|
319
|
-
this.updateAfterNodes.push( node );
|
|
337
|
+
this.updateAfterNodes.push( node.getSelf() );
|
|
320
338
|
|
|
321
339
|
}
|
|
322
340
|
|
|
@@ -399,7 +417,6 @@ class NodeBuilder {
|
|
|
399
417
|
|
|
400
418
|
const context = { ...this.context };
|
|
401
419
|
|
|
402
|
-
delete context.keywords;
|
|
403
420
|
delete context.material;
|
|
404
421
|
|
|
405
422
|
return this.context;
|
|
@@ -469,6 +486,15 @@ class NodeBuilder {
|
|
|
469
486
|
|
|
470
487
|
}
|
|
471
488
|
|
|
489
|
+
increaseUsage( node ) {
|
|
490
|
+
|
|
491
|
+
const nodeData = this.getDataFromNode( node );
|
|
492
|
+
nodeData.usageCount = nodeData.usageCount === undefined ? 1 : nodeData.usageCount + 1;
|
|
493
|
+
|
|
494
|
+
return nodeData.usageCount;
|
|
495
|
+
|
|
496
|
+
}
|
|
497
|
+
|
|
472
498
|
generateTexture( /* texture, textureProperty, uvSnippet */ ) {
|
|
473
499
|
|
|
474
500
|
console.warn( 'Abstract function.' );
|
|
@@ -596,7 +622,7 @@ class NodeBuilder {
|
|
|
596
622
|
|
|
597
623
|
}
|
|
598
624
|
|
|
599
|
-
|
|
625
|
+
needsToWorkingColorSpace( /*texture*/ ) {
|
|
600
626
|
|
|
601
627
|
return false;
|
|
602
628
|
|
|
@@ -915,10 +941,59 @@ class NodeBuilder {
|
|
|
915
941
|
|
|
916
942
|
}
|
|
917
943
|
|
|
918
|
-
|
|
944
|
+
addFlowCodeHierarchy( node, nodeBlock ) {
|
|
945
|
+
|
|
946
|
+
const { flowCodes, flowCodeBlock } = this.getDataFromNode( node );
|
|
947
|
+
|
|
948
|
+
let needsFlowCode = true;
|
|
949
|
+
let nodeBlockHierarchy = nodeBlock;
|
|
950
|
+
|
|
951
|
+
while ( nodeBlockHierarchy ) {
|
|
952
|
+
|
|
953
|
+
if ( flowCodeBlock.get( nodeBlockHierarchy ) === true ) {
|
|
954
|
+
|
|
955
|
+
needsFlowCode = false;
|
|
956
|
+
break;
|
|
957
|
+
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
nodeBlockHierarchy = this.getDataFromNode( nodeBlockHierarchy ).parentNodeBlock;
|
|
961
|
+
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
if ( needsFlowCode ) {
|
|
965
|
+
|
|
966
|
+
for ( const flowCode of flowCodes ) {
|
|
967
|
+
|
|
968
|
+
this.addLineFlowCode( flowCode );
|
|
969
|
+
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
addLineFlowCodeBlock( node, code, nodeBlock ) {
|
|
977
|
+
|
|
978
|
+
const nodeData = this.getDataFromNode( node );
|
|
979
|
+
const flowCodes = nodeData.flowCodes || ( nodeData.flowCodes = [] );
|
|
980
|
+
const codeBlock = nodeData.flowCodeBlock || ( nodeData.flowCodeBlock = new WeakMap() );
|
|
981
|
+
|
|
982
|
+
flowCodes.push( code );
|
|
983
|
+
codeBlock.set( nodeBlock, true );
|
|
984
|
+
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
addLineFlowCode( code, node = null ) {
|
|
919
988
|
|
|
920
989
|
if ( code === '' ) return this;
|
|
921
990
|
|
|
991
|
+
if ( node !== null && this.context.nodeBlock ) {
|
|
992
|
+
|
|
993
|
+
this.addLineFlowCodeBlock( node, code, this.context.nodeBlock );
|
|
994
|
+
|
|
995
|
+
}
|
|
996
|
+
|
|
922
997
|
code = this.tab + code;
|
|
923
998
|
|
|
924
999
|
if ( ! /;\s*$/.test( code ) ) {
|
|
@@ -995,27 +1070,24 @@ class NodeBuilder {
|
|
|
995
1070
|
|
|
996
1071
|
const layout = shaderNode.layout;
|
|
997
1072
|
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
if ( shaderNode.isArrayInput ) {
|
|
1073
|
+
const inputs = {
|
|
1074
|
+
[ Symbol.iterator ]() {
|
|
1001
1075
|
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1076
|
+
let index = 0;
|
|
1077
|
+
const values = Object.values( this );
|
|
1078
|
+
return {
|
|
1079
|
+
next: () => ( {
|
|
1080
|
+
value: values[ index ],
|
|
1081
|
+
done: index ++ >= values.length
|
|
1082
|
+
} )
|
|
1083
|
+
};
|
|
1007
1084
|
|
|
1008
1085
|
}
|
|
1086
|
+
};
|
|
1009
1087
|
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
inputs = {};
|
|
1013
|
-
|
|
1014
|
-
for ( const input of layout.inputs ) {
|
|
1015
|
-
|
|
1016
|
-
inputs[ input.name ] = new ParameterNode( input.type, input.name );
|
|
1088
|
+
for ( const input of layout.inputs ) {
|
|
1017
1089
|
|
|
1018
|
-
|
|
1090
|
+
inputs[ input.name ] = new ParameterNode( input.type, input.name );
|
|
1019
1091
|
|
|
1020
1092
|
}
|
|
1021
1093
|
|
|
@@ -1224,12 +1296,21 @@ class NodeBuilder {
|
|
|
1224
1296
|
|
|
1225
1297
|
build() {
|
|
1226
1298
|
|
|
1227
|
-
const { object, material } = this;
|
|
1228
|
-
|
|
1299
|
+
const { object, material, renderer } = this;
|
|
1229
1300
|
|
|
1230
1301
|
if ( material !== null ) {
|
|
1231
1302
|
|
|
1232
|
-
|
|
1303
|
+
let nodeMaterial = renderer.nodes.library.fromMaterial( material );
|
|
1304
|
+
|
|
1305
|
+
if ( nodeMaterial === null ) {
|
|
1306
|
+
|
|
1307
|
+
console.error( `NodeMaterial: Material "${ material.type }" is not compatible.` );
|
|
1308
|
+
|
|
1309
|
+
nodeMaterial = new NodeMaterial();
|
|
1310
|
+
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
nodeMaterial.build( this );
|
|
1233
1314
|
|
|
1234
1315
|
} else {
|
|
1235
1316
|
|
|
@@ -1301,11 +1382,9 @@ class NodeBuilder {
|
|
|
1301
1382
|
|
|
1302
1383
|
}
|
|
1303
1384
|
|
|
1304
|
-
createNodeMaterial( type = 'NodeMaterial' ) {
|
|
1305
|
-
|
|
1306
|
-
// TODO: Move Materials.js to outside of the Nodes.js in order to remove this function and improve tree-shaking support
|
|
1385
|
+
createNodeMaterial( type = 'NodeMaterial' ) { // @deprecated, r168
|
|
1307
1386
|
|
|
1308
|
-
|
|
1387
|
+
throw new Error( `THREE.NodeBuilder: createNodeMaterial() was deprecated. Use new ${ type }() instead.` );
|
|
1309
1388
|
|
|
1310
1389
|
}
|
|
1311
1390
|
|
|
@@ -5,25 +5,68 @@ import { Vector2 } from '../../math/Vector2.js';
|
|
|
5
5
|
import { Vector3 } from '../../math/Vector3.js';
|
|
6
6
|
import { Vector4 } from '../../math/Vector4.js';
|
|
7
7
|
|
|
8
|
+
// cyrb53 (c) 2018 bryc (github.com/bryc). License: Public domain. Attribution appreciated.
|
|
9
|
+
// A fast and simple 64-bit (or 53-bit) string hash function with decent collision resistance.
|
|
10
|
+
// Largely inspired by MurmurHash2/3, but with a focus on speed/simplicity.
|
|
11
|
+
// See https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript/52171480#52171480
|
|
12
|
+
// https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js
|
|
13
|
+
function cyrb53( value, seed = 0 ) {
|
|
14
|
+
|
|
15
|
+
let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
|
|
16
|
+
|
|
17
|
+
if ( value instanceof Array ) {
|
|
18
|
+
|
|
19
|
+
for ( let i = 0, val; i < value.length; i ++ ) {
|
|
20
|
+
|
|
21
|
+
val = value[ i ];
|
|
22
|
+
h1 = Math.imul( h1 ^ val, 2654435761 );
|
|
23
|
+
h2 = Math.imul( h2 ^ val, 1597334677 );
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
} else {
|
|
28
|
+
|
|
29
|
+
for ( let i = 0, ch; i < value.length; i ++ ) {
|
|
30
|
+
|
|
31
|
+
ch = value.charCodeAt( i );
|
|
32
|
+
h1 = Math.imul( h1 ^ ch, 2654435761 );
|
|
33
|
+
h2 = Math.imul( h2 ^ ch, 1597334677 );
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
h1 = Math.imul( h1 ^ ( h1 >>> 16 ), 2246822507 );
|
|
40
|
+
h1 ^= Math.imul( h2 ^ ( h2 >>> 13 ), 3266489909 );
|
|
41
|
+
h2 = Math.imul( h2 ^ ( h2 >>> 16 ), 2246822507 );
|
|
42
|
+
h2 ^= Math.imul( h1 ^ ( h1 >>> 13 ), 3266489909 );
|
|
43
|
+
|
|
44
|
+
return 4294967296 * ( 2097151 & h2 ) + ( h1 >>> 0 );
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const hashString = ( str ) => cyrb53( str );
|
|
49
|
+
export const hashArray = ( array ) => cyrb53( array );
|
|
50
|
+
export const hash = ( ...params ) => cyrb53( params );
|
|
51
|
+
|
|
8
52
|
export function getCacheKey( object, force = false ) {
|
|
9
53
|
|
|
10
|
-
|
|
54
|
+
const values = [];
|
|
11
55
|
|
|
12
56
|
if ( object.isNode === true ) {
|
|
13
57
|
|
|
14
|
-
|
|
58
|
+
values.push( object.id );
|
|
59
|
+
object = object.getSelf();
|
|
15
60
|
|
|
16
61
|
}
|
|
17
62
|
|
|
18
63
|
for ( const { property, childNode } of getNodeChildren( object ) ) {
|
|
19
64
|
|
|
20
|
-
|
|
65
|
+
values.push( values, cyrb53( property.slice( 0, - 4 ) ), childNode.getCacheKey( force ) );
|
|
21
66
|
|
|
22
67
|
}
|
|
23
68
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return cacheKey;
|
|
69
|
+
return cyrb53( values );
|
|
27
70
|
|
|
28
71
|
}
|
|
29
72
|
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from './Node.js';
|
|
2
2
|
import StructTypeNode from './StructTypeNode.js';
|
|
3
|
-
import { nodeProxy } from '../
|
|
3
|
+
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
5
|
class OutputStructNode extends Node {
|
|
6
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'OutputStructNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
constructor( ...members ) {
|
|
8
14
|
|
|
9
15
|
super();
|
|
@@ -42,7 +48,7 @@ class OutputStructNode extends Node {
|
|
|
42
48
|
|
|
43
49
|
const snippet = members[ i ].build( builder, output );
|
|
44
50
|
|
|
45
|
-
builder.addLineFlowCode( `${ structPrefix }m${ i } = ${ snippet }
|
|
51
|
+
builder.addLineFlowCode( `${ structPrefix }m${ i } = ${ snippet }`, this );
|
|
46
52
|
|
|
47
53
|
}
|
|
48
54
|
|
|
@@ -54,6 +60,4 @@ class OutputStructNode extends Node {
|
|
|
54
60
|
|
|
55
61
|
export default OutputStructNode;
|
|
56
62
|
|
|
57
|
-
export const outputStruct = nodeProxy( OutputStructNode );
|
|
58
|
-
|
|
59
|
-
addNodeClass( 'OutputStructNode', OutputStructNode );
|
|
63
|
+
export const outputStruct = /*@__PURE__*/ nodeProxy( OutputStructNode );
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { nodeObject } from '../shadernode/ShaderNode.js';
|
|
1
|
+
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
2
|
import PropertyNode from './PropertyNode.js';
|
|
4
3
|
|
|
5
4
|
class ParameterNode extends PropertyNode {
|
|
6
5
|
|
|
6
|
+
static get type() {
|
|
7
|
+
|
|
8
|
+
return 'ParameterNode';
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
constructor( nodeType, name = null ) {
|
|
8
13
|
|
|
9
14
|
super( nodeType, name );
|
|
@@ -29,5 +34,3 @@ class ParameterNode extends PropertyNode {
|
|
|
29
34
|
export default ParameterNode;
|
|
30
35
|
|
|
31
36
|
export const parameter = ( type, name ) => nodeObject( new ParameterNode( type, name ) );
|
|
32
|
-
|
|
33
|
-
addNodeClass( 'ParameterNode', ParameterNode );
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import Node
|
|
2
|
-
import { nodeImmutable, nodeObject } from '../
|
|
1
|
+
import Node from './Node.js';
|
|
2
|
+
import { nodeImmutable, nodeObject } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
4
|
class PropertyNode extends Node {
|
|
5
5
|
|
|
6
|
+
static get type() {
|
|
7
|
+
|
|
8
|
+
return 'PropertyNode';
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
6
12
|
constructor( nodeType, name = null, varying = false ) {
|
|
7
13
|
|
|
8
14
|
super( nodeType );
|
|
@@ -52,33 +58,31 @@ export default PropertyNode;
|
|
|
52
58
|
export const property = ( type, name ) => nodeObject( new PropertyNode( type, name ) );
|
|
53
59
|
export const varyingProperty = ( type, name ) => nodeObject( new PropertyNode( type, name, true ) );
|
|
54
60
|
|
|
55
|
-
export const diffuseColor = nodeImmutable( PropertyNode, 'vec4', 'DiffuseColor' );
|
|
56
|
-
export const emissive = nodeImmutable( PropertyNode, 'vec3', 'EmissiveColor' );
|
|
57
|
-
export const roughness = nodeImmutable( PropertyNode, 'float', 'Roughness' );
|
|
58
|
-
export const metalness = nodeImmutable( PropertyNode, 'float', 'Metalness' );
|
|
59
|
-
export const clearcoat = nodeImmutable( PropertyNode, 'float', 'Clearcoat' );
|
|
60
|
-
export const clearcoatRoughness = nodeImmutable( PropertyNode, 'float', 'ClearcoatRoughness' );
|
|
61
|
-
export const sheen = nodeImmutable( PropertyNode, 'vec3', 'Sheen' );
|
|
62
|
-
export const sheenRoughness = nodeImmutable( PropertyNode, 'float', 'SheenRoughness' );
|
|
63
|
-
export const iridescence = nodeImmutable( PropertyNode, 'float', 'Iridescence' );
|
|
64
|
-
export const iridescenceIOR = nodeImmutable( PropertyNode, 'float', 'IridescenceIOR' );
|
|
65
|
-
export const iridescenceThickness = nodeImmutable( PropertyNode, 'float', 'IridescenceThickness' );
|
|
66
|
-
export const alphaT = nodeImmutable( PropertyNode, 'float', 'AlphaT' );
|
|
67
|
-
export const anisotropy = nodeImmutable( PropertyNode, 'float', 'Anisotropy' );
|
|
68
|
-
export const anisotropyT = nodeImmutable( PropertyNode, 'vec3', 'AnisotropyT' );
|
|
69
|
-
export const anisotropyB = nodeImmutable( PropertyNode, 'vec3', 'AnisotropyB' );
|
|
70
|
-
export const specularColor = nodeImmutable( PropertyNode, 'color', 'SpecularColor' );
|
|
71
|
-
export const specularF90 = nodeImmutable( PropertyNode, 'float', 'SpecularF90' );
|
|
72
|
-
export const shininess = nodeImmutable( PropertyNode, 'float', 'Shininess' );
|
|
73
|
-
export const output = nodeImmutable( PropertyNode, 'vec4', 'Output' );
|
|
74
|
-
export const dashSize = nodeImmutable( PropertyNode, 'float', 'dashSize' );
|
|
75
|
-
export const gapSize = nodeImmutable( PropertyNode, 'float', 'gapSize' );
|
|
76
|
-
export const pointWidth = nodeImmutable( PropertyNode, 'float', 'pointWidth' );
|
|
77
|
-
export const ior = nodeImmutable( PropertyNode, 'float', 'IOR' );
|
|
78
|
-
export const transmission = nodeImmutable( PropertyNode, 'float', 'Transmission' );
|
|
79
|
-
export const thickness = nodeImmutable( PropertyNode, 'float', 'Thickness' );
|
|
80
|
-
export const attenuationDistance = nodeImmutable( PropertyNode, 'float', 'AttenuationDistance' );
|
|
81
|
-
export const attenuationColor = nodeImmutable( PropertyNode, 'color', 'AttenuationColor' );
|
|
82
|
-
export const dispersion = nodeImmutable( PropertyNode, 'float', 'Dispersion' );
|
|
83
|
-
|
|
84
|
-
addNodeClass( 'PropertyNode', PropertyNode );
|
|
61
|
+
export const diffuseColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', 'DiffuseColor' );
|
|
62
|
+
export const emissive = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'EmissiveColor' );
|
|
63
|
+
export const roughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Roughness' );
|
|
64
|
+
export const metalness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Metalness' );
|
|
65
|
+
export const clearcoat = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Clearcoat' );
|
|
66
|
+
export const clearcoatRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'ClearcoatRoughness' );
|
|
67
|
+
export const sheen = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'Sheen' );
|
|
68
|
+
export const sheenRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'SheenRoughness' );
|
|
69
|
+
export const iridescence = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Iridescence' );
|
|
70
|
+
export const iridescenceIOR = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IridescenceIOR' );
|
|
71
|
+
export const iridescenceThickness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IridescenceThickness' );
|
|
72
|
+
export const alphaT = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'AlphaT' );
|
|
73
|
+
export const anisotropy = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Anisotropy' );
|
|
74
|
+
export const anisotropyT = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'AnisotropyT' );
|
|
75
|
+
export const anisotropyB = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'AnisotropyB' );
|
|
76
|
+
export const specularColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'color', 'SpecularColor' );
|
|
77
|
+
export const specularF90 = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'SpecularF90' );
|
|
78
|
+
export const shininess = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Shininess' );
|
|
79
|
+
export const output = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', 'Output' );
|
|
80
|
+
export const dashSize = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'dashSize' );
|
|
81
|
+
export const gapSize = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'gapSize' );
|
|
82
|
+
export const pointWidth = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'pointWidth' );
|
|
83
|
+
export const ior = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IOR' );
|
|
84
|
+
export const transmission = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Transmission' );
|
|
85
|
+
export const thickness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Thickness' );
|
|
86
|
+
export const attenuationDistance = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'AttenuationDistance' );
|
|
87
|
+
export const attenuationColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'color', 'AttenuationColor' );
|
|
88
|
+
export const dispersion = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Dispersion' );
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import Node
|
|
2
|
-
import {
|
|
3
|
-
import { ShaderNode, nodeProxy, getCurrentStack, setCurrentStack } from '../
|
|
1
|
+
import Node from './Node.js';
|
|
2
|
+
import { select } from '../math/ConditionalNode.js';
|
|
3
|
+
import { ShaderNode, nodeProxy, getCurrentStack, setCurrentStack } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
5
|
class StackNode extends Node {
|
|
6
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'StackNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
constructor( parent = null ) {
|
|
8
14
|
|
|
9
15
|
super();
|
|
@@ -33,19 +39,19 @@ class StackNode extends Node {
|
|
|
33
39
|
|
|
34
40
|
}
|
|
35
41
|
|
|
36
|
-
|
|
42
|
+
If( boolNode, method ) {
|
|
37
43
|
|
|
38
44
|
const methodNode = new ShaderNode( method );
|
|
39
|
-
this._currentCond =
|
|
45
|
+
this._currentCond = select( boolNode, methodNode );
|
|
40
46
|
|
|
41
47
|
return this.add( this._currentCond );
|
|
42
48
|
|
|
43
49
|
}
|
|
44
50
|
|
|
45
|
-
|
|
51
|
+
ElseIf( boolNode, method ) {
|
|
46
52
|
|
|
47
53
|
const methodNode = new ShaderNode( method );
|
|
48
|
-
const ifNode =
|
|
54
|
+
const ifNode = select( boolNode, methodNode );
|
|
49
55
|
|
|
50
56
|
this._currentCond.elseNode = ifNode;
|
|
51
57
|
this._currentCond = ifNode;
|
|
@@ -54,7 +60,7 @@ class StackNode extends Node {
|
|
|
54
60
|
|
|
55
61
|
}
|
|
56
62
|
|
|
57
|
-
|
|
63
|
+
Else( method ) {
|
|
58
64
|
|
|
59
65
|
this._currentCond.elseNode = new ShaderNode( method );
|
|
60
66
|
|
|
@@ -80,10 +86,24 @@ class StackNode extends Node {
|
|
|
80
86
|
|
|
81
87
|
}
|
|
82
88
|
|
|
89
|
+
//
|
|
90
|
+
|
|
91
|
+
else( ...params ) { // @deprecated, r168
|
|
92
|
+
|
|
93
|
+
console.warn( 'TSL.StackNode: .else() has been renamed to .Else().' );
|
|
94
|
+
return this.Else( ...params );
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
elseif( ...params ) { // @deprecated, r168
|
|
99
|
+
|
|
100
|
+
console.warn( 'TSL.StackNode: .elseif() has been renamed to .ElseIf().' );
|
|
101
|
+
return this.ElseIf( ...params );
|
|
102
|
+
|
|
103
|
+
}
|
|
104
|
+
|
|
83
105
|
}
|
|
84
106
|
|
|
85
107
|
export default StackNode;
|
|
86
108
|
|
|
87
|
-
export const stack = nodeProxy( StackNode );
|
|
88
|
-
|
|
89
|
-
addNodeClass( 'StackNode', StackNode );
|
|
109
|
+
export const stack = /*@__PURE__*/ nodeProxy( StackNode );
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from './Node.js';
|
|
2
2
|
|
|
3
3
|
class StructTypeNode extends Node {
|
|
4
4
|
|
|
5
|
+
static get type() {
|
|
6
|
+
|
|
7
|
+
return 'StructTypeNode';
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
|
|
5
11
|
constructor( types ) {
|
|
6
12
|
|
|
7
13
|
super();
|
|
@@ -20,5 +26,3 @@ class StructTypeNode extends Node {
|
|
|
20
26
|
}
|
|
21
27
|
|
|
22
28
|
export default StructTypeNode;
|
|
23
|
-
|
|
24
|
-
addNodeClass( 'StructTypeNode', StructTypeNode );
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from './Node.js';
|
|
2
2
|
|
|
3
3
|
class TempNode extends Node {
|
|
4
4
|
|
|
5
|
+
static get type() {
|
|
6
|
+
|
|
7
|
+
return 'TempNode';
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
|
|
5
11
|
constructor( type ) {
|
|
6
12
|
|
|
7
13
|
super( type );
|
|
@@ -36,7 +42,7 @@ class TempNode extends Node {
|
|
|
36
42
|
const nodeVar = builder.getVarFromNode( this, null, type );
|
|
37
43
|
const propertyName = builder.getPropertyName( nodeVar );
|
|
38
44
|
|
|
39
|
-
builder.addLineFlowCode( `${propertyName} = ${snippet}
|
|
45
|
+
builder.addLineFlowCode( `${propertyName} = ${snippet}`, this );
|
|
40
46
|
|
|
41
47
|
nodeData.snippet = snippet;
|
|
42
48
|
nodeData.propertyName = propertyName;
|
|
@@ -54,5 +60,3 @@ class TempNode extends Node {
|
|
|
54
60
|
}
|
|
55
61
|
|
|
56
62
|
export default TempNode;
|
|
57
|
-
|
|
58
|
-
addNodeClass( 'TempNode', TempNode );
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
|
-
import { addNodeClass } from './Node.js';
|
|
3
2
|
|
|
4
3
|
class UniformGroupNode extends Node {
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
static get type() {
|
|
6
|
+
|
|
7
|
+
return 'UniformGroupNode';
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
constructor( name, shared = false, order = 1 ) {
|
|
7
12
|
|
|
8
13
|
super( 'string' );
|
|
9
14
|
|
|
@@ -11,7 +16,7 @@ class UniformGroupNode extends Node {
|
|
|
11
16
|
this.version = 0;
|
|
12
17
|
|
|
13
18
|
this.shared = shared;
|
|
14
|
-
|
|
19
|
+
this.order = order;
|
|
15
20
|
this.isUniformGroup = true;
|
|
16
21
|
|
|
17
22
|
}
|
|
@@ -44,13 +49,11 @@ class UniformGroupNode extends Node {
|
|
|
44
49
|
|
|
45
50
|
}
|
|
46
51
|
|
|
47
|
-
export const uniformGroup = ( name ) => new UniformGroupNode( name );
|
|
48
|
-
export const sharedUniformGroup = ( name ) => new UniformGroupNode( name, true );
|
|
49
|
-
|
|
50
|
-
export const frameGroup = sharedUniformGroup( 'frame' );
|
|
51
|
-
export const renderGroup = sharedUniformGroup( 'render' );
|
|
52
|
-
export const objectGroup = uniformGroup( 'object' );
|
|
53
|
-
|
|
54
52
|
export default UniformGroupNode;
|
|
55
53
|
|
|
56
|
-
|
|
54
|
+
export const uniformGroup = ( name ) => new UniformGroupNode( name );
|
|
55
|
+
export const sharedUniformGroup = ( name, order = 0 ) => new UniformGroupNode( name, true, order );
|
|
56
|
+
|
|
57
|
+
export const frameGroup = /*@__PURE__*/ sharedUniformGroup( 'frame' );
|
|
58
|
+
export const renderGroup = /*@__PURE__*/ sharedUniformGroup( 'render' );
|
|
59
|
+
export const objectGroup = /*@__PURE__*/ uniformGroup( 'object' );
|