@plastic-software/three 0.167.3 → 0.174.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 +36277 -24023
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46743
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50670
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -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 +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- 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/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +29 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +61 -18
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +96 -2
- package/src/math/MathUtils.js +182 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- 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 +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- 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 +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -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 +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -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 +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
|
@@ -20,7 +20,6 @@ import {
|
|
|
20
20
|
* Loads geometry with uv and materials basic properties with texture support.
|
|
21
21
|
*
|
|
22
22
|
* @class TDSLoader
|
|
23
|
-
* @constructor
|
|
24
23
|
*/
|
|
25
24
|
|
|
26
25
|
class TDSLoader extends Loader {
|
|
@@ -42,7 +41,7 @@ class TDSLoader extends Loader {
|
|
|
42
41
|
* Load 3ds file from url.
|
|
43
42
|
*
|
|
44
43
|
* @method load
|
|
45
|
-
* @param {
|
|
44
|
+
* @param {string} url URL for the file.
|
|
46
45
|
* @param {Function} onLoad onLoad callback, receives group Object3D as argument.
|
|
47
46
|
* @param {Function} onProgress onProgress callback.
|
|
48
47
|
* @param {Function} onError onError callback.
|
|
@@ -90,7 +89,7 @@ class TDSLoader extends Loader {
|
|
|
90
89
|
*
|
|
91
90
|
* @method parse
|
|
92
91
|
* @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded.
|
|
93
|
-
* @param {
|
|
92
|
+
* @param {string} path Path for external resources.
|
|
94
93
|
* @return {Group} Group loaded from 3ds file.
|
|
95
94
|
*/
|
|
96
95
|
parse( arraybuffer, path ) {
|
|
@@ -116,7 +115,7 @@ class TDSLoader extends Loader {
|
|
|
116
115
|
*
|
|
117
116
|
* @method readFile
|
|
118
117
|
* @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded.
|
|
119
|
-
* @param {
|
|
118
|
+
* @param {string} path Path for external resources.
|
|
120
119
|
*/
|
|
121
120
|
readFile( arraybuffer, path ) {
|
|
122
121
|
|
|
@@ -159,7 +158,7 @@ class TDSLoader extends Loader {
|
|
|
159
158
|
*
|
|
160
159
|
* @method readMeshData
|
|
161
160
|
* @param {Chunk} chunk to read mesh from
|
|
162
|
-
* @param {
|
|
161
|
+
* @param {string} path Path for external resources.
|
|
163
162
|
*/
|
|
164
163
|
readMeshData( chunk, path ) {
|
|
165
164
|
|
|
@@ -236,7 +235,7 @@ class TDSLoader extends Loader {
|
|
|
236
235
|
*
|
|
237
236
|
* @method readMaterialEntry
|
|
238
237
|
* @param {Chunk} chunk Chunk in use.
|
|
239
|
-
* @param {
|
|
238
|
+
* @param {string} path Path for external resources.
|
|
240
239
|
*/
|
|
241
240
|
readMaterialEntry( chunk, path ) {
|
|
242
241
|
|
|
@@ -398,7 +397,7 @@ class TDSLoader extends Loader {
|
|
|
398
397
|
|
|
399
398
|
} else if ( next.id === MESH_MATRIX ) {
|
|
400
399
|
|
|
401
|
-
this.debugMessage( '
|
|
400
|
+
this.debugMessage( ' Transformation Matrix (TODO)' );
|
|
402
401
|
|
|
403
402
|
const values = [];
|
|
404
403
|
for ( let i = 0; i < 12; i ++ ) {
|
|
@@ -530,7 +529,7 @@ class TDSLoader extends Loader {
|
|
|
530
529
|
*
|
|
531
530
|
* @method readMap
|
|
532
531
|
* @param {Chunk} chunk Chunk in use.
|
|
533
|
-
* @param {
|
|
532
|
+
* @param {string} path Path for external resources.
|
|
534
533
|
* @return {Texture} Texture read from this data chunk.
|
|
535
534
|
*/
|
|
536
535
|
readMap( chunk, path ) {
|
|
@@ -657,7 +656,7 @@ class TDSLoader extends Loader {
|
|
|
657
656
|
*
|
|
658
657
|
* @method readPercentage
|
|
659
658
|
* @param {Chunk} chunk Chunk to read data from.
|
|
660
|
-
* @return {
|
|
659
|
+
* @return {number} Data read from the dataview.
|
|
661
660
|
*/
|
|
662
661
|
readPercentage( chunk ) {
|
|
663
662
|
|
|
@@ -710,7 +709,7 @@ class Chunk {
|
|
|
710
709
|
*
|
|
711
710
|
* @class Chunk
|
|
712
711
|
* @param {DataView} data DataView to read from.
|
|
713
|
-
* @param {
|
|
712
|
+
* @param {number} position in data.
|
|
714
713
|
* @param {Function} debugMessage logging callback.
|
|
715
714
|
*/
|
|
716
715
|
constructor( data, position, debugMessage ) {
|
|
@@ -773,7 +772,7 @@ class Chunk {
|
|
|
773
772
|
* return the ID of this chunk as Hex
|
|
774
773
|
*
|
|
775
774
|
* @method idToString
|
|
776
|
-
* @return {
|
|
775
|
+
* @return {string} hex-string of id
|
|
777
776
|
*/
|
|
778
777
|
get hexId() {
|
|
779
778
|
|
|
@@ -791,7 +790,7 @@ class Chunk {
|
|
|
791
790
|
* Read byte value.
|
|
792
791
|
*
|
|
793
792
|
* @method readByte
|
|
794
|
-
* @return {
|
|
793
|
+
* @return {number} Data read from the dataview.
|
|
795
794
|
*/
|
|
796
795
|
readByte() {
|
|
797
796
|
|
|
@@ -805,7 +804,7 @@ class Chunk {
|
|
|
805
804
|
* Read 32 bit float value.
|
|
806
805
|
*
|
|
807
806
|
* @method readFloat
|
|
808
|
-
* @return {
|
|
807
|
+
* @return {number} Data read from the dataview.
|
|
809
808
|
*/
|
|
810
809
|
readFloat() {
|
|
811
810
|
|
|
@@ -828,7 +827,7 @@ class Chunk {
|
|
|
828
827
|
* Read 32 bit signed integer value.
|
|
829
828
|
*
|
|
830
829
|
* @method readInt
|
|
831
|
-
* @return {
|
|
830
|
+
* @return {number} Data read from the dataview.
|
|
832
831
|
*/
|
|
833
832
|
readInt() {
|
|
834
833
|
|
|
@@ -842,7 +841,7 @@ class Chunk {
|
|
|
842
841
|
* Read 16 bit signed integer value.
|
|
843
842
|
*
|
|
844
843
|
* @method readShort
|
|
845
|
-
* @return {
|
|
844
|
+
* @return {number} Data read from the dataview.
|
|
846
845
|
*/
|
|
847
846
|
readShort() {
|
|
848
847
|
|
|
@@ -856,7 +855,7 @@ class Chunk {
|
|
|
856
855
|
* Read 64 bit unsigned integer value.
|
|
857
856
|
*
|
|
858
857
|
* @method readDWord
|
|
859
|
-
* @return {
|
|
858
|
+
* @return {number} Data read from the dataview.
|
|
860
859
|
*/
|
|
861
860
|
readDWord() {
|
|
862
861
|
|
|
@@ -870,7 +869,7 @@ class Chunk {
|
|
|
870
869
|
* Read 32 bit unsigned integer value.
|
|
871
870
|
*
|
|
872
871
|
* @method readWord
|
|
873
|
-
* @return {
|
|
872
|
+
* @return {number} Data read from the dataview.
|
|
874
873
|
*/
|
|
875
874
|
readWord() {
|
|
876
875
|
|
|
@@ -884,7 +883,7 @@ class Chunk {
|
|
|
884
883
|
* Read NULL terminated ASCII string value from chunk-pos.
|
|
885
884
|
*
|
|
886
885
|
* @method readString
|
|
887
|
-
* @return {
|
|
886
|
+
* @return {string} Data read from the dataview.
|
|
888
887
|
*/
|
|
889
888
|
readString() {
|
|
890
889
|
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
BufferGeometry,
|
|
6
6
|
ClampToEdgeWrapping,
|
|
7
7
|
Color,
|
|
8
|
+
ColorManagement,
|
|
8
9
|
ConeGeometry,
|
|
9
10
|
CylinderGeometry,
|
|
10
11
|
DataTexture,
|
|
@@ -249,7 +250,7 @@ class VRMLLoader extends Loader {
|
|
|
249
250
|
|
|
250
251
|
function createVisitor( BaseVRMLVisitor ) {
|
|
251
252
|
|
|
252
|
-
// the visitor is created
|
|
253
|
+
// the visitor is created dynamically based on the given base class
|
|
253
254
|
|
|
254
255
|
class VRMLToASTVisitor extends BaseVRMLVisitor {
|
|
255
256
|
|
|
@@ -918,8 +919,7 @@ class VRMLLoader extends Loader {
|
|
|
918
919
|
|
|
919
920
|
} else {
|
|
920
921
|
|
|
921
|
-
skyMaterial.color.setRGB( skyColor[ 0 ], skyColor[ 1 ], skyColor[ 2 ] );
|
|
922
|
-
skyMaterial.color.convertSRGBToLinear();
|
|
922
|
+
skyMaterial.color.setRGB( skyColor[ 0 ], skyColor[ 1 ], skyColor[ 2 ], SRGBColorSpace );
|
|
923
923
|
|
|
924
924
|
}
|
|
925
925
|
|
|
@@ -1240,13 +1240,11 @@ class VRMLLoader extends Loader {
|
|
|
1240
1240
|
break;
|
|
1241
1241
|
|
|
1242
1242
|
case 'diffuseColor':
|
|
1243
|
-
materialData.diffuseColor = new Color( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ] );
|
|
1244
|
-
materialData.diffuseColor.convertSRGBToLinear();
|
|
1243
|
+
materialData.diffuseColor = new Color().setRGB( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ], SRGBColorSpace );
|
|
1245
1244
|
break;
|
|
1246
1245
|
|
|
1247
1246
|
case 'emissiveColor':
|
|
1248
|
-
materialData.emissiveColor = new Color( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ] );
|
|
1249
|
-
materialData.emissiveColor.convertSRGBToLinear();
|
|
1247
|
+
materialData.emissiveColor = new Color().setRGB( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ], SRGBColorSpace );
|
|
1250
1248
|
break;
|
|
1251
1249
|
|
|
1252
1250
|
case 'shininess':
|
|
@@ -1254,8 +1252,7 @@ class VRMLLoader extends Loader {
|
|
|
1254
1252
|
break;
|
|
1255
1253
|
|
|
1256
1254
|
case 'specularColor':
|
|
1257
|
-
materialData.specularColor = new Color( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ] );
|
|
1258
|
-
materialData.specularColor.convertSRGBToLinear();
|
|
1255
|
+
materialData.specularColor = new Color().setRGB( fieldValues[ 0 ], fieldValues[ 1 ], fieldValues[ 2 ], SRGBColorSpace );
|
|
1259
1256
|
break;
|
|
1260
1257
|
|
|
1261
1258
|
case 'transparency':
|
|
@@ -1893,7 +1890,7 @@ class VRMLLoader extends Loader {
|
|
|
1893
1890
|
|
|
1894
1891
|
// if the colorIndex field is not empty, then one color is used for each polyline of the IndexedLineSet.
|
|
1895
1892
|
|
|
1896
|
-
const expandedColorIndex = expandLineIndex( colorIndex ); // compute colors for each line segment (rendering
|
|
1893
|
+
const expandedColorIndex = expandLineIndex( colorIndex ); // compute colors for each line segment (rendering primitive)
|
|
1897
1894
|
colorAttribute = computeAttributeFromIndexedData( expandedLineIndex, expandedColorIndex, color, 3 ); // compute data on vertex level
|
|
1898
1895
|
|
|
1899
1896
|
} else {
|
|
@@ -1910,8 +1907,8 @@ class VRMLLoader extends Loader {
|
|
|
1910
1907
|
|
|
1911
1908
|
// if the colorIndex field is not empty, then colors are applied to each vertex of the IndexedLineSet
|
|
1912
1909
|
|
|
1913
|
-
const flattenLineColors = flattenData( color, colorIndex ); // compute colors for each VRML
|
|
1914
|
-
const expandedLineColors = expandLineData( flattenLineColors, coordIndex ); // compute colors for each line segment (rendering
|
|
1910
|
+
const flattenLineColors = flattenData( color, colorIndex ); // compute colors for each VRML primitive
|
|
1911
|
+
const expandedLineColors = expandLineData( flattenLineColors, coordIndex ); // compute colors for each line segment (rendering primitive)
|
|
1915
1912
|
colorAttribute = computeAttributeFromLineData( expandedLineIndex, expandedLineColors ); // compute data on vertex level
|
|
1916
1913
|
|
|
1917
1914
|
|
|
@@ -1919,7 +1916,7 @@ class VRMLLoader extends Loader {
|
|
|
1919
1916
|
|
|
1920
1917
|
// if the colorIndex field is empty, then the coordIndex field is used to choose colors from the Color node
|
|
1921
1918
|
|
|
1922
|
-
const expandedLineColors = expandLineData( color, coordIndex ); // compute colors for each line segment (rendering
|
|
1919
|
+
const expandedLineColors = expandLineData( color, coordIndex ); // compute colors for each line segment (rendering primitive)
|
|
1923
1920
|
colorAttribute = computeAttributeFromLineData( expandedLineIndex, expandedLineColors ); // compute data on vertex level
|
|
1924
1921
|
|
|
1925
1922
|
}
|
|
@@ -2751,7 +2748,7 @@ class VRMLLoader extends Loader {
|
|
|
2751
2748
|
|
|
2752
2749
|
const indices = [];
|
|
2753
2750
|
|
|
2754
|
-
// since face
|
|
2751
|
+
// since face definitions can have more than three vertices, it's necessary to
|
|
2755
2752
|
// perform a simple triangulation
|
|
2756
2753
|
|
|
2757
2754
|
let start = 0;
|
|
@@ -3111,7 +3108,8 @@ class VRMLLoader extends Loader {
|
|
|
3111
3108
|
for ( let i = 0; i < attribute.count; i ++ ) {
|
|
3112
3109
|
|
|
3113
3110
|
color.fromBufferAttribute( attribute, i );
|
|
3114
|
-
|
|
3111
|
+
|
|
3112
|
+
ColorManagement.toWorkingColorSpace( color, SRGBColorSpace );
|
|
3115
3113
|
|
|
3116
3114
|
attribute.setXYZ( i, color.r, color.g, color.b );
|
|
3117
3115
|
|
|
@@ -3125,7 +3123,7 @@ class VRMLLoader extends Loader {
|
|
|
3125
3123
|
* node, but could be applied to other nodes with multiple faces as well.
|
|
3126
3124
|
*
|
|
3127
3125
|
* When used with the Background node, default is directionIsDown is true if
|
|
3128
|
-
* interpolating the skyColor down from the Zenith. When
|
|
3126
|
+
* interpolating the skyColor down from the Zenith. When interpolating up from
|
|
3129
3127
|
* the Nadir i.e. interpolating the groundColor, the directionIsDown is false.
|
|
3130
3128
|
*
|
|
3131
3129
|
* The first angle is never specified, it is the Zenith (0 rad). Angles are specified
|
|
@@ -3216,7 +3214,9 @@ class VRMLLoader extends Loader {
|
|
|
3216
3214
|
const colorA = colors[ thresholdIndexA ];
|
|
3217
3215
|
const colorB = colors[ thresholdIndexB ];
|
|
3218
3216
|
|
|
3219
|
-
color.copy( colorA ).lerp( colorB, t )
|
|
3217
|
+
color.copy( colorA ).lerp( colorB, t );
|
|
3218
|
+
|
|
3219
|
+
ColorManagement.toWorkingColorSpace( color, SRGBColorSpace );
|
|
3220
3220
|
|
|
3221
3221
|
colorAttribute.setXYZ( index, color.r, color.g, color.b );
|
|
3222
3222
|
|
|
@@ -4,7 +4,8 @@ import {
|
|
|
4
4
|
Color,
|
|
5
5
|
FileLoader,
|
|
6
6
|
Float32BufferAttribute,
|
|
7
|
-
Loader
|
|
7
|
+
Loader,
|
|
8
|
+
SRGBColorSpace
|
|
8
9
|
} from 'three';
|
|
9
10
|
import * as fflate from '../libs/fflate.module.js';
|
|
10
11
|
|
|
@@ -211,7 +212,7 @@ class VTKLoader extends Loader {
|
|
|
211
212
|
const g = parseFloat( result[ 2 ] );
|
|
212
213
|
const b = parseFloat( result[ 3 ] );
|
|
213
214
|
|
|
214
|
-
color.
|
|
215
|
+
color.setRGB( r, g, b, SRGBColorSpace );
|
|
215
216
|
|
|
216
217
|
colors.push( color.r, color.g, color.b );
|
|
217
218
|
|
|
@@ -325,7 +326,7 @@ class VTKLoader extends Loader {
|
|
|
325
326
|
const g = colors[ 3 * i + 1 ];
|
|
326
327
|
const b = colors[ 3 * i + 2 ];
|
|
327
328
|
|
|
328
|
-
color.
|
|
329
|
+
color.setRGB( r, g, b, SRGBColorSpace );
|
|
329
330
|
|
|
330
331
|
newColors.push( color.r, color.g, color.b );
|
|
331
332
|
newColors.push( color.r, color.g, color.b );
|
|
@@ -3,7 +3,8 @@ import {
|
|
|
3
3
|
Color,
|
|
4
4
|
FileLoader,
|
|
5
5
|
Float32BufferAttribute,
|
|
6
|
-
Loader
|
|
6
|
+
Loader,
|
|
7
|
+
SRGBColorSpace
|
|
7
8
|
} from 'three';
|
|
8
9
|
|
|
9
10
|
class XYZLoader extends Loader {
|
|
@@ -80,7 +81,7 @@ class XYZLoader extends Loader {
|
|
|
80
81
|
const g = parseFloat( lineValues[ 4 ] ) / 255;
|
|
81
82
|
const b = parseFloat( lineValues[ 5 ] ) / 255;
|
|
82
83
|
|
|
83
|
-
color.
|
|
84
|
+
color.setRGB( r, g, b, SRGBColorSpace );
|
|
84
85
|
|
|
85
86
|
colors.push( color.r, color.g, color.b );
|
|
86
87
|
|
|
@@ -463,7 +463,7 @@ class IFFParser {
|
|
|
463
463
|
}
|
|
464
464
|
|
|
465
465
|
// holds various data about texture node image state
|
|
466
|
-
// Data other
|
|
466
|
+
// Data other than mipMapLevel unknown
|
|
467
467
|
parseImageStateForm() {
|
|
468
468
|
|
|
469
469
|
this.reader.skip( 8 ); // unknown
|
|
@@ -577,7 +577,7 @@ class IFFParser {
|
|
|
577
577
|
fileName: ''
|
|
578
578
|
};
|
|
579
579
|
|
|
580
|
-
//
|
|
580
|
+
// search STIL block
|
|
581
581
|
while ( true ) {
|
|
582
582
|
|
|
583
583
|
var tag = this.reader.getIDTag();
|
|
@@ -653,11 +653,11 @@ class IFFParser {
|
|
|
653
653
|
|
|
654
654
|
var number = this.reader.getUint16();
|
|
655
655
|
var flags = this.reader.getUint16(); // If the least significant bit of flags is set, the layer is hidden.
|
|
656
|
-
var pivot = this.reader.getFloat32Array( 3 ); // Note: this seems to be
|
|
656
|
+
var pivot = this.reader.getFloat32Array( 3 ); // Note: this seems to be superfluous, as the geometry is translated when pivot is present
|
|
657
657
|
var layer = {
|
|
658
658
|
number: number,
|
|
659
659
|
flags: flags, // If the least significant bit of flags is set, the layer is hidden.
|
|
660
|
-
pivot: [ - pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] ], // Note: this seems to be
|
|
660
|
+
pivot: [ - pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] ], // Note: this seems to be superfluous, as the geometry is translated when pivot is present
|
|
661
661
|
name: this.reader.getString(),
|
|
662
662
|
};
|
|
663
663
|
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Color,
|
|
3
|
+
ShaderMaterial,
|
|
4
|
+
UniformsLib,
|
|
5
|
+
UniformsUtils,
|
|
6
|
+
} from 'three';
|
|
7
|
+
|
|
8
|
+
class LDrawConditionalLineMaterial extends ShaderMaterial {
|
|
9
|
+
|
|
10
|
+
static get type() {
|
|
11
|
+
|
|
12
|
+
return 'LDrawConditionalLineMaterial';
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
constructor( parameters ) {
|
|
17
|
+
|
|
18
|
+
super( {
|
|
19
|
+
|
|
20
|
+
uniforms: UniformsUtils.merge( [
|
|
21
|
+
UniformsLib.fog,
|
|
22
|
+
{
|
|
23
|
+
diffuse: {
|
|
24
|
+
value: new Color()
|
|
25
|
+
},
|
|
26
|
+
opacity: {
|
|
27
|
+
value: 1.0
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
] ),
|
|
31
|
+
|
|
32
|
+
vertexShader: /* glsl */`
|
|
33
|
+
attribute vec3 control0;
|
|
34
|
+
attribute vec3 control1;
|
|
35
|
+
attribute vec3 direction;
|
|
36
|
+
varying float discardFlag;
|
|
37
|
+
|
|
38
|
+
#include <common>
|
|
39
|
+
#include <color_pars_vertex>
|
|
40
|
+
#include <fog_pars_vertex>
|
|
41
|
+
#include <logdepthbuf_pars_vertex>
|
|
42
|
+
#include <clipping_planes_pars_vertex>
|
|
43
|
+
void main() {
|
|
44
|
+
#include <color_vertex>
|
|
45
|
+
|
|
46
|
+
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
|
|
47
|
+
gl_Position = projectionMatrix * mvPosition;
|
|
48
|
+
|
|
49
|
+
// Transform the line segment ends and control points into camera clip space
|
|
50
|
+
vec4 c0 = projectionMatrix * modelViewMatrix * vec4( control0, 1.0 );
|
|
51
|
+
vec4 c1 = projectionMatrix * modelViewMatrix * vec4( control1, 1.0 );
|
|
52
|
+
vec4 p0 = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
53
|
+
vec4 p1 = projectionMatrix * modelViewMatrix * vec4( position + direction, 1.0 );
|
|
54
|
+
|
|
55
|
+
c0.xy /= c0.w;
|
|
56
|
+
c1.xy /= c1.w;
|
|
57
|
+
p0.xy /= p0.w;
|
|
58
|
+
p1.xy /= p1.w;
|
|
59
|
+
|
|
60
|
+
// Get the direction of the segment and an orthogonal vector
|
|
61
|
+
vec2 dir = p1.xy - p0.xy;
|
|
62
|
+
vec2 norm = vec2( -dir.y, dir.x );
|
|
63
|
+
|
|
64
|
+
// Get control point directions from the line
|
|
65
|
+
vec2 c0dir = c0.xy - p1.xy;
|
|
66
|
+
vec2 c1dir = c1.xy - p1.xy;
|
|
67
|
+
|
|
68
|
+
// If the vectors to the controls points are pointed in different directions away
|
|
69
|
+
// from the line segment then the line should not be drawn.
|
|
70
|
+
float d0 = dot( normalize( norm ), normalize( c0dir ) );
|
|
71
|
+
float d1 = dot( normalize( norm ), normalize( c1dir ) );
|
|
72
|
+
discardFlag = float( sign( d0 ) != sign( d1 ) );
|
|
73
|
+
|
|
74
|
+
#include <logdepthbuf_vertex>
|
|
75
|
+
#include <clipping_planes_vertex>
|
|
76
|
+
#include <fog_vertex>
|
|
77
|
+
}
|
|
78
|
+
`,
|
|
79
|
+
|
|
80
|
+
fragmentShader: /* glsl */`
|
|
81
|
+
uniform vec3 diffuse;
|
|
82
|
+
uniform float opacity;
|
|
83
|
+
varying float discardFlag;
|
|
84
|
+
|
|
85
|
+
#include <common>
|
|
86
|
+
#include <color_pars_fragment>
|
|
87
|
+
#include <fog_pars_fragment>
|
|
88
|
+
#include <logdepthbuf_pars_fragment>
|
|
89
|
+
#include <clipping_planes_pars_fragment>
|
|
90
|
+
void main() {
|
|
91
|
+
|
|
92
|
+
if ( discardFlag > 0.5 ) discard;
|
|
93
|
+
|
|
94
|
+
#include <clipping_planes_fragment>
|
|
95
|
+
vec3 outgoingLight = vec3( 0.0 );
|
|
96
|
+
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
97
|
+
#include <logdepthbuf_fragment>
|
|
98
|
+
#include <color_fragment>
|
|
99
|
+
outgoingLight = diffuseColor.rgb; // simple shader
|
|
100
|
+
gl_FragColor = vec4( outgoingLight, diffuseColor.a );
|
|
101
|
+
#include <tonemapping_fragment>
|
|
102
|
+
#include <colorspace_fragment>
|
|
103
|
+
#include <fog_fragment>
|
|
104
|
+
#include <premultiplied_alpha_fragment>
|
|
105
|
+
}
|
|
106
|
+
`,
|
|
107
|
+
|
|
108
|
+
} );
|
|
109
|
+
|
|
110
|
+
Object.defineProperties( this, {
|
|
111
|
+
|
|
112
|
+
opacity: {
|
|
113
|
+
get: function () {
|
|
114
|
+
|
|
115
|
+
return this.uniforms.opacity.value;
|
|
116
|
+
|
|
117
|
+
},
|
|
118
|
+
|
|
119
|
+
set: function ( value ) {
|
|
120
|
+
|
|
121
|
+
this.uniforms.opacity.value = value;
|
|
122
|
+
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
|
|
126
|
+
color: {
|
|
127
|
+
get: function () {
|
|
128
|
+
|
|
129
|
+
return this.uniforms.diffuse.value;
|
|
130
|
+
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
} );
|
|
135
|
+
|
|
136
|
+
this.setValues( parameters );
|
|
137
|
+
this.isLDrawConditionalLineMaterial = true;
|
|
138
|
+
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export { LDrawConditionalLineMaterial };
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Color } from 'three';
|
|
2
|
+
import { attribute, cameraProjectionMatrix, dot, float, Fn, modelViewMatrix, modelViewProjection, NodeMaterial, normalize, positionGeometry, sign, uniform, varyingProperty, vec2, vec4 } from 'three/tsl';
|
|
3
|
+
|
|
4
|
+
class LDrawConditionalLineMaterial extends NodeMaterial {
|
|
5
|
+
|
|
6
|
+
static get type() {
|
|
7
|
+
|
|
8
|
+
return 'LDrawConditionalLineMaterial';
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
constructor( parameters ) {
|
|
13
|
+
|
|
14
|
+
super();
|
|
15
|
+
|
|
16
|
+
const vertexNode = /*@__PURE__*/ Fn( () => {
|
|
17
|
+
|
|
18
|
+
const control0 = attribute( 'control0', 'vec3' );
|
|
19
|
+
const control1 = attribute( 'control1', 'vec3' );
|
|
20
|
+
const direction = attribute( 'direction', 'vec3' );
|
|
21
|
+
|
|
22
|
+
const mvp = cameraProjectionMatrix.mul( modelViewMatrix );
|
|
23
|
+
|
|
24
|
+
// Transform the line segment ends and control points into camera clip space
|
|
25
|
+
|
|
26
|
+
const c0 = mvp.mul( vec4( control0, 1 ) ).toVar();
|
|
27
|
+
const c1 = mvp.mul( vec4( control1, 1 ) ).toVar();
|
|
28
|
+
const p0 = mvp.mul( vec4( positionGeometry, 1 ) ).toVar();
|
|
29
|
+
const p1 = mvp.mul( vec4( positionGeometry.add( direction ), 1 ) ).toVar();
|
|
30
|
+
|
|
31
|
+
c0.xy.divAssign( c0.w );
|
|
32
|
+
c1.xy.divAssign( c1.w );
|
|
33
|
+
p0.xy.divAssign( p0.w );
|
|
34
|
+
p1.xy.divAssign( p1.w );
|
|
35
|
+
|
|
36
|
+
// Get the direction of the segment and an orthogonal vector
|
|
37
|
+
|
|
38
|
+
const dir = p1.xy.sub( p0.xy ).toVar();
|
|
39
|
+
const norm = vec2( dir.y.negate(), dir.x ).toVar();
|
|
40
|
+
|
|
41
|
+
// Get control point directions from the line
|
|
42
|
+
const c0dir = c0.xy.sub( p1.xy ).toVar();
|
|
43
|
+
const c1dir = c1.xy.sub( p1.xy ).toVar();
|
|
44
|
+
|
|
45
|
+
// If the vectors to the controls points are pointed in different directions away
|
|
46
|
+
// from the line segment then the line should not be drawn.
|
|
47
|
+
const d0 = dot( normalize( norm ), normalize( c0dir ) ).toVar();
|
|
48
|
+
const d1 = dot( normalize( norm ), normalize( c1dir ) ).toVar();
|
|
49
|
+
const discardFlag = sign( d0 ).notEqual( sign( d1 ) ).select( float( 1 ), float( 0 ) );
|
|
50
|
+
|
|
51
|
+
varyingProperty( 'float', 'discardFlag' ).assign( discardFlag );
|
|
52
|
+
|
|
53
|
+
return modelViewProjection;
|
|
54
|
+
|
|
55
|
+
} )();
|
|
56
|
+
|
|
57
|
+
const fragmentNode = /*@__PURE__*/ Fn( () => {
|
|
58
|
+
|
|
59
|
+
const discardFlag = varyingProperty( 'float', 'discardFlag' );
|
|
60
|
+
|
|
61
|
+
discardFlag.greaterThan( float( 0.5 ) ).discard();
|
|
62
|
+
|
|
63
|
+
return vec4( this._diffuseUniform, this._opacityUniform );
|
|
64
|
+
|
|
65
|
+
} )();
|
|
66
|
+
|
|
67
|
+
this.vertexNode = vertexNode;
|
|
68
|
+
this.fragmentNode = fragmentNode;
|
|
69
|
+
|
|
70
|
+
this._diffuseUniform = uniform( new Color() );
|
|
71
|
+
this._opacityUniform = uniform( 1 );
|
|
72
|
+
|
|
73
|
+
//
|
|
74
|
+
|
|
75
|
+
Object.defineProperties( this, {
|
|
76
|
+
|
|
77
|
+
opacity: {
|
|
78
|
+
get: function () {
|
|
79
|
+
|
|
80
|
+
return this._opacityUniform.value;
|
|
81
|
+
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
set: function ( value ) {
|
|
85
|
+
|
|
86
|
+
this._opacityUniform.value = value;
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
color: {
|
|
92
|
+
get: function () {
|
|
93
|
+
|
|
94
|
+
return this._diffuseUniform.value;
|
|
95
|
+
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
set: function ( value ) {
|
|
99
|
+
|
|
100
|
+
this._diffuseUniform.value.copy( value );
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
} );
|
|
106
|
+
|
|
107
|
+
this.setValues( parameters );
|
|
108
|
+
this.isLDrawConditionalLineMaterial = true;
|
|
109
|
+
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export { LDrawConditionalLineMaterial };
|
|
@@ -319,6 +319,8 @@ class MeshGouraudMaterial extends ShaderMaterial {
|
|
|
319
319
|
|
|
320
320
|
super();
|
|
321
321
|
|
|
322
|
+
console.warn( 'THREE.MeshGouraudMaterial: MeshGouraudMaterial has been deprecated and will be removed with r183. Use THREE.MeshLambertMaterial instead.' ); // @deprecated r173
|
|
323
|
+
|
|
322
324
|
this.isMeshGouraudMaterial = true;
|
|
323
325
|
|
|
324
326
|
this.type = 'MeshGouraudMaterial';
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { LinearTransfer, Matrix3, SRGBTransfer } from 'three';
|
|
2
|
+
|
|
3
|
+
// Reference: http://www.russellcottrell.com/photo/matrixCalculator.htm
|
|
4
|
+
|
|
5
|
+
const P3_PRIMARIES = [ 0.680, 0.320, 0.265, 0.690, 0.150, 0.060 ];
|
|
6
|
+
const P3_LUMINANCE_COEFFICIENTS = [ 0.2289, 0.6917, 0.0793 ];
|
|
7
|
+
const REC2020_PRIMARIES = [ 0.708, 0.292, 0.170, 0.797, 0.131, 0.046 ];
|
|
8
|
+
const REC2020_LUMINANCE_COEFFICIENTS = [ 0.2627, 0.6780, 0.0593 ];
|
|
9
|
+
const D65 = [ 0.3127, 0.3290 ];
|
|
10
|
+
|
|
11
|
+
/******************************************************************************
|
|
12
|
+
* Display P3 definitions
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const LINEAR_DISPLAY_P3_TO_XYZ = /*@__PURE__*/ new Matrix3().set(
|
|
16
|
+
0.4865709, 0.2656677, 0.1982173,
|
|
17
|
+
0.2289746, 0.6917385, 0.0792869,
|
|
18
|
+
0.0000000, 0.0451134, 1.0439444
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
const XYZ_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().set(
|
|
22
|
+
2.4934969, - 0.9313836, - 0.4027108,
|
|
23
|
+
- 0.8294890, 1.7626641, 0.0236247,
|
|
24
|
+
0.0358458, - 0.0761724, 0.9568845
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
export const DisplayP3ColorSpace = 'display-p3';
|
|
28
|
+
export const LinearDisplayP3ColorSpace = 'display-p3-linear';
|
|
29
|
+
|
|
30
|
+
export const DisplayP3ColorSpaceImpl = {
|
|
31
|
+
primaries: P3_PRIMARIES,
|
|
32
|
+
whitePoint: D65,
|
|
33
|
+
transfer: SRGBTransfer,
|
|
34
|
+
toXYZ: LINEAR_DISPLAY_P3_TO_XYZ,
|
|
35
|
+
fromXYZ: XYZ_TO_LINEAR_DISPLAY_P3,
|
|
36
|
+
luminanceCoefficients: P3_LUMINANCE_COEFFICIENTS,
|
|
37
|
+
outputColorSpaceConfig: { drawingBufferColorSpace: DisplayP3ColorSpace }
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const LinearDisplayP3ColorSpaceImpl = {
|
|
41
|
+
primaries: P3_PRIMARIES,
|
|
42
|
+
whitePoint: D65,
|
|
43
|
+
transfer: LinearTransfer,
|
|
44
|
+
toXYZ: LINEAR_DISPLAY_P3_TO_XYZ,
|
|
45
|
+
fromXYZ: XYZ_TO_LINEAR_DISPLAY_P3,
|
|
46
|
+
luminanceCoefficients: P3_LUMINANCE_COEFFICIENTS,
|
|
47
|
+
workingColorSpaceConfig: { unpackColorSpace: DisplayP3ColorSpace },
|
|
48
|
+
outputColorSpaceConfig: { drawingBufferColorSpace: DisplayP3ColorSpace }
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/******************************************************************************
|
|
52
|
+
* Rec. 2020 definitions
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
const LINEAR_REC2020_TO_XYZ = /*@__PURE__*/ new Matrix3().set(
|
|
56
|
+
0.6369580, 0.1446169, 0.1688810,
|
|
57
|
+
0.2627002, 0.6779981, 0.0593017,
|
|
58
|
+
0.0000000, 0.0280727, 1.0609851
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
const XYZ_TO_LINEAR_REC2020 = /*@__PURE__*/ new Matrix3().set(
|
|
62
|
+
1.7166512, - 0.3556708, - 0.2533663,
|
|
63
|
+
- 0.6666844, 1.6164812, 0.0157685,
|
|
64
|
+
0.0176399, - 0.0427706, 0.9421031
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
export const LinearRec2020ColorSpace = 'rec2020-linear';
|
|
68
|
+
|
|
69
|
+
export const LinearRec2020ColorSpaceImpl = {
|
|
70
|
+
primaries: REC2020_PRIMARIES,
|
|
71
|
+
whitePoint: D65,
|
|
72
|
+
transfer: LinearTransfer,
|
|
73
|
+
toXYZ: LINEAR_REC2020_TO_XYZ,
|
|
74
|
+
fromXYZ: XYZ_TO_LINEAR_REC2020,
|
|
75
|
+
luminanceCoefficients: REC2020_LUMINANCE_COEFFICIENTS,
|
|
76
|
+
};
|