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
|
@@ -312,30 +312,24 @@ const hammersley = /*@__PURE__*/ Fn( ( [ i, N ] ) => {
|
|
|
312
312
|
// GGX VNDF importance sampling (Eric Heitz 2018)
|
|
313
313
|
// "Sampling the GGX Distribution of Visible Normals"
|
|
314
314
|
// https://jcgt.org/published/0007/04/01/
|
|
315
|
-
const importanceSampleGGX_VNDF = /*@__PURE__*/ Fn( ( [ Xi,
|
|
315
|
+
const importanceSampleGGX_VNDF = /*@__PURE__*/ Fn( ( [ Xi, V, roughness ] ) => {
|
|
316
316
|
|
|
317
|
-
const
|
|
318
|
-
const roughness = float( roughness_immutable );
|
|
319
|
-
const alpha = roughness.mul( roughness ).toVar();
|
|
320
|
-
|
|
321
|
-
// Section 3.2: Transform view direction to hemisphere configuration
|
|
322
|
-
const Vh = normalize( vec3( alpha.mul( V.x ), alpha.mul( V.y ), V.z ) ).toVar();
|
|
317
|
+
const alpha = roughness.mul( roughness ).toConst();
|
|
323
318
|
|
|
324
319
|
// Section 4.1: Orthonormal basis
|
|
325
|
-
const
|
|
326
|
-
const
|
|
327
|
-
const T2 = cross( Vh, T1 ).toVar();
|
|
320
|
+
const T1 = vec3( 1.0, 0.0, 0.0 ).toConst();
|
|
321
|
+
const T2 = cross( V, T1 ).toConst();
|
|
328
322
|
|
|
329
323
|
// Section 4.2: Parameterization of projected area
|
|
330
|
-
const r = sqrt( Xi.x );
|
|
331
|
-
const phi = mul( 2.0, 3.14159265359 ).mul( Xi.y );
|
|
332
|
-
const t1 = r.mul( cos( phi ) ).
|
|
324
|
+
const r = sqrt( Xi.x ).toConst();
|
|
325
|
+
const phi = mul( 2.0, 3.14159265359 ).mul( Xi.y ).toConst();
|
|
326
|
+
const t1 = r.mul( cos( phi ) ).toConst();
|
|
333
327
|
const t2 = r.mul( sin( phi ) ).toVar();
|
|
334
|
-
const s = mul( 0.5,
|
|
328
|
+
const s = mul( 0.5, V.z.add( 1.0 ) ).toConst();
|
|
335
329
|
t2.assign( s.oneMinus().mul( sqrt( t1.mul( t1 ).oneMinus() ) ).add( s.mul( t2 ) ) );
|
|
336
330
|
|
|
337
331
|
// Section 4.3: Reprojection onto hemisphere
|
|
338
|
-
const Nh = T1.mul( t1 ).add( T2.mul( t2 ) ).add(
|
|
332
|
+
const Nh = T1.mul( t1 ).add( T2.mul( t2 ) ).add( V.mul( sqrt( max( 0.0, t1.mul( t1 ).add( t2.mul( t2 ) ).oneMinus() ) ) ) );
|
|
339
333
|
|
|
340
334
|
// Section 3.4: Transform back to ellipsoid configuration
|
|
341
335
|
return normalize( vec3( alpha.mul( Nh.x ), alpha.mul( Nh.y ), max( 0.0, Nh.z ) ) );
|
package/src/nodes/tsl/TSLBase.js
CHANGED
|
@@ -21,7 +21,7 @@ export * from '../accessors/BufferAttributeNode.js'; // .toAttribute()
|
|
|
21
21
|
export * from '../gpgpu/ComputeNode.js'; // .compute()
|
|
22
22
|
export * from '../core/IsolateNode.js'; // .isolate()
|
|
23
23
|
export * from '../core/BypassNode.js'; // .bypass()
|
|
24
|
-
export * from '../utils/
|
|
24
|
+
export * from '../utils/Remap.js'; // .remap(), .remapClamp()
|
|
25
25
|
export * from '../code/ExpressionNode.js'; // expression()
|
|
26
26
|
export * from '../utils/Discard.js'; // Discard(), Return()
|
|
27
27
|
export * from '../display/RenderOutputNode.js'; // .renderOutput()
|
package/src/nodes/tsl/TSLCore.js
CHANGED
|
@@ -7,6 +7,7 @@ import SetNode from '../utils/SetNode.js';
|
|
|
7
7
|
import FlipNode from '../utils/FlipNode.js';
|
|
8
8
|
import ConstNode from '../core/ConstNode.js';
|
|
9
9
|
import MemberNode from '../utils/MemberNode.js';
|
|
10
|
+
import StackTrace from '../core/StackTrace.js';
|
|
10
11
|
import { getValueFromType, getValueType } from '../core/NodeUtils.js';
|
|
11
12
|
import { warn, error } from '../../utils.js';
|
|
12
13
|
|
|
@@ -18,6 +19,8 @@ const NodeElements = new Map();
|
|
|
18
19
|
|
|
19
20
|
export function addMethodChaining( name, nodeElement ) {
|
|
20
21
|
|
|
22
|
+
// No require StackTrace because this is internal API
|
|
23
|
+
|
|
21
24
|
if ( NodeElements.has( name ) ) {
|
|
22
25
|
|
|
23
26
|
warn( `TSL: Redefinition of method chaining '${ name }'.` );
|
|
@@ -66,7 +69,7 @@ Node.prototype.assign = function ( ...params ) {
|
|
|
66
69
|
|
|
67
70
|
} else {
|
|
68
71
|
|
|
69
|
-
error( 'TSL: No stack defined for assign operation. Make sure the assign is inside a Fn().' );
|
|
72
|
+
error( 'TSL: No stack defined for assign operation. Make sure the assign is inside a Fn().', new StackTrace() );
|
|
70
73
|
|
|
71
74
|
}
|
|
72
75
|
|
|
@@ -288,8 +291,6 @@ Object.defineProperties( Node.prototype, proto );
|
|
|
288
291
|
|
|
289
292
|
// --- FINISH ---
|
|
290
293
|
|
|
291
|
-
const nodeBuilderFunctionsCacheMap = new WeakMap();
|
|
292
|
-
|
|
293
294
|
const ShaderNodeObject = function ( obj, altType = null ) {
|
|
294
295
|
|
|
295
296
|
const type = getValueType( obj );
|
|
@@ -374,13 +375,13 @@ const ShaderNodeProxy = function ( NodeClass, scope = null, factor = null, setti
|
|
|
374
375
|
|
|
375
376
|
if ( minParams !== undefined && params.length < minParams ) {
|
|
376
377
|
|
|
377
|
-
error( `TSL: "${ tslName }" parameter length is less than minimum required
|
|
378
|
+
error( `TSL: "${ tslName }" parameter length is less than minimum required.`, new StackTrace() );
|
|
378
379
|
|
|
379
380
|
return params.concat( new Array( minParams - params.length ).fill( 0 ) );
|
|
380
381
|
|
|
381
382
|
} else if ( maxParams !== undefined && params.length > maxParams ) {
|
|
382
383
|
|
|
383
|
-
error( `TSL: "${ tslName }" parameter length exceeds limit
|
|
384
|
+
error( `TSL: "${ tslName }" parameter length exceeds limit.`, new StackTrace() );
|
|
384
385
|
|
|
385
386
|
return params.slice( 0, maxParams );
|
|
386
387
|
|
|
@@ -441,7 +442,7 @@ const ShaderNodeProxy = function ( NodeClass, scope = null, factor = null, setti
|
|
|
441
442
|
|
|
442
443
|
const ShaderNodeImmutable = function ( NodeClass, ...params ) {
|
|
443
444
|
|
|
444
|
-
return
|
|
445
|
+
return new NodeClass( ...nodeArray( params ) );
|
|
445
446
|
|
|
446
447
|
};
|
|
447
448
|
|
|
@@ -458,7 +459,7 @@ class ShaderCallNodeInternal extends Node {
|
|
|
458
459
|
|
|
459
460
|
}
|
|
460
461
|
|
|
461
|
-
|
|
462
|
+
generateNodeType( builder ) {
|
|
462
463
|
|
|
463
464
|
return this.shaderNode.nodeType || this.getOutputNode( builder ).getNodeType( builder );
|
|
464
465
|
|
|
@@ -503,33 +504,59 @@ class ShaderCallNodeInternal extends Node {
|
|
|
503
504
|
|
|
504
505
|
if ( shaderNode.layout ) {
|
|
505
506
|
|
|
506
|
-
|
|
507
|
+
// build inputs first
|
|
507
508
|
|
|
508
|
-
if (
|
|
509
|
+
if ( rawInputs ) {
|
|
509
510
|
|
|
510
|
-
|
|
511
|
+
// use layout inputs to ensure that no extra parameters are built
|
|
511
512
|
|
|
512
|
-
|
|
513
|
+
const inputs = shaderNode.layout.inputs;
|
|
513
514
|
|
|
514
|
-
|
|
515
|
+
if ( isArrayAsParameter( rawInputs ) ) {
|
|
516
|
+
|
|
517
|
+
const rawArrayParameters = rawInputs;
|
|
518
|
+
|
|
519
|
+
for ( let i = 0; i < inputs.length; i ++ ) {
|
|
520
|
+
|
|
521
|
+
const rawParameter = rawArrayParameters[ i ];
|
|
522
|
+
|
|
523
|
+
if ( rawParameter && rawParameter.isNode ) {
|
|
524
|
+
|
|
525
|
+
rawParameter.build( builder );
|
|
526
|
+
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
} else {
|
|
515
532
|
|
|
516
|
-
|
|
533
|
+
const rawObjectParameters = rawInputs[ 0 ];
|
|
517
534
|
|
|
518
|
-
|
|
535
|
+
for ( const param of inputs ) {
|
|
519
536
|
|
|
520
|
-
|
|
537
|
+
const rawParameter = rawObjectParameters[ param.name ];
|
|
521
538
|
|
|
522
|
-
|
|
539
|
+
if ( rawParameter && rawParameter.isNode ) {
|
|
540
|
+
|
|
541
|
+
rawParameter.build( builder );
|
|
542
|
+
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
}
|
|
523
548
|
|
|
524
549
|
}
|
|
525
550
|
|
|
551
|
+
const functionNode = builder.buildFunctionNode( shaderNode );
|
|
552
|
+
|
|
526
553
|
builder.addInclude( functionNode );
|
|
527
554
|
|
|
528
555
|
//
|
|
529
556
|
|
|
530
557
|
const inputs = rawInputs ? getLayoutParameters( rawInputs ) : null;
|
|
531
558
|
|
|
532
|
-
result =
|
|
559
|
+
result = functionNode.call( inputs );
|
|
533
560
|
|
|
534
561
|
} else {
|
|
535
562
|
|
|
@@ -676,15 +703,19 @@ class ShaderCallNodeInternal extends Node {
|
|
|
676
703
|
|
|
677
704
|
}
|
|
678
705
|
|
|
706
|
+
function isArrayAsParameter( params ) {
|
|
707
|
+
|
|
708
|
+
return params[ 0 ] && ( params[ 0 ].isNode || Object.getPrototypeOf( params[ 0 ] ) !== Object.prototype );
|
|
709
|
+
|
|
710
|
+
}
|
|
711
|
+
|
|
679
712
|
function getLayoutParameters( params ) {
|
|
680
713
|
|
|
681
714
|
let output;
|
|
682
715
|
|
|
683
716
|
nodeObjects( params );
|
|
684
717
|
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
if ( isArrayAsParameter ) {
|
|
718
|
+
if ( isArrayAsParameter( params ) ) {
|
|
688
719
|
|
|
689
720
|
output = [ ...params ];
|
|
690
721
|
|
|
@@ -871,9 +902,9 @@ const ConvertType = function ( type, cacheMap = null ) {
|
|
|
871
902
|
|
|
872
903
|
if ( param === undefined ) {
|
|
873
904
|
|
|
874
|
-
error( `TSL: Invalid parameter for the type "${ type }"
|
|
905
|
+
error( `TSL: Invalid parameter for the type "${ type }".`, new StackTrace() );
|
|
875
906
|
|
|
876
|
-
return
|
|
907
|
+
return new ConstNode( 0, type );
|
|
877
908
|
|
|
878
909
|
}
|
|
879
910
|
|
|
@@ -914,7 +945,25 @@ const ConvertType = function ( type, cacheMap = null ) {
|
|
|
914
945
|
|
|
915
946
|
// exports
|
|
916
947
|
|
|
917
|
-
export
|
|
948
|
+
export function defined( value ) {
|
|
949
|
+
|
|
950
|
+
if ( value && value.isNode ) {
|
|
951
|
+
|
|
952
|
+
value.traverse( ( node ) => {
|
|
953
|
+
|
|
954
|
+
if ( node.isConstNode ) {
|
|
955
|
+
|
|
956
|
+
value = node.value;
|
|
957
|
+
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
} );
|
|
961
|
+
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
return Boolean( value );
|
|
965
|
+
|
|
966
|
+
}
|
|
918
967
|
|
|
919
968
|
// utils
|
|
920
969
|
|
|
@@ -936,6 +985,26 @@ export const nodeProxy = ( NodeClass, scope = null, factor = null, settings = nu
|
|
|
936
985
|
export const nodeImmutable = ( NodeClass, ...params ) => new ShaderNodeImmutable( NodeClass, ...params );
|
|
937
986
|
export const nodeProxyIntent = ( NodeClass, scope = null, factor = null, settings = {} ) => new ShaderNodeProxy( NodeClass, scope, factor, { ...settings, intent: true } );
|
|
938
987
|
|
|
988
|
+
export const nodeProxyConstructor = ( constructorFunction, nodeInstance ) => {
|
|
989
|
+
|
|
990
|
+
return new Proxy( constructorFunction, {
|
|
991
|
+
|
|
992
|
+
get( target, prop, receiver ) {
|
|
993
|
+
|
|
994
|
+
return Reflect.get( nodeInstance, prop, receiver );
|
|
995
|
+
|
|
996
|
+
},
|
|
997
|
+
|
|
998
|
+
set( target, prop, value ) {
|
|
999
|
+
|
|
1000
|
+
return Reflect.set( nodeInstance, prop, value );
|
|
1001
|
+
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
} );
|
|
1005
|
+
|
|
1006
|
+
};
|
|
1007
|
+
|
|
939
1008
|
let fnId = 0;
|
|
940
1009
|
|
|
941
1010
|
class FnNode extends Node {
|
|
@@ -960,7 +1029,7 @@ class FnNode extends Node {
|
|
|
960
1029
|
|
|
961
1030
|
} else {
|
|
962
1031
|
|
|
963
|
-
error( 'TSL: Invalid layout type.' );
|
|
1032
|
+
error( 'TSL: Invalid layout type.', new StackTrace() );
|
|
964
1033
|
|
|
965
1034
|
}
|
|
966
1035
|
|
|
@@ -1015,7 +1084,7 @@ class FnNode extends Node {
|
|
|
1015
1084
|
|
|
1016
1085
|
}
|
|
1017
1086
|
|
|
1018
|
-
|
|
1087
|
+
generateNodeType( builder ) {
|
|
1019
1088
|
|
|
1020
1089
|
return this.shaderNode.getNodeType( builder ) || 'float';
|
|
1021
1090
|
|
|
@@ -1044,7 +1113,7 @@ class FnNode extends Node {
|
|
|
1044
1113
|
|
|
1045
1114
|
const type = this.getNodeType( builder );
|
|
1046
1115
|
|
|
1047
|
-
error( 'TSL: "Fn()" was declared but not invoked. Try calling it like "Fn()( ...params )".' );
|
|
1116
|
+
error( 'TSL: "Fn()" was declared but not invoked. Try calling it like "Fn()( ...params )".', this.stackTrace );
|
|
1048
1117
|
|
|
1049
1118
|
return builder.generateConst( type );
|
|
1050
1119
|
|
|
@@ -1171,9 +1240,6 @@ export const mat2 = new ConvertType( 'mat2' );
|
|
|
1171
1240
|
export const mat3 = new ConvertType( 'mat3' );
|
|
1172
1241
|
export const mat4 = new ConvertType( 'mat4' );
|
|
1173
1242
|
|
|
1174
|
-
export const string = ( value = '' ) => nodeObject( new ConstNode( value, 'string' ) );
|
|
1175
|
-
export const arrayBuffer = ( value ) => nodeObject( new ConstNode( value, 'ArrayBuffer' ) );
|
|
1176
|
-
|
|
1177
1243
|
addMethodChaining( 'toColor', color );
|
|
1178
1244
|
addMethodChaining( 'toFloat', float );
|
|
1179
1245
|
addMethodChaining( 'toInt', int );
|
|
@@ -1198,8 +1264,8 @@ addMethodChaining( 'toMat4', mat4 );
|
|
|
1198
1264
|
// basic nodes
|
|
1199
1265
|
|
|
1200
1266
|
export const element = /*@__PURE__*/ nodeProxy( ArrayElementNode ).setParameterLength( 2 );
|
|
1201
|
-
export const convert = ( node, types ) =>
|
|
1202
|
-
export const split = ( node, channels ) =>
|
|
1267
|
+
export const convert = ( node, types ) => new ConvertNode( nodeObject( node ), types );
|
|
1268
|
+
export const split = ( node, channels ) => new SplitNode( nodeObject( node ), channels );
|
|
1203
1269
|
|
|
1204
1270
|
addMethodChaining( 'element', element );
|
|
1205
1271
|
addMethodChaining( 'convert', convert );
|
|
@@ -1216,14 +1282,14 @@ addMethodChaining( 'convert', convert );
|
|
|
1216
1282
|
*/
|
|
1217
1283
|
export const append = ( node ) => { // @deprecated, r176
|
|
1218
1284
|
|
|
1219
|
-
warn( 'TSL: append() has been renamed to Stack().' );
|
|
1285
|
+
warn( 'TSL: append() has been renamed to Stack().', new StackTrace() );
|
|
1220
1286
|
return Stack( node );
|
|
1221
1287
|
|
|
1222
1288
|
};
|
|
1223
1289
|
|
|
1224
1290
|
addMethodChaining( 'append', ( node ) => { // @deprecated, r176
|
|
1225
1291
|
|
|
1226
|
-
warn( 'TSL: .append() has been renamed to .toStack().' );
|
|
1292
|
+
warn( 'TSL: .append() has been renamed to .toStack().', new StackTrace() );
|
|
1227
1293
|
return Stack( node );
|
|
1228
1294
|
|
|
1229
1295
|
} );
|
|
@@ -55,12 +55,25 @@ class ArrayElementNode extends Node { // @TODO: If extending from TempNode it br
|
|
|
55
55
|
* @param {NodeBuilder} builder - The current node builder.
|
|
56
56
|
* @return {string} The node type.
|
|
57
57
|
*/
|
|
58
|
-
|
|
58
|
+
generateNodeType( builder ) {
|
|
59
59
|
|
|
60
60
|
return this.node.getElementType( builder );
|
|
61
61
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
/**
|
|
65
|
+
* This method is overwritten since the member type is inferred from the array-like node.
|
|
66
|
+
*
|
|
67
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
68
|
+
* @param {string} name - The member name.
|
|
69
|
+
* @return {string} The member type.
|
|
70
|
+
*/
|
|
71
|
+
getMemberType( builder, name ) {
|
|
72
|
+
|
|
73
|
+
return this.node.getMemberType( builder, name );
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
|
|
64
77
|
generate( builder ) {
|
|
65
78
|
|
|
66
79
|
const indexType = this.indexNode.getNodeType( builder );
|
|
@@ -48,7 +48,7 @@ class ConvertNode extends Node {
|
|
|
48
48
|
* @param {NodeBuilder} builder - The current node builder.
|
|
49
49
|
* @return {string} The node type.
|
|
50
50
|
*/
|
|
51
|
-
|
|
51
|
+
generateNodeType( builder ) {
|
|
52
52
|
|
|
53
53
|
const requestType = this.node.getNodeType( builder );
|
|
54
54
|
|
|
@@ -19,7 +19,7 @@ class DebugNode extends TempNode {
|
|
|
19
19
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
generateNodeType( builder ) {
|
|
23
23
|
|
|
24
24
|
return this.node.getNodeType( builder );
|
|
25
25
|
|
|
@@ -42,21 +42,21 @@ class DebugNode extends TempNode {
|
|
|
42
42
|
const callback = this.callback;
|
|
43
43
|
const snippet = this.node.build( builder );
|
|
44
44
|
|
|
45
|
-
const title = '--- TSL debug - ' + builder.shaderStage + ' shader ---';
|
|
46
|
-
const border = '-'.repeat( title.length );
|
|
47
|
-
|
|
48
|
-
let code = '';
|
|
49
|
-
code += '// #' + title + '#\n';
|
|
50
|
-
code += builder.flow.code.replace( /^\t/mg, '' ) + '\n';
|
|
51
|
-
code += '/* ... */ ' + snippet + ' /* ... */\n';
|
|
52
|
-
code += '// #' + border + '#\n';
|
|
53
|
-
|
|
54
45
|
if ( callback !== null ) {
|
|
55
46
|
|
|
56
|
-
callback( builder,
|
|
47
|
+
callback( builder, snippet );
|
|
57
48
|
|
|
58
49
|
} else {
|
|
59
50
|
|
|
51
|
+
const title = '--- TSL debug - ' + builder.shaderStage + ' shader ---';
|
|
52
|
+
const border = '-'.repeat( title.length );
|
|
53
|
+
|
|
54
|
+
let code = '';
|
|
55
|
+
code += '// #' + title + '#\n';
|
|
56
|
+
code += builder.flow.code.replace( /^\t/mg, '' ) + '\n';
|
|
57
|
+
code += '/* ... */ ' + snippet + ' /* ... */\n';
|
|
58
|
+
code += '// #' + border + '#\n';
|
|
59
|
+
|
|
60
60
|
log( code );
|
|
61
61
|
|
|
62
62
|
}
|
|
@@ -78,6 +78,6 @@ export default DebugNode;
|
|
|
78
78
|
* @param {?Function} [callback=null] - Optional callback function to handle the debug output.
|
|
79
79
|
* @returns {DebugNode}
|
|
80
80
|
*/
|
|
81
|
-
export const debug = ( node, callback = null ) =>
|
|
81
|
+
export const debug = ( node, callback = null ) => new DebugNode( nodeObject( node ), callback ).toStack();
|
|
82
82
|
|
|
83
83
|
addMethodChaining( 'debug', debug );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { positionWorldDirection } from '../accessors/Position.js';
|
|
2
|
-
import {
|
|
2
|
+
import { uv as UV } from '../accessors/UV.js';
|
|
3
|
+
import { Fn, vec2, vec3 } from '../tsl/TSLCore.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* TSL function for creating an equirect uv node.
|
|
@@ -14,14 +15,38 @@ import { Fn, vec2 } from '../tsl/TSLBase.js';
|
|
|
14
15
|
*
|
|
15
16
|
* @tsl
|
|
16
17
|
* @function
|
|
17
|
-
* @param {?Node<vec3>} [
|
|
18
|
+
* @param {?Node<vec3>} [direction=positionWorldDirection] - A direction vector for sampling which is by default `positionWorldDirection`.
|
|
18
19
|
* @returns {Node<vec2>}
|
|
19
20
|
*/
|
|
20
|
-
export const equirectUV = /*@__PURE__*/ Fn( ( [
|
|
21
|
+
export const equirectUV = /*@__PURE__*/ Fn( ( [ direction = positionWorldDirection ] ) => {
|
|
21
22
|
|
|
22
|
-
const u =
|
|
23
|
-
const v =
|
|
23
|
+
const u = direction.z.atan( direction.x ).mul( 1 / ( Math.PI * 2 ) ).add( 0.5 );
|
|
24
|
+
const v = direction.y.clamp( - 1.0, 1.0 ).asin().mul( 1 / Math.PI ).add( 0.5 );
|
|
24
25
|
|
|
25
26
|
return vec2( u, v );
|
|
26
27
|
|
|
27
28
|
} );
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* TSL function for creating an equirect direction node.
|
|
32
|
+
*
|
|
33
|
+
* Can be used to compute a direction vector from the given equirectangular
|
|
34
|
+
* UV coordinates.
|
|
35
|
+
*
|
|
36
|
+
* @tsl
|
|
37
|
+
* @function
|
|
38
|
+
* @param {?Node<vec2>} [uv=UV()] - The equirectangular UV coordinates.
|
|
39
|
+
* @returns {Node<vec3>} The computed direction vector.
|
|
40
|
+
*/
|
|
41
|
+
export const equirectDirection = /*@__PURE__*/ Fn( ( [ uv = UV() ] ) => {
|
|
42
|
+
|
|
43
|
+
const theta = uv.x.sub( 0.5 ).mul( Math.PI * 2 );
|
|
44
|
+
const phi = uv.y.sub( 0.5 ).mul( Math.PI );
|
|
45
|
+
const cosPhi = phi.cos();
|
|
46
|
+
const x = cosPhi.mul( theta.cos() );
|
|
47
|
+
const y = phi.sin();
|
|
48
|
+
const z = cosPhi.mul( theta.sin() );
|
|
49
|
+
|
|
50
|
+
return vec3( x, y, z );
|
|
51
|
+
|
|
52
|
+
} );
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
|
-
import { nodeObject } from '../tsl/TSLCore.js';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* EventNode is a node that executes a callback during specific update phases.
|
|
@@ -36,6 +35,10 @@ class EventNode extends Node {
|
|
|
36
35
|
|
|
37
36
|
this.updateType = NodeUpdateType.RENDER;
|
|
38
37
|
|
|
38
|
+
} else if ( eventType === EventNode.FRAME ) {
|
|
39
|
+
|
|
40
|
+
this.updateType = NodeUpdateType.FRAME;
|
|
41
|
+
|
|
39
42
|
} else if ( eventType === EventNode.BEFORE_OBJECT ) {
|
|
40
43
|
|
|
41
44
|
this.updateBeforeType = NodeUpdateType.OBJECT;
|
|
@@ -44,6 +47,10 @@ class EventNode extends Node {
|
|
|
44
47
|
|
|
45
48
|
this.updateBeforeType = NodeUpdateType.RENDER;
|
|
46
49
|
|
|
50
|
+
} else if ( eventType === EventNode.BEFORE_FRAME ) {
|
|
51
|
+
|
|
52
|
+
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
53
|
+
|
|
47
54
|
}
|
|
48
55
|
|
|
49
56
|
}
|
|
@@ -64,8 +71,10 @@ class EventNode extends Node {
|
|
|
64
71
|
|
|
65
72
|
EventNode.OBJECT = 'object';
|
|
66
73
|
EventNode.MATERIAL = 'material';
|
|
74
|
+
EventNode.FRAME = 'frame';
|
|
67
75
|
EventNode.BEFORE_OBJECT = 'beforeObject';
|
|
68
76
|
EventNode.BEFORE_MATERIAL = 'beforeMaterial';
|
|
77
|
+
EventNode.BEFORE_FRAME = 'beforeFrame';
|
|
69
78
|
|
|
70
79
|
export default EventNode;
|
|
71
80
|
|
|
@@ -76,7 +85,7 @@ export default EventNode;
|
|
|
76
85
|
* @param {Function} callback - The callback function.
|
|
77
86
|
* @returns {EventNode}
|
|
78
87
|
*/
|
|
79
|
-
const createEvent = ( type, callback ) =>
|
|
88
|
+
const createEvent = ( type, callback ) => new EventNode( type, callback ).toStack();
|
|
80
89
|
|
|
81
90
|
/**
|
|
82
91
|
* Creates an event that triggers a function every time an object (Mesh|Sprite) is rendered.
|
|
@@ -98,6 +107,16 @@ export const OnObjectUpdate = ( callback ) => createEvent( EventNode.OBJECT, cal
|
|
|
98
107
|
*/
|
|
99
108
|
export const OnMaterialUpdate = ( callback ) => createEvent( EventNode.MATERIAL, callback );
|
|
100
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Creates an event that triggers a function every frame.
|
|
112
|
+
*
|
|
113
|
+
* The event will be bound to the declared TSL function `Fn()`; it must be declared within a `Fn()` or the JS function call must be inherited from one.
|
|
114
|
+
*
|
|
115
|
+
* @param {Function} callback - The callback function.
|
|
116
|
+
* @returns {EventNode}
|
|
117
|
+
*/
|
|
118
|
+
export const OnFrameUpdate = ( callback ) => createEvent( EventNode.FRAME, callback );
|
|
119
|
+
|
|
101
120
|
/**
|
|
102
121
|
* Creates an event that triggers a function before an object (Mesh|Sprite) is updated.
|
|
103
122
|
*
|
|
@@ -117,3 +136,13 @@ export const OnBeforeObjectUpdate = ( callback ) => createEvent( EventNode.BEFOR
|
|
|
117
136
|
* @returns {EventNode}
|
|
118
137
|
*/
|
|
119
138
|
export const OnBeforeMaterialUpdate = ( callback ) => createEvent( EventNode.BEFORE_MATERIAL, callback );
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Creates an event that triggers a function before every frame.
|
|
142
|
+
*
|
|
143
|
+
* The event will be bound to the declared TSL function `Fn()`; it must be declared within a `Fn()` or the JS function call must be inherited from one.
|
|
144
|
+
*
|
|
145
|
+
* @param {Function} callback - The callback function.
|
|
146
|
+
* @returns {EventNode}
|
|
147
|
+
*/
|
|
148
|
+
export const OnBeforeFrameUpdate = ( callback ) => createEvent( EventNode.BEFORE_FRAME, callback );
|
|
@@ -65,7 +65,7 @@ class FunctionOverloadingNode extends Node {
|
|
|
65
65
|
* @param {NodeBuilder} builder - The current node builder.
|
|
66
66
|
* @return {string} The node type.
|
|
67
67
|
*/
|
|
68
|
-
|
|
68
|
+
generateNodeType( builder ) {
|
|
69
69
|
|
|
70
70
|
const candidateFn = this.getCandidateFn( builder );
|
|
71
71
|
|
|
@@ -97,7 +97,7 @@ class FunctionOverloadingNode extends Node {
|
|
|
97
97
|
|
|
98
98
|
if ( layout === null ) {
|
|
99
99
|
|
|
100
|
-
throw new Error( 'FunctionOverloadingNode: FunctionNode must be a layout.' );
|
|
100
|
+
throw new Error( 'THREE.FunctionOverloadingNode: FunctionNode must be a layout.' );
|
|
101
101
|
|
|
102
102
|
}
|
|
103
103
|
|
|
@@ -42,7 +42,7 @@ class JoinNode extends TempNode {
|
|
|
42
42
|
* @param {NodeBuilder} builder - The current node builder.
|
|
43
43
|
* @return {string} The node type.
|
|
44
44
|
*/
|
|
45
|
-
|
|
45
|
+
generateNodeType( builder ) {
|
|
46
46
|
|
|
47
47
|
if ( this.nodeType !== null ) {
|
|
48
48
|
|
|
@@ -71,7 +71,7 @@ class JoinNode extends TempNode {
|
|
|
71
71
|
|
|
72
72
|
if ( length >= maxLength ) {
|
|
73
73
|
|
|
74
|
-
error( `TSL: Length of parameters exceeds maximum length of function '${ type }()' type
|
|
74
|
+
error( `TSL: Length of parameters exceeds maximum length of function '${ type }()' type.`, this.stackTrace );
|
|
75
75
|
break;
|
|
76
76
|
|
|
77
77
|
}
|
|
@@ -82,7 +82,7 @@ class JoinNode extends TempNode {
|
|
|
82
82
|
|
|
83
83
|
if ( length + inputTypeLength > maxLength ) {
|
|
84
84
|
|
|
85
|
-
error( `TSL: Length of '${ type }()' data exceeds maximum length of output type
|
|
85
|
+
error( `TSL: Length of '${ type }()' data exceeds maximum length of output type.`, this.stackTrace );
|
|
86
86
|
|
|
87
87
|
inputTypeLength = maxLength - length;
|
|
88
88
|
inputType = builder.getTypeFromLength( inputTypeLength );
|
|
@@ -265,7 +265,7 @@ class LoopNode extends Node {
|
|
|
265
265
|
|
|
266
266
|
} else {
|
|
267
267
|
|
|
268
|
-
error( 'TSL: \'Loop( { update: ... } )\' is not a function, string or number.' );
|
|
268
|
+
error( 'TSL: \'Loop( { update: ... } )\' is not a function, string or number.', this.stackTrace );
|
|
269
269
|
|
|
270
270
|
updateSnippet = 'break /* invalid update */';
|
|
271
271
|
|
|
@@ -66,7 +66,7 @@ class MemberNode extends Node {
|
|
|
66
66
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
generateNodeType( builder ) {
|
|
70
70
|
|
|
71
71
|
if ( this.hasMember( builder ) === false ) {
|
|
72
72
|
|
|
@@ -101,7 +101,7 @@ class MemberNode extends Node {
|
|
|
101
101
|
|
|
102
102
|
if ( this.hasMember( builder ) === false ) {
|
|
103
103
|
|
|
104
|
-
warn( `TSL: Member "${ this.property }" does not exist in struct
|
|
104
|
+
warn( `TSL: Member "${ this.property }" does not exist in struct.`, this.stackTrace );
|
|
105
105
|
|
|
106
106
|
const type = this.getNodeType( builder );
|
|
107
107
|
|