super-three 0.181.0 → 0.184.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 +3 -4
- package/build/three.cjs +13152 -11354
- package/build/three.core.js +12319 -11539
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1808 -781
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +27 -13
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +10523 -6263
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +10484 -6262
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +11 -3
- package/examples/jsm/animation/CCDIKSolver.js +7 -3
- package/examples/jsm/controls/ArcballControls.js +7 -4
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +58 -54
- package/examples/jsm/controls/FlyControls.js +4 -0
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +111 -8
- package/examples/jsm/controls/TrackballControls.js +8 -8
- package/examples/jsm/controls/TransformControls.js +34 -2
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMShadowNode.js +6 -2
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +152 -9
- package/examples/jsm/exporters/USDZExporter.js +22 -3
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/geometries/TextGeometry.js +18 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +67 -8
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +203 -88
- package/examples/jsm/inspector/RendererInspector.js +14 -4
- package/examples/jsm/inspector/extensions/extensions.json +6 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +41 -7
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +51 -3
- package/examples/jsm/inspector/tabs/Performance.js +4 -4
- package/examples/jsm/inspector/tabs/Settings.js +264 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
- package/examples/jsm/inspector/tabs/Viewer.js +107 -5
- package/examples/jsm/inspector/ui/Graph.js +2 -2
- package/examples/jsm/inspector/ui/List.js +1 -1
- package/examples/jsm/inspector/ui/Profiler.js +1936 -34
- package/examples/jsm/inspector/ui/Style.js +1044 -31
- package/examples/jsm/inspector/ui/Tab.js +222 -3
- package/examples/jsm/inspector/ui/Values.js +55 -2
- package/examples/jsm/inspector/ui/utils.js +13 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +651 -0
- package/examples/jsm/lines/LineMaterial.js +7 -1
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/DRACOLoader.js +5 -5
- package/examples/jsm/loaders/EXRLoader.js +687 -48
- package/examples/jsm/loaders/FBXLoader.js +235 -37
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +146 -178
- package/examples/jsm/loaders/HDRLoader.js +1 -2
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +27 -5
- package/examples/jsm/loaders/LDrawLoader.js +41 -50
- package/examples/jsm/loaders/LWOLoader.js +7 -39
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +79 -2
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/usd/USDAParser.js +450 -363
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/Volume.js +0 -1
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +73 -25
- package/examples/jsm/objects/Sky.js +90 -6
- package/examples/jsm/objects/SkyMesh.js +150 -16
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/AmmoPhysics.js +12 -7
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +9 -5
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +174 -60
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +63 -6
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +46 -3
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +12 -1
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +16 -6
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +6 -4
- package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +69 -19
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +8 -24
- package/examples/jsm/tsl/display/SSRNode.js +8 -8
- package/examples/jsm/tsl/display/SSSNode.js +6 -4
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +315 -126
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -3
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +24 -30
- package/src/Three.Core.js +3 -1
- package/src/Three.TSL.js +25 -11
- package/src/Three.WebGPU.Nodes.js +5 -0
- package/src/Three.WebGPU.js +9 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +12 -2
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +1 -1
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/constants.js +90 -5
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +14 -2
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +52 -4
- package/src/core/Raycaster.js +2 -2
- package/src/core/RenderTarget.js +4 -4
- package/src/extras/PMREMGenerator.js +7 -18
- package/src/extras/TextureUtils.js +5 -1
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/geometries/ExtrudeGeometry.js +2 -2
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +1 -25
- package/src/helpers/SpotLightHelper.js +3 -0
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/loaders/AudioLoader.js +11 -1
- package/src/loaders/Cache.js +28 -0
- package/src/loaders/DataTextureLoader.js +6 -4
- package/src/loaders/FileLoader.js +2 -3
- package/src/loaders/ImageBitmapLoader.js +12 -9
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +46 -6
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/Material.js +2 -0
- package/src/materials/MeshLambertMaterial.js +9 -0
- package/src/materials/MeshPhongMaterial.js +9 -0
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +20 -1
- package/src/materials/nodes/Line2NodeMaterial.js +34 -7
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +45 -25
- package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -86
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +10 -10
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +13 -9
- package/src/math/Matrix4.js +87 -74
- package/src/math/Plane.js +4 -3
- package/src/math/Quaternion.js +3 -29
- package/src/math/Sphere.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +11 -7
- package/src/math/Vector3.js +15 -13
- package/src/math/Vector4.js +13 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +86 -68
- package/src/nodes/TSL.js +7 -7
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/BatchNode.js +10 -10
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +107 -15
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +27 -2
- package/src/nodes/accessors/InstanceNode.js +148 -43
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialProperties.js +2 -5
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +11 -11
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +34 -2
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
- package/src/nodes/accessors/ReferenceNode.js +8 -8
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/SkinningNode.js +27 -26
- package/src/nodes/accessors/StorageBufferNode.js +14 -25
- package/src/nodes/accessors/StorageTextureNode.js +40 -9
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +67 -23
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +1 -1
- package/src/nodes/code/FunctionNode.js +2 -3
- package/src/nodes/core/ArrayNode.js +21 -2
- package/src/nodes/core/AssignNode.js +3 -3
- package/src/nodes/core/AttributeNode.js +3 -3
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +104 -5
- package/src/nodes/core/IndexNode.js +2 -1
- package/src/nodes/core/InputNode.js +1 -1
- package/src/nodes/core/InspectorNode.js +1 -1
- package/src/nodes/core/IsolateNode.js +1 -1
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +112 -15
- package/src/nodes/core/NodeBuilder.js +284 -66
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +11 -9
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +19 -3
- package/src/nodes/core/StackNode.js +66 -17
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +17 -3
- package/src/nodes/core/StructTypeNode.js +12 -18
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +21 -5
- package/src/nodes/core/VarNode.js +48 -23
- package/src/nodes/core/VaryingNode.js +2 -19
- package/src/nodes/display/BlendModes.js +0 -64
- package/src/nodes/display/ColorAdjustment.js +17 -0
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +39 -4
- package/src/nodes/display/PassNode.js +125 -16
- package/src/nodes/display/RenderOutputNode.js +7 -7
- package/src/nodes/display/ScreenNode.js +4 -2
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
- package/src/nodes/display/ViewportTextureNode.js +39 -11
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/PhysicalLightingModel.js +126 -45
- package/src/nodes/geometry/RangeNode.js +5 -3
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
- package/src/nodes/gpgpu/ComputeNode.js +74 -48
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +4 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +28 -3
- package/src/nodes/lighting/LightsNode.js +7 -28
- package/src/nodes/lighting/PointShadowNode.js +162 -149
- package/src/nodes/lighting/ShadowFilterNode.js +53 -65
- package/src/nodes/lighting/ShadowNode.js +120 -42
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +3 -3
- package/src/nodes/math/MathNode.js +76 -41
- package/src/nodes/math/OperatorNode.js +3 -2
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +38 -17
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +12 -12
- package/src/nodes/utils/EventNode.js +31 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +3 -4
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +1 -1
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +44 -16
- package/src/objects/InstancedMesh.js +30 -3
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +9 -0
- package/src/objects/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +329 -145
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +29 -8
- package/src/renderers/common/Background.js +26 -13
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +29 -14
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +40 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/Geometries.js +29 -3
- package/src/renderers/common/Info.js +333 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +40 -7
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +17 -5
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +21 -5
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +481 -117
- package/src/renderers/common/Sampler.js +4 -4
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +89 -4
- package/src/renderers/common/TimestampQueryPool.js +5 -3
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +62 -1
- package/src/renderers/common/XRManager.js +37 -29
- package/src/renderers/common/extras/PMREMGenerator.js +25 -23
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +242 -99
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- package/src/renderers/shaders/DFGLUTData.js +19 -34
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -6
- package/src/renderers/shaders/UniformsLib.js +7 -5
- package/src/renderers/shaders/UniformsUtils.js +27 -5
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +9 -4
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +270 -0
- package/src/renderers/webgl/WebGLProgram.js +49 -109
- package/src/renderers/webgl/WebGLPrograms.js +63 -51
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +75 -37
- package/src/renderers/webgl/WebGLTextures.js +215 -54
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +19 -0
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +253 -82
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +173 -74
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +68 -53
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +6 -2
- package/src/renderers/webgpu/WebGPUBackend.js +260 -140
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +366 -90
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +107 -34
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +357 -200
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +61 -23
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +152 -200
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +156 -59
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +7 -7
- package/src/renderers/webgpu/utils/WebGPUUtils.js +33 -11
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +4 -2
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +16 -5
- package/src/utils.js +280 -3
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import InputNode from './InputNode.js';
|
|
2
|
+
import StackTrace from '../core/StackTrace.js';
|
|
2
3
|
import { objectGroup } from './UniformGroupNode.js';
|
|
3
|
-
import {
|
|
4
|
+
import { getConstNodeType } from '../tsl/TSLCore.js';
|
|
4
5
|
import { getValueFromType } from './NodeUtils.js';
|
|
5
6
|
import { warn } from '../../utils.js';
|
|
6
7
|
|
|
@@ -78,7 +79,7 @@ class UniformNode extends InputNode {
|
|
|
78
79
|
*/
|
|
79
80
|
label( name ) {
|
|
80
81
|
|
|
81
|
-
warn( 'TSL: "label()" has been deprecated. Use "setName()" instead.' ); // @deprecated r179
|
|
82
|
+
warn( 'TSL: "label()" has been deprecated. Use "setName()" instead.', new StackTrace() ); // @deprecated r179
|
|
82
83
|
|
|
83
84
|
return this.setName( name );
|
|
84
85
|
|
|
@@ -235,9 +236,24 @@ export const uniform = ( value, type ) => {
|
|
|
235
236
|
|
|
236
237
|
}
|
|
237
238
|
|
|
238
|
-
|
|
239
|
-
value = ( value && value.isNode === true ) ? ( value.node && value.node.value ) || value.value : value;
|
|
239
|
+
if ( value && value.isNode === true ) {
|
|
240
240
|
|
|
241
|
-
|
|
241
|
+
let v = value.value;
|
|
242
|
+
|
|
243
|
+
value.traverse( n => {
|
|
244
|
+
|
|
245
|
+
if ( n.isConstNode === true ) {
|
|
246
|
+
|
|
247
|
+
v = n.value;
|
|
248
|
+
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
} );
|
|
252
|
+
|
|
253
|
+
value = v;
|
|
254
|
+
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return new UniformNode( value, nodeType );
|
|
242
258
|
|
|
243
259
|
};
|
|
@@ -112,6 +112,22 @@ class VarNode extends Node {
|
|
|
112
112
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Checks if this node is used for intent.
|
|
117
|
+
*
|
|
118
|
+
* @param {NodeBuilder} builder - The node builder.
|
|
119
|
+
* @returns {boolean} Whether this node is used for intent.
|
|
120
|
+
*/
|
|
121
|
+
isIntent( builder ) {
|
|
122
|
+
|
|
123
|
+
const data = builder.getDataFromNode( this );
|
|
124
|
+
|
|
125
|
+
if ( data.forceDeclaration === true ) return false;
|
|
126
|
+
|
|
127
|
+
return this.intent;
|
|
128
|
+
|
|
129
|
+
}
|
|
130
|
+
|
|
115
131
|
/**
|
|
116
132
|
* Returns the intent flag of this node.
|
|
117
133
|
*
|
|
@@ -135,7 +151,7 @@ class VarNode extends Node {
|
|
|
135
151
|
|
|
136
152
|
}
|
|
137
153
|
|
|
138
|
-
|
|
154
|
+
generateNodeType( builder ) {
|
|
139
155
|
|
|
140
156
|
return this.node.getNodeType( builder );
|
|
141
157
|
|
|
@@ -149,49 +165,58 @@ class VarNode extends Node {
|
|
|
149
165
|
|
|
150
166
|
isAssign( builder ) {
|
|
151
167
|
|
|
152
|
-
const
|
|
168
|
+
const data = builder.getDataFromNode( this );
|
|
153
169
|
|
|
154
|
-
|
|
170
|
+
return data.assign;
|
|
155
171
|
|
|
156
|
-
|
|
172
|
+
}
|
|
157
173
|
|
|
158
|
-
|
|
174
|
+
build( ...params ) {
|
|
159
175
|
|
|
160
|
-
|
|
176
|
+
const builder = params[ 0 ];
|
|
161
177
|
|
|
162
|
-
|
|
178
|
+
if ( this._hasStack( builder ) === false && builder.buildStage === 'setup' ) {
|
|
163
179
|
|
|
164
|
-
|
|
180
|
+
if ( builder.context.nodeLoop || builder.context.nodeBlock ) {
|
|
165
181
|
|
|
166
|
-
|
|
182
|
+
let addBefore = false;
|
|
167
183
|
|
|
168
|
-
|
|
184
|
+
if ( this.node.isShaderCallNodeInternal && this.node.shaderNode.getLayout() === null ) {
|
|
169
185
|
|
|
170
|
-
|
|
186
|
+
if ( builder.fnCall && builder.fnCall.shaderNode ) {
|
|
171
187
|
|
|
172
|
-
|
|
188
|
+
const shaderNodeData = builder.getDataFromNode( this.node.shaderNode );
|
|
173
189
|
|
|
174
|
-
|
|
190
|
+
if ( shaderNodeData.hasLoop ) {
|
|
175
191
|
|
|
176
|
-
|
|
192
|
+
const data = builder.getDataFromNode( this );
|
|
193
|
+
data.forceDeclaration = true;
|
|
177
194
|
|
|
178
|
-
|
|
195
|
+
addBefore = true;
|
|
179
196
|
|
|
180
|
-
|
|
197
|
+
}
|
|
181
198
|
|
|
182
|
-
|
|
199
|
+
}
|
|
183
200
|
|
|
184
|
-
|
|
201
|
+
}
|
|
185
202
|
|
|
186
|
-
|
|
203
|
+
const baseStack = builder.getBaseStack();
|
|
204
|
+
|
|
205
|
+
if ( addBefore ) {
|
|
206
|
+
|
|
207
|
+
baseStack.addToStackBefore( this );
|
|
187
208
|
|
|
188
|
-
|
|
209
|
+
} else {
|
|
210
|
+
|
|
211
|
+
baseStack.addToStack( this );
|
|
212
|
+
|
|
213
|
+
}
|
|
189
214
|
|
|
190
215
|
}
|
|
191
216
|
|
|
192
217
|
}
|
|
193
218
|
|
|
194
|
-
if ( this.
|
|
219
|
+
if ( this.isIntent( builder ) ) {
|
|
195
220
|
|
|
196
221
|
if ( this.isAssign( builder ) !== true ) {
|
|
197
222
|
|
|
@@ -227,9 +252,9 @@ class VarNode extends Node {
|
|
|
227
252
|
|
|
228
253
|
if ( nodeType == 'void' ) {
|
|
229
254
|
|
|
230
|
-
if ( this.
|
|
255
|
+
if ( this.isIntent( builder ) !== true ) {
|
|
231
256
|
|
|
232
|
-
error( 'TSL: ".toVar()" can not be used with void type.' );
|
|
257
|
+
error( 'TSL: ".toVar()" can not be used with void type.', this.stackTrace );
|
|
233
258
|
|
|
234
259
|
}
|
|
235
260
|
|
|
@@ -2,7 +2,6 @@ import Node from './Node.js';
|
|
|
2
2
|
import { NodeShaderStage } from './constants.js';
|
|
3
3
|
import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
4
4
|
import { subBuild } from './SubBuildNode.js';
|
|
5
|
-
import { warn } from '../../utils.js';
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
7
|
* Class for representing shader varyings as nodes. Varyings are create from
|
|
@@ -37,7 +36,7 @@ class VaryingNode extends Node {
|
|
|
37
36
|
*
|
|
38
37
|
* @type {Node}
|
|
39
38
|
*/
|
|
40
|
-
this.node = node;
|
|
39
|
+
this.node = subBuild( node, 'VERTEX' );
|
|
41
40
|
|
|
42
41
|
/**
|
|
43
42
|
* The name of the varying in the shader. If no name is defined,
|
|
@@ -105,7 +104,7 @@ class VaryingNode extends Node {
|
|
|
105
104
|
|
|
106
105
|
}
|
|
107
106
|
|
|
108
|
-
|
|
107
|
+
generateNodeType( builder ) {
|
|
109
108
|
|
|
110
109
|
// VaryingNode is auto type
|
|
111
110
|
|
|
@@ -209,19 +208,3 @@ export const vertexStage = ( node ) => varying( node );
|
|
|
209
208
|
|
|
210
209
|
addMethodChaining( 'toVarying', varying );
|
|
211
210
|
addMethodChaining( 'toVertexStage', vertexStage );
|
|
212
|
-
|
|
213
|
-
// Deprecated
|
|
214
|
-
|
|
215
|
-
addMethodChaining( 'varying', ( ...params ) => { // @deprecated, r173
|
|
216
|
-
|
|
217
|
-
warn( 'TSL: .varying() has been renamed to .toVarying().' );
|
|
218
|
-
return varying( ...params );
|
|
219
|
-
|
|
220
|
-
} );
|
|
221
|
-
|
|
222
|
-
addMethodChaining( 'vertexStage', ( ...params ) => { // @deprecated, r173
|
|
223
|
-
|
|
224
|
-
warn( 'TSL: .vertexStage() has been renamed to .toVertexStage().' );
|
|
225
|
-
return varying( ...params );
|
|
226
|
-
|
|
227
|
-
} );
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Fn, If, vec4 } from '../tsl/TSLBase.js';
|
|
2
2
|
import { mix, min, step } from '../math/MathNode.js';
|
|
3
|
-
import { warn } from '../../utils.js';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* Represents a "Color Burn" blend mode.
|
|
@@ -170,66 +169,3 @@ export const unpremultiplyAlpha = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
|
170
169
|
return vec4( color.rgb.div( color.a ), color.a );
|
|
171
170
|
|
|
172
171
|
}, { color: 'vec4', return: 'vec4' } );
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
// Deprecated
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* @tsl
|
|
179
|
-
* @function
|
|
180
|
-
* @deprecated since r171. Use {@link blendBurn} instead.
|
|
181
|
-
*
|
|
182
|
-
* @param {...any} params
|
|
183
|
-
* @returns {Function}
|
|
184
|
-
*/
|
|
185
|
-
export const burn = ( ...params ) => { // @deprecated, r171
|
|
186
|
-
|
|
187
|
-
warn( 'TSL: "burn" has been renamed. Use "blendBurn" instead.' );
|
|
188
|
-
return blendBurn( params );
|
|
189
|
-
|
|
190
|
-
};
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* @tsl
|
|
194
|
-
* @function
|
|
195
|
-
* @deprecated since r171. Use {@link blendDodge} instead.
|
|
196
|
-
*
|
|
197
|
-
* @param {...any} params
|
|
198
|
-
* @returns {Function}
|
|
199
|
-
*/
|
|
200
|
-
export const dodge = ( ...params ) => { // @deprecated, r171
|
|
201
|
-
|
|
202
|
-
warn( 'TSL: "dodge" has been renamed. Use "blendDodge" instead.' );
|
|
203
|
-
return blendDodge( params );
|
|
204
|
-
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* @tsl
|
|
209
|
-
* @function
|
|
210
|
-
* @deprecated since r171. Use {@link blendScreen} instead.
|
|
211
|
-
*
|
|
212
|
-
* @param {...any} params
|
|
213
|
-
* @returns {Function}
|
|
214
|
-
*/
|
|
215
|
-
export const screen = ( ...params ) => { // @deprecated, r171
|
|
216
|
-
|
|
217
|
-
warn( 'TSL: "screen" has been renamed. Use "blendScreen" instead.' );
|
|
218
|
-
return blendScreen( params );
|
|
219
|
-
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* @tsl
|
|
224
|
-
* @function
|
|
225
|
-
* @deprecated since r171. Use {@link blendOverlay} instead.
|
|
226
|
-
*
|
|
227
|
-
* @param {...any} params
|
|
228
|
-
* @returns {Function}
|
|
229
|
-
*/
|
|
230
|
-
export const overlay = ( ...params ) => { // @deprecated, r171
|
|
231
|
-
|
|
232
|
-
warn( 'TSL: "overlay" has been renamed. Use "blendOverlay" instead.' );
|
|
233
|
-
return blendOverlay( params );
|
|
234
|
-
|
|
235
|
-
};
|
|
@@ -139,3 +139,20 @@ export const cdl = /*@__PURE__*/ Fn( ( [
|
|
|
139
139
|
return vec4( v.rgb, color.a );
|
|
140
140
|
|
|
141
141
|
} );
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* TSL function for creating a posterize effect which reduces the number of colors
|
|
145
|
+
* in an image, resulting in a more blocky and stylized appearance.
|
|
146
|
+
*
|
|
147
|
+
* @tsl
|
|
148
|
+
* @function
|
|
149
|
+
* @param {Node} sourceNode - The input color.
|
|
150
|
+
* @param {Node} stepsNode - Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
|
|
151
|
+
* @returns {Node} The posterized color.
|
|
152
|
+
*/
|
|
153
|
+
export const posterize = Fn( ( [ source, steps ] ) => {
|
|
154
|
+
|
|
155
|
+
return source.mul( steps ).floor().div( steps );
|
|
156
|
+
|
|
157
|
+
} );
|
|
158
|
+
|
|
@@ -135,7 +135,7 @@ export default ColorSpaceNode;
|
|
|
135
135
|
* @param {string} targetColorSpace - The target color space.
|
|
136
136
|
* @returns {ColorSpaceNode}
|
|
137
137
|
*/
|
|
138
|
-
export const workingToColorSpace = ( node, targetColorSpace ) =>
|
|
138
|
+
export const workingToColorSpace = ( node, targetColorSpace ) => new ColorSpaceNode( nodeObject( node ), WORKING_COLOR_SPACE, targetColorSpace );
|
|
139
139
|
|
|
140
140
|
/**
|
|
141
141
|
* TSL function for converting a given color node from the given color space to the current working color space.
|
|
@@ -146,7 +146,7 @@ export const workingToColorSpace = ( node, targetColorSpace ) => nodeObject( new
|
|
|
146
146
|
* @param {string} sourceColorSpace - The source color space.
|
|
147
147
|
* @returns {ColorSpaceNode}
|
|
148
148
|
*/
|
|
149
|
-
export const colorSpaceToWorking = ( node, sourceColorSpace ) =>
|
|
149
|
+
export const colorSpaceToWorking = ( node, sourceColorSpace ) => new ColorSpaceNode( nodeObject( node ), sourceColorSpace, WORKING_COLOR_SPACE );
|
|
150
150
|
|
|
151
151
|
/**
|
|
152
152
|
* TSL function for converting a given color node from one color space to another one.
|
|
@@ -158,7 +158,7 @@ export const colorSpaceToWorking = ( node, sourceColorSpace ) => nodeObject( new
|
|
|
158
158
|
* @param {string} targetColorSpace - The target color space.
|
|
159
159
|
* @returns {ColorSpaceNode}
|
|
160
160
|
*/
|
|
161
|
-
export const convertColorSpace = ( node, sourceColorSpace, targetColorSpace ) =>
|
|
161
|
+
export const convertColorSpace = ( node, sourceColorSpace, targetColorSpace ) => new ColorSpaceNode( nodeObject( node ), sourceColorSpace, targetColorSpace );
|
|
162
162
|
|
|
163
163
|
addMethodChaining( 'workingToColorSpace', workingToColorSpace );
|
|
164
164
|
addMethodChaining( 'colorSpaceToWorking', colorSpaceToWorking );
|
|
@@ -4,8 +4,9 @@ import { normalView, transformNormalToView } from '../accessors/Normal.js';
|
|
|
4
4
|
import { TBNViewMatrix } from '../accessors/AccessorsUtils.js';
|
|
5
5
|
import { nodeProxy, vec3 } from '../tsl/TSLBase.js';
|
|
6
6
|
|
|
7
|
-
import { TangentSpaceNormalMap, ObjectSpaceNormalMap } from '../../constants.js';
|
|
7
|
+
import { TangentSpaceNormalMap, ObjectSpaceNormalMap, NoNormalPacking, NormalRGPacking, NormalGAPacking } from '../../constants.js';
|
|
8
8
|
import { directionToFaceDirection } from './FrontFacingNode.js';
|
|
9
|
+
import { unpackNormal } from '../utils/Packing.js';
|
|
9
10
|
import { error } from '../../utils.js';
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -58,19 +59,53 @@ class NormalMapNode extends TempNode {
|
|
|
58
59
|
*/
|
|
59
60
|
this.normalMapType = TangentSpaceNormalMap;
|
|
60
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Controls how to unpack the sampled normal map values.
|
|
64
|
+
*
|
|
65
|
+
* @type {string}
|
|
66
|
+
* @default NoNormalPacking
|
|
67
|
+
*/
|
|
68
|
+
this.unpackNormalMode = NoNormalPacking;
|
|
69
|
+
|
|
61
70
|
}
|
|
62
71
|
|
|
63
|
-
setup(
|
|
72
|
+
setup( builder ) {
|
|
64
73
|
|
|
65
|
-
const { normalMapType, scaleNode } = this;
|
|
74
|
+
const { normalMapType, scaleNode, unpackNormalMode } = this;
|
|
66
75
|
|
|
67
76
|
let normalMap = this.node.mul( 2.0 ).sub( 1.0 );
|
|
68
77
|
|
|
78
|
+
if ( normalMapType === TangentSpaceNormalMap ) {
|
|
79
|
+
|
|
80
|
+
if ( unpackNormalMode === NormalRGPacking ) {
|
|
81
|
+
|
|
82
|
+
normalMap = unpackNormal( normalMap.xy );
|
|
83
|
+
|
|
84
|
+
} else if ( unpackNormalMode === NormalGAPacking ) {
|
|
85
|
+
|
|
86
|
+
normalMap = unpackNormal( normalMap.yw );
|
|
87
|
+
|
|
88
|
+
} else if ( unpackNormalMode !== NoNormalPacking ) {
|
|
89
|
+
|
|
90
|
+
error( `THREE.NodeMaterial: Unexpected unpack normal mode: ${ unpackNormalMode }` );
|
|
91
|
+
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
} else {
|
|
95
|
+
|
|
96
|
+
if ( unpackNormalMode !== NoNormalPacking ) {
|
|
97
|
+
|
|
98
|
+
error( `THREE.NodeMaterial: Normal map type '${ normalMapType }' is not compatible with unpack normal mode '${ unpackNormalMode }'` );
|
|
99
|
+
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
|
|
69
104
|
if ( scaleNode !== null ) {
|
|
70
105
|
|
|
71
106
|
let scale = scaleNode;
|
|
72
107
|
|
|
73
|
-
if (
|
|
108
|
+
if ( builder.isFlatShading() === true ) {
|
|
74
109
|
|
|
75
110
|
scale = directionToFaceDirection( scale );
|
|
76
111
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import TempNode from '../core/TempNode.js';
|
|
2
2
|
import { default as TextureNode/*, texture*/ } from '../accessors/TextureNode.js';
|
|
3
3
|
import { NodeUpdateType } from '../core/constants.js';
|
|
4
|
-
import {
|
|
4
|
+
import { context } from '../tsl/TSLBase.js';
|
|
5
5
|
import { uniform } from '../core/UniformNode.js';
|
|
6
6
|
import { viewZToOrthographicDepth, perspectiveDepthToViewZ } from './ViewportDepthNode.js';
|
|
7
7
|
|
|
8
|
-
import { HalfFloatType
|
|
8
|
+
import { HalfFloatType, FloatType } from '../../constants.js';
|
|
9
9
|
import { Vector2 } from '../../math/Vector2.js';
|
|
10
10
|
import { Vector4 } from '../../math/Vector4.js';
|
|
11
11
|
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
@@ -44,13 +44,23 @@ class PassTextureNode extends TextureNode {
|
|
|
44
44
|
*/
|
|
45
45
|
this.passNode = passNode;
|
|
46
46
|
|
|
47
|
+
/**
|
|
48
|
+
* This flag can be used for type testing.
|
|
49
|
+
*
|
|
50
|
+
* @type {boolean}
|
|
51
|
+
* @default true
|
|
52
|
+
* @readonly
|
|
53
|
+
*/
|
|
54
|
+
this.isPassTextureNode = true;
|
|
55
|
+
|
|
47
56
|
this.setUpdateMatrix( false );
|
|
48
57
|
|
|
49
58
|
}
|
|
50
59
|
|
|
51
60
|
setup( builder ) {
|
|
52
61
|
|
|
53
|
-
|
|
62
|
+
const properties = builder.getNodeProperties( this );
|
|
63
|
+
properties.passNode = this.passNode;
|
|
54
64
|
|
|
55
65
|
return super.setup( builder );
|
|
56
66
|
|
|
@@ -107,6 +117,15 @@ class PassMultipleTextureNode extends PassTextureNode {
|
|
|
107
117
|
*/
|
|
108
118
|
this.previousTexture = previousTexture;
|
|
109
119
|
|
|
120
|
+
/**
|
|
121
|
+
* This flag can be used for type testing.
|
|
122
|
+
*
|
|
123
|
+
* @type {boolean}
|
|
124
|
+
* @default true
|
|
125
|
+
* @readonly
|
|
126
|
+
*/
|
|
127
|
+
this.isPassMultipleTextureNode = true;
|
|
128
|
+
|
|
110
129
|
}
|
|
111
130
|
|
|
112
131
|
/**
|
|
@@ -150,7 +169,7 @@ class PassMultipleTextureNode extends PassTextureNode {
|
|
|
150
169
|
* via MRT for further processing.
|
|
151
170
|
*
|
|
152
171
|
* ```js
|
|
153
|
-
* const postProcessing = new
|
|
172
|
+
* const postProcessing = new RenderPipeline( renderer );
|
|
154
173
|
*
|
|
155
174
|
* const scenePass = pass( scene, camera );
|
|
156
175
|
*
|
|
@@ -248,6 +267,45 @@ class PassNode extends TempNode {
|
|
|
248
267
|
*/
|
|
249
268
|
this.renderTarget = renderTarget;
|
|
250
269
|
|
|
270
|
+
/**
|
|
271
|
+
* An optional override material for the pass.
|
|
272
|
+
*
|
|
273
|
+
* @type {Material|null}
|
|
274
|
+
*/
|
|
275
|
+
this.overrideMaterial = null;
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Whether the pass is transparent.
|
|
279
|
+
*
|
|
280
|
+
* @type {boolean}
|
|
281
|
+
* @default false
|
|
282
|
+
*/
|
|
283
|
+
this.transparent = true;
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Whether the pass is opaque.
|
|
287
|
+
*
|
|
288
|
+
* @type {boolean}
|
|
289
|
+
* @default true
|
|
290
|
+
*/
|
|
291
|
+
this.opaque = true;
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* An optional global context for the pass.
|
|
295
|
+
*
|
|
296
|
+
* @type {ContextNode|null}
|
|
297
|
+
*/
|
|
298
|
+
this.contextNode = null;
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* A cache for the context node.
|
|
302
|
+
*
|
|
303
|
+
* @private
|
|
304
|
+
* @type {?Object}
|
|
305
|
+
* @default null
|
|
306
|
+
*/
|
|
307
|
+
this._contextNodeCache = null;
|
|
308
|
+
|
|
251
309
|
/**
|
|
252
310
|
* A dictionary holding the internal result textures.
|
|
253
311
|
*
|
|
@@ -584,7 +642,7 @@ class PassNode extends TempNode {
|
|
|
584
642
|
|
|
585
643
|
if ( textureNode === undefined ) {
|
|
586
644
|
|
|
587
|
-
textureNode =
|
|
645
|
+
textureNode = new PassMultipleTextureNode( this, name );
|
|
588
646
|
textureNode.updateTexture();
|
|
589
647
|
this._textureNodes[ name ] = textureNode;
|
|
590
648
|
|
|
@@ -608,7 +666,7 @@ class PassNode extends TempNode {
|
|
|
608
666
|
|
|
609
667
|
if ( this._textureNodes[ name ] === undefined ) this.getTextureNode( name );
|
|
610
668
|
|
|
611
|
-
textureNode =
|
|
669
|
+
textureNode = new PassMultipleTextureNode( this, name, true );
|
|
612
670
|
textureNode.updateTexture();
|
|
613
671
|
this._previousTextureNodes[ name ] = textureNode;
|
|
614
672
|
|
|
@@ -697,7 +755,13 @@ class PassNode extends TempNode {
|
|
|
697
755
|
|
|
698
756
|
this.renderTarget.samples = this.options.samples === undefined ? renderer.samples : this.options.samples;
|
|
699
757
|
|
|
700
|
-
this.renderTarget.texture.type = renderer.
|
|
758
|
+
this.renderTarget.texture.type = renderer.getOutputBufferType();
|
|
759
|
+
|
|
760
|
+
if ( renderer.reversedDepthBuffer === true ) {
|
|
761
|
+
|
|
762
|
+
this.renderTarget.depthTexture.type = FloatType;
|
|
763
|
+
|
|
764
|
+
}
|
|
701
765
|
|
|
702
766
|
return this.scope === PassNode.COLOR ? this.getTextureNode() : this.getLinearDepthNode();
|
|
703
767
|
|
|
@@ -738,7 +802,11 @@ class PassNode extends TempNode {
|
|
|
738
802
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
739
803
|
const currentMRT = renderer.getMRT();
|
|
740
804
|
const currentAutoClear = renderer.autoClear;
|
|
805
|
+
const currentTransparent = renderer.transparent;
|
|
806
|
+
const currentOpaque = renderer.opaque;
|
|
741
807
|
const currentMask = camera.layers.mask;
|
|
808
|
+
const currentContextNode = renderer.contextNode;
|
|
809
|
+
const currentOverrideMaterial = scene.overrideMaterial;
|
|
742
810
|
|
|
743
811
|
this._cameraNear.value = camera.near;
|
|
744
812
|
this._cameraFar.value = camera.far;
|
|
@@ -755,9 +823,32 @@ class PassNode extends TempNode {
|
|
|
755
823
|
|
|
756
824
|
}
|
|
757
825
|
|
|
826
|
+
if ( this.overrideMaterial !== null ) {
|
|
827
|
+
|
|
828
|
+
scene.overrideMaterial = this.overrideMaterial;
|
|
829
|
+
|
|
830
|
+
}
|
|
831
|
+
|
|
758
832
|
renderer.setRenderTarget( this.renderTarget );
|
|
759
833
|
renderer.setMRT( this._mrt );
|
|
760
834
|
renderer.autoClear = true;
|
|
835
|
+
renderer.transparent = this.transparent;
|
|
836
|
+
renderer.opaque = this.opaque;
|
|
837
|
+
|
|
838
|
+
if ( this.contextNode !== null ) {
|
|
839
|
+
|
|
840
|
+
if ( this._contextNodeCache === null || this._contextNodeCache.version !== this.version ) {
|
|
841
|
+
|
|
842
|
+
this._contextNodeCache = {
|
|
843
|
+
version: this.version,
|
|
844
|
+
context: context( { ...renderer.contextNode.getFlowContextData(), ...this.contextNode.getFlowContextData() } )
|
|
845
|
+
};
|
|
846
|
+
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
renderer.contextNode = this._contextNodeCache.context;
|
|
850
|
+
|
|
851
|
+
}
|
|
761
852
|
|
|
762
853
|
const currentSceneName = scene.name;
|
|
763
854
|
|
|
@@ -766,10 +857,14 @@ class PassNode extends TempNode {
|
|
|
766
857
|
renderer.render( scene, camera );
|
|
767
858
|
|
|
768
859
|
scene.name = currentSceneName;
|
|
860
|
+
scene.overrideMaterial = currentOverrideMaterial;
|
|
769
861
|
|
|
770
862
|
renderer.setRenderTarget( currentRenderTarget );
|
|
771
863
|
renderer.setMRT( currentMRT );
|
|
772
864
|
renderer.autoClear = currentAutoClear;
|
|
865
|
+
renderer.transparent = currentTransparent;
|
|
866
|
+
renderer.opaque = currentOpaque;
|
|
867
|
+
renderer.contextNode = currentContextNode;
|
|
773
868
|
|
|
774
869
|
camera.layers.mask = currentMask;
|
|
775
870
|
|
|
@@ -791,8 +886,26 @@ class PassNode extends TempNode {
|
|
|
791
886
|
|
|
792
887
|
this.renderTarget.setSize( effectiveWidth, effectiveHeight );
|
|
793
888
|
|
|
794
|
-
|
|
795
|
-
|
|
889
|
+
// scissor
|
|
890
|
+
|
|
891
|
+
if ( this._scissor !== null ) {
|
|
892
|
+
|
|
893
|
+
this.renderTarget.scissor.copy( this._scissor ).multiplyScalar( this._pixelRatio * this._resolutionScale ).floor();
|
|
894
|
+
this.renderTarget.scissorTest = true;
|
|
895
|
+
|
|
896
|
+
} else {
|
|
897
|
+
|
|
898
|
+
this.renderTarget.scissorTest = false;
|
|
899
|
+
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
// viewport
|
|
903
|
+
|
|
904
|
+
if ( this._viewport !== null ) {
|
|
905
|
+
|
|
906
|
+
this.renderTarget.viewport.copy( this._viewport ).multiplyScalar( this._pixelRatio * this._resolutionScale ).floor();
|
|
907
|
+
|
|
908
|
+
}
|
|
796
909
|
|
|
797
910
|
}
|
|
798
911
|
|
|
@@ -827,8 +940,6 @@ class PassNode extends TempNode {
|
|
|
827
940
|
|
|
828
941
|
}
|
|
829
942
|
|
|
830
|
-
this._scissor.multiplyScalar( this._pixelRatio * this._resolutionScale ).floor();
|
|
831
|
-
|
|
832
943
|
}
|
|
833
944
|
|
|
834
945
|
}
|
|
@@ -863,8 +974,6 @@ class PassNode extends TempNode {
|
|
|
863
974
|
|
|
864
975
|
}
|
|
865
976
|
|
|
866
|
-
this._viewport.multiplyScalar( this._pixelRatio * this._resolutionScale ).floor();
|
|
867
|
-
|
|
868
977
|
}
|
|
869
978
|
|
|
870
979
|
}
|
|
@@ -920,7 +1029,7 @@ export default PassNode;
|
|
|
920
1029
|
* @param {Object} options - Options for the internal render target.
|
|
921
1030
|
* @returns {PassNode}
|
|
922
1031
|
*/
|
|
923
|
-
export const pass = ( scene, camera, options ) =>
|
|
1032
|
+
export const pass = ( scene, camera, options ) => new PassNode( PassNode.COLOR, scene, camera, options );
|
|
924
1033
|
|
|
925
1034
|
/**
|
|
926
1035
|
* TSL function for creating a pass texture node.
|
|
@@ -931,7 +1040,7 @@ export const pass = ( scene, camera, options ) => nodeObject( new PassNode( Pass
|
|
|
931
1040
|
* @param {Texture} texture - The output texture.
|
|
932
1041
|
* @returns {PassTextureNode}
|
|
933
1042
|
*/
|
|
934
|
-
export const passTexture = ( pass, texture ) =>
|
|
1043
|
+
export const passTexture = ( pass, texture ) => new PassTextureNode( pass, texture );
|
|
935
1044
|
|
|
936
1045
|
/**
|
|
937
1046
|
* TSL function for creating a depth pass node.
|
|
@@ -943,4 +1052,4 @@ export const passTexture = ( pass, texture ) => nodeObject( new PassTextureNode(
|
|
|
943
1052
|
* @param {Object} options - Options for the internal render target.
|
|
944
1053
|
* @returns {PassNode}
|
|
945
1054
|
*/
|
|
946
|
-
export const depthPass = ( scene, camera, options ) =>
|
|
1055
|
+
export const depthPass = ( scene, camera, options ) => new PassNode( PassNode.DEPTH, scene, camera, options );
|