@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
|
@@ -1,33 +1,13 @@
|
|
|
1
1
|
export default /* glsl */`
|
|
2
2
|
|
|
3
|
-
// http://www.russellcottrell.com/photo/matrixCalculator.htm
|
|
4
|
-
|
|
5
|
-
// Linear sRGB => XYZ => Linear Display P3
|
|
6
|
-
const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(
|
|
7
|
-
vec3( 0.8224621, 0.177538, 0.0 ),
|
|
8
|
-
vec3( 0.0331941, 0.9668058, 0.0 ),
|
|
9
|
-
vec3( 0.0170827, 0.0723974, 0.9105199 )
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
// Linear Display P3 => XYZ => Linear sRGB
|
|
13
|
-
const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(
|
|
14
|
-
vec3( 1.2249401, - 0.2249404, 0.0 ),
|
|
15
|
-
vec3( - 0.0420569, 1.0420571, 0.0 ),
|
|
16
|
-
vec3( - 0.0196376, - 0.0786361, 1.0982735 )
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {
|
|
20
|
-
return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {
|
|
24
|
-
return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );
|
|
25
|
-
}
|
|
26
|
-
|
|
27
3
|
vec4 LinearTransferOETF( in vec4 value ) {
|
|
28
4
|
return value;
|
|
29
5
|
}
|
|
30
6
|
|
|
7
|
+
vec4 sRGBTransferEOTF( in vec4 value ) {
|
|
8
|
+
return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );
|
|
9
|
+
}
|
|
10
|
+
|
|
31
11
|
vec4 sRGBTransferOETF( in vec4 value ) {
|
|
32
12
|
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
|
|
33
13
|
}
|
|
@@ -3,6 +3,14 @@ export default /* glsl */`
|
|
|
3
3
|
|
|
4
4
|
vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );
|
|
5
5
|
|
|
6
|
+
#ifdef DECODE_VIDEO_TEXTURE_EMISSIVE
|
|
7
|
+
|
|
8
|
+
// use inline sRGB decode until browsers properly support SRGB8_ALPHA8 with video textures (#26516)
|
|
9
|
+
|
|
10
|
+
emissiveColor = sRGBTransferEOTF( emissiveColor );
|
|
11
|
+
|
|
12
|
+
#endif
|
|
13
|
+
|
|
6
14
|
totalEmissiveRadiance *= emissiveColor.rgb;
|
|
7
15
|
|
|
8
16
|
#endif
|
|
@@ -286,7 +286,7 @@ vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in m
|
|
|
286
286
|
float result = LTC_ClippedSphereFormFactor( vectorFormFactor );
|
|
287
287
|
|
|
288
288
|
/*
|
|
289
|
-
// alternate method of adjusting for horizon clipping (see
|
|
289
|
+
// alternate method of adjusting for horizon clipping (see reference)
|
|
290
290
|
// refactoring required
|
|
291
291
|
float len = length( vectorFormFactor );
|
|
292
292
|
float z = vectorFormFactor.z / len;
|
|
@@ -351,7 +351,7 @@ vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 no
|
|
|
351
351
|
|
|
352
352
|
#endif
|
|
353
353
|
|
|
354
|
-
// This is a curve-fit
|
|
354
|
+
// This is a curve-fit approximation to the "Charlie sheen" BRDF integrated over the hemisphere from
|
|
355
355
|
// Estevez and Kulla 2017, "Production Friendly Microfacet Sheen BRDF". The analysis can be found
|
|
356
356
|
// in the Sheen section of https://drive.google.com/file/d/1T0D1VSyR4AllqIJTQAraEIzjlb5h4FKH/view?usp=sharing
|
|
357
357
|
float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {
|
|
@@ -7,8 +7,8 @@ export default /* glsl */`
|
|
|
7
7
|
|
|
8
8
|
// use inline sRGB decode until browsers properly support SRGB8_ALPHA8 with video textures (#26516)
|
|
9
9
|
|
|
10
|
-
sampledDiffuseColor =
|
|
11
|
-
|
|
10
|
+
sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );
|
|
11
|
+
|
|
12
12
|
#endif
|
|
13
13
|
|
|
14
14
|
diffuseColor *= sampledDiffuseColor;
|
|
@@ -22,9 +22,9 @@ vec3 ReinhardToneMapping( vec3 color ) {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// source: http://filmicworlds.com/blog/filmic-tonemapping-operators/
|
|
25
|
-
vec3
|
|
25
|
+
vec3 CineonToneMapping( vec3 color ) {
|
|
26
26
|
|
|
27
|
-
//
|
|
27
|
+
// filmic operator by Jim Hejl and Richard Burgess-Dawson
|
|
28
28
|
color *= toneMappingExposure;
|
|
29
29
|
color = max( vec3( 0.0 ), color - 0.004 );
|
|
30
30
|
return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );
|
|
@@ -123,7 +123,7 @@ export default /* glsl */`
|
|
|
123
123
|
// Direction of refracted light.
|
|
124
124
|
vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );
|
|
125
125
|
|
|
126
|
-
// Compute rotation-
|
|
126
|
+
// Compute rotation-independent scaling of the model matrix.
|
|
127
127
|
vec3 modelScale;
|
|
128
128
|
modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
|
|
129
129
|
modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
|
|
@@ -184,13 +184,13 @@ export default /* glsl */`
|
|
|
184
184
|
|
|
185
185
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );
|
|
186
186
|
vec3 refractedRayExit = position + transmissionRay;
|
|
187
|
-
|
|
187
|
+
|
|
188
188
|
// Project refracted vector on the framebuffer, while mapping to normalized device coordinates.
|
|
189
189
|
vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
|
|
190
190
|
vec2 refractionCoords = ndcPos.xy / ndcPos.w;
|
|
191
191
|
refractionCoords += 1.0;
|
|
192
192
|
refractionCoords /= 2.0;
|
|
193
|
-
|
|
193
|
+
|
|
194
194
|
// Sample framebuffer to get pixel the refracted ray hits.
|
|
195
195
|
vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );
|
|
196
196
|
transmittedLight[ i ] = transmissionSample[ i ];
|
|
@@ -201,9 +201,9 @@ export default /* glsl */`
|
|
|
201
201
|
}
|
|
202
202
|
|
|
203
203
|
transmittedLight.a /= 3.0;
|
|
204
|
-
|
|
204
|
+
|
|
205
205
|
#else
|
|
206
|
-
|
|
206
|
+
|
|
207
207
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
208
208
|
vec3 refractedRayExit = position + transmissionRay;
|
|
209
209
|
|
|
@@ -216,7 +216,7 @@ export default /* glsl */`
|
|
|
216
216
|
// Sample framebuffer to get pixel the refracted ray hits.
|
|
217
217
|
transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
|
|
218
218
|
transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );
|
|
219
|
-
|
|
219
|
+
|
|
220
220
|
#endif
|
|
221
221
|
|
|
222
222
|
vec3 attenuatedColor = transmittance * transmittedLight.rgb;
|
|
@@ -224,7 +224,7 @@ export default /* glsl */`
|
|
|
224
224
|
// Get the specular component.
|
|
225
225
|
vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
|
|
226
226
|
|
|
227
|
-
// As less light is transmitted, the opacity should be increased. This simple approximation does a decent job
|
|
227
|
+
// As less light is transmitted, the opacity should be increased. This simple approximation does a decent job
|
|
228
228
|
// of modulating a CSS background, and has no effect when the buffer is opaque, due to a solid object or clear color.
|
|
229
229
|
float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;
|
|
230
230
|
|
|
@@ -3,6 +3,7 @@ uniform float size;
|
|
|
3
3
|
uniform float scale;
|
|
4
4
|
|
|
5
5
|
#include <common>
|
|
6
|
+
#include <batching_pars_vertex>
|
|
6
7
|
#include <color_pars_vertex>
|
|
7
8
|
#include <fog_pars_vertex>
|
|
8
9
|
#include <morphtarget_pars_vertex>
|
|
@@ -27,6 +28,7 @@ void main() {
|
|
|
27
28
|
#include <color_vertex>
|
|
28
29
|
#include <morphinstance_vertex>
|
|
29
30
|
#include <morphcolor_vertex>
|
|
31
|
+
#include <batching_vertex>
|
|
30
32
|
#include <begin_vertex>
|
|
31
33
|
#include <morphtarget_vertex>
|
|
32
34
|
#include <project_vertex>
|
|
@@ -12,11 +12,9 @@ void main() {
|
|
|
12
12
|
|
|
13
13
|
#include <uv_vertex>
|
|
14
14
|
|
|
15
|
-
vec4 mvPosition = modelViewMatrix
|
|
15
|
+
vec4 mvPosition = modelViewMatrix[ 3 ];
|
|
16
16
|
|
|
17
|
-
vec2 scale;
|
|
18
|
-
scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );
|
|
19
|
-
scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );
|
|
17
|
+
vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );
|
|
20
18
|
|
|
21
19
|
#ifndef USE_SIZEATTENUATION
|
|
22
20
|
|
|
@@ -76,40 +76,71 @@ function WebGLAttributes( gl ) {
|
|
|
76
76
|
function updateBuffer( buffer, attribute, bufferType ) {
|
|
77
77
|
|
|
78
78
|
const array = attribute.array;
|
|
79
|
-
const updateRange = attribute._updateRange; // @deprecated, r159
|
|
80
79
|
const updateRanges = attribute.updateRanges;
|
|
81
80
|
|
|
82
81
|
gl.bindBuffer( bufferType, buffer );
|
|
83
82
|
|
|
84
|
-
if (
|
|
83
|
+
if ( updateRanges.length === 0 ) {
|
|
85
84
|
|
|
86
85
|
// Not using update ranges
|
|
87
86
|
gl.bufferSubData( bufferType, 0, array );
|
|
88
87
|
|
|
89
|
-
}
|
|
88
|
+
} else {
|
|
90
89
|
|
|
91
|
-
|
|
90
|
+
// Before applying update ranges, we merge any adjacent / overlapping
|
|
91
|
+
// ranges to reduce load on `gl.bufferSubData`. Empirically, this has led
|
|
92
|
+
// to performance improvements for applications which make heavy use of
|
|
93
|
+
// update ranges. Likely due to GPU command overhead.
|
|
94
|
+
//
|
|
95
|
+
// Note that to reduce garbage collection between frames, we merge the
|
|
96
|
+
// update ranges in-place. This is safe because this method will clear the
|
|
97
|
+
// update ranges once updated.
|
|
92
98
|
|
|
93
|
-
|
|
99
|
+
updateRanges.sort( ( a, b ) => a.start - b.start );
|
|
100
|
+
|
|
101
|
+
// To merge the update ranges in-place, we work from left to right in the
|
|
102
|
+
// existing updateRanges array, merging ranges. This may result in a final
|
|
103
|
+
// array which is smaller than the original. This index tracks the last
|
|
104
|
+
// index representing a merged range, any data after this index can be
|
|
105
|
+
// trimmed once the merge algorithm is completed.
|
|
106
|
+
let mergeIndex = 0;
|
|
107
|
+
|
|
108
|
+
for ( let i = 1; i < updateRanges.length; i ++ ) {
|
|
94
109
|
|
|
110
|
+
const previousRange = updateRanges[ mergeIndex ];
|
|
95
111
|
const range = updateRanges[ i ];
|
|
96
112
|
|
|
97
|
-
|
|
98
|
-
|
|
113
|
+
// We add one here to merge adjacent ranges. This is safe because ranges
|
|
114
|
+
// operate over positive integers.
|
|
115
|
+
if ( range.start <= previousRange.start + previousRange.count + 1 ) {
|
|
116
|
+
|
|
117
|
+
previousRange.count = Math.max(
|
|
118
|
+
previousRange.count,
|
|
119
|
+
range.start + range.count - previousRange.start
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
} else {
|
|
123
|
+
|
|
124
|
+
++ mergeIndex;
|
|
125
|
+
updateRanges[ mergeIndex ] = range;
|
|
126
|
+
|
|
127
|
+
}
|
|
99
128
|
|
|
100
129
|
}
|
|
101
130
|
|
|
102
|
-
|
|
131
|
+
// Trim the array to only contain the merged ranges.
|
|
132
|
+
updateRanges.length = mergeIndex + 1;
|
|
103
133
|
|
|
104
|
-
|
|
134
|
+
for ( let i = 0, l = updateRanges.length; i < l; i ++ ) {
|
|
135
|
+
|
|
136
|
+
const range = updateRanges[ i ];
|
|
105
137
|
|
|
106
|
-
|
|
107
|
-
|
|
138
|
+
gl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,
|
|
139
|
+
array, range.start, range.count );
|
|
108
140
|
|
|
109
|
-
|
|
110
|
-
array, updateRange.offset, updateRange.count );
|
|
141
|
+
}
|
|
111
142
|
|
|
112
|
-
|
|
143
|
+
attribute.clearUpdateRanges();
|
|
113
144
|
|
|
114
145
|
}
|
|
115
146
|
|
|
@@ -242,6 +242,28 @@ function WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha,
|
|
|
242
242
|
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
+
function dispose() {
|
|
246
|
+
|
|
247
|
+
if ( boxMesh !== undefined ) {
|
|
248
|
+
|
|
249
|
+
boxMesh.geometry.dispose();
|
|
250
|
+
boxMesh.material.dispose();
|
|
251
|
+
|
|
252
|
+
boxMesh = undefined;
|
|
253
|
+
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if ( planeMesh !== undefined ) {
|
|
257
|
+
|
|
258
|
+
planeMesh.geometry.dispose();
|
|
259
|
+
planeMesh.material.dispose();
|
|
260
|
+
|
|
261
|
+
planeMesh = undefined;
|
|
262
|
+
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
}
|
|
266
|
+
|
|
245
267
|
return {
|
|
246
268
|
|
|
247
269
|
getClearColor: function () {
|
|
@@ -268,7 +290,8 @@ function WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha,
|
|
|
268
290
|
|
|
269
291
|
},
|
|
270
292
|
render: render,
|
|
271
|
-
addToRenderList: addToRenderList
|
|
293
|
+
addToRenderList: addToRenderList,
|
|
294
|
+
dispose: dispose
|
|
272
295
|
|
|
273
296
|
};
|
|
274
297
|
|
|
@@ -65,15 +65,11 @@ function WebGLBufferRenderer( gl, extensions, info ) {
|
|
|
65
65
|
let elementCount = 0;
|
|
66
66
|
for ( let i = 0; i < drawCount; i ++ ) {
|
|
67
67
|
|
|
68
|
-
elementCount += counts[ i ];
|
|
68
|
+
elementCount += counts[ i ] * primcount[ i ];
|
|
69
69
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
info.update( elementCount, mode, primcount[ i ] );
|
|
75
|
-
|
|
76
|
-
}
|
|
72
|
+
info.update( elementCount, mode, 1 );
|
|
77
73
|
|
|
78
74
|
}
|
|
79
75
|
|
|
@@ -92,6 +92,7 @@ function WebGLCapabilities( gl, extensions, parameters, utils ) {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;
|
|
95
|
+
const reverseDepthBuffer = parameters.reverseDepthBuffer === true && extensions.has( 'EXT_clip_control' );
|
|
95
96
|
|
|
96
97
|
const maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );
|
|
97
98
|
const maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );
|
|
@@ -119,6 +120,7 @@ function WebGLCapabilities( gl, extensions, parameters, utils ) {
|
|
|
119
120
|
|
|
120
121
|
precision: precision,
|
|
121
122
|
logarithmicDepthBuffer: logarithmicDepthBuffer,
|
|
123
|
+
reverseDepthBuffer: reverseDepthBuffer,
|
|
122
124
|
|
|
123
125
|
maxTextures: maxTextures,
|
|
124
126
|
maxVertexTextures: maxVertexTextures,
|
|
@@ -22,18 +22,6 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
|
|
|
22
22
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
for ( const name in geometry.morphAttributes ) {
|
|
26
|
-
|
|
27
|
-
const array = geometry.morphAttributes[ name ];
|
|
28
|
-
|
|
29
|
-
for ( let i = 0, l = array.length; i < l; i ++ ) {
|
|
30
|
-
|
|
31
|
-
attributes.remove( array[ i ] );
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
25
|
geometry.removeEventListener( 'dispose', onGeometryDispose );
|
|
38
26
|
|
|
39
27
|
delete geometries[ geometry.id ];
|
|
@@ -87,22 +75,6 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
|
|
|
87
75
|
|
|
88
76
|
}
|
|
89
77
|
|
|
90
|
-
// morph targets
|
|
91
|
-
|
|
92
|
-
const morphAttributes = geometry.morphAttributes;
|
|
93
|
-
|
|
94
|
-
for ( const name in morphAttributes ) {
|
|
95
|
-
|
|
96
|
-
const array = morphAttributes[ name ];
|
|
97
|
-
|
|
98
|
-
for ( let i = 0, l = array.length; i < l; i ++ ) {
|
|
99
|
-
|
|
100
|
-
attributes.update( array[ i ], gl.ARRAY_BUFFER );
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
|
|
106
78
|
}
|
|
107
79
|
|
|
108
80
|
function updateWireframeAttribute( geometry ) {
|
|
@@ -75,15 +75,11 @@ function WebGLIndexedBufferRenderer( gl, extensions, info ) {
|
|
|
75
75
|
let elementCount = 0;
|
|
76
76
|
for ( let i = 0; i < drawCount; i ++ ) {
|
|
77
77
|
|
|
78
|
-
elementCount += counts[ i ];
|
|
78
|
+
elementCount += counts[ i ] * primcount[ i ];
|
|
79
79
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
info.update( elementCount, mode, primcount[ i ] );
|
|
85
|
-
|
|
86
|
-
}
|
|
82
|
+
info.update( elementCount, mode, 1 );
|
|
87
83
|
|
|
88
84
|
}
|
|
89
85
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { WebGLUniforms } from './WebGLUniforms.js';
|
|
2
2
|
import { WebGLShader } from './WebGLShader.js';
|
|
3
3
|
import { ShaderChunk } from '../shaders/ShaderChunk.js';
|
|
4
|
-
import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, NeutralToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3,
|
|
4
|
+
import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, NeutralToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3, LinearTransfer, SRGBTransfer } from '../../constants.js';
|
|
5
5
|
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
6
6
|
import { Vector3 } from '../../math/Vector3.js';
|
|
7
|
+
import { Matrix3 } from '../../math/Matrix3.js';
|
|
7
8
|
|
|
8
9
|
// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/
|
|
9
10
|
const COMPLETION_STATUS_KHR = 0x91B1;
|
|
@@ -29,40 +30,25 @@ function handleSource( string, errorLine ) {
|
|
|
29
30
|
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );
|
|
35
|
-
const encodingPrimaries = ColorManagement.getPrimaries( colorSpace );
|
|
36
|
-
|
|
37
|
-
let gamutMapping;
|
|
38
|
-
|
|
39
|
-
if ( workingPrimaries === encodingPrimaries ) {
|
|
33
|
+
const _m0 = /*@__PURE__*/ new Matrix3();
|
|
40
34
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
} else if ( workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries ) {
|
|
44
|
-
|
|
45
|
-
gamutMapping = 'LinearDisplayP3ToLinearSRGB';
|
|
46
|
-
|
|
47
|
-
} else if ( workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries ) {
|
|
35
|
+
function getEncodingComponents( colorSpace ) {
|
|
48
36
|
|
|
49
|
-
|
|
37
|
+
ColorManagement._getMatrix( _m0, ColorManagement.workingColorSpace, colorSpace );
|
|
50
38
|
|
|
51
|
-
}
|
|
39
|
+
const encodingMatrix = `mat3( ${ _m0.elements.map( ( v ) => v.toFixed( 4 ) ) } )`;
|
|
52
40
|
|
|
53
|
-
switch ( colorSpace ) {
|
|
41
|
+
switch ( ColorManagement.getTransfer( colorSpace ) ) {
|
|
54
42
|
|
|
55
|
-
case
|
|
56
|
-
|
|
57
|
-
return [ gamutMapping, 'LinearTransferOETF' ];
|
|
43
|
+
case LinearTransfer:
|
|
44
|
+
return [ encodingMatrix, 'LinearTransferOETF' ];
|
|
58
45
|
|
|
59
|
-
case
|
|
60
|
-
|
|
61
|
-
return [ gamutMapping, 'sRGBTransferOETF' ];
|
|
46
|
+
case SRGBTransfer:
|
|
47
|
+
return [ encodingMatrix, 'sRGBTransferOETF' ];
|
|
62
48
|
|
|
63
49
|
default:
|
|
64
|
-
console.warn( 'THREE.WebGLProgram: Unsupported color space:', colorSpace );
|
|
65
|
-
return [
|
|
50
|
+
console.warn( 'THREE.WebGLProgram: Unsupported color space: ', colorSpace );
|
|
51
|
+
return [ encodingMatrix, 'LinearTransferOETF' ];
|
|
66
52
|
|
|
67
53
|
}
|
|
68
54
|
|
|
@@ -95,7 +81,16 @@ function getShaderErrors( gl, shader, type ) {
|
|
|
95
81
|
function getTexelEncodingFunction( functionName, colorSpace ) {
|
|
96
82
|
|
|
97
83
|
const components = getEncodingComponents( colorSpace );
|
|
98
|
-
|
|
84
|
+
|
|
85
|
+
return [
|
|
86
|
+
|
|
87
|
+
`vec4 ${functionName}( vec4 value ) {`,
|
|
88
|
+
|
|
89
|
+
` return ${components[ 1 ]}( vec4( value.rgb * ${components[ 0 ]}, value.a ) );`,
|
|
90
|
+
|
|
91
|
+
'}',
|
|
92
|
+
|
|
93
|
+
].join( '\n' );
|
|
99
94
|
|
|
100
95
|
}
|
|
101
96
|
|
|
@@ -114,7 +109,7 @@ function getToneMappingFunction( functionName, toneMapping ) {
|
|
|
114
109
|
break;
|
|
115
110
|
|
|
116
111
|
case CineonToneMapping:
|
|
117
|
-
toneMappingName = '
|
|
112
|
+
toneMappingName = 'Cineon';
|
|
118
113
|
break;
|
|
119
114
|
|
|
120
115
|
case ACESFilmicToneMapping:
|
|
@@ -658,6 +653,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
658
653
|
parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
|
|
659
654
|
|
|
660
655
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
656
|
+
parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
|
|
661
657
|
|
|
662
658
|
'uniform mat4 modelMatrix;',
|
|
663
659
|
'uniform mat4 modelViewMatrix;',
|
|
@@ -821,8 +817,10 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
821
817
|
parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
|
|
822
818
|
|
|
823
819
|
parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
|
|
820
|
+
parameters.decodeVideoTextureEmissive ? '#define DECODE_VIDEO_TEXTURE_EMISSIVE' : '',
|
|
824
821
|
|
|
825
822
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
823
|
+
parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
|
|
826
824
|
|
|
827
825
|
'uniform mat4 viewMatrix;',
|
|
828
826
|
'uniform vec3 cameraPosition;',
|
|
@@ -47,6 +47,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
function getParameters( material, lights, shadows, scene, object ) {
|
|
50
|
+
|
|
50
51
|
const fog = scene.fog;
|
|
51
52
|
const geometry = object.geometry;
|
|
52
53
|
const environment = material.isMeshStandardMaterial ? scene.environment : null;
|
|
@@ -107,6 +108,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
111
|
+
const reverseDepthBuffer = renderer.state.buffers.depth.getReversed();
|
|
110
112
|
|
|
111
113
|
const IS_INSTANCEDMESH = object.isInstancedMesh === true;
|
|
112
114
|
const IS_BATCHEDMESH = object.isBatchedMesh === true;
|
|
@@ -305,6 +307,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
305
307
|
|
|
306
308
|
sizeAttenuation: material.sizeAttenuation === true,
|
|
307
309
|
logarithmicDepthBuffer: logarithmicDepthBuffer,
|
|
310
|
+
reverseDepthBuffer: reverseDepthBuffer,
|
|
308
311
|
|
|
309
312
|
skinning: object.isSkinnedMesh === true,
|
|
310
313
|
|
|
@@ -339,6 +342,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
339
342
|
toneMapping: toneMapping,
|
|
340
343
|
|
|
341
344
|
decodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),
|
|
345
|
+
decodeVideoTextureEmissive: HAS_EMISSIVEMAP && ( material.emissiveMap.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.emissiveMap.colorSpace ) === SRGBTransfer ),
|
|
342
346
|
|
|
343
347
|
premultipliedAlpha: material.premultipliedAlpha,
|
|
344
348
|
|
|
@@ -526,38 +530,42 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
526
530
|
_programLayers.enable( 2 );
|
|
527
531
|
if ( parameters.logarithmicDepthBuffer )
|
|
528
532
|
_programLayers.enable( 3 );
|
|
529
|
-
if ( parameters.
|
|
533
|
+
if ( parameters.reverseDepthBuffer )
|
|
530
534
|
_programLayers.enable( 4 );
|
|
531
|
-
if ( parameters.
|
|
535
|
+
if ( parameters.skinning )
|
|
532
536
|
_programLayers.enable( 5 );
|
|
533
|
-
if ( parameters.
|
|
537
|
+
if ( parameters.morphTargets )
|
|
534
538
|
_programLayers.enable( 6 );
|
|
535
|
-
if ( parameters.
|
|
539
|
+
if ( parameters.morphNormals )
|
|
536
540
|
_programLayers.enable( 7 );
|
|
537
|
-
if ( parameters.
|
|
541
|
+
if ( parameters.morphColors )
|
|
538
542
|
_programLayers.enable( 8 );
|
|
539
|
-
if ( parameters.
|
|
543
|
+
if ( parameters.premultipliedAlpha )
|
|
540
544
|
_programLayers.enable( 9 );
|
|
541
|
-
if ( parameters.
|
|
545
|
+
if ( parameters.shadowMapEnabled )
|
|
542
546
|
_programLayers.enable( 10 );
|
|
543
|
-
if ( parameters.
|
|
547
|
+
if ( parameters.doubleSided )
|
|
544
548
|
_programLayers.enable( 11 );
|
|
545
|
-
if ( parameters.
|
|
549
|
+
if ( parameters.flipSided )
|
|
546
550
|
_programLayers.enable( 12 );
|
|
547
|
-
if ( parameters.
|
|
551
|
+
if ( parameters.useDepthPacking )
|
|
548
552
|
_programLayers.enable( 13 );
|
|
549
|
-
if ( parameters.
|
|
553
|
+
if ( parameters.dithering )
|
|
550
554
|
_programLayers.enable( 14 );
|
|
551
|
-
if ( parameters.
|
|
555
|
+
if ( parameters.transmission )
|
|
552
556
|
_programLayers.enable( 15 );
|
|
553
|
-
if ( parameters.
|
|
557
|
+
if ( parameters.sheen )
|
|
554
558
|
_programLayers.enable( 16 );
|
|
555
|
-
if ( parameters.
|
|
559
|
+
if ( parameters.opaque )
|
|
556
560
|
_programLayers.enable( 17 );
|
|
557
|
-
if ( parameters.
|
|
561
|
+
if ( parameters.pointsUvs )
|
|
558
562
|
_programLayers.enable( 18 );
|
|
559
|
-
if ( parameters.
|
|
563
|
+
if ( parameters.decodeVideoTexture )
|
|
560
564
|
_programLayers.enable( 19 );
|
|
565
|
+
if ( parameters.decodeVideoTextureEmissive )
|
|
566
|
+
_programLayers.enable( 20 );
|
|
567
|
+
if ( parameters.alphaToCoverage )
|
|
568
|
+
_programLayers.enable( 21 );
|
|
561
569
|
|
|
562
570
|
array.push( _programLayers.mask );
|
|
563
571
|
|