super-three 0.171.0 → 0.173.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/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +594 -427
- package/build/three.core.js +515 -81
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +79 -350
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +20 -7
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +29362 -3427
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +29361 -3427
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +0 -5
- package/examples/jsm/animation/CCDIKSolver.js +9 -7
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +48 -37
- 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 +34 -29
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/libs/demuxer_mp4.js +109 -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 +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +22 -4
- 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 -2
- 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/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
- package/examples/jsm/misc/Volume.js +27 -17
- package/examples/jsm/misc/VolumeSlice.js +7 -5
- 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 +29 -24
- package/examples/jsm/physics/JoltPhysics.js +7 -7
- package/examples/jsm/physics/RapierPhysics.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/OutputPass.js +2 -0
- 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/OutputShader.js +5 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
- package/examples/jsm/transpiler/TSLEncoder.js +2 -0
- 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 +4 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +18 -5
- 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/ArrayCamera.js +1 -0
- package/src/cameras/PerspectiveCamera.js +18 -2
- package/src/constants.js +6 -1
- package/src/core/BufferAttribute.js +4 -0
- package/src/core/EventDispatcher.js +8 -6
- 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/ImageUtils.js +1 -11
- 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/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 +476 -23
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +121 -10
- package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
- package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
- package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
- package/src/nodes/Nodes.js +5 -6
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +27 -0
- package/src/nodes/accessors/Arrays.js +47 -6
- package/src/nodes/accessors/BatchNode.js +42 -6
- 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 +113 -3
- 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/Lights.js +50 -1
- package/src/nodes/accessors/MaterialNode.js +306 -12
- 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 +65 -5
- package/src/nodes/accessors/Object3DNode.js +101 -1
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +56 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
- package/src/nodes/accessors/ReferenceNode.js +201 -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 +209 -8
- package/src/nodes/accessors/StorageTextureNode.js +118 -0
- package/src/nodes/accessors/Tangent.js +38 -2
- package/src/nodes/accessors/Texture3DNode.js +91 -7
- package/src/nodes/accessors/TextureBicubic.js +12 -2
- package/src/nodes/accessors/TextureNode.js +316 -10
- package/src/nodes/accessors/TextureSizeNode.js +42 -0
- package/src/nodes/accessors/UV.js +10 -1
- package/src/nodes/accessors/UniformArrayNode.js +231 -25
- package/src/nodes/accessors/UserDataNode.js +46 -0
- package/src/nodes/accessors/VelocityNode.js +80 -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/ArrayNode.js +125 -0
- 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 +32 -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 +350 -12
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1166 -26
- 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 +152 -1
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +51 -10
- package/src/nodes/core/ParameterNode.js +28 -0
- package/src/nodes/core/PropertyNode.js +232 -0
- package/src/nodes/core/StackNode.js +98 -1
- package/src/nodes/core/StructNode.js +121 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +105 -6
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +82 -7
- package/src/nodes/core/UniformNode.js +66 -0
- package/src/nodes/core/VarNode.js +146 -7
- package/src/nodes/core/VaryingNode.js +100 -3
- package/src/nodes/core/constants.js +36 -0
- package/src/nodes/display/BlendModes.js +88 -1
- 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 +300 -7
- package/src/nodes/display/PosterizeNode.js +33 -0
- package/src/nodes/display/RenderOutputNode.js +66 -1
- package/src/nodes/display/ScreenNode.js +96 -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 +110 -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 +174 -2
- package/src/nodes/gpgpu/BarrierNode.js +47 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -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 +241 -35
- package/src/nodes/lighting/SpotLightNode.js +43 -0
- package/src/nodes/math/ConditionalNode.js +78 -4
- package/src/nodes/math/Hash.js +9 -0
- package/src/nodes/math/MathNode.js +627 -11
- package/src/nodes/math/MathUtils.js +45 -1
- package/src/nodes/math/OperatorNode.js +329 -18
- 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 +2 -2
- package/src/nodes/procedural/Checker.js +9 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +3 -2
- package/src/nodes/tsl/TSLCore.js +22 -2
- package/src/nodes/utils/ArrayElementNode.js +39 -3
- 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 +82 -2
- package/src/nodes/utils/MatcapUVNode.js +17 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -0
- package/src/nodes/utils/MemberNode.js +68 -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 +54 -0
- package/src/nodes/utils/Timer.js +40 -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 +2 -3
- package/src/objects/ClippingGroup.js +49 -0
- package/src/objects/Line.js +6 -6
- package/src/renderers/WebGLRenderer.js +30 -4
- package/src/renderers/common/Animation.js +85 -0
- package/src/renderers/common/Attributes.js +36 -0
- package/src/renderers/common/Backend.js +502 -44
- package/src/renderers/common/Background.js +48 -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 +45 -6
- package/src/renderers/common/ClippingContext.js +108 -15
- package/src/renderers/common/Color4.js +40 -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 +91 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +34 -6
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +99 -11
- 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 +39 -10
- package/src/renderers/common/RenderContext.js +201 -2
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +178 -0
- package/src/renderers/common/RenderLists.js +40 -3
- package/src/renderers/common/RenderObject.js +400 -17
- package/src/renderers/common/RenderObjects.js +103 -7
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1170 -86
- package/src/renderers/common/RendererUtils.js +193 -0
- package/src/renderers/common/SampledTexture.js +120 -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 +97 -7
- package/src/renderers/common/TimestampQueryPool.js +39 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +141 -2
- package/src/renderers/common/XRManager.js +1193 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +76 -10
- package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
- package/src/renderers/common/nodes/NodeLibrary.js +89 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +90 -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 +243 -2
- 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 +352 -78
- 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/WebGLBackground.js +4 -0
- package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +578 -164
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
- package/src/renderers/webgpu/WebGPURenderer.js +36 -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 +674 -52
- 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 +95 -14
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +19 -2
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/Texture.js +4 -0
- package/src/textures/VideoFrameTexture.js +35 -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/geometries/InstancedPointsGeometry.js +0 -176
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/MMDLoader.js +0 -2298
- package/examples/jsm/objects/InstancedPoints.js +0 -19
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- 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,5 +1,5 @@
|
|
|
1
1
|
import NodeMaterial from './NodeMaterial.js';
|
|
2
|
-
import { varyingProperty } from '../../nodes/core/PropertyNode.js';
|
|
2
|
+
import { dashSize, gapSize, varyingProperty } from '../../nodes/core/PropertyNode.js';
|
|
3
3
|
import { attribute } from '../../nodes/core/AttributeNode.js';
|
|
4
4
|
import { cameraProjectionMatrix } from '../../nodes/accessors/Camera.js';
|
|
5
5
|
import { materialColor, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineDashOffset, materialLineWidth, materialOpacity } from '../../nodes/accessors/MaterialNode.js';
|
|
@@ -9,7 +9,6 @@ import { mix, smoothstep } from '../../nodes/math/MathNode.js';
|
|
|
9
9
|
import { Fn, float, vec2, vec3, vec4, If } from '../../nodes/tsl/TSLBase.js';
|
|
10
10
|
import { uv } from '../../nodes/accessors/UV.js';
|
|
11
11
|
import { viewport } from '../../nodes/display/ScreenNode.js';
|
|
12
|
-
import { dashSize, gapSize } from '../../nodes/core/PropertyNode.js';
|
|
13
12
|
import { viewportSharedTexture } from '../../nodes/display/ViewportSharedTextureNode.js';
|
|
14
13
|
|
|
15
14
|
import { LineDashedMaterial } from '../LineDashedMaterial.js';
|
|
@@ -17,6 +16,12 @@ import { NoBlending } from '../../constants.js';
|
|
|
17
16
|
|
|
18
17
|
const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
|
|
19
18
|
|
|
19
|
+
/**
|
|
20
|
+
* This node material can be used to render lines with a size larger than one
|
|
21
|
+
* by representing them as instanced meshes.
|
|
22
|
+
*
|
|
23
|
+
* @augments NodeMaterial
|
|
24
|
+
*/
|
|
20
25
|
class Line2NodeMaterial extends NodeMaterial {
|
|
21
26
|
|
|
22
27
|
static get type() {
|
|
@@ -25,49 +30,120 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
25
30
|
|
|
26
31
|
}
|
|
27
32
|
|
|
28
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Constructs a new node material for wide line rendering.
|
|
35
|
+
*
|
|
36
|
+
* @param {Object?} parameters - The configuration parameter.
|
|
37
|
+
*/
|
|
38
|
+
constructor( parameters = {} ) {
|
|
29
39
|
|
|
30
40
|
super();
|
|
31
41
|
|
|
32
|
-
|
|
42
|
+
/**
|
|
43
|
+
* This flag can be used for type testing.
|
|
44
|
+
*
|
|
45
|
+
* @type {Boolean}
|
|
46
|
+
* @readonly
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
49
|
+
this.isLine2NodeMaterial = true;
|
|
33
50
|
|
|
34
51
|
this.setDefaultValues( _defaultValues );
|
|
35
52
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Whether vertex colors should be used or not.
|
|
55
|
+
*
|
|
56
|
+
* @type {Boolean}
|
|
57
|
+
* @default false
|
|
58
|
+
*/
|
|
59
|
+
this.useColor = parameters.vertexColors;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The dash offset.
|
|
63
|
+
*
|
|
64
|
+
* @type {Number}
|
|
65
|
+
* @default 0
|
|
66
|
+
*/
|
|
41
67
|
this.dashOffset = 0;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The line width.
|
|
71
|
+
*
|
|
72
|
+
* @type {Number}
|
|
73
|
+
* @default 0
|
|
74
|
+
*/
|
|
42
75
|
this.lineWidth = 1;
|
|
43
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Defines the lines color.
|
|
79
|
+
*
|
|
80
|
+
* @type {Node<vec3>?}
|
|
81
|
+
* @default null
|
|
82
|
+
*/
|
|
44
83
|
this.lineColorNode = null;
|
|
45
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Defines the offset.
|
|
87
|
+
*
|
|
88
|
+
* @type {Node<float>?}
|
|
89
|
+
* @default null
|
|
90
|
+
*/
|
|
46
91
|
this.offsetNode = null;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Defines the dash scale.
|
|
95
|
+
*
|
|
96
|
+
* @type {Node<float>?}
|
|
97
|
+
* @default null
|
|
98
|
+
*/
|
|
47
99
|
this.dashScaleNode = null;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Defines the dash size.
|
|
103
|
+
*
|
|
104
|
+
* @type {Node<float>?}
|
|
105
|
+
* @default null
|
|
106
|
+
*/
|
|
48
107
|
this.dashSizeNode = null;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Defines the gap size.
|
|
111
|
+
*
|
|
112
|
+
* @type {Node<float>?}
|
|
113
|
+
* @default null
|
|
114
|
+
*/
|
|
49
115
|
this.gapSizeNode = null;
|
|
50
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Blending is set to `NoBlending` since transparency
|
|
119
|
+
* is not supported, yet.
|
|
120
|
+
*
|
|
121
|
+
* @type {Number}
|
|
122
|
+
* @default 0
|
|
123
|
+
*/
|
|
51
124
|
this.blending = NoBlending;
|
|
52
125
|
|
|
53
|
-
this.
|
|
126
|
+
this._useDash = parameters.dashed;
|
|
127
|
+
this._useAlphaToCoverage = true;
|
|
128
|
+
this._useWorldUnits = false;
|
|
129
|
+
|
|
130
|
+
this.setValues( parameters );
|
|
54
131
|
|
|
55
132
|
}
|
|
56
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Setups the vertex and fragment stage of this node material.
|
|
136
|
+
*
|
|
137
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
138
|
+
*/
|
|
57
139
|
setup( builder ) {
|
|
58
140
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
super.setup( builder );
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
setupShaders( { renderer } ) {
|
|
141
|
+
const { renderer } = builder;
|
|
66
142
|
|
|
67
|
-
const useAlphaToCoverage = this.
|
|
143
|
+
const useAlphaToCoverage = this._useAlphaToCoverage;
|
|
68
144
|
const useColor = this.useColor;
|
|
69
|
-
const useDash = this.
|
|
70
|
-
const useWorldUnits = this.
|
|
145
|
+
const useDash = this._useDash;
|
|
146
|
+
const useWorldUnits = this._useWorldUnits;
|
|
71
147
|
|
|
72
148
|
const trimSegment = Fn( ( { start, end } ) => {
|
|
73
149
|
|
|
@@ -101,7 +177,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
101
177
|
if ( useDash ) {
|
|
102
178
|
|
|
103
179
|
const dashScaleNode = this.dashScaleNode ? float( this.dashScaleNode ) : materialLineScale;
|
|
104
|
-
const offsetNode = this.offsetNode ? float( this.
|
|
180
|
+
const offsetNode = this.offsetNode ? float( this.offsetNode ) : materialLineDashOffset;
|
|
105
181
|
|
|
106
182
|
const instanceDistanceStart = attribute( 'instanceDistanceStart' );
|
|
107
183
|
const instanceDistanceEnd = attribute( 'instanceDistanceEnd' );
|
|
@@ -278,7 +354,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
278
354
|
if ( useDash ) {
|
|
279
355
|
|
|
280
356
|
const dashSizeNode = this.dashSizeNode ? float( this.dashSizeNode ) : materialLineDashSize;
|
|
281
|
-
const gapSizeNode = this.
|
|
357
|
+
const gapSizeNode = this.gapSizeNode ? float( this.gapSizeNode ) : materialLineGapSize;
|
|
282
358
|
|
|
283
359
|
dashSize.assign( dashSizeNode );
|
|
284
360
|
gapSize.assign( gapSizeNode );
|
|
@@ -395,56 +471,74 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
395
471
|
|
|
396
472
|
}
|
|
397
473
|
|
|
398
|
-
|
|
474
|
+
super.setup( builder );
|
|
399
475
|
|
|
476
|
+
}
|
|
400
477
|
|
|
478
|
+
/**
|
|
479
|
+
* Whether the lines should sized in world units or not.
|
|
480
|
+
* When set to `false` the unit is pixel.
|
|
481
|
+
*
|
|
482
|
+
* @type {Boolean}
|
|
483
|
+
* @default false
|
|
484
|
+
*/
|
|
401
485
|
get worldUnits() {
|
|
402
486
|
|
|
403
|
-
return this.
|
|
487
|
+
return this._useWorldUnits;
|
|
404
488
|
|
|
405
489
|
}
|
|
406
490
|
|
|
407
491
|
set worldUnits( value ) {
|
|
408
492
|
|
|
409
|
-
if ( this.
|
|
493
|
+
if ( this._useWorldUnits !== value ) {
|
|
410
494
|
|
|
411
|
-
this.
|
|
495
|
+
this._useWorldUnits = value;
|
|
412
496
|
this.needsUpdate = true;
|
|
413
497
|
|
|
414
498
|
}
|
|
415
499
|
|
|
416
500
|
}
|
|
417
501
|
|
|
418
|
-
|
|
502
|
+
/**
|
|
503
|
+
* Whether the lines should be dashed or not.
|
|
504
|
+
*
|
|
505
|
+
* @type {Boolean}
|
|
506
|
+
* @default false
|
|
507
|
+
*/
|
|
419
508
|
get dashed() {
|
|
420
509
|
|
|
421
|
-
return this.
|
|
510
|
+
return this._useDash;
|
|
422
511
|
|
|
423
512
|
}
|
|
424
513
|
|
|
425
514
|
set dashed( value ) {
|
|
426
515
|
|
|
427
|
-
if ( this.
|
|
516
|
+
if ( this._useDash !== value ) {
|
|
428
517
|
|
|
429
|
-
this.
|
|
518
|
+
this._useDash = value;
|
|
430
519
|
this.needsUpdate = true;
|
|
431
520
|
|
|
432
521
|
}
|
|
433
522
|
|
|
434
523
|
}
|
|
435
524
|
|
|
436
|
-
|
|
525
|
+
/**
|
|
526
|
+
* Whether alpha to coverage should be used or not.
|
|
527
|
+
*
|
|
528
|
+
* @type {Boolean}
|
|
529
|
+
* @default true
|
|
530
|
+
*/
|
|
437
531
|
get alphaToCoverage() {
|
|
438
532
|
|
|
439
|
-
return this.
|
|
533
|
+
return this._useAlphaToCoverage;
|
|
440
534
|
|
|
441
535
|
}
|
|
442
536
|
|
|
443
537
|
set alphaToCoverage( value ) {
|
|
444
538
|
|
|
445
|
-
if ( this.
|
|
539
|
+
if ( this._useAlphaToCoverage !== value ) {
|
|
446
540
|
|
|
447
|
-
this.
|
|
541
|
+
this._useAlphaToCoverage = value;
|
|
448
542
|
this.needsUpdate = true;
|
|
449
543
|
|
|
450
544
|
}
|
|
@@ -4,6 +4,11 @@ import { LineBasicMaterial } from '../LineBasicMaterial.js';
|
|
|
4
4
|
|
|
5
5
|
const _defaultValues = /*@__PURE__*/ new LineBasicMaterial();
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Node material version of `LineBasicMaterial`.
|
|
9
|
+
*
|
|
10
|
+
* @augments NodeMaterial
|
|
11
|
+
*/
|
|
7
12
|
class LineBasicNodeMaterial extends NodeMaterial {
|
|
8
13
|
|
|
9
14
|
static get type() {
|
|
@@ -12,14 +17,24 @@ class LineBasicNodeMaterial extends NodeMaterial {
|
|
|
12
17
|
|
|
13
18
|
}
|
|
14
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new line basic node material.
|
|
22
|
+
*
|
|
23
|
+
* @param {Object?} parameters - The configuration parameter.
|
|
24
|
+
*/
|
|
15
25
|
constructor( parameters ) {
|
|
16
26
|
|
|
17
27
|
super();
|
|
18
28
|
|
|
29
|
+
/**
|
|
30
|
+
* This flag can be used for type testing.
|
|
31
|
+
*
|
|
32
|
+
* @type {Boolean}
|
|
33
|
+
* @readonly
|
|
34
|
+
* @default true
|
|
35
|
+
*/
|
|
19
36
|
this.isLineBasicNodeMaterial = true;
|
|
20
37
|
|
|
21
|
-
this.lights = false;
|
|
22
|
-
|
|
23
38
|
this.setDefaultValues( _defaultValues );
|
|
24
39
|
|
|
25
40
|
this.setValues( parameters );
|
|
@@ -8,6 +8,11 @@ import { LineDashedMaterial } from '../LineDashedMaterial.js';
|
|
|
8
8
|
|
|
9
9
|
const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Node material version of `LineDashedMaterial`.
|
|
13
|
+
*
|
|
14
|
+
* @augments NodeMaterial
|
|
15
|
+
*/
|
|
11
16
|
class LineDashedNodeMaterial extends NodeMaterial {
|
|
12
17
|
|
|
13
18
|
static get type() {
|
|
@@ -16,33 +21,101 @@ class LineDashedNodeMaterial extends NodeMaterial {
|
|
|
16
21
|
|
|
17
22
|
}
|
|
18
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a new line dashed node material.
|
|
26
|
+
*
|
|
27
|
+
* @param {Object?} parameters - The configuration parameter.
|
|
28
|
+
*/
|
|
19
29
|
constructor( parameters ) {
|
|
20
30
|
|
|
21
31
|
super();
|
|
22
32
|
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {Boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
23
40
|
this.isLineDashedNodeMaterial = true;
|
|
24
41
|
|
|
25
|
-
this.lights = false;
|
|
26
|
-
|
|
27
42
|
this.setDefaultValues( _defaultValues );
|
|
28
43
|
|
|
44
|
+
/**
|
|
45
|
+
* The dash offset.
|
|
46
|
+
*
|
|
47
|
+
* @type {Number}
|
|
48
|
+
* @default 0
|
|
49
|
+
*/
|
|
29
50
|
this.dashOffset = 0;
|
|
30
51
|
|
|
52
|
+
/**
|
|
53
|
+
* The offset of dash materials is by default inferred from the `dashOffset`
|
|
54
|
+
* property. This node property allows to overwrite the default
|
|
55
|
+
* and define the offset with a node instead.
|
|
56
|
+
*
|
|
57
|
+
* If you don't want to overwrite the offset but modify the existing
|
|
58
|
+
* value instead, use {@link module:MaterialNode.materialLineDashOffset}.
|
|
59
|
+
*
|
|
60
|
+
* @type {Node<float>?}
|
|
61
|
+
* @default null
|
|
62
|
+
*/
|
|
31
63
|
this.offsetNode = null;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The scale of dash materials is by default inferred from the `scale`
|
|
67
|
+
* property. This node property allows to overwrite the default
|
|
68
|
+
* and define the scale with a node instead.
|
|
69
|
+
*
|
|
70
|
+
* If you don't want to overwrite the scale but modify the existing
|
|
71
|
+
* value instead, use {@link module:MaterialNode.materialLineScale}.
|
|
72
|
+
*
|
|
73
|
+
* @type {Node<float>?}
|
|
74
|
+
* @default null
|
|
75
|
+
*/
|
|
32
76
|
this.dashScaleNode = null;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The dash size of dash materials is by default inferred from the `dashSize`
|
|
80
|
+
* property. This node property allows to overwrite the default
|
|
81
|
+
* and define the dash size with a node instead.
|
|
82
|
+
*
|
|
83
|
+
* If you don't want to overwrite the dash size but modify the existing
|
|
84
|
+
* value instead, use {@link module:MaterialNode.materialLineDashSize}.
|
|
85
|
+
*
|
|
86
|
+
* @type {Node<float>?}
|
|
87
|
+
* @default null
|
|
88
|
+
*/
|
|
33
89
|
this.dashSizeNode = null;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The gap size of dash materials is by default inferred from the `gapSize`
|
|
93
|
+
* property. This node property allows to overwrite the default
|
|
94
|
+
* and define the gap size with a node instead.
|
|
95
|
+
*
|
|
96
|
+
* If you don't want to overwrite the gap size but modify the existing
|
|
97
|
+
* value instead, use {@link module:MaterialNode.materialLineGapSize}.
|
|
98
|
+
*
|
|
99
|
+
* @type {Node<float>?}
|
|
100
|
+
* @default null
|
|
101
|
+
*/
|
|
34
102
|
this.gapSizeNode = null;
|
|
35
103
|
|
|
36
104
|
this.setValues( parameters );
|
|
37
105
|
|
|
38
106
|
}
|
|
39
107
|
|
|
40
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Setups the dash specific node variables.
|
|
110
|
+
*
|
|
111
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
112
|
+
*/
|
|
113
|
+
setupVariants( /* builder */ ) {
|
|
41
114
|
|
|
42
|
-
const offsetNode = this.offsetNode ? float( this.
|
|
115
|
+
const offsetNode = this.offsetNode ? float( this.offsetNode ) : materialLineDashOffset;
|
|
43
116
|
const dashScaleNode = this.dashScaleNode ? float( this.dashScaleNode ) : materialLineScale;
|
|
44
117
|
const dashSizeNode = this.dashSizeNode ? float( this.dashSizeNode ) : materialLineDashSize;
|
|
45
|
-
const gapSizeNode = this.
|
|
118
|
+
const gapSizeNode = this.gapSizeNode ? float( this.gapSizeNode ) : materialLineGapSize;
|
|
46
119
|
|
|
47
120
|
dashSize.assign( dashSizeNode );
|
|
48
121
|
gapSize.assign( gapSizeNode );
|
|
@@ -10,6 +10,11 @@ import { MeshBasicMaterial } from '../MeshBasicMaterial.js';
|
|
|
10
10
|
|
|
11
11
|
const _defaultValues = /*@__PURE__*/ new MeshBasicMaterial();
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Node material version of `MeshBasicMaterial`.
|
|
15
|
+
*
|
|
16
|
+
* @augments NodeMaterial
|
|
17
|
+
*/
|
|
13
18
|
class MeshBasicNodeMaterial extends NodeMaterial {
|
|
14
19
|
|
|
15
20
|
static get type() {
|
|
@@ -18,12 +23,32 @@ class MeshBasicNodeMaterial extends NodeMaterial {
|
|
|
18
23
|
|
|
19
24
|
}
|
|
20
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new mesh basic node material.
|
|
28
|
+
*
|
|
29
|
+
* @param {Object?} parameters - The configuration parameter.
|
|
30
|
+
*/
|
|
21
31
|
constructor( parameters ) {
|
|
22
32
|
|
|
23
33
|
super();
|
|
24
34
|
|
|
35
|
+
/**
|
|
36
|
+
* This flag can be used for type testing.
|
|
37
|
+
*
|
|
38
|
+
* @type {Boolean}
|
|
39
|
+
* @readonly
|
|
40
|
+
* @default true
|
|
41
|
+
*/
|
|
25
42
|
this.isMeshBasicNodeMaterial = true;
|
|
26
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Although the basic material is by definition unlit, we set
|
|
46
|
+
* this property to `true` since we use a lighting model to compute
|
|
47
|
+
* the outgoing light of the fragment shader.
|
|
48
|
+
*
|
|
49
|
+
* @type {Boolean}
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
27
52
|
this.lights = true;
|
|
28
53
|
|
|
29
54
|
this.setDefaultValues( _defaultValues );
|
|
@@ -32,12 +57,25 @@ class MeshBasicNodeMaterial extends NodeMaterial {
|
|
|
32
57
|
|
|
33
58
|
}
|
|
34
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Basic materials are not affected by normal and bump maps so we
|
|
62
|
+
* return by default {@link module:Normal.normalView}.
|
|
63
|
+
*
|
|
64
|
+
* @return {Node<vec3>} The normal node.
|
|
65
|
+
*/
|
|
35
66
|
setupNormal() {
|
|
36
67
|
|
|
37
68
|
return normalView; // see #28839
|
|
38
69
|
|
|
39
70
|
}
|
|
40
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Overwritten since this type of material uses {@link BasicEnvironmentNode}
|
|
74
|
+
* to implement the default environment mapping.
|
|
75
|
+
*
|
|
76
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
77
|
+
* @return {BasicEnvironmentNode<vec3>?} The environment node.
|
|
78
|
+
*/
|
|
41
79
|
setupEnvironment( builder ) {
|
|
42
80
|
|
|
43
81
|
const envNode = super.setupEnvironment( builder );
|
|
@@ -46,6 +84,13 @@ class MeshBasicNodeMaterial extends NodeMaterial {
|
|
|
46
84
|
|
|
47
85
|
}
|
|
48
86
|
|
|
87
|
+
/**
|
|
88
|
+
* This method must be overwritten since light maps are evaluated
|
|
89
|
+
* with a special scaling factor for basic materials.
|
|
90
|
+
*
|
|
91
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
92
|
+
* @return {BasicLightMapNode<vec3>?} The light map node.
|
|
93
|
+
*/
|
|
49
94
|
setupLightMap( builder ) {
|
|
50
95
|
|
|
51
96
|
let node = null;
|
|
@@ -60,12 +105,23 @@ class MeshBasicNodeMaterial extends NodeMaterial {
|
|
|
60
105
|
|
|
61
106
|
}
|
|
62
107
|
|
|
108
|
+
/**
|
|
109
|
+
* The material overwrites this method because `lights` is set to `true` but
|
|
110
|
+
* we still want to return the diffuse color as the outgoing light.
|
|
111
|
+
*
|
|
112
|
+
* @return {Node<vec3>} The outgoing light node.
|
|
113
|
+
*/
|
|
63
114
|
setupOutgoingLight() {
|
|
64
115
|
|
|
65
116
|
return diffuseColor.rgb;
|
|
66
117
|
|
|
67
118
|
}
|
|
68
119
|
|
|
120
|
+
/**
|
|
121
|
+
* Setups the lighting model.
|
|
122
|
+
*
|
|
123
|
+
* @return {BasicLightingModel} The lighting model.
|
|
124
|
+
*/
|
|
69
125
|
setupLightingModel() {
|
|
70
126
|
|
|
71
127
|
return new BasicLightingModel();
|
|
@@ -6,6 +6,11 @@ import { MeshLambertMaterial } from '../MeshLambertMaterial.js';
|
|
|
6
6
|
|
|
7
7
|
const _defaultValues = /*@__PURE__*/ new MeshLambertMaterial();
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Node material version of `MeshLambertMaterial`.
|
|
11
|
+
*
|
|
12
|
+
* @augments NodeMaterial
|
|
13
|
+
*/
|
|
9
14
|
class MeshLambertNodeMaterial extends NodeMaterial {
|
|
10
15
|
|
|
11
16
|
static get type() {
|
|
@@ -14,12 +19,30 @@ class MeshLambertNodeMaterial extends NodeMaterial {
|
|
|
14
19
|
|
|
15
20
|
}
|
|
16
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Constructs a new mesh lambert node material.
|
|
24
|
+
*
|
|
25
|
+
* @param {Object?} parameters - The configuration parameter.
|
|
26
|
+
*/
|
|
17
27
|
constructor( parameters ) {
|
|
18
28
|
|
|
19
29
|
super();
|
|
20
30
|
|
|
31
|
+
/**
|
|
32
|
+
* This flag can be used for type testing.
|
|
33
|
+
*
|
|
34
|
+
* @type {Boolean}
|
|
35
|
+
* @readonly
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
21
38
|
this.isMeshLambertNodeMaterial = true;
|
|
22
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Set to `true` because lambert materials react on lights.
|
|
42
|
+
*
|
|
43
|
+
* @type {Boolean}
|
|
44
|
+
* @default true
|
|
45
|
+
*/
|
|
23
46
|
this.lights = true;
|
|
24
47
|
|
|
25
48
|
this.setDefaultValues( _defaultValues );
|
|
@@ -28,6 +51,13 @@ class MeshLambertNodeMaterial extends NodeMaterial {
|
|
|
28
51
|
|
|
29
52
|
}
|
|
30
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Overwritten since this type of material uses {@link BasicEnvironmentNode}
|
|
56
|
+
* to implement the default environment mapping.
|
|
57
|
+
*
|
|
58
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
59
|
+
* @return {BasicEnvironmentNode<vec3>?} The environment node.
|
|
60
|
+
*/
|
|
31
61
|
setupEnvironment( builder ) {
|
|
32
62
|
|
|
33
63
|
const envNode = super.setupEnvironment( builder );
|
|
@@ -36,6 +66,11 @@ class MeshLambertNodeMaterial extends NodeMaterial {
|
|
|
36
66
|
|
|
37
67
|
}
|
|
38
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Setups the lighting model.
|
|
71
|
+
*
|
|
72
|
+
* @return {PhongLightingModel} The lighting model.
|
|
73
|
+
*/
|
|
39
74
|
setupLightingModel( /*builder*/ ) {
|
|
40
75
|
|
|
41
76
|
return new PhongLightingModel( false ); // ( specular ) -> force lambert
|
|
@@ -9,6 +9,11 @@ import { MeshMatcapMaterial } from '../MeshMatcapMaterial.js';
|
|
|
9
9
|
|
|
10
10
|
const _defaultValues = /*@__PURE__*/ new MeshMatcapMaterial();
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Node material version of `MeshMatcapMaterial`.
|
|
14
|
+
*
|
|
15
|
+
* @augments NodeMaterial
|
|
16
|
+
*/
|
|
12
17
|
class MeshMatcapNodeMaterial extends NodeMaterial {
|
|
13
18
|
|
|
14
19
|
static get type() {
|
|
@@ -17,12 +22,22 @@ class MeshMatcapNodeMaterial extends NodeMaterial {
|
|
|
17
22
|
|
|
18
23
|
}
|
|
19
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new mesh normal node material.
|
|
27
|
+
*
|
|
28
|
+
* @param {Object?} parameters - The configuration parameter.
|
|
29
|
+
*/
|
|
20
30
|
constructor( parameters ) {
|
|
21
31
|
|
|
22
32
|
super();
|
|
23
33
|
|
|
24
|
-
|
|
25
|
-
|
|
34
|
+
/**
|
|
35
|
+
* This flag can be used for type testing.
|
|
36
|
+
*
|
|
37
|
+
* @type {Boolean}
|
|
38
|
+
* @readonly
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
26
41
|
this.isMeshMatcapNodeMaterial = true;
|
|
27
42
|
|
|
28
43
|
this.setDefaultValues( _defaultValues );
|
|
@@ -31,6 +46,11 @@ class MeshMatcapNodeMaterial extends NodeMaterial {
|
|
|
31
46
|
|
|
32
47
|
}
|
|
33
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Setups the matcap specific node variables.
|
|
51
|
+
*
|
|
52
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
53
|
+
*/
|
|
34
54
|
setupVariants( builder ) {
|
|
35
55
|
|
|
36
56
|
const uv = matcapUV;
|
|
@@ -9,6 +9,11 @@ import { MeshNormalMaterial } from '../MeshNormalMaterial.js';
|
|
|
9
9
|
|
|
10
10
|
const _defaultValues = /*@__PURE__*/ new MeshNormalMaterial();
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Node material version of `MeshNormalMaterial`.
|
|
14
|
+
*
|
|
15
|
+
* @augments NodeMaterial
|
|
16
|
+
*/
|
|
12
17
|
class MeshNormalNodeMaterial extends NodeMaterial {
|
|
13
18
|
|
|
14
19
|
static get type() {
|
|
@@ -17,12 +22,22 @@ class MeshNormalNodeMaterial extends NodeMaterial {
|
|
|
17
22
|
|
|
18
23
|
}
|
|
19
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new mesh normal node material.
|
|
27
|
+
*
|
|
28
|
+
* @param {Object?} parameters - The configuration parameter.
|
|
29
|
+
*/
|
|
20
30
|
constructor( parameters ) {
|
|
21
31
|
|
|
22
32
|
super();
|
|
23
33
|
|
|
24
|
-
|
|
25
|
-
|
|
34
|
+
/**
|
|
35
|
+
* This flag can be used for type testing.
|
|
36
|
+
*
|
|
37
|
+
* @type {Boolean}
|
|
38
|
+
* @readonly
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
26
41
|
this.isMeshNormalNodeMaterial = true;
|
|
27
42
|
|
|
28
43
|
this.setDefaultValues( _defaultValues );
|
|
@@ -31,6 +46,10 @@ class MeshNormalNodeMaterial extends NodeMaterial {
|
|
|
31
46
|
|
|
32
47
|
}
|
|
33
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Overwrites the default implementation by computing the diffuse color
|
|
51
|
+
* based on the normal data.
|
|
52
|
+
*/
|
|
34
53
|
setupDiffuseColor() {
|
|
35
54
|
|
|
36
55
|
const opacityNode = this.opacityNode ? float( this.opacityNode ) : materialOpacity;
|