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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import TempNode from '../core/TempNode.js';
|
|
2
|
-
import { sub, mul, div, mod
|
|
2
|
+
import { sub, mul, div, mod } from './OperatorNode.js';
|
|
3
3
|
import { addMethodChaining, nodeObject, nodeProxyIntent, float, vec2, vec3, vec4, Fn } from '../tsl/TSLCore.js';
|
|
4
4
|
import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../../constants.js';
|
|
5
5
|
import { warn } from '../../utils.js';
|
|
@@ -40,7 +40,7 @@ class MathNode extends TempNode {
|
|
|
40
40
|
|
|
41
41
|
let finalOp = new MathNode( method, aNode, bNode );
|
|
42
42
|
|
|
43
|
-
for ( let i =
|
|
43
|
+
for ( let i = 3; i < arguments.length - 1; i ++ ) {
|
|
44
44
|
|
|
45
45
|
finalOp = new MathNode( method, finalOp, arguments[ i ] );
|
|
46
46
|
|
|
@@ -133,7 +133,7 @@ class MathNode extends TempNode {
|
|
|
133
133
|
* @param {NodeBuilder} builder - The current node builder.
|
|
134
134
|
* @return {string} The node type.
|
|
135
135
|
*/
|
|
136
|
-
|
|
136
|
+
generateNodeType( builder ) {
|
|
137
137
|
|
|
138
138
|
const method = this.method;
|
|
139
139
|
|
|
@@ -181,25 +181,23 @@ class MathNode extends TempNode {
|
|
|
181
181
|
|
|
182
182
|
} else if ( method === MathNode.TRANSFORM_DIRECTION ) {
|
|
183
183
|
|
|
184
|
-
//
|
|
185
|
-
// upper-left 3x3 of matrix is assumed to be orthogonal
|
|
184
|
+
// pre-multiplies the direction by the matrix and normalizes the result
|
|
186
185
|
|
|
187
|
-
let
|
|
188
|
-
let tB = bNode;
|
|
186
|
+
let matrixNode, directionNode;
|
|
189
187
|
|
|
190
|
-
if ( builder.isMatrix(
|
|
188
|
+
if ( builder.isMatrix( aNode.getNodeType( builder ) ) ) {
|
|
191
189
|
|
|
192
|
-
|
|
190
|
+
matrixNode = aNode;
|
|
191
|
+
directionNode = bNode;
|
|
193
192
|
|
|
194
193
|
} else {
|
|
195
194
|
|
|
196
|
-
|
|
195
|
+
matrixNode = bNode;
|
|
196
|
+
directionNode = aNode;
|
|
197
197
|
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
outputNode = normalize( mulNode );
|
|
200
|
+
outputNode = normalize( mul( matrixNode, vec4( vec3( directionNode ), 0.0 ) ).xyz );
|
|
203
201
|
|
|
204
202
|
}
|
|
205
203
|
|
|
@@ -291,7 +289,7 @@ class MathNode extends TempNode {
|
|
|
291
289
|
|
|
292
290
|
if ( builder.shaderStage !== 'fragment' && ( method === MathNode.DFDX || method === MathNode.DFDY ) ) {
|
|
293
291
|
|
|
294
|
-
warn( `TSL: '${ method }' is not supported in the ${ builder.shaderStage } stage
|
|
292
|
+
warn( `TSL: '${ method }' is not supported in the ${ builder.shaderStage } stage.`, this.stackTrace );
|
|
295
293
|
|
|
296
294
|
method = '/*' + method + '*/';
|
|
297
295
|
|
|
@@ -345,11 +343,17 @@ MathNode.CEIL = 'ceil';
|
|
|
345
343
|
MathNode.NORMALIZE = 'normalize';
|
|
346
344
|
MathNode.FRACT = 'fract';
|
|
347
345
|
MathNode.SIN = 'sin';
|
|
346
|
+
MathNode.SINH = 'sinh';
|
|
348
347
|
MathNode.COS = 'cos';
|
|
348
|
+
MathNode.COSH = 'cosh';
|
|
349
349
|
MathNode.TAN = 'tan';
|
|
350
|
+
MathNode.TANH = 'tanh';
|
|
350
351
|
MathNode.ASIN = 'asin';
|
|
352
|
+
MathNode.ASINH = 'asinh';
|
|
351
353
|
MathNode.ACOS = 'acos';
|
|
354
|
+
MathNode.ACOSH = 'acosh';
|
|
352
355
|
MathNode.ATAN = 'atan';
|
|
356
|
+
MathNode.ATANH = 'atanh';
|
|
353
357
|
MathNode.ABS = 'abs';
|
|
354
358
|
MathNode.SIGN = 'sign';
|
|
355
359
|
MathNode.LENGTH = 'length';
|
|
@@ -590,6 +594,16 @@ export const fract = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.FRACT ).s
|
|
|
590
594
|
*/
|
|
591
595
|
export const sin = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.SIN ).setParameterLength( 1 );
|
|
592
596
|
|
|
597
|
+
/**
|
|
598
|
+
* Returns the hyperbolic sine of the parameter.
|
|
599
|
+
*
|
|
600
|
+
* @tsl
|
|
601
|
+
* @function
|
|
602
|
+
* @param {Node | number} x - The parameter.
|
|
603
|
+
* @returns {Node}
|
|
604
|
+
*/
|
|
605
|
+
export const sinh = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.SINH ).setParameterLength( 1 );
|
|
606
|
+
|
|
593
607
|
/**
|
|
594
608
|
* Returns the cosine of the parameter.
|
|
595
609
|
*
|
|
@@ -600,6 +614,16 @@ export const sin = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.SIN ).setPa
|
|
|
600
614
|
*/
|
|
601
615
|
export const cos = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.COS ).setParameterLength( 1 );
|
|
602
616
|
|
|
617
|
+
/**
|
|
618
|
+
* Returns the hyperbolic cosine of the parameter.
|
|
619
|
+
*
|
|
620
|
+
* @tsl
|
|
621
|
+
* @function
|
|
622
|
+
* @param {Node | number} x - The parameter.
|
|
623
|
+
* @returns {Node}
|
|
624
|
+
*/
|
|
625
|
+
export const cosh = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.COSH ).setParameterLength( 1 );
|
|
626
|
+
|
|
603
627
|
/**
|
|
604
628
|
* Returns the tangent of the parameter.
|
|
605
629
|
*
|
|
@@ -610,6 +634,16 @@ export const cos = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.COS ).setPa
|
|
|
610
634
|
*/
|
|
611
635
|
export const tan = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.TAN ).setParameterLength( 1 );
|
|
612
636
|
|
|
637
|
+
/**
|
|
638
|
+
* Returns the hyperbolic tangent of the parameter.
|
|
639
|
+
*
|
|
640
|
+
* @tsl
|
|
641
|
+
* @function
|
|
642
|
+
* @param {Node | number} x - The parameter.
|
|
643
|
+
* @returns {Node}
|
|
644
|
+
*/
|
|
645
|
+
export const tanh = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.TANH ).setParameterLength( 1 );
|
|
646
|
+
|
|
613
647
|
/**
|
|
614
648
|
* Returns the arcsine of the parameter.
|
|
615
649
|
*
|
|
@@ -620,6 +654,16 @@ export const tan = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.TAN ).setPa
|
|
|
620
654
|
*/
|
|
621
655
|
export const asin = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.ASIN ).setParameterLength( 1 );
|
|
622
656
|
|
|
657
|
+
/**
|
|
658
|
+
* Returns the inverse hyperbolic sine of the parameter.
|
|
659
|
+
*
|
|
660
|
+
* @tsl
|
|
661
|
+
* @function
|
|
662
|
+
* @param {Node | number} x - The parameter.
|
|
663
|
+
* @returns {Node}
|
|
664
|
+
*/
|
|
665
|
+
export const asinh = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.ASINH ).setParameterLength( 1 );
|
|
666
|
+
|
|
623
667
|
/**
|
|
624
668
|
* Returns the arccosine of the parameter.
|
|
625
669
|
*
|
|
@@ -630,6 +674,16 @@ export const asin = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.ASIN ).set
|
|
|
630
674
|
*/
|
|
631
675
|
export const acos = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.ACOS ).setParameterLength( 1 );
|
|
632
676
|
|
|
677
|
+
/**
|
|
678
|
+
* Returns the inverse hyperbolic cosine of the parameter.
|
|
679
|
+
*
|
|
680
|
+
* @tsl
|
|
681
|
+
* @function
|
|
682
|
+
* @param {Node | number} x - The parameter.
|
|
683
|
+
* @returns {Node}
|
|
684
|
+
*/
|
|
685
|
+
export const acosh = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.ACOSH ).setParameterLength( 1 );
|
|
686
|
+
|
|
633
687
|
/**
|
|
634
688
|
* Returns the arc-tangent of the parameter.
|
|
635
689
|
* If two parameters are provided, the result is `atan2(y/x)`.
|
|
@@ -642,6 +696,16 @@ export const acos = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.ACOS ).set
|
|
|
642
696
|
*/
|
|
643
697
|
export const atan = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.ATAN ).setParameterLength( 1, 2 );
|
|
644
698
|
|
|
699
|
+
/**
|
|
700
|
+
* Returns the inverse hyperbolic tangent of the parameter.
|
|
701
|
+
*
|
|
702
|
+
* @tsl
|
|
703
|
+
* @function
|
|
704
|
+
* @param {Node | number} x - The parameter.
|
|
705
|
+
* @returns {Node}
|
|
706
|
+
*/
|
|
707
|
+
export const atanh = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.ATANH ).setParameterLength( 1 );
|
|
708
|
+
|
|
645
709
|
/**
|
|
646
710
|
* Returns the absolute value of the parameter.
|
|
647
711
|
*
|
|
@@ -784,23 +848,6 @@ export const inverse = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.INVERSE
|
|
|
784
848
|
|
|
785
849
|
// 2 inputs
|
|
786
850
|
|
|
787
|
-
/**
|
|
788
|
-
* Returns `true` if `x` equals `y`.
|
|
789
|
-
*
|
|
790
|
-
* @tsl
|
|
791
|
-
* @function
|
|
792
|
-
* @param {Node | number} x - The first parameter.
|
|
793
|
-
* @param {Node | number} y - The second parameter.
|
|
794
|
-
* @deprecated since r175. Use {@link equal} instead.
|
|
795
|
-
* @returns {Node<bool>}
|
|
796
|
-
*/
|
|
797
|
-
export const equals = ( x, y ) => { // @deprecated, r172
|
|
798
|
-
|
|
799
|
-
warn( 'TSL: "equals" is deprecated. Use "equal" inside a vector instead, like: "bvec*( equal( ... ) )"' );
|
|
800
|
-
return equal( x, y );
|
|
801
|
-
|
|
802
|
-
};
|
|
803
|
-
|
|
804
851
|
/**
|
|
805
852
|
* Returns the least of the given values.
|
|
806
853
|
*
|
|
@@ -939,6 +986,34 @@ export const pow4 = ( x ) => mul( x, x, x, x );
|
|
|
939
986
|
*/
|
|
940
987
|
export const transformDirection = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.TRANSFORM_DIRECTION ).setParameterLength( 2 );
|
|
941
988
|
|
|
989
|
+
/**
|
|
990
|
+
* Transforms a normal vector by the view matrix and then normalizes the result.
|
|
991
|
+
*
|
|
992
|
+
* The upper-left 3x3 of the view matrix is assumed to be orthonormal, so the
|
|
993
|
+
* normal can be transformed directly without involving the normal matrix.
|
|
994
|
+
*
|
|
995
|
+
* @tsl
|
|
996
|
+
* @function
|
|
997
|
+
* @param {Node<vec3>} normal - The normal vector, given in world space.
|
|
998
|
+
* @param {Node<mat3|mat4>} viewMatrix - The view matrix.
|
|
999
|
+
* @returns {Node<vec3>} The normal vector in view space.
|
|
1000
|
+
*/
|
|
1001
|
+
export const transformNormalByViewMatrix = ( normal, viewMatrix ) => normalize( mul( viewMatrix, vec4( vec3( normal ), 0.0 ) ).xyz );
|
|
1002
|
+
|
|
1003
|
+
/**
|
|
1004
|
+
* Transforms a normal vector by the inverse of the view matrix and then normalizes the result.
|
|
1005
|
+
*
|
|
1006
|
+
* The upper-left 3x3 of the view matrix is assumed to be orthonormal, so post-multiplying
|
|
1007
|
+
* by the view matrix is equivalent to pre-multiplying by its inverse.
|
|
1008
|
+
*
|
|
1009
|
+
* @tsl
|
|
1010
|
+
* @function
|
|
1011
|
+
* @param {Node<vec3>} normal - The normal vector, given in view space.
|
|
1012
|
+
* @param {Node<mat3|mat4>} viewMatrix - The view matrix.
|
|
1013
|
+
* @returns {Node<vec3>} The normal vector in world space.
|
|
1014
|
+
*/
|
|
1015
|
+
export const transformNormalByInverseViewMatrix = ( normal, viewMatrix ) => normalize( vec4( vec3( normal ), 0.0 ).mul( viewMatrix ).xyz );
|
|
1016
|
+
|
|
942
1017
|
/**
|
|
943
1018
|
* Returns the cube root of a number.
|
|
944
1019
|
*
|
|
@@ -981,7 +1056,7 @@ export const mix = /*@__PURE__*/ nodeProxyIntent( MathNode, MathNode.MIX ).setPa
|
|
|
981
1056
|
* @param {Node | number} [high=1] - The upper bound.
|
|
982
1057
|
* @returns {Node}
|
|
983
1058
|
*/
|
|
984
|
-
export const clamp = ( value, low = 0, high = 1 ) =>
|
|
1059
|
+
export const clamp = ( value, low = 0, high = 1 ) => new MathNode( MathNode.CLAMP, nodeObject( value ), nodeObject( low ), nodeObject( high ) );
|
|
985
1060
|
|
|
986
1061
|
/**
|
|
987
1062
|
* Constrains a value between `0` and `1`.
|
|
@@ -1081,24 +1156,6 @@ export const smoothstepElement = ( x, low, high ) => smoothstep( low, high, x );
|
|
|
1081
1156
|
*/
|
|
1082
1157
|
export const stepElement = ( x, edge ) => step( edge, x );
|
|
1083
1158
|
|
|
1084
|
-
/**
|
|
1085
|
-
* Returns the arc-tangent of the quotient of its parameters.
|
|
1086
|
-
*
|
|
1087
|
-
* @tsl
|
|
1088
|
-
* @function
|
|
1089
|
-
* @deprecated since r172. Use {@link atan} instead.
|
|
1090
|
-
*
|
|
1091
|
-
* @param {Node | number} y - The y parameter.
|
|
1092
|
-
* @param {Node | number} x - The x parameter.
|
|
1093
|
-
* @returns {Node}
|
|
1094
|
-
*/
|
|
1095
|
-
export const atan2 = ( y, x ) => { // @deprecated, r172
|
|
1096
|
-
|
|
1097
|
-
warn( 'TSL: "atan2" is overloaded. Use "atan" instead.' );
|
|
1098
|
-
return atan( y, x );
|
|
1099
|
-
|
|
1100
|
-
};
|
|
1101
|
-
|
|
1102
1159
|
// GLSL alias function
|
|
1103
1160
|
|
|
1104
1161
|
export const faceforward = faceForward;
|
|
@@ -1108,7 +1165,6 @@ export const inversesqrt = inverseSqrt;
|
|
|
1108
1165
|
|
|
1109
1166
|
addMethodChaining( 'all', all );
|
|
1110
1167
|
addMethodChaining( 'any', any );
|
|
1111
|
-
addMethodChaining( 'equals', equals );
|
|
1112
1168
|
|
|
1113
1169
|
addMethodChaining( 'radians', radians );
|
|
1114
1170
|
addMethodChaining( 'degrees', degrees );
|
|
@@ -1123,11 +1179,17 @@ addMethodChaining( 'ceil', ceil );
|
|
|
1123
1179
|
addMethodChaining( 'normalize', normalize );
|
|
1124
1180
|
addMethodChaining( 'fract', fract );
|
|
1125
1181
|
addMethodChaining( 'sin', sin );
|
|
1182
|
+
addMethodChaining( 'sinh', sinh );
|
|
1126
1183
|
addMethodChaining( 'cos', cos );
|
|
1184
|
+
addMethodChaining( 'cosh', cosh );
|
|
1127
1185
|
addMethodChaining( 'tan', tan );
|
|
1186
|
+
addMethodChaining( 'tanh', tanh );
|
|
1128
1187
|
addMethodChaining( 'asin', asin );
|
|
1188
|
+
addMethodChaining( 'asinh', asinh );
|
|
1129
1189
|
addMethodChaining( 'acos', acos );
|
|
1190
|
+
addMethodChaining( 'acosh', acosh );
|
|
1130
1191
|
addMethodChaining( 'atan', atan );
|
|
1192
|
+
addMethodChaining( 'atanh', atanh );
|
|
1131
1193
|
addMethodChaining( 'abs', abs );
|
|
1132
1194
|
addMethodChaining( 'sign', sign );
|
|
1133
1195
|
addMethodChaining( 'length', length );
|
|
@@ -1140,7 +1202,6 @@ addMethodChaining( 'round', round );
|
|
|
1140
1202
|
addMethodChaining( 'reciprocal', reciprocal );
|
|
1141
1203
|
addMethodChaining( 'trunc', trunc );
|
|
1142
1204
|
addMethodChaining( 'fwidth', fwidth );
|
|
1143
|
-
addMethodChaining( 'atan2', atan2 );
|
|
1144
1205
|
addMethodChaining( 'min', min );
|
|
1145
1206
|
addMethodChaining( 'max', max );
|
|
1146
1207
|
addMethodChaining( 'step', stepElement );
|
|
@@ -1153,6 +1214,8 @@ addMethodChaining( 'pow2', pow2 );
|
|
|
1153
1214
|
addMethodChaining( 'pow3', pow3 );
|
|
1154
1215
|
addMethodChaining( 'pow4', pow4 );
|
|
1155
1216
|
addMethodChaining( 'transformDirection', transformDirection );
|
|
1217
|
+
addMethodChaining( 'transformNormalByViewMatrix', transformNormalByViewMatrix );
|
|
1218
|
+
addMethodChaining( 'transformNormalByInverseViewMatrix', transformNormalByInverseViewMatrix );
|
|
1156
1219
|
addMethodChaining( 'mix', mixElement );
|
|
1157
1220
|
addMethodChaining( 'clamp', clamp );
|
|
1158
1221
|
addMethodChaining( 'refract', refract );
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { WebGLCoordinateSystem } from '../../constants.js';
|
|
2
2
|
import TempNode from '../core/TempNode.js';
|
|
3
3
|
import { addMethodChaining, Fn, int, nodeProxyIntent } from '../tsl/TSLCore.js';
|
|
4
|
-
import { warn } from '../../utils.js';
|
|
5
4
|
|
|
6
5
|
const _vectorOperators = {
|
|
7
6
|
'==': 'equal',
|
|
@@ -107,7 +106,7 @@ class OperatorNode extends TempNode {
|
|
|
107
106
|
* @param {?string} [output=null] - The output type.
|
|
108
107
|
* @return {string} The node type.
|
|
109
108
|
*/
|
|
110
|
-
|
|
109
|
+
generateNodeType( builder, output = null ) {
|
|
111
110
|
|
|
112
111
|
const op = this.op;
|
|
113
112
|
|
|
@@ -129,10 +128,16 @@ class OperatorNode extends TempNode {
|
|
|
129
128
|
|
|
130
129
|
return builder.getIntegerType( typeA );
|
|
131
130
|
|
|
132
|
-
} else if ( op === '
|
|
131
|
+
} else if ( op === '&&' || op === '||' || op === '^^' ) {
|
|
133
132
|
|
|
134
133
|
return 'bool';
|
|
135
134
|
|
|
135
|
+
} else if ( op === '!' ) {
|
|
136
|
+
|
|
137
|
+
const typeLength = builder.getTypeLength( typeA );
|
|
138
|
+
|
|
139
|
+
return typeLength > 1 ? `bvec${ typeLength }` : 'bool';
|
|
140
|
+
|
|
136
141
|
} else if ( op === '==' || op === '!=' || op === '<' || op === '>' || op === '<=' || op === '>=' ) {
|
|
137
142
|
|
|
138
143
|
const typeLength = Math.max( builder.getTypeLength( typeA ), builder.getTypeLength( typeB ) );
|
|
@@ -331,9 +336,23 @@ class OperatorNode extends TempNode {
|
|
|
331
336
|
|
|
332
337
|
}
|
|
333
338
|
|
|
334
|
-
} else if ( op === '!'
|
|
339
|
+
} else if ( op === '!' ) {
|
|
340
|
+
|
|
341
|
+
if ( isGLSL && builder.isVector( typeA ) ) {
|
|
342
|
+
|
|
343
|
+
return builder.format( `not( ${a} )`, output );
|
|
344
|
+
|
|
345
|
+
} else {
|
|
346
|
+
|
|
347
|
+
// WGSL and scalars on GLSL
|
|
348
|
+
|
|
349
|
+
return builder.format( `( ${op} ${a} )`, typeA, output );
|
|
350
|
+
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
} else if ( op === '~' ) {
|
|
335
354
|
|
|
336
|
-
return builder.format( `(${op}${a})`, typeA, output );
|
|
355
|
+
return builder.format( `( ${op} ${a} )`, typeA, output );
|
|
337
356
|
|
|
338
357
|
} else if ( fnOpSnippet ) {
|
|
339
358
|
|
|
@@ -731,21 +750,3 @@ addMethodChaining( 'incrementBefore', incrementBefore );
|
|
|
731
750
|
addMethodChaining( 'decrementBefore', decrementBefore );
|
|
732
751
|
addMethodChaining( 'increment', increment );
|
|
733
752
|
addMethodChaining( 'decrement', decrement );
|
|
734
|
-
|
|
735
|
-
/**
|
|
736
|
-
* @tsl
|
|
737
|
-
* @function
|
|
738
|
-
* @deprecated since r175. Use {@link mod} instead.
|
|
739
|
-
*
|
|
740
|
-
* @param {Node} a - The first input.
|
|
741
|
-
* @param {Node} b - The second input.
|
|
742
|
-
* @returns {OperatorNode}
|
|
743
|
-
*/
|
|
744
|
-
export const modInt = ( a, b ) => { // @deprecated, r175
|
|
745
|
-
|
|
746
|
-
warn( 'TSL: "modInt()" is deprecated. Use "mod( int( ... ) )" instead.' );
|
|
747
|
-
return mod( int( a ), int( b ) );
|
|
748
|
-
|
|
749
|
-
};
|
|
750
|
-
|
|
751
|
-
addMethodChaining( 'modInt', modInt );
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import TempNode from '../core/TempNode.js';
|
|
2
|
+
import { nodeProxyIntent } from '../tsl/TSLCore.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* This node represents an operation that packs floating-point values of a vector into an unsigned 32-bit integer
|
|
6
|
+
*
|
|
7
|
+
* @augments TempNode
|
|
8
|
+
*/
|
|
9
|
+
class PackFloatNode extends TempNode {
|
|
10
|
+
|
|
11
|
+
static get type() {
|
|
12
|
+
|
|
13
|
+
return 'PackFloatNode';
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
*
|
|
19
|
+
* @param {'snorm' | 'unorm' | 'float16'} encoding - The numeric encoding that describes how the float values are mapped to the integer range.
|
|
20
|
+
* @param {Node} vectorNode - The vector node to be packed
|
|
21
|
+
*/
|
|
22
|
+
constructor( encoding, vectorNode ) {
|
|
23
|
+
|
|
24
|
+
super();
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The vector to be packed.
|
|
28
|
+
*
|
|
29
|
+
* @type {Node}
|
|
30
|
+
*/
|
|
31
|
+
this.vectorNode = vectorNode;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The numeric encoding.
|
|
35
|
+
*
|
|
36
|
+
* @type {string}
|
|
37
|
+
*/
|
|
38
|
+
this.encoding = encoding;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* This flag can be used for type testing.
|
|
42
|
+
*
|
|
43
|
+
* @type {boolean}
|
|
44
|
+
* @readonly
|
|
45
|
+
* @default true
|
|
46
|
+
*/
|
|
47
|
+
this.isPackFloatNode = true;
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
generateNodeType() {
|
|
52
|
+
|
|
53
|
+
return 'uint';
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
generate( builder ) {
|
|
58
|
+
|
|
59
|
+
const inputType = this.vectorNode.getNodeType( builder );
|
|
60
|
+
return `${ builder.getFloatPackingMethod( this.encoding ) }(${ this.vectorNode.build( builder, inputType )})`;
|
|
61
|
+
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export default PackFloatNode;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Converts each component of the normalized float to 16-bit integer values. The results are packed into a single unsigned integer.
|
|
70
|
+
* round(clamp(c, -1, +1) * 32767.0)
|
|
71
|
+
*
|
|
72
|
+
* @tsl
|
|
73
|
+
* @function
|
|
74
|
+
* @param {Node<vec2>} value - The 2-component vector to be packed
|
|
75
|
+
* @returns {Node}
|
|
76
|
+
*/
|
|
77
|
+
export const packSnorm2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'snorm' ).setParameterLength( 1 );
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Converts each component of the normalized float to 16-bit integer values. The results are packed into a single unsigned integer.
|
|
81
|
+
* round(clamp(c, 0, +1) * 65535.0)
|
|
82
|
+
*
|
|
83
|
+
* @tsl
|
|
84
|
+
* @function
|
|
85
|
+
* @param {Node<vec2>} value - The 2-component vector to be packed
|
|
86
|
+
* @returns {Node}
|
|
87
|
+
*/
|
|
88
|
+
export const packUnorm2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'unorm' ).setParameterLength( 1 );
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Converts each component of the vec2 to 16-bit floating-point values. The results are packed into a single unsigned integer.
|
|
92
|
+
*
|
|
93
|
+
* @tsl
|
|
94
|
+
* @function
|
|
95
|
+
* @param {Node<vec2>} value - The 2-component vector to be packed
|
|
96
|
+
* @returns {Node}
|
|
97
|
+
*/
|
|
98
|
+
export const packHalf2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'float16' ).setParameterLength( 1 );
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import TempNode from '../core/TempNode.js';
|
|
2
|
+
import { nodeProxyIntent } from '../tsl/TSLCore.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* This node represents an operation that unpacks values from a 32-bit unsigned integer, reinterpreting the results as a floating-point vector
|
|
6
|
+
*
|
|
7
|
+
* @augments TempNode
|
|
8
|
+
*/
|
|
9
|
+
class UnpackFloatNode extends TempNode {
|
|
10
|
+
|
|
11
|
+
static get type() {
|
|
12
|
+
|
|
13
|
+
return 'UnpackFloatNode';
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
*
|
|
19
|
+
* @param {'snorm' | 'unorm' | 'float16'} encoding - The numeric encoding that describes how the integer values are mapped to the float range
|
|
20
|
+
* @param {Node} uintNode - The uint node to be unpacked
|
|
21
|
+
*/
|
|
22
|
+
constructor( encoding, uintNode ) {
|
|
23
|
+
|
|
24
|
+
super();
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The unsigned integer to be unpacked.
|
|
28
|
+
*
|
|
29
|
+
* @type {Node}
|
|
30
|
+
*/
|
|
31
|
+
this.uintNode = uintNode;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The numeric encoding.
|
|
35
|
+
*
|
|
36
|
+
* @type {string}
|
|
37
|
+
*/
|
|
38
|
+
this.encoding = encoding;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* This flag can be used for type testing.
|
|
42
|
+
*
|
|
43
|
+
* @type {boolean}
|
|
44
|
+
* @readonly
|
|
45
|
+
* @default true
|
|
46
|
+
*/
|
|
47
|
+
this.isUnpackFloatNode = true;
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
generateNodeType() {
|
|
52
|
+
|
|
53
|
+
return 'vec2';
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
generate( builder ) {
|
|
58
|
+
|
|
59
|
+
const inputType = this.uintNode.getNodeType( builder );
|
|
60
|
+
return `${ builder.getFloatUnpackingMethod( this.encoding ) }(${ this.uintNode.build( builder, inputType )})`;
|
|
61
|
+
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export default UnpackFloatNode;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Unpacks a 32-bit unsigned integer into two 16-bit values, interpreted as normalized signed integers. Returns a vec2 with both values.
|
|
70
|
+
*
|
|
71
|
+
* @tsl
|
|
72
|
+
* @function
|
|
73
|
+
* @param {Node<uint>} value - The unsigned integer to be unpacked
|
|
74
|
+
* @returns {Node}
|
|
75
|
+
*/
|
|
76
|
+
export const unpackSnorm2x16 = /*@__PURE__*/ nodeProxyIntent( UnpackFloatNode, 'snorm' ).setParameterLength( 1 );
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Unpacks a 32-bit unsigned integer into two 16-bit values, interpreted as normalized unsigned integers. Returns a vec2 with both values.
|
|
80
|
+
*
|
|
81
|
+
* @tsl
|
|
82
|
+
* @function
|
|
83
|
+
* @param {Node<uint>} value - The unsigned integer to be unpacked
|
|
84
|
+
* @returns {Node}
|
|
85
|
+
*/
|
|
86
|
+
export const unpackUnorm2x16 = /*@__PURE__*/ nodeProxyIntent( UnpackFloatNode, 'unorm' ).setParameterLength( 1 );
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Unpacks a 32-bit unsigned integer into two 16-bit values, interpreted as 16-bit floating-point numbers. Returns a vec2 with both values.
|
|
90
|
+
*
|
|
91
|
+
* @tsl
|
|
92
|
+
* @function
|
|
93
|
+
* @param {Node<uint>} value - The unsigned integer to be unpacked
|
|
94
|
+
* @returns {Node}
|
|
95
|
+
*/
|
|
96
|
+
export const unpackHalf2x16 = /*@__PURE__*/ nodeProxyIntent( UnpackFloatNode, 'float16' ).setParameterLength( 1 );
|
|
@@ -5,6 +5,7 @@ import { uniform } from '../core/UniformNode.js';
|
|
|
5
5
|
import { NodeUpdateType } from '../core/constants.js';
|
|
6
6
|
import { nodeProxy, vec3 } from '../tsl/TSLBase.js';
|
|
7
7
|
|
|
8
|
+
import { CubeUVReflectionMapping } from '../../constants.js';
|
|
8
9
|
import { Texture } from '../../textures/Texture.js';
|
|
9
10
|
import PMREMGenerator from '../../renderers/common/extras/PMREMGenerator.js';
|
|
10
11
|
import { materialEnvRotation } from '../accessors/MaterialProperties.js';
|
|
@@ -80,6 +81,31 @@ function _getPMREMFromTexture( texture, renderer, generator ) {
|
|
|
80
81
|
|
|
81
82
|
cacheTexture.pmremVersion = texture.pmremVersion;
|
|
82
83
|
|
|
84
|
+
// add dispose event listener for new PMREMs
|
|
85
|
+
|
|
86
|
+
if ( cache.has( texture ) === false ) {
|
|
87
|
+
|
|
88
|
+
const onDispose = () => {
|
|
89
|
+
|
|
90
|
+
texture.removeEventListener( 'dispose', onDispose );
|
|
91
|
+
|
|
92
|
+
const pmrem = cache.get( texture );
|
|
93
|
+
|
|
94
|
+
if ( pmrem !== undefined ) {
|
|
95
|
+
|
|
96
|
+
pmrem.dispose();
|
|
97
|
+
cache.delete( texture );
|
|
98
|
+
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
texture.addEventListener( 'dispose', onDispose );
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
//
|
|
108
|
+
|
|
83
109
|
cache.set( texture, cacheTexture );
|
|
84
110
|
|
|
85
111
|
}
|
|
@@ -270,7 +296,7 @@ class PMREMNode extends TempNode {
|
|
|
270
296
|
|
|
271
297
|
if ( pmremVersion !== texture.pmremVersion ) {
|
|
272
298
|
|
|
273
|
-
if ( texture.isPMREMTexture === true ) {
|
|
299
|
+
if ( texture.isPMREMTexture === true || texture.mapping === CubeUVReflectionMapping ) {
|
|
274
300
|
|
|
275
301
|
pmrem = texture;
|
|
276
302
|
|
|
@@ -308,13 +334,18 @@ class PMREMNode extends TempNode {
|
|
|
308
334
|
|
|
309
335
|
if ( uvNode === null && builder.context.getUV ) {
|
|
310
336
|
|
|
311
|
-
uvNode = builder.context.getUV( this );
|
|
337
|
+
uvNode = builder.context.getUV( this, builder );
|
|
312
338
|
|
|
313
339
|
}
|
|
314
340
|
|
|
315
341
|
//
|
|
316
342
|
|
|
317
|
-
|
|
343
|
+
// PMREMGenerator renders into a render target with inverted Y, so its output needs the Y
|
|
344
|
+
// flip on sampling. Externally authored PMREMs follow the standard convention and don't.
|
|
345
|
+
|
|
346
|
+
uvNode = this._pmrem.isRenderTargetTexture
|
|
347
|
+
? materialEnvRotation.mul( vec3( uvNode.x, uvNode.y.negate(), uvNode.z ) )
|
|
348
|
+
: materialEnvRotation.mul( uvNode );
|
|
318
349
|
|
|
319
350
|
//
|
|
320
351
|
|