super-three 0.171.0 → 0.172.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +157 -49
- package/build/three.core.js +104 -42
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +53 -8
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +10 -5
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +21191 -1008
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +21189 -1008
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +0 -5
- package/examples/jsm/animation/CCDIKSolver.js +3 -2
- package/examples/jsm/controls/ArcballControls.js +28 -19
- package/examples/jsm/controls/OrbitControls.js +5 -4
- package/examples/jsm/csm/CSMShadowNode.js +16 -11
- package/examples/jsm/curves/NURBSCurve.js +1 -1
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +11 -7
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +2 -2
- package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/lights/LightProbeGenerator.js +3 -3
- package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
- package/examples/jsm/loaders/3MFLoader.js +6 -3
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +5 -5
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/GCodeLoader.js +1 -1
- package/examples/jsm/loaders/GLTFLoader.js +22 -2
- package/examples/jsm/loaders/KTX2Loader.js +6 -1
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MTLLoader.js +1 -0
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +7 -7
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +1 -1
- package/examples/jsm/loaders/VRMLLoader.js +7 -7
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +10 -10
- package/examples/jsm/misc/Volume.js +20 -12
- package/examples/jsm/misc/VolumeSlice.js +2 -2
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/objects/WaterMesh.js +4 -4
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +4 -4
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +2 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
- package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
- package/examples/jsm/tsl/display/BleachBypass.js +10 -0
- package/examples/jsm/tsl/display/BloomNode.js +233 -26
- package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
- package/examples/jsm/tsl/display/FXAANode.js +52 -3
- package/examples/jsm/tsl/display/FilmNode.js +47 -1
- package/examples/jsm/tsl/display/GTAONode.js +210 -14
- package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
- package/examples/jsm/tsl/display/LensflareNode.js +131 -13
- package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
- package/examples/jsm/tsl/display/MotionBlur.js +12 -2
- package/examples/jsm/tsl/display/OutlineNode.js +343 -26
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
- package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
- package/examples/jsm/tsl/display/SMAANode.js +187 -46
- package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
- package/examples/jsm/tsl/display/SSRNode.js +194 -21
- package/examples/jsm/tsl/display/Sepia.js +9 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
- package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
- package/examples/jsm/tsl/display/TransitionNode.js +71 -6
- package/examples/jsm/tsl/display/hashBlur.js +14 -3
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +8 -3
- package/src/Three.Core.js +2 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +9 -4
- package/src/Three.WebGPU.Nodes.js +2 -2
- package/src/Three.WebGPU.js +2 -2
- package/src/animation/PropertyBinding.js +2 -2
- package/src/cameras/PerspectiveCamera.js +18 -2
- package/src/constants.js +1 -1
- package/src/core/RenderTarget.js +18 -0
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Earcut.js +1 -1
- package/src/extras/PMREMGenerator.js +20 -0
- package/src/extras/TextureUtils.js +6 -0
- package/src/helpers/CameraHelper.js +16 -13
- package/src/loaders/nodes/NodeLoader.js +59 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +72 -19
- package/src/materials/nodes/Line2NodeMaterial.js +128 -34
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
- package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
- package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +474 -21
- package/src/materials/nodes/PointsNodeMaterial.js +22 -13
- package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +77 -19
- package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
- package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -0
- package/src/nodes/Nodes.js +1 -6
- package/src/nodes/TSL.js +2 -3
- package/src/nodes/accessors/AccessorsUtils.js +27 -0
- package/src/nodes/accessors/Arrays.js +24 -5
- package/src/nodes/accessors/BatchNode.js +39 -3
- package/src/nodes/accessors/Bitangent.js +37 -0
- package/src/nodes/accessors/BufferAttributeNode.js +178 -5
- package/src/nodes/accessors/BufferNode.js +63 -0
- package/src/nodes/accessors/BuiltinNode.js +38 -0
- package/src/nodes/accessors/Camera.js +49 -0
- package/src/nodes/accessors/ClippingNode.js +71 -2
- package/src/nodes/accessors/CubeTextureNode.js +64 -0
- package/src/nodes/accessors/InstanceNode.js +85 -2
- package/src/nodes/accessors/InstancedMeshNode.js +28 -3
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +13 -0
- package/src/nodes/accessors/Lights.js +50 -1
- package/src/nodes/accessors/MaterialNode.js +302 -8
- package/src/nodes/accessors/MaterialProperties.js +7 -0
- package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
- package/src/nodes/accessors/ModelNode.js +100 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
- package/src/nodes/accessors/MorphNode.js +48 -4
- package/src/nodes/accessors/Normal.js +59 -3
- package/src/nodes/accessors/Object3DNode.js +102 -1
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +53 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +188 -0
- package/src/nodes/accessors/ReferenceNode.js +202 -2
- package/src/nodes/accessors/ReflectVector.js +24 -0
- package/src/nodes/accessors/RendererReferenceNode.js +46 -1
- package/src/nodes/accessors/SceneNode.js +54 -0
- package/src/nodes/accessors/SkinningNode.js +127 -1
- package/src/nodes/accessors/StorageBufferNode.js +168 -4
- package/src/nodes/accessors/StorageTextureNode.js +118 -0
- package/src/nodes/accessors/Tangent.js +36 -0
- package/src/nodes/accessors/Texture3DNode.js +89 -5
- package/src/nodes/accessors/TextureBicubic.js +12 -2
- package/src/nodes/accessors/TextureNode.js +309 -10
- package/src/nodes/accessors/TextureSizeNode.js +42 -0
- package/src/nodes/accessors/UV.js +10 -1
- package/src/nodes/accessors/UniformArrayNode.js +223 -23
- package/src/nodes/accessors/UserDataNode.js +46 -0
- package/src/nodes/accessors/VelocityNode.js +82 -0
- package/src/nodes/accessors/VertexColorNode.js +39 -2
- package/src/nodes/code/CodeNode.js +95 -1
- package/src/nodes/code/ExpressionNode.js +28 -0
- package/src/nodes/code/FunctionCallNode.js +37 -0
- package/src/nodes/code/FunctionNode.js +45 -0
- package/src/nodes/code/ScriptableNode.js +223 -1
- package/src/nodes/code/ScriptableValueNode.js +85 -1
- package/src/nodes/core/AssignNode.js +48 -2
- package/src/nodes/core/AttributeNode.js +43 -0
- package/src/nodes/core/BypassNode.js +47 -2
- package/src/nodes/core/CacheNode.js +53 -2
- package/src/nodes/core/ConstNode.js +24 -0
- package/src/nodes/core/ContextNode.js +65 -0
- package/src/nodes/core/IndexNode.js +68 -7
- package/src/nodes/core/InputNode.js +48 -0
- package/src/nodes/core/LightingModel.js +60 -0
- package/src/nodes/core/MRTNode.js +66 -0
- package/src/nodes/core/Node.js +337 -12
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +945 -15
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +141 -0
- package/src/nodes/core/NodeVar.js +30 -0
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +33 -2
- package/src/nodes/core/ParameterNode.js +28 -0
- package/src/nodes/core/PropertyNode.js +232 -0
- package/src/nodes/core/StackNode.js +78 -0
- package/src/nodes/core/StructTypeNode.js +39 -1
- package/src/nodes/core/TempNode.js +30 -4
- package/src/nodes/core/UniformGroupNode.js +82 -7
- package/src/nodes/core/UniformNode.js +66 -0
- package/src/nodes/core/VarNode.js +52 -0
- package/src/nodes/core/VaryingNode.js +83 -2
- package/src/nodes/core/constants.js +36 -0
- package/src/nodes/display/BumpMapNode.js +37 -0
- package/src/nodes/display/ColorAdjustment.js +53 -11
- package/src/nodes/display/ColorSpaceFunctions.js +16 -0
- package/src/nodes/display/ColorSpaceNode.js +82 -0
- package/src/nodes/display/FrontFacingNode.js +29 -0
- package/src/nodes/display/NormalMapNode.js +43 -0
- package/src/nodes/display/PassNode.js +298 -7
- package/src/nodes/display/PosterizeNode.js +33 -0
- package/src/nodes/display/RenderOutputNode.js +66 -1
- package/src/nodes/display/ScreenNode.js +87 -0
- package/src/nodes/display/ToneMappingFunctions.js +58 -10
- package/src/nodes/display/ToneMappingNode.js +55 -2
- package/src/nodes/display/ToonOutlinePassNode.js +73 -0
- package/src/nodes/display/ViewportDepthNode.js +122 -8
- package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
- package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
- package/src/nodes/display/ViewportTextureNode.js +57 -0
- package/src/nodes/fog/Fog.js +93 -0
- package/src/nodes/functions/BasicLightingModel.js +24 -0
- package/src/nodes/functions/PhongLightingModel.js +34 -2
- package/src/nodes/functions/PhysicalLightingModel.js +167 -8
- package/src/nodes/functions/ShadowMaskModel.js +23 -0
- package/src/nodes/functions/ToonLightingModel.js +20 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
- package/src/nodes/geometry/RangeNode.js +54 -2
- package/src/nodes/gpgpu/AtomicFunctionNode.js +157 -1
- package/src/nodes/gpgpu/BarrierNode.js +47 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +126 -0
- package/src/nodes/gpgpu/ComputeNode.js +106 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +97 -2
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +10 -0
- package/src/nodes/lighting/EnvironmentNode.js +18 -0
- package/src/nodes/lighting/HemisphereLightNode.js +31 -0
- package/src/nodes/lighting/IESSpotLightNode.js +11 -0
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +12 -0
- package/src/nodes/lighting/LightingContextNode.js +48 -0
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +132 -1
- package/src/nodes/lighting/PointLightNode.js +32 -1
- package/src/nodes/lighting/PointShadowNode.js +54 -1
- package/src/nodes/lighting/RectAreaLightNode.js +44 -6
- package/src/nodes/lighting/ShadowBaseNode.js +93 -0
- package/src/nodes/lighting/ShadowNode.js +240 -34
- package/src/nodes/lighting/SpotLightNode.js +43 -0
- package/src/nodes/math/ConditionalNode.js +70 -3
- package/src/nodes/math/Hash.js +9 -0
- package/src/nodes/math/MathNode.js +614 -11
- package/src/nodes/math/MathUtils.js +45 -1
- package/src/nodes/math/OperatorNode.js +233 -0
- package/src/nodes/math/TriNoise3D.js +18 -7
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +133 -0
- package/src/nodes/pmrem/PMREMUtils.js +1 -1
- package/src/nodes/procedural/Checker.js +9 -0
- package/src/nodes/tsl/TSLBase.js +2 -2
- package/src/nodes/utils/ArrayElementNode.js +38 -2
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +78 -0
- package/src/nodes/utils/Discard.js +16 -0
- package/src/nodes/utils/EquirectUVNode.js +31 -1
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
- package/src/nodes/utils/JoinNode.js +25 -0
- package/src/nodes/utils/LoopNode.js +74 -1
- package/src/nodes/utils/MatcapUVNode.js +17 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -0
- package/src/nodes/utils/Oscillators.js +33 -0
- package/src/nodes/utils/Packing.js +17 -0
- package/src/nodes/utils/PostProcessingUtils.js +28 -23
- package/src/nodes/utils/RTTNode.js +123 -2
- package/src/nodes/utils/ReflectorNode.js +174 -4
- package/src/nodes/utils/RemapNode.js +79 -0
- package/src/nodes/utils/RotateNode.js +41 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +55 -3
- package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
- package/src/nodes/utils/SpriteUtils.js +17 -0
- package/src/nodes/utils/StorageArrayElementNode.js +40 -0
- package/src/nodes/utils/Timer.js +19 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
- package/src/nodes/utils/UVUtils.js +20 -0
- package/src/nodes/utils/ViewportUtils.js +13 -0
- package/src/objects/BatchedMesh.js +1 -2
- package/src/objects/ClippingGroup.js +49 -0
- package/src/renderers/WebGLRenderer.js +23 -4
- package/src/renderers/common/Animation.js +63 -0
- package/src/renderers/common/Attributes.js +36 -0
- package/src/renderers/common/Backend.js +467 -52
- package/src/renderers/common/Background.js +34 -1
- package/src/renderers/common/BindGroup.js +43 -0
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +93 -1
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +27 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/ChainMap.js +38 -1
- package/src/renderers/common/ClippingContext.js +107 -14
- package/src/renderers/common/Color4.js +36 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +98 -0
- package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
- package/src/renderers/common/Info.js +87 -0
- package/src/renderers/common/Lighting.js +26 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +75 -3
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +54 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +33 -10
- package/src/renderers/common/RenderContext.js +169 -4
- package/src/renderers/common/RenderContexts.js +42 -2
- package/src/renderers/common/RenderList.js +178 -0
- package/src/renderers/common/RenderLists.js +31 -0
- package/src/renderers/common/RenderObject.js +328 -4
- package/src/renderers/common/RenderObjects.js +101 -7
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1096 -31
- package/src/renderers/common/RendererUtils.js +193 -0
- package/src/renderers/common/SampledTexture.js +121 -0
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +83 -0
- package/src/renderers/common/Uniform.js +188 -2
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +139 -2
- package/src/renderers/common/extras/PMREMGenerator.js +24 -3
- package/src/renderers/common/nodes/NodeBuilderState.js +95 -1
- package/src/renderers/common/nodes/NodeLibrary.js +89 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +91 -2
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
- package/src/renderers/common/nodes/NodeUniform.js +189 -0
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +327 -60
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/webgl-fallback/WebGLBackend.js +547 -29
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +0 -1
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +480 -49
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +34 -0
- package/src/renderers/webgpu/WebGPURenderer.js +35 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +59 -11
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +10 -8
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +5 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +30 -0
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +7 -1
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/Texture.js +4 -0
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
- package/examples/jsm/animation/MMDPhysics.js +0 -1408
- package/examples/jsm/exporters/MMDExporter.js +0 -223
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/MMDLoader.js +0 -2298
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/renderers/common/PostProcessingUtils.js +0 -86
|
@@ -1,10 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* {@link NodeBuilder} is going to create instances of this class during the build process
|
|
3
|
+
* of nodes. They represent the final shader variables that are going to be generated
|
|
4
|
+
* by the builder. A dictionary of node variables is maintained in {@link NodeBuilder#vars} for
|
|
5
|
+
* this purpose.
|
|
6
|
+
*/
|
|
1
7
|
class NodeVar {
|
|
2
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Constructs a new node variable.
|
|
11
|
+
*
|
|
12
|
+
* @param {String} name - The name of the variable.
|
|
13
|
+
* @param {String} type - The type of the variable.
|
|
14
|
+
*/
|
|
3
15
|
constructor( name, type ) {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* This flag can be used for type testing.
|
|
19
|
+
*
|
|
20
|
+
* @type {Boolean}
|
|
21
|
+
* @readonly
|
|
22
|
+
* @default true
|
|
23
|
+
*/
|
|
5
24
|
this.isNodeVar = true;
|
|
6
25
|
|
|
26
|
+
/**
|
|
27
|
+
* The name of the variable.
|
|
28
|
+
*
|
|
29
|
+
* @type {String}
|
|
30
|
+
*/
|
|
7
31
|
this.name = name;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The type of the variable.
|
|
35
|
+
*
|
|
36
|
+
* @type {String}
|
|
37
|
+
*/
|
|
8
38
|
this.type = type;
|
|
9
39
|
|
|
10
40
|
}
|
|
@@ -1,13 +1,41 @@
|
|
|
1
1
|
import NodeVar from './NodeVar.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* {@link NodeBuilder} is going to create instances of this class during the build process
|
|
5
|
+
* of nodes. They represent the final shader varyings that are going to be generated
|
|
6
|
+
* by the builder. An array of node varyings is maintained in {@link NodeBuilder#varyings} for
|
|
7
|
+
* this purpose.
|
|
8
|
+
*
|
|
9
|
+
* @augments NodeVar
|
|
10
|
+
*/
|
|
3
11
|
class NodeVarying extends NodeVar {
|
|
4
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new node varying.
|
|
15
|
+
*
|
|
16
|
+
* @param {String} name - The name of the varying.
|
|
17
|
+
* @param {String} type - The type of the varying.
|
|
18
|
+
*/
|
|
5
19
|
constructor( name, type ) {
|
|
6
20
|
|
|
7
21
|
super( name, type );
|
|
8
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Whether this varying requires interpolation or not. This property can be used
|
|
25
|
+
* to check if the varying can be optimized for a variable.
|
|
26
|
+
*
|
|
27
|
+
* @type {Boolean}
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
9
30
|
this.needsInterpolation = false;
|
|
10
31
|
|
|
32
|
+
/**
|
|
33
|
+
* This flag can be used for type testing.
|
|
34
|
+
*
|
|
35
|
+
* @type {Boolean}
|
|
36
|
+
* @readonly
|
|
37
|
+
* @default true
|
|
38
|
+
*/
|
|
11
39
|
this.isNodeVarying = true;
|
|
12
40
|
|
|
13
41
|
}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
|
-
import StructTypeNode from './StructTypeNode.js';
|
|
3
2
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
4
3
|
|
|
4
|
+
/** @module OutputStructNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* This node can be used to define multiple outputs in a shader programs.
|
|
8
|
+
*
|
|
9
|
+
* @augments Node
|
|
10
|
+
*/
|
|
5
11
|
class OutputStructNode extends Node {
|
|
6
12
|
|
|
7
13
|
static get type() {
|
|
@@ -10,12 +16,30 @@ class OutputStructNode extends Node {
|
|
|
10
16
|
|
|
11
17
|
}
|
|
12
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new output struct node. The constructor can be invoked with an
|
|
21
|
+
* arbitrary number of nodes representing the members.
|
|
22
|
+
*
|
|
23
|
+
* @param {...Node} members - A parameter list of nodes.
|
|
24
|
+
*/
|
|
13
25
|
constructor( ...members ) {
|
|
14
26
|
|
|
15
27
|
super();
|
|
16
28
|
|
|
29
|
+
/**
|
|
30
|
+
* An array of nodes which defines the output.
|
|
31
|
+
*
|
|
32
|
+
* @type {Array<Node>}
|
|
33
|
+
*/
|
|
17
34
|
this.members = members;
|
|
18
35
|
|
|
36
|
+
/**
|
|
37
|
+
* This flag can be used for type testing.
|
|
38
|
+
*
|
|
39
|
+
* @type {Boolean}
|
|
40
|
+
* @readonly
|
|
41
|
+
* @default true
|
|
42
|
+
*/
|
|
19
43
|
this.isOutputStructNode = true;
|
|
20
44
|
|
|
21
45
|
}
|
|
@@ -33,7 +57,7 @@ class OutputStructNode extends Node {
|
|
|
33
57
|
|
|
34
58
|
}
|
|
35
59
|
|
|
36
|
-
this.nodeType = builder.getStructTypeFromNode(
|
|
60
|
+
this.nodeType = builder.getStructTypeFromNode( this, types ).name;
|
|
37
61
|
|
|
38
62
|
}
|
|
39
63
|
|
|
@@ -60,4 +84,11 @@ class OutputStructNode extends Node {
|
|
|
60
84
|
|
|
61
85
|
export default OutputStructNode;
|
|
62
86
|
|
|
87
|
+
/**
|
|
88
|
+
* TSL function for creating an output struct node.
|
|
89
|
+
*
|
|
90
|
+
* @function
|
|
91
|
+
* @param {...Node} members - A parameter list of nodes.
|
|
92
|
+
* @returns {OutputStructNode}
|
|
93
|
+
*/
|
|
63
94
|
export const outputStruct = /*@__PURE__*/ nodeProxy( OutputStructNode );
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
2
2
|
import PropertyNode from './PropertyNode.js';
|
|
3
3
|
|
|
4
|
+
/** @module ParameterNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Special version of {@link PropertyNode} which is used for parameters.
|
|
8
|
+
*
|
|
9
|
+
* @augments PropertyNode
|
|
10
|
+
*/
|
|
4
11
|
class ParameterNode extends PropertyNode {
|
|
5
12
|
|
|
6
13
|
static get type() {
|
|
@@ -9,10 +16,23 @@ class ParameterNode extends PropertyNode {
|
|
|
9
16
|
|
|
10
17
|
}
|
|
11
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new parameter node.
|
|
21
|
+
*
|
|
22
|
+
* @param {String} nodeType - The type of the node.
|
|
23
|
+
* @param {String?} [name=null] - The name of the parameter in the shader.
|
|
24
|
+
*/
|
|
12
25
|
constructor( nodeType, name = null ) {
|
|
13
26
|
|
|
14
27
|
super( nodeType, name );
|
|
15
28
|
|
|
29
|
+
/**
|
|
30
|
+
* This flag can be used for type testing.
|
|
31
|
+
*
|
|
32
|
+
* @type {Boolean}
|
|
33
|
+
* @readonly
|
|
34
|
+
* @default true
|
|
35
|
+
*/
|
|
16
36
|
this.isParameterNode = true;
|
|
17
37
|
|
|
18
38
|
}
|
|
@@ -33,4 +53,12 @@ class ParameterNode extends PropertyNode {
|
|
|
33
53
|
|
|
34
54
|
export default ParameterNode;
|
|
35
55
|
|
|
56
|
+
/**
|
|
57
|
+
* TSL function for creating a parameter node.
|
|
58
|
+
*
|
|
59
|
+
* @function
|
|
60
|
+
* @param {String} type - The type of the node.
|
|
61
|
+
* @param {String?} name - The name of the parameter in the shader.
|
|
62
|
+
* @returns {ParameterNode}
|
|
63
|
+
*/
|
|
36
64
|
export const parameter = ( type, name ) => nodeObject( new ParameterNode( type, name ) );
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import { nodeImmutable, nodeObject } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
+
/** @module PropertyNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* This class represents a shader property. It can be used
|
|
8
|
+
* to explicitly define a property and assign a value to it.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const threshold = property( 'float', 'threshold' ).assign( THRESHOLD );
|
|
12
|
+
*```
|
|
13
|
+
* `PropertyNode` is used by the engine to predefined common material properties
|
|
14
|
+
* for TSL code.
|
|
15
|
+
*
|
|
16
|
+
* @augments Node
|
|
17
|
+
*/
|
|
4
18
|
class PropertyNode extends Node {
|
|
5
19
|
|
|
6
20
|
static get type() {
|
|
@@ -9,13 +23,41 @@ class PropertyNode extends Node {
|
|
|
9
23
|
|
|
10
24
|
}
|
|
11
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new property node.
|
|
28
|
+
*
|
|
29
|
+
* @param {String} nodeType - The type of the node.
|
|
30
|
+
* @param {String?} [name=null] - The name of the property in the shader.
|
|
31
|
+
* @param {Boolean} [varying=false] - Whether this property is a varying or not.
|
|
32
|
+
*/
|
|
12
33
|
constructor( nodeType, name = null, varying = false ) {
|
|
13
34
|
|
|
14
35
|
super( nodeType );
|
|
15
36
|
|
|
37
|
+
/**
|
|
38
|
+
* The name of the property in the shader. If no name is defined,
|
|
39
|
+
* the node system auto-generates one.
|
|
40
|
+
*
|
|
41
|
+
* @type {String?}
|
|
42
|
+
* @default null
|
|
43
|
+
*/
|
|
16
44
|
this.name = name;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Whether this property is a varying or not.
|
|
48
|
+
*
|
|
49
|
+
* @type {Boolean}
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
17
52
|
this.varying = varying;
|
|
18
53
|
|
|
54
|
+
/**
|
|
55
|
+
* This flag can be used for type testing.
|
|
56
|
+
*
|
|
57
|
+
* @type {Boolean}
|
|
58
|
+
* @readonly
|
|
59
|
+
* @default true
|
|
60
|
+
*/
|
|
19
61
|
this.isPropertyNode = true;
|
|
20
62
|
|
|
21
63
|
}
|
|
@@ -26,6 +68,12 @@ class PropertyNode extends Node {
|
|
|
26
68
|
|
|
27
69
|
}
|
|
28
70
|
|
|
71
|
+
/**
|
|
72
|
+
* The method is overwritten so it always returns `true`.
|
|
73
|
+
*
|
|
74
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
75
|
+
* @return {Boolean} Whether this node is global or not.
|
|
76
|
+
*/
|
|
29
77
|
isGlobal( /*builder*/ ) {
|
|
30
78
|
|
|
31
79
|
return true;
|
|
@@ -55,34 +103,218 @@ class PropertyNode extends Node {
|
|
|
55
103
|
|
|
56
104
|
export default PropertyNode;
|
|
57
105
|
|
|
106
|
+
/**
|
|
107
|
+
* TSL function for creating a property node.
|
|
108
|
+
*
|
|
109
|
+
* @function
|
|
110
|
+
* @param {String} type - The type of the node.
|
|
111
|
+
* @param {String?} [name=null] - The name of the property in the shader.
|
|
112
|
+
* @returns {PropertyNode}
|
|
113
|
+
*/
|
|
58
114
|
export const property = ( type, name ) => nodeObject( new PropertyNode( type, name ) );
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* TSL function for creating a varying property node.
|
|
118
|
+
*
|
|
119
|
+
* @function
|
|
120
|
+
* @param {String} type - The type of the node.
|
|
121
|
+
* @param {String?} [name=null] - The name of the varying in the shader.
|
|
122
|
+
* @returns {PropertyNode}
|
|
123
|
+
*/
|
|
59
124
|
export const varyingProperty = ( type, name ) => nodeObject( new PropertyNode( type, name, true ) );
|
|
60
125
|
|
|
126
|
+
/**
|
|
127
|
+
* TSL object that represents the shader variable `DiffuseColor`.
|
|
128
|
+
*
|
|
129
|
+
* @type {PropertyNode<vec4>}
|
|
130
|
+
*/
|
|
61
131
|
export const diffuseColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', 'DiffuseColor' );
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* TSL object that represents the shader variable `EmissiveColor`.
|
|
135
|
+
*
|
|
136
|
+
* @type {PropertyNode<vec3>}
|
|
137
|
+
*/
|
|
62
138
|
export const emissive = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'EmissiveColor' );
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* TSL object that represents the shader variable `Roughness`.
|
|
142
|
+
*
|
|
143
|
+
* @type {PropertyNode<float>}
|
|
144
|
+
*/
|
|
63
145
|
export const roughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Roughness' );
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* TSL object that represents the shader variable `Metalness`.
|
|
149
|
+
*
|
|
150
|
+
* @type {PropertyNode<float>}
|
|
151
|
+
*/
|
|
64
152
|
export const metalness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Metalness' );
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* TSL object that represents the shader variable `Clearcoat`.
|
|
156
|
+
*
|
|
157
|
+
* @type {PropertyNode<float>}
|
|
158
|
+
*/
|
|
65
159
|
export const clearcoat = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Clearcoat' );
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* TSL object that represents the shader variable `ClearcoatRoughness`.
|
|
163
|
+
*
|
|
164
|
+
* @type {PropertyNode<float>}
|
|
165
|
+
*/
|
|
66
166
|
export const clearcoatRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'ClearcoatRoughness' );
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* TSL object that represents the shader variable `Sheen`.
|
|
170
|
+
*
|
|
171
|
+
* @type {PropertyNode<vec3>}
|
|
172
|
+
*/
|
|
67
173
|
export const sheen = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'Sheen' );
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* TSL object that represents the shader variable `SheenRoughness`.
|
|
177
|
+
*
|
|
178
|
+
* @type {PropertyNode<float>}
|
|
179
|
+
*/
|
|
68
180
|
export const sheenRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'SheenRoughness' );
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* TSL object that represents the shader variable `Iridescence`.
|
|
184
|
+
*
|
|
185
|
+
* @type {PropertyNode<float>}
|
|
186
|
+
*/
|
|
69
187
|
export const iridescence = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Iridescence' );
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* TSL object that represents the shader variable `IridescenceIOR`.
|
|
191
|
+
*
|
|
192
|
+
* @type {PropertyNode<float>}
|
|
193
|
+
*/
|
|
70
194
|
export const iridescenceIOR = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IridescenceIOR' );
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* TSL object that represents the shader variable `IridescenceThickness`.
|
|
198
|
+
*
|
|
199
|
+
* @type {PropertyNode<float>}
|
|
200
|
+
*/
|
|
71
201
|
export const iridescenceThickness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IridescenceThickness' );
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* TSL object that represents the shader variable `AlphaT`.
|
|
205
|
+
*
|
|
206
|
+
* @type {PropertyNode<float>}
|
|
207
|
+
*/
|
|
72
208
|
export const alphaT = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'AlphaT' );
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* TSL object that represents the shader variable `Anisotropy`.
|
|
212
|
+
*
|
|
213
|
+
* @type {PropertyNode<float>}
|
|
214
|
+
*/
|
|
73
215
|
export const anisotropy = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Anisotropy' );
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* TSL object that represents the shader variable `AnisotropyT`.
|
|
219
|
+
*
|
|
220
|
+
* @type {PropertyNode<vec3>}
|
|
221
|
+
*/
|
|
74
222
|
export const anisotropyT = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'AnisotropyT' );
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* TSL object that represents the shader variable `AnisotropyB`.
|
|
226
|
+
*
|
|
227
|
+
* @type {PropertyNode<vec3>}
|
|
228
|
+
*/
|
|
75
229
|
export const anisotropyB = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'AnisotropyB' );
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* TSL object that represents the shader variable `SpecularColor`.
|
|
233
|
+
*
|
|
234
|
+
* @type {PropertyNode<color>}
|
|
235
|
+
*/
|
|
76
236
|
export const specularColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'color', 'SpecularColor' );
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* TSL object that represents the shader variable `SpecularF90`.
|
|
240
|
+
*
|
|
241
|
+
* @type {PropertyNode<float>}
|
|
242
|
+
*/
|
|
77
243
|
export const specularF90 = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'SpecularF90' );
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* TSL object that represents the shader variable `Shininess`.
|
|
247
|
+
*
|
|
248
|
+
* @type {PropertyNode<float>}
|
|
249
|
+
*/
|
|
78
250
|
export const shininess = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Shininess' );
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* TSL object that represents the shader variable `Output`.
|
|
254
|
+
*
|
|
255
|
+
* @type {PropertyNode<vec4>}
|
|
256
|
+
*/
|
|
79
257
|
export const output = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', 'Output' );
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* TSL object that represents the shader variable `dashSize`.
|
|
261
|
+
*
|
|
262
|
+
* @type {PropertyNode<float>}
|
|
263
|
+
*/
|
|
80
264
|
export const dashSize = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'dashSize' );
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* TSL object that represents the shader variable `gapSize`.
|
|
268
|
+
*
|
|
269
|
+
* @type {PropertyNode<float>}
|
|
270
|
+
*/
|
|
81
271
|
export const gapSize = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'gapSize' );
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* TSL object that represents the shader variable `pointWidth`.
|
|
275
|
+
*
|
|
276
|
+
* @type {PropertyNode<float>}
|
|
277
|
+
*/
|
|
82
278
|
export const pointWidth = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'pointWidth' );
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* TSL object that represents the shader variable `IOR`.
|
|
282
|
+
*
|
|
283
|
+
* @type {PropertyNode<float>}
|
|
284
|
+
*/
|
|
83
285
|
export const ior = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IOR' );
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* TSL object that represents the shader variable `Transmission`.
|
|
289
|
+
*
|
|
290
|
+
* @type {PropertyNode<float>}
|
|
291
|
+
*/
|
|
84
292
|
export const transmission = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Transmission' );
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* TSL object that represents the shader variable `Thickness`.
|
|
296
|
+
*
|
|
297
|
+
* @type {PropertyNode<float>}
|
|
298
|
+
*/
|
|
85
299
|
export const thickness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Thickness' );
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* TSL object that represents the shader variable `AttenuationDistance`.
|
|
303
|
+
*
|
|
304
|
+
* @type {PropertyNode<float>}
|
|
305
|
+
*/
|
|
86
306
|
export const attenuationDistance = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'AttenuationDistance' );
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* TSL object that represents the shader variable `AttenuationColor`.
|
|
310
|
+
*
|
|
311
|
+
* @type {PropertyNode<color>}
|
|
312
|
+
*/
|
|
87
313
|
export const attenuationColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'color', 'AttenuationColor' );
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* TSL object that represents the shader variable `Dispersion`.
|
|
317
|
+
*
|
|
318
|
+
* @type {PropertyNode<float>}
|
|
319
|
+
*/
|
|
88
320
|
export const dispersion = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Dispersion' );
|
|
@@ -2,6 +2,14 @@ import Node from './Node.js';
|
|
|
2
2
|
import { select } from '../math/ConditionalNode.js';
|
|
3
3
|
import { ShaderNode, nodeProxy, getCurrentStack, setCurrentStack } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
|
+
/** @module StackNode **/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Stack is a helper for Nodes that need to produce stack-based code instead of continuous flow.
|
|
9
|
+
* They are usually needed in cases like `If`, `Else`.
|
|
10
|
+
*
|
|
11
|
+
* @augments Node
|
|
12
|
+
*/
|
|
5
13
|
class StackNode extends Node {
|
|
6
14
|
|
|
7
15
|
static get type() {
|
|
@@ -10,17 +18,54 @@ class StackNode extends Node {
|
|
|
10
18
|
|
|
11
19
|
}
|
|
12
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new stack node.
|
|
23
|
+
*
|
|
24
|
+
* @param {StackNode?} [parent=null] - The parent stack node.
|
|
25
|
+
*/
|
|
13
26
|
constructor( parent = null ) {
|
|
14
27
|
|
|
15
28
|
super();
|
|
16
29
|
|
|
30
|
+
/**
|
|
31
|
+
* List of nodes.
|
|
32
|
+
*
|
|
33
|
+
* @type {Array<Node>}
|
|
34
|
+
*/
|
|
17
35
|
this.nodes = [];
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The output node.
|
|
39
|
+
*
|
|
40
|
+
* @type {Node?}
|
|
41
|
+
* @default null
|
|
42
|
+
*/
|
|
18
43
|
this.outputNode = null;
|
|
19
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The parent stack node.
|
|
47
|
+
*
|
|
48
|
+
* @type {StackNode}
|
|
49
|
+
* @default null
|
|
50
|
+
*/
|
|
20
51
|
this.parent = parent;
|
|
21
52
|
|
|
53
|
+
/**
|
|
54
|
+
* The current conditional node.
|
|
55
|
+
*
|
|
56
|
+
* @private
|
|
57
|
+
* @type {ConditionalNode}
|
|
58
|
+
* @default null
|
|
59
|
+
*/
|
|
22
60
|
this._currentCond = null;
|
|
23
61
|
|
|
62
|
+
/**
|
|
63
|
+
* This flag can be used for type testing.
|
|
64
|
+
*
|
|
65
|
+
* @type {Boolean}
|
|
66
|
+
* @readonly
|
|
67
|
+
* @default true
|
|
68
|
+
*/
|
|
24
69
|
this.isStackNode = true;
|
|
25
70
|
|
|
26
71
|
}
|
|
@@ -31,6 +76,12 @@ class StackNode extends Node {
|
|
|
31
76
|
|
|
32
77
|
}
|
|
33
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Adds a node to this stack.
|
|
81
|
+
*
|
|
82
|
+
* @param {Node} node - The node to add.
|
|
83
|
+
* @return {StackNode} A reference to this stack node.
|
|
84
|
+
*/
|
|
34
85
|
add( node ) {
|
|
35
86
|
|
|
36
87
|
this.nodes.push( node );
|
|
@@ -39,6 +90,13 @@ class StackNode extends Node {
|
|
|
39
90
|
|
|
40
91
|
}
|
|
41
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Represent an `if` statement in TSL.
|
|
95
|
+
*
|
|
96
|
+
* @param {Node} boolNode - Represents the condition.
|
|
97
|
+
* @param {Function} method - TSL code which is executed if the condition evaluates to `true`.
|
|
98
|
+
* @return {StackNode} A reference to this stack node.
|
|
99
|
+
*/
|
|
42
100
|
If( boolNode, method ) {
|
|
43
101
|
|
|
44
102
|
const methodNode = new ShaderNode( method );
|
|
@@ -48,6 +106,13 @@ class StackNode extends Node {
|
|
|
48
106
|
|
|
49
107
|
}
|
|
50
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Represent an `elseif` statement in TSL.
|
|
111
|
+
*
|
|
112
|
+
* @param {Node} boolNode - Represents the condition.
|
|
113
|
+
* @param {Function} method - TSL code which is executed if the condition evaluates to `true`.
|
|
114
|
+
* @return {StackNode} A reference to this stack node.
|
|
115
|
+
*/
|
|
51
116
|
ElseIf( boolNode, method ) {
|
|
52
117
|
|
|
53
118
|
const methodNode = new ShaderNode( method );
|
|
@@ -60,6 +125,12 @@ class StackNode extends Node {
|
|
|
60
125
|
|
|
61
126
|
}
|
|
62
127
|
|
|
128
|
+
/**
|
|
129
|
+
* Represent an `else` statement in TSL.
|
|
130
|
+
*
|
|
131
|
+
* @param {Function} method - TSL code which is executed in the `else` case.
|
|
132
|
+
* @return {StackNode} A reference to this stack node.
|
|
133
|
+
*/
|
|
63
134
|
Else( method ) {
|
|
64
135
|
|
|
65
136
|
this._currentCond.elseNode = new ShaderNode( method );
|
|
@@ -106,4 +177,11 @@ class StackNode extends Node {
|
|
|
106
177
|
|
|
107
178
|
export default StackNode;
|
|
108
179
|
|
|
180
|
+
/**
|
|
181
|
+
* TSL function for creating a stack node.
|
|
182
|
+
*
|
|
183
|
+
* @function
|
|
184
|
+
* @param {StackNode?} [parent=null] - The parent stack node.
|
|
185
|
+
* @returns {StackNode}
|
|
186
|
+
*/
|
|
109
187
|
export const stack = /*@__PURE__*/ nodeProxy( StackNode );
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* {@link NodeBuilder} is going to create instances of this class during the build process
|
|
5
|
+
* of nodes. They represent the final shader struct data that are going to be generated
|
|
6
|
+
* by the builder. A dictionary of struct types is maintained in {@link NodeBuilder#structs}
|
|
7
|
+
* for this purpose.
|
|
8
|
+
*/
|
|
3
9
|
class StructTypeNode extends Node {
|
|
4
10
|
|
|
5
11
|
static get type() {
|
|
@@ -8,15 +14,47 @@ class StructTypeNode extends Node {
|
|
|
8
14
|
|
|
9
15
|
}
|
|
10
16
|
|
|
11
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new struct type node.
|
|
19
|
+
*
|
|
20
|
+
* @param {String} name - The name of the struct.
|
|
21
|
+
* @param {Array<String>} types - An array of types.
|
|
22
|
+
*/
|
|
23
|
+
constructor( name, types ) {
|
|
12
24
|
|
|
13
25
|
super();
|
|
14
26
|
|
|
27
|
+
/**
|
|
28
|
+
* The name of the struct.
|
|
29
|
+
*
|
|
30
|
+
* @type {String}
|
|
31
|
+
*/
|
|
32
|
+
this.name = name;
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* An array of types.
|
|
37
|
+
*
|
|
38
|
+
* @type {Array<String>}
|
|
39
|
+
*/
|
|
15
40
|
this.types = types;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* This flag can be used for type testing.
|
|
44
|
+
*
|
|
45
|
+
* @type {Boolean}
|
|
46
|
+
* @readonly
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
16
49
|
this.isStructTypeNode = true;
|
|
17
50
|
|
|
18
51
|
}
|
|
19
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Returns the member types.
|
|
55
|
+
*
|
|
56
|
+
* @return {Array<String>} The types.
|
|
57
|
+
*/
|
|
20
58
|
getMemberTypes() {
|
|
21
59
|
|
|
22
60
|
return this.types;
|