super-three 0.181.0 → 0.185.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 +21332 -19201
- package/build/three.core.js +20908 -19853
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1947 -862
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +37 -16
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +33628 -25197
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +33394 -25000
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +14 -3
- package/examples/jsm/animation/CCDIKSolver.js +7 -3
- package/examples/jsm/controls/ArcballControls.js +13 -6
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +127 -86
- 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 +102 -17
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMFrustum.js +31 -6
- package/examples/jsm/csm/CSMShadowNode.js +10 -3
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +14 -1
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +27 -6
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +266 -21
- package/examples/jsm/exporters/PLYExporter.js +286 -73
- package/examples/jsm/exporters/USDZExporter.js +353 -99
- package/examples/jsm/generators/CityGenerator.js +346 -0
- package/examples/jsm/generators/ForestGenerator.js +347 -0
- package/examples/jsm/generators/TerrainGenerator.js +504 -0
- package/examples/jsm/generators/TreeGenerator.js +377 -0
- package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
- package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/geometries/LoftGeometry.js +355 -0
- 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/LightProbeHelper.js +5 -4
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +83 -14
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +244 -91
- package/examples/jsm/inspector/RendererInspector.js +165 -39
- 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 +241 -25
- package/examples/jsm/inspector/tabs/Memory.js +136 -0
- package/examples/jsm/inspector/tabs/Parameters.js +115 -7
- package/examples/jsm/inspector/tabs/Performance.js +24 -9
- package/examples/jsm/inspector/tabs/Settings.js +306 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
- package/examples/jsm/inspector/tabs/Viewer.js +723 -9
- package/examples/jsm/inspector/ui/Graph.js +162 -25
- package/examples/jsm/inspector/ui/Item.js +92 -13
- package/examples/jsm/inspector/ui/List.js +2 -2
- package/examples/jsm/inspector/ui/Profiler.js +1991 -44
- package/examples/jsm/inspector/ui/Style.js +1943 -543
- package/examples/jsm/inspector/ui/Tab.js +226 -5
- package/examples/jsm/inspector/ui/Values.js +126 -8
- package/examples/jsm/inspector/ui/utils.js +143 -10
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/basis/README.md +0 -1
- package/examples/jsm/libs/demuxer_mp4.js +3 -3
- package/examples/jsm/libs/draco/README.md +0 -1
- package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
- package/examples/jsm/libs/mikktspace.module.js +34 -9
- package/examples/jsm/lighting/ClusteredLighting.js +55 -0
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +681 -0
- package/examples/jsm/lines/LineMaterial.js +45 -16
- package/examples/jsm/lines/LineSegments2.js +8 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
- package/examples/jsm/loaders/3DMLoader.js +6 -5
- 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 +51 -18
- package/examples/jsm/loaders/EXRLoader.js +701 -90
- 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 +7 -30
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +58 -17
- package/examples/jsm/loaders/LDrawLoader.js +49 -58
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +11 -39
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MaterialXLoader.js +31 -9
- package/examples/jsm/loaders/NRRDLoader.js +5 -5
- package/examples/jsm/loaders/PCDLoader.js +11 -9
- package/examples/jsm/loaders/PLYLoader.js +218 -55
- package/examples/jsm/loaders/SVGLoader.js +549 -497
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/USDLoader.js +127 -43
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +80 -3
- 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 +504 -344
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4627 -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/TileCreasedNormalsPlugin.js +270 -0
- package/examples/jsm/misc/Volume.js +2 -3
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/GroundedSkybox.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +72 -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/Water2Mesh.js +1 -1
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/AmmoPhysics.js +27 -15
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +36 -7
- 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/shaders/VolumeShader.js +31 -44
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
- package/examples/jsm/transpiler/Linker.js +1 -1
- 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/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +75 -25
- 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 +3 -3
- 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 +13 -14
- package/examples/jsm/tsl/display/GTAONode.js +40 -17
- package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -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 +9 -8
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
- 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 +15 -27
- package/examples/jsm/tsl/display/SSGINode.js +96 -62
- package/examples/jsm/tsl/display/SSRNode.js +831 -134
- package/examples/jsm/tsl/display/SSSNode.js +8 -6
- 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/TemporalReprojectNode.js +1023 -0
- 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/ClusteredLightsNode.js +622 -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/tsl/math/curlNoise.js +107 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
- package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
- package/examples/jsm/tsl/utils/RNoise.js +51 -0
- package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/SceneOptimizer.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/ARButton.js +1 -1
- package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +28 -34
- package/src/Three.Core.js +3 -1
- package/src/Three.TSL.js +35 -14
- package/src/Three.WebGPU.Nodes.js +5 -0
- package/src/Three.WebGPU.js +13 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +18 -4
- package/src/animation/AnimationClip.js +0 -139
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- package/src/animation/PropertyBinding.js +2 -2
- 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 +34 -4
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/StereoCamera.js +5 -2
- package/src/constants.js +90 -5
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +43 -9
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +69 -11
- package/src/core/Raycaster.js +3 -3
- package/src/core/RenderTarget.js +19 -6
- package/src/extras/PMREMGenerator.js +13 -22
- package/src/extras/TextureUtils.js +6 -2
- package/src/extras/core/ShapePath.js +149 -160
- 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/SphereGeometry.js +8 -3
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +6 -1
- package/src/helpers/HemisphereLightHelper.js +5 -0
- package/src/helpers/PointLightHelper.js +3 -25
- package/src/helpers/SpotLightHelper.js +4 -1
- 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 +75 -42
- package/src/loaders/FileLoader.js +2 -3
- package/src/loaders/ImageBitmapLoader.js +12 -9
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/LoadingManager.js +5 -0
- package/src/loaders/MaterialLoader.js +37 -266
- package/src/loaders/ObjectLoader.js +48 -6
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/LineBasicMaterial.js +4 -0
- package/src/materials/Material.js +198 -1
- package/src/materials/MeshBasicMaterial.js +24 -0
- package/src/materials/MeshDepthMaterial.js +10 -0
- package/src/materials/MeshDistanceMaterial.js +10 -0
- package/src/materials/MeshLambertMaterial.js +49 -1
- package/src/materials/MeshMatcapMaterial.js +25 -1
- package/src/materials/MeshNormalMaterial.js +9 -1
- package/src/materials/MeshPhongMaterial.js +49 -1
- package/src/materials/MeshPhysicalMaterial.js +38 -0
- package/src/materials/MeshStandardMaterial.js +42 -1
- package/src/materials/MeshToonMaterial.js +35 -2
- package/src/materials/PointsMaterial.js +7 -0
- package/src/materials/ShaderMaterial.js +106 -1
- package/src/materials/SpriteMaterial.js +7 -0
- package/src/materials/nodes/Line2NodeMaterial.js +380 -297
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
- package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
- package/src/materials/nodes/NodeMaterial.js +153 -89
- package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
- package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
- package/src/math/Box3.js +5 -0
- package/src/math/FrustumArray.js +103 -133
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +12 -12
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +24 -9
- package/src/math/Matrix4.js +112 -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 +13 -9
- package/src/math/Vector3.js +17 -15
- package/src/math/Vector4.js +15 -11
- package/src/math/interpolants/BezierInterpolant.js +106 -0
- package/src/nodes/Nodes.js +86 -71
- package/src/nodes/TSL.js +15 -13
- package/src/nodes/accessors/Arrays.js +5 -5
- package/src/nodes/accessors/Batch.js +108 -0
- package/src/nodes/accessors/Bitangent.js +7 -7
- package/src/nodes/accessors/BufferAttributeNode.js +120 -17
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +5 -5
- package/src/nodes/accessors/CubeTextureNode.js +27 -2
- package/src/nodes/accessors/Instance.js +264 -0
- package/src/nodes/accessors/MaterialNode.js +27 -3
- package/src/nodes/accessors/MaterialProperties.js +6 -8
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
- package/src/nodes/accessors/Normal.js +24 -24
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +39 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
- package/src/nodes/accessors/ReferenceNode.js +9 -8
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/Skinning.js +263 -0
- package/src/nodes/accessors/StorageBufferNode.js +16 -27
- package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
- package/src/nodes/accessors/StorageTextureNode.js +74 -11
- package/src/nodes/accessors/Tangent.js +8 -18
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +124 -25
- 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 +4 -19
- 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 +55 -4
- package/src/nodes/core/Node.js +151 -17
- package/src/nodes/core/NodeBuilder.js +479 -101
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +20 -18
- package/src/nodes/core/OutputStructNode.js +13 -11
- package/src/nodes/core/OverrideContextNode.js +153 -0
- package/src/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +66 -4
- package/src/nodes/core/StackNode.js +91 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +20 -8
- package/src/nodes/core/StructTypeNode.js +17 -23
- 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 +56 -23
- package/src/nodes/core/VaryingNode.js +14 -21
- package/src/nodes/display/BlendModes.js +1 -105
- package/src/nodes/display/BumpMapNode.js +6 -1
- package/src/nodes/display/ColorAdjustment.js +27 -9
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +38 -9
- package/src/nodes/display/NormalMapNode.js +41 -6
- package/src/nodes/display/PassNode.js +157 -56
- package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
- package/src/nodes/display/RenderOutputNode.js +19 -10
- 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/functions/VolumetricLightingModel.js +40 -7
- 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 +5 -5
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +30 -5
- package/src/nodes/lighting/IESSpotLightNode.js +40 -2
- package/src/nodes/lighting/LightingContextNode.js +10 -2
- package/src/nodes/lighting/LightsNode.js +97 -65
- package/src/nodes/lighting/PointShadowNode.js +166 -148
- package/src/nodes/lighting/ShadowFilterNode.js +74 -117
- package/src/nodes/lighting/ShadowNode.js +149 -51
- package/src/nodes/materialx/lib/mx_noise.js +2 -2
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +6 -6
- package/src/nodes/math/MathNode.js +115 -52
- package/src/nodes/math/OperatorNode.js +24 -23
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +34 -3
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +99 -33
- 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/EquirectUV.js +30 -5
- package/src/nodes/utils/EventNode.js +31 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
- 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 +48 -5
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +41 -25
- package/src/nodes/utils/ReflectorNode.js +4 -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/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +66 -30
- package/src/objects/InstancedMesh.js +19 -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/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +344 -156
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +78 -13
- 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 +141 -57
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ClippingContext.js +10 -2
- 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 +374 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Lighting.js +51 -19
- 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/RenderList.js +41 -4
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +88 -16
- 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 +700 -163
- package/src/renderers/common/Sampler.js +16 -48
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +121 -9
- package/src/renderers/common/TimestampQueryPool.js +6 -4
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +84 -1
- package/src/renderers/common/XRManager.js +377 -51
- package/src/renderers/common/extras/PMREMGenerator.js +40 -61
- package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
- package/src/renderers/common/nodes/NodeLibrary.js +4 -4
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -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/common.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
- 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 +3 -1
- 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_begin.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -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 +2 -2
- 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} +2 -3
- 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 +271 -0
- package/src/renderers/webgl/WebGLProgram.js +54 -113
- package/src/renderers/webgl/WebGLPrograms.js +74 -55
- package/src/renderers/webgl/WebGLRenderLists.js +24 -1
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShaderCache.js +5 -11
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +75 -37
- package/src/renderers/webgl/WebGLTextures.js +230 -56
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
- 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 +118 -73
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
- package/src/renderers/webgpu/WebGPUBackend.js +733 -302
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
- package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
- package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
- package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
- package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
- package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
- package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
- package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
- package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
- package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
- package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
- package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
- 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 +224 -91
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
- package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
- 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/DepthTexture.js +1 -1
- package/src/textures/ExternalTexture.js +0 -3
- 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/fonts/LICENSE +0 -13
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
- package/examples/fonts/README.md +0 -11
- package/examples/fonts/droid/NOTICE +0 -190
- package/examples/fonts/droid/README.txt +0 -18
- package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
- package/examples/fonts/gentilis_bold.typeface.json +0 -1
- package/examples/fonts/gentilis_regular.typeface.json +0 -1
- package/examples/fonts/helvetiker_bold.typeface.json +0 -1
- package/examples/fonts/helvetiker_regular.typeface.json +0 -1
- package/examples/fonts/optimer_bold.typeface.json +0 -1
- package/examples/fonts/optimer_regular.typeface.json +0 -1
- package/examples/fonts/ttf/README.md +0 -9
- package/examples/fonts/ttf/kenpixel.ttf +0 -0
- package/examples/jsm/libs/ammo.wasm.js +0 -822
- package/examples/jsm/libs/ammo.wasm.wasm +0 -0
- package/examples/jsm/libs/draco/draco_encoder.js +0 -33
- package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
- package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
- package/examples/jsm/libs/opentype.module.js +0 -14506
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lighting/TiledLighting.js +0 -42
- 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/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
- package/src/nodes/accessors/BatchNode.js +0 -163
- package/src/nodes/accessors/InstanceNode.js +0 -244
- package/src/nodes/accessors/InstancedMeshNode.js +0 -50
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/accessors/SkinningNode.js +0 -327
- 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
|
@@ -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,66 @@ 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
|
+
const refNode = this.getShared( builder );
|
|
163
179
|
|
|
164
|
-
|
|
180
|
+
if ( this !== refNode ) {
|
|
165
181
|
|
|
166
|
-
|
|
182
|
+
return refNode.build( ...params );
|
|
167
183
|
|
|
168
|
-
|
|
184
|
+
}
|
|
169
185
|
|
|
170
|
-
|
|
186
|
+
if ( this._hasStack( builder ) === false && builder.buildStage === 'setup' ) {
|
|
171
187
|
|
|
172
|
-
|
|
188
|
+
if ( builder.context.nodeLoop || builder.context.nodeBlock ) {
|
|
173
189
|
|
|
174
|
-
|
|
190
|
+
let addBefore = false;
|
|
175
191
|
|
|
176
|
-
|
|
192
|
+
if ( this.node.isShaderCallNodeInternal && this.node.shaderNode.getLayout() === null ) {
|
|
177
193
|
|
|
178
|
-
|
|
194
|
+
if ( builder.fnCall && builder.fnCall.shaderNode ) {
|
|
179
195
|
|
|
180
|
-
|
|
196
|
+
const shaderNodeData = builder.getDataFromNode( this.node.shaderNode );
|
|
181
197
|
|
|
182
|
-
|
|
198
|
+
if ( shaderNodeData.hasLoop ) {
|
|
183
199
|
|
|
184
|
-
|
|
200
|
+
const data = builder.getDataFromNode( this );
|
|
201
|
+
data.forceDeclaration = true;
|
|
185
202
|
|
|
186
|
-
|
|
203
|
+
addBefore = true;
|
|
204
|
+
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
const baseStack = builder.getBaseStack();
|
|
212
|
+
|
|
213
|
+
if ( addBefore ) {
|
|
187
214
|
|
|
188
|
-
|
|
215
|
+
baseStack.addToStackBefore( this );
|
|
216
|
+
|
|
217
|
+
} else {
|
|
218
|
+
|
|
219
|
+
baseStack.addToStack( this );
|
|
220
|
+
|
|
221
|
+
}
|
|
189
222
|
|
|
190
223
|
}
|
|
191
224
|
|
|
192
225
|
}
|
|
193
226
|
|
|
194
|
-
if ( this.
|
|
227
|
+
if ( this.isIntent( builder ) ) {
|
|
195
228
|
|
|
196
229
|
if ( this.isAssign( builder ) !== true ) {
|
|
197
230
|
|
|
@@ -227,9 +260,9 @@ class VarNode extends Node {
|
|
|
227
260
|
|
|
228
261
|
if ( nodeType == 'void' ) {
|
|
229
262
|
|
|
230
|
-
if ( this.
|
|
263
|
+
if ( this.isIntent( builder ) !== true ) {
|
|
231
264
|
|
|
232
|
-
error( 'TSL: ".toVar()" can not be used with void type.' );
|
|
265
|
+
error( 'TSL: ".toVar()" can not be used with void type.', this.stackTrace );
|
|
233
266
|
|
|
234
267
|
}
|
|
235
268
|
|
|
@@ -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
|
|
|
@@ -171,8 +170,18 @@ class VaryingNode extends Node {
|
|
|
171
170
|
const type = this.getNodeType( builder );
|
|
172
171
|
const propertyName = builder.getPropertyName( varying, NodeShaderStage.VERTEX );
|
|
173
172
|
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
if ( builder.shaderStage === NodeShaderStage.VERTEX ) {
|
|
174
|
+
|
|
175
|
+
const snippet = properties.node.build( builder, type );
|
|
176
|
+
|
|
177
|
+
builder.addLineFlowCode( `${ propertyName } = ${ snippet }`, this );
|
|
178
|
+
|
|
179
|
+
} else {
|
|
180
|
+
|
|
181
|
+
// force node run in vertex stage
|
|
182
|
+
builder.flowNodeFromShaderStage( NodeShaderStage.VERTEX, properties.node, type, propertyName );
|
|
183
|
+
|
|
184
|
+
}
|
|
176
185
|
|
|
177
186
|
properties[ propertyKey ] = propertyName;
|
|
178
187
|
|
|
@@ -209,19 +218,3 @@ export const vertexStage = ( node ) => varying( node );
|
|
|
209
218
|
|
|
210
219
|
addMethodChaining( 'toVarying', varying );
|
|
211
220
|
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
|
-
import { Fn,
|
|
1
|
+
import { Fn, vec4 } from '../tsl/TSLCore.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.
|
|
@@ -130,106 +129,3 @@ export const blendColor = /*@__PURE__*/ Fn( ( [ base, blend ] ) => {
|
|
|
130
129
|
{ name: 'blend', type: 'vec4' }
|
|
131
130
|
]
|
|
132
131
|
} );
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Premultiplies the RGB channels of a color by its alpha channel.
|
|
136
|
-
*
|
|
137
|
-
* This function is useful for converting a non-premultiplied alpha color
|
|
138
|
-
* into a premultiplied alpha format, where the RGB values are scaled
|
|
139
|
-
* by the alpha value. Premultiplied alpha is often used in graphics
|
|
140
|
-
* rendering for certain operations, such as compositing and image processing.
|
|
141
|
-
*
|
|
142
|
-
* @tsl
|
|
143
|
-
* @function
|
|
144
|
-
* @param {Node<vec4>} color - The input color with non-premultiplied alpha.
|
|
145
|
-
* @return {Node<vec4>} The color with premultiplied alpha.
|
|
146
|
-
*/
|
|
147
|
-
export const premultiplyAlpha = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
148
|
-
|
|
149
|
-
return vec4( color.rgb.mul( color.a ), color.a );
|
|
150
|
-
|
|
151
|
-
}, { color: 'vec4', return: 'vec4' } );
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Unpremultiplies the RGB channels of a color by its alpha channel.
|
|
155
|
-
*
|
|
156
|
-
* This function is useful for converting a premultiplied alpha color
|
|
157
|
-
* back into a non-premultiplied alpha format, where the RGB values are
|
|
158
|
-
* divided by the alpha value. Unpremultiplied alpha is often used in graphics
|
|
159
|
-
* rendering for certain operations, such as compositing and image processing.
|
|
160
|
-
*
|
|
161
|
-
* @tsl
|
|
162
|
-
* @function
|
|
163
|
-
* @param {Node<vec4>} color - The input color with premultiplied alpha.
|
|
164
|
-
* @return {Node<vec4>} The color with non-premultiplied alpha.
|
|
165
|
-
*/
|
|
166
|
-
export const unpremultiplyAlpha = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
167
|
-
|
|
168
|
-
If( color.a.equal( 0.0 ), () => vec4( 0.0 ) );
|
|
169
|
-
|
|
170
|
-
return vec4( color.rgb.div( color.a ), color.a );
|
|
171
|
-
|
|
172
|
-
}, { 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
|
-
};
|
|
@@ -88,7 +88,12 @@ class BumpMapNode extends TempNode {
|
|
|
88
88
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
setup() {
|
|
91
|
+
setup( builder ) {
|
|
92
|
+
|
|
93
|
+
// Screen-space derivatives are unreliable on thin lines, so the bump
|
|
94
|
+
// effect is disabled for wireframe rendering.
|
|
95
|
+
|
|
96
|
+
if ( builder.material.wireframe === true ) return normalView;
|
|
92
97
|
|
|
93
98
|
const bumpScale = this.scaleNode !== null ? this.scaleNode : 1;
|
|
94
99
|
const dHdxy = dHdxy_fwd( { textureNode: this.textureNode, bumpScale } );
|
|
@@ -30,7 +30,7 @@ export const grayscale = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
|
30
30
|
*/
|
|
31
31
|
export const saturation = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ] ) => {
|
|
32
32
|
|
|
33
|
-
return adjustment.mix( luminance( color.rgb ), color.rgb );
|
|
33
|
+
return adjustment.mix( luminance( color.rgb ), color.rgb ).max( 0.0 );
|
|
34
34
|
|
|
35
35
|
} );
|
|
36
36
|
|
|
@@ -42,17 +42,17 @@ export const saturation = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ]
|
|
|
42
42
|
* @tsl
|
|
43
43
|
* @function
|
|
44
44
|
* @param {Node<vec3>} color - The input color.
|
|
45
|
-
* @param {Node<float>} [adjustment=
|
|
45
|
+
* @param {Node<float>} [adjustment=0] - Controls the intensity of the vibrance effect.
|
|
46
46
|
* @return {Node<vec3>} The updated color.
|
|
47
47
|
*/
|
|
48
|
-
export const vibrance = /*@__PURE__*/ Fn( ( [ color, adjustment = float(
|
|
48
|
+
export const vibrance = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 0 ) ] ) => {
|
|
49
49
|
|
|
50
50
|
const average = add( color.r, color.g, color.b ).div( 3.0 );
|
|
51
51
|
|
|
52
52
|
const mx = color.r.max( color.g.max( color.b ) );
|
|
53
53
|
const amt = mx.sub( average ).mul( adjustment ).mul( - 3.0 );
|
|
54
54
|
|
|
55
|
-
return mix( color.rgb, mx, amt );
|
|
55
|
+
return mix( color.rgb, mx, amt ).max( 0.0 );
|
|
56
56
|
|
|
57
57
|
} );
|
|
58
58
|
|
|
@@ -71,7 +71,7 @@ export const hue = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ] ) => {
|
|
|
71
71
|
|
|
72
72
|
const cosAngle = adjustment.cos();
|
|
73
73
|
|
|
74
|
-
return vec3( color.rgb.mul( cosAngle ).add( k.cross( color.rgb ).mul( adjustment.sin() ).add( k.mul( dot( k, color.rgb ).mul( cosAngle.oneMinus() ) ) ) ) );
|
|
74
|
+
return vec3( color.rgb.mul( cosAngle ).add( k.cross( color.rgb ).mul( adjustment.sin() ).add( k.mul( dot( k, color.rgb ).mul( cosAngle.oneMinus() ) ) ) ) ).max( 0.0 );
|
|
75
75
|
|
|
76
76
|
} );
|
|
77
77
|
|
|
@@ -123,19 +123,37 @@ export const cdl = /*@__PURE__*/ Fn( ( [
|
|
|
123
123
|
|
|
124
124
|
// NOTE: The ASC CDL v1.2 defines a [0, 1] clamp on the slope+offset term, and another on the
|
|
125
125
|
// saturation term. Per the ACEScc specification and Filament, limits may be omitted to support
|
|
126
|
-
//
|
|
126
|
+
// if negative inputs to the power expression are avoided. We use `max( in, 0.0 )`
|
|
127
|
+
// on final output, but the lower limit may not be required in all cases.
|
|
127
128
|
|
|
128
129
|
const luma = color.rgb.dot( vec3( luminanceCoefficients ) );
|
|
129
130
|
|
|
130
|
-
const v = max( color.rgb.mul( slope ).add( offset ), 0.0 )
|
|
131
|
-
const pv = v.pow( power )
|
|
131
|
+
const v = max( color.rgb.mul( slope ).add( offset ), 0.0 );
|
|
132
|
+
const pv = v.pow( power );
|
|
132
133
|
|
|
133
134
|
If( v.r.greaterThan( 0.0 ), () => { v.r.assign( pv.r ); } ); // eslint-disable-line
|
|
134
135
|
If( v.g.greaterThan( 0.0 ), () => { v.g.assign( pv.g ); } ); // eslint-disable-line
|
|
135
136
|
If( v.b.greaterThan( 0.0 ), () => { v.b.assign( pv.b ); } ); // eslint-disable-line
|
|
136
137
|
|
|
137
|
-
v.assign( luma.add( v.sub( luma ).mul( saturation ) ) );
|
|
138
|
+
v.assign( luma.add( v.sub( luma ).mul( saturation ) ).max( 0 ) );
|
|
138
139
|
|
|
139
140
|
return vec4( v.rgb, color.a );
|
|
140
141
|
|
|
141
142
|
} );
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* TSL function for creating a posterize effect which reduces the number of colors
|
|
146
|
+
* in an image, resulting in a more blocky and stylized appearance.
|
|
147
|
+
*
|
|
148
|
+
* @tsl
|
|
149
|
+
* @function
|
|
150
|
+
* @param {Node} sourceNode - The input color.
|
|
151
|
+
* @param {Node} stepsNode - Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
|
|
152
|
+
* @returns {Node} The posterized color.
|
|
153
|
+
*/
|
|
154
|
+
export const posterize = Fn( ( [ source, steps ] ) => {
|
|
155
|
+
|
|
156
|
+
return source.mul( steps ).floor().div( steps );
|
|
157
|
+
|
|
158
|
+
} );
|
|
159
|
+
|
|
@@ -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 );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeImmutable, float, Fn } from '../tsl/TSLBase.js';
|
|
3
|
+
import { warnOnce } from '../../utils.js';
|
|
3
4
|
|
|
4
5
|
import { BackSide, DoubleSide } from '../../constants.js';
|
|
5
6
|
|
|
@@ -74,29 +75,57 @@ export const frontFacing = /*@__PURE__*/ nodeImmutable( FrontFacingNode );
|
|
|
74
75
|
export const faceDirection = /*@__PURE__*/ float( frontFacing ).mul( 2.0 ).sub( 1.0 );
|
|
75
76
|
|
|
76
77
|
/**
|
|
77
|
-
*
|
|
78
|
+
* Negates a vector if the rendering occurs on the back side of a face,
|
|
79
|
+
* based on the material's side configuration.
|
|
78
80
|
*
|
|
79
|
-
* If the material is
|
|
80
|
-
* If the material is
|
|
81
|
+
* - If the material's side is `BackSide`, the vector is inverted (negated).
|
|
82
|
+
* - If the material's side is `DoubleSide`, the vector is multiplied by `faceDirection`
|
|
83
|
+
* (negated only for back-facing fragments).
|
|
84
|
+
* - If the material's side is `FrontSide` (default), the vector remains unchanged.
|
|
81
85
|
*
|
|
82
86
|
* @tsl
|
|
83
|
-
* @
|
|
84
|
-
* @
|
|
87
|
+
* @function
|
|
88
|
+
* @param {Node<vec3>} vector - The vector to process.
|
|
89
|
+
* @returns {Node<vec3>} The processed vector.
|
|
85
90
|
*/
|
|
86
|
-
export const
|
|
91
|
+
export const negateOnBackSide = /*@__PURE__*/ Fn( ( [ vector ], { material } ) => {
|
|
87
92
|
|
|
88
93
|
const side = material.side;
|
|
89
94
|
|
|
90
95
|
if ( side === BackSide ) {
|
|
91
96
|
|
|
92
|
-
|
|
97
|
+
vector = vector.mul( - 1.0 );
|
|
93
98
|
|
|
94
99
|
} else if ( side === DoubleSide ) {
|
|
95
100
|
|
|
96
|
-
|
|
101
|
+
vector = vector.mul( faceDirection );
|
|
97
102
|
|
|
98
103
|
}
|
|
99
104
|
|
|
100
|
-
return
|
|
105
|
+
return vector;
|
|
101
106
|
|
|
102
107
|
} );
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Negates a vector if the rendering occurs on the back side of a face,
|
|
111
|
+
* based on the material's side configuration.
|
|
112
|
+
*
|
|
113
|
+
* - If the material's side is `BackSide`, the vector is inverted (negated).
|
|
114
|
+
* - If the material's side is `DoubleSide`, the vector is multiplied by `faceDirection`
|
|
115
|
+
* (negated only for back-facing fragments).
|
|
116
|
+
* - If the material's side is `FrontSide` (default), the vector remains unchanged.
|
|
117
|
+
*
|
|
118
|
+
* @tsl
|
|
119
|
+
* @function
|
|
120
|
+
* @deprecated since r185. Use {@link negateOnBackSide} instead.
|
|
121
|
+
* @param {Node<vec3>} vector - The vector to convert.
|
|
122
|
+
* @returns {Node<vec3>} The converted vector.
|
|
123
|
+
*/
|
|
124
|
+
export const directionToFaceDirection = ( vector ) => {
|
|
125
|
+
|
|
126
|
+
warnOnce( 'TSL: "directionToFaceDirection()" has been renamed to "negateOnBackSide()".' ); // @deprecated r185
|
|
127
|
+
|
|
128
|
+
return negateOnBackSide( vector );
|
|
129
|
+
|
|
130
|
+
};
|
|
131
|
+
|
|
@@ -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';
|
|
8
|
-
import {
|
|
7
|
+
import { TangentSpaceNormalMap, ObjectSpaceNormalMap, NoNormalPacking, NormalRGPacking, NormalGAPacking } from '../../constants.js';
|
|
8
|
+
import { negateOnBackSide } from './FrontFacingNode.js';
|
|
9
|
+
import { unpackNormal } from '../utils/Packing.js';
|
|
9
10
|
import { error } from '../../utils.js';
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -58,21 +59,55 @@ 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
|
-
scale =
|
|
110
|
+
scale = negateOnBackSide( scale );
|
|
76
111
|
|
|
77
112
|
}
|
|
78
113
|
|