super-three 0.165.0 → 0.168.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/build/three.cjs +854 -410
- package/build/three.module.js +849 -411
- package/build/three.module.min.js +1 -1
- package/build/three.webgpu.js +77755 -0
- package/build/three.webgpu.min.js +6 -0
- package/examples/jsm/Addons.js +5 -2
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/controls/ArcballControls.js +174 -158
- package/examples/jsm/controls/DragControls.js +260 -132
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +777 -786
- package/examples/jsm/controls/PointerLockControls.js +24 -15
- package/examples/jsm/controls/TrackballControls.js +453 -452
- package/examples/jsm/csm/CSMShader.js +4 -4
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/environments/RoomEnvironment.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +13 -4
- package/examples/jsm/exporters/USDZExporter.js +29 -8
- package/examples/jsm/geometries/TeapotGeometry.js +1 -1
- package/examples/jsm/helpers/LightProbeHelper.js +42 -43
- package/examples/jsm/helpers/ViewHelper.js +51 -2
- package/examples/jsm/libs/tween.module.js +64 -75
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
- package/examples/jsm/lines/webgpu/Line2.js +20 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
- package/examples/jsm/loaders/FBXLoader.js +23 -45
- package/examples/jsm/loaders/GLTFLoader.js +10 -4
- package/examples/jsm/loaders/KTX2Loader.js +19 -7
- package/examples/jsm/loaders/MaterialXLoader.js +10 -10
- package/examples/jsm/loaders/PCDLoader.js +9 -9
- package/examples/jsm/loaders/USDZLoader.js +124 -76
- package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
- package/examples/jsm/loaders/VTKLoader.js +76 -3
- package/examples/jsm/misc/GPUComputationRenderer.js +9 -19
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
- package/examples/jsm/objects/InstancedPoints.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +188 -0
- package/examples/jsm/objects/Water2Mesh.js +159 -0
- package/examples/jsm/objects/WaterMesh.js +102 -0
- package/examples/jsm/physics/RapierPhysics.js +20 -0
- package/examples/jsm/postprocessing/OutlinePass.js +31 -46
- package/examples/jsm/postprocessing/RenderTransitionPass.js +13 -38
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +6 -9
- package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
- package/examples/jsm/shaders/BleachBypassShader.js +1 -2
- package/examples/jsm/shaders/ColorifyShader.js +1 -2
- package/examples/jsm/shaders/FXAAShader.js +0 -2
- package/examples/jsm/shaders/GTAOShader.js +1 -1
- package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
- package/examples/jsm/shaders/OutputShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +46 -4
- package/examples/jsm/transpiler/TSLEncoder.js +24 -22
- package/examples/jsm/utils/TextureUtils.js +1 -1
- package/package.json +8 -6
- package/src/Three.WebGPU.js +200 -0
- package/src/Three.js +3 -0
- package/src/constants.js +4 -1
- package/src/core/Object3D.js +22 -22
- package/src/extras/Controls.js +32 -0
- package/src/extras/TextureUtils.js +210 -0
- package/src/lights/Light.js +1 -0
- package/src/lights/LightShadow.js +5 -0
- package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
- package/src/loaders/ObjectLoader.js +33 -2
- package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeLoader.js +6 -4
- package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeMaterialLoader.js +2 -2
- package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeObjectLoader.js +2 -1
- package/src/materials/Material.js +7 -1
- package/{examples/jsm/nodes/materials → src/materials/nodes}/InstancedPointsNodeMaterial.js +36 -27
- package/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +37 -40
- package/src/materials/nodes/LineBasicNodeMaterial.js +27 -0
- package/{examples/jsm/nodes/materials → src/materials/nodes}/LineDashedNodeMaterial.js +10 -11
- package/src/materials/nodes/MeshBasicNodeMaterial.js +73 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +43 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +53 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +40 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +74 -0
- package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshPhysicalNodeMaterial.js +22 -20
- package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshSSSNodeMaterial.js +6 -6
- package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshStandardNodeMaterial.js +28 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +34 -0
- package/{examples/jsm/nodes/materials → src/materials/nodes}/NodeMaterial.js +142 -96
- package/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +1 -1
- package/{examples/jsm/nodes/materials → src/materials/nodes}/PointsNodeMaterial.js +5 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +34 -0
- package/{examples/jsm/nodes/materials → src/materials/nodes}/SpriteNodeMaterial.js +13 -13
- package/{examples/jsm/nodes/materials → src/materials/nodes}/VolumeNodeMaterial.js +14 -16
- package/src/math/Box2.js +4 -4
- package/src/math/Box3.js +6 -6
- package/src/math/ColorManagement.js +10 -0
- package/src/math/Matrix2.js +54 -0
- package/src/math/Vector4.js +13 -0
- package/src/nodes/Nodes.js +164 -0
- package/src/nodes/TSL.js +176 -0
- package/{examples/jsm → src}/nodes/accessors/AccessorsUtils.js +8 -8
- package/src/nodes/accessors/BatchNode.js +124 -0
- package/{examples/jsm/nodes/accessors/BitangentNode.js → src/nodes/accessors/Bitangent.js} +9 -9
- package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +41 -6
- package/{examples/jsm → src}/nodes/accessors/BufferNode.js +4 -4
- package/src/nodes/accessors/Camera.js +19 -0
- package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +16 -14
- package/src/nodes/accessors/CubeTextureNode.js +76 -0
- package/src/nodes/accessors/InstanceNode.js +144 -0
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
- package/{examples/jsm → src}/nodes/accessors/MaterialNode.js +66 -49
- package/src/nodes/accessors/MaterialProperties.js +3 -0
- package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +6 -4
- package/src/nodes/accessors/ModelNode.js +37 -0
- package/{examples/jsm → src}/nodes/accessors/ModelViewProjectionNode.js +6 -7
- package/{examples/jsm → src}/nodes/accessors/MorphNode.js +35 -31
- package/src/nodes/accessors/Normal.js +62 -0
- package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +11 -11
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +10 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +143 -0
- package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +14 -8
- package/src/nodes/accessors/ReflectVector.js +10 -0
- package/{examples/jsm → src}/nodes/accessors/RendererReferenceNode.js +6 -6
- package/{examples/jsm → src}/nodes/accessors/SceneNode.js +5 -6
- package/src/nodes/accessors/SkinningNode.js +187 -0
- package/{examples/jsm → src}/nodes/accessors/StorageBufferNode.js +54 -6
- package/{examples/jsm → src}/nodes/accessors/StorageTextureNode.js +16 -7
- package/src/nodes/accessors/Tangent.js +22 -0
- package/{examples/jsm → src}/nodes/accessors/Texture3DNode.js +11 -11
- package/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +3 -32
- package/{examples/jsm → src}/nodes/accessors/TextureNode.js +69 -37
- package/{examples/jsm → src}/nodes/accessors/TextureSizeNode.js +4 -6
- package/{examples/jsm/nodes/accessors/UniformsNode.js → src/nodes/accessors/UniformArrayNode.js} +24 -9
- package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +4 -4
- package/src/nodes/accessors/VelocityNode.js +83 -0
- package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +6 -5
- package/{examples/jsm → src}/nodes/code/CodeNode.js +5 -5
- package/{examples/jsm → src}/nodes/code/ExpressionNode.js +4 -4
- package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +5 -5
- package/{examples/jsm → src}/nodes/code/FunctionNode.js +5 -23
- package/{examples/jsm → src}/nodes/code/ScriptableNode.js +18 -6
- package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +6 -7
- package/{examples/jsm → src}/nodes/core/AssignNode.js +5 -5
- package/{examples/jsm → src}/nodes/core/AttributeNode.js +22 -21
- package/{examples/jsm → src}/nodes/core/BypassNode.js +5 -5
- package/src/nodes/core/CacheNode.js +46 -0
- package/{examples/jsm → src}/nodes/core/ConstNode.js +2 -2
- package/{examples/jsm → src}/nodes/core/ContextNode.js +17 -11
- package/{examples/jsm → src}/nodes/core/IndexNode.js +17 -6
- package/{examples/jsm → src}/nodes/core/InputNode.js +2 -2
- package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
- package/src/nodes/core/MRTNode.js +82 -0
- package/{examples/jsm → src}/nodes/core/Node.js +57 -31
- package/{examples/jsm → src}/nodes/core/NodeBuilder.js +216 -65
- package/src/nodes/core/NodeCache.js +36 -0
- package/{examples/jsm → src}/nodes/core/NodeFrame.js +42 -0
- package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
- package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
- package/{examples/jsm → src}/nodes/core/NodeUtils.js +7 -1
- package/{examples/jsm → src}/nodes/core/OutputStructNode.js +4 -4
- package/{examples/jsm → src}/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +84 -0
- package/{examples/jsm → src}/nodes/core/StackNode.js +26 -10
- package/{examples/jsm → src}/nodes/core/StructTypeNode.js +2 -2
- package/{examples/jsm → src}/nodes/core/TempNode.js +4 -4
- package/src/nodes/core/UniformGroupNode.js +55 -0
- package/{examples/jsm → src}/nodes/core/UniformNode.js +14 -5
- package/{examples/jsm → src}/nodes/core/VarNode.js +8 -12
- package/{examples/jsm → src}/nodes/core/VaryingNode.js +13 -5
- package/{examples/jsm → src}/nodes/display/AfterImageNode.js +27 -35
- package/src/nodes/display/AnaglyphPassNode.js +61 -0
- package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +27 -30
- package/src/nodes/display/BleachBypass.js +26 -0
- package/src/nodes/display/BlendMode.js +54 -0
- package/src/nodes/display/BloomNode.js +335 -0
- package/{examples/jsm → src}/nodes/display/BumpMapNode.js +7 -12
- package/src/nodes/display/ColorAdjustment.js +46 -0
- package/src/nodes/display/ColorSpaceFunctions.js +38 -0
- package/src/nodes/display/ColorSpaceNode.js +85 -0
- package/src/nodes/display/DenoiseNode.js +201 -0
- package/src/nodes/display/DepthOfFieldNode.js +121 -0
- package/src/nodes/display/DotScreenNode.js +63 -0
- package/src/nodes/display/FXAANode.js +329 -0
- package/src/nodes/display/FilmNode.js +53 -0
- package/src/nodes/display/FrontFacingNode.js +41 -0
- package/src/nodes/display/GTAONode.js +328 -0
- package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +44 -24
- package/src/nodes/display/Lut3DNode.js +54 -0
- package/src/nodes/display/MotionBlur.js +25 -0
- package/{examples/jsm → src}/nodes/display/NormalMapNode.js +9 -11
- package/src/nodes/display/ParallaxBarrierPassNode.js +55 -0
- package/src/nodes/display/PassNode.js +367 -0
- package/src/nodes/display/PixelationPassNode.js +206 -0
- package/{examples/jsm → src}/nodes/display/PosterizeNode.js +4 -6
- package/src/nodes/display/RGBShiftNode.js +50 -0
- package/src/nodes/display/RenderOutputNode.js +56 -0
- package/src/nodes/display/SSAAPassNode.js +284 -0
- package/src/nodes/display/Sepia.js +17 -0
- package/src/nodes/display/SobelOperatorNode.js +123 -0
- package/src/nodes/display/StereoCompositePassNode.js +107 -0
- package/src/nodes/display/StereoPassNode.js +80 -0
- package/src/nodes/display/ToneMappingFunctions.js +190 -0
- package/src/nodes/display/ToneMappingNode.js +66 -0
- package/src/nodes/display/TransitionNode.js +77 -0
- package/src/nodes/display/ViewportDepthNode.js +121 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +30 -0
- package/{examples/jsm → src}/nodes/display/ViewportNode.js +28 -26
- package/src/nodes/display/ViewportSharedTextureNode.js +36 -0
- package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +12 -12
- package/{examples/jsm → src}/nodes/fog/FogExp2Node.js +4 -6
- package/{examples/jsm → src}/nodes/fog/FogNode.js +5 -7
- package/{examples/jsm → src}/nodes/fog/FogRangeNode.js +4 -6
- package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +131 -0
- package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +78 -0
- package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +10 -8
- package/{examples/jsm → src}/nodes/functions/PhysicalLightingModel.js +73 -31
- package/{examples/jsm → src}/nodes/functions/ShadowMaskModel.js +1 -1
- package/{examples/jsm → src}/nodes/functions/ToonLightingModel.js +6 -4
- package/src/nodes/functions/material/getGeometryRoughness.js +13 -0
- package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
- package/{examples/jsm → src}/nodes/geometry/RangeNode.js +23 -10
- package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +5 -5
- package/src/nodes/lighting/AONode.js +24 -0
- package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +2 -7
- package/src/nodes/lighting/AnalyticLightNode.js +354 -0
- package/src/nodes/lighting/BasicEnvironmentNode.js +27 -0
- package/src/nodes/lighting/BasicLightMapNode.js +29 -0
- package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +3 -9
- package/{examples/jsm → src}/nodes/lighting/EnvironmentNode.js +23 -21
- package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +4 -7
- package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +3 -8
- package/{examples/jsm → src}/nodes/lighting/IrradianceNode.js +2 -2
- package/{examples/jsm → src}/nodes/lighting/LightNode.js +5 -5
- package/src/nodes/lighting/LightProbeNode.js +76 -0
- package/{examples/jsm → src}/nodes/lighting/LightUtils.js +3 -3
- package/src/nodes/lighting/LightingContextNode.js +64 -0
- package/{examples/jsm → src}/nodes/lighting/LightingNode.js +4 -2
- package/src/nodes/lighting/LightsNode.js +231 -0
- package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +4 -10
- package/src/nodes/lighting/RectAreaLightNode.js +93 -0
- package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +4 -10
- package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +2 -2
- package/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +43 -46
- package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +500 -603
- package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
- package/{examples/jsm/nodes/math/CondNode.js → src/nodes/math/ConditionalNode.js} +31 -13
- package/src/nodes/math/Hash.js +13 -0
- package/src/nodes/math/MathNode.js +404 -0
- package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -7
- package/{examples/jsm → src}/nodes/math/OperatorNode.js +100 -58
- package/{examples/jsm → src}/nodes/math/TriNoise3D.js +19 -29
- package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
- package/{examples/jsm → src}/nodes/pmrem/PMREMNode.js +60 -16
- package/{examples/jsm → src}/nodes/pmrem/PMREMUtils.js +46 -46
- package/src/nodes/procedural/Checker.js +14 -0
- package/src/nodes/tsl/TSLBase.js +30 -0
- package/{examples/jsm/nodes/shadernode/ShaderNode.js → src/nodes/tsl/TSLCore.js} +106 -96
- package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +2 -2
- package/{examples/jsm → src}/nodes/utils/ConvertNode.js +2 -2
- package/src/nodes/utils/CubeMapNode.js +157 -0
- package/src/nodes/utils/Discard.js +8 -0
- package/{examples/jsm → src}/nodes/utils/EquirectUVNode.js +5 -5
- package/src/nodes/utils/FlipNode.js +65 -0
- package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +7 -5
- package/{examples/jsm → src}/nodes/utils/JoinNode.js +2 -2
- package/{examples/jsm → src}/nodes/utils/LoopNode.js +19 -12
- package/{examples/jsm → src}/nodes/utils/MatcapUVNode.js +6 -6
- package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +12 -6
- package/{examples/jsm → src}/nodes/utils/OscNode.js +7 -7
- package/src/nodes/utils/Packing.js +4 -0
- package/src/nodes/utils/RTTNode.js +130 -0
- package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +17 -4
- package/{examples/jsm → src}/nodes/utils/RemapNode.js +7 -7
- package/{examples/jsm → src}/nodes/utils/RotateNode.js +4 -12
- package/{examples/jsm → src}/nodes/utils/SetNode.js +2 -2
- package/{examples/jsm → src}/nodes/utils/SplitNode.js +2 -2
- package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +5 -5
- package/src/nodes/utils/SpriteUtils.js +47 -0
- package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +4 -6
- package/{examples/jsm → src}/nodes/utils/TimerNode.js +5 -5
- package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +7 -9
- package/src/nodes/utils/UVUtils.js +19 -0
- package/src/nodes/utils/ViewportUtils.js +14 -0
- package/src/objects/BatchedMesh.js +169 -190
- package/src/objects/InstancedMesh.js +1 -1
- package/src/renderers/WebGLRenderer.js +60 -23
- package/{examples/jsm → src}/renderers/common/Attributes.js +2 -1
- package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
- package/{examples/jsm → src}/renderers/common/Background.js +12 -4
- package/src/renderers/common/BindGroup.js +18 -0
- package/{examples/jsm → src}/renderers/common/Bindings.js +45 -32
- package/{examples/jsm → src}/renderers/common/ClippingContext.js +18 -7
- package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
- package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +16 -4
- package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
- package/{examples/jsm → src}/renderers/common/Info.js +34 -6
- package/src/renderers/common/PostProcessing.js +90 -0
- package/{examples/jsm/objects → src/renderers/common}/QuadMesh.js +8 -3
- package/{examples/jsm → src}/renderers/common/RenderContext.js +25 -1
- package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
- package/{examples/jsm → src}/renderers/common/RenderList.js +1 -1
- package/{examples/jsm → src}/renderers/common/RenderObject.js +45 -12
- package/{examples/jsm → src}/renderers/common/Renderer.js +151 -73
- package/{examples/jsm → src}/renderers/common/SampledTexture.js +14 -5
- package/src/renderers/common/StandardRenderer.js +18 -0
- package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
- package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
- package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
- package/{examples/jsm → src}/renderers/common/Textures.js +14 -14
- package/{examples/jsm → src}/renderers/common/Uniform.js +9 -4
- package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
- package/{examples/jsm → src}/renderers/common/extras/PMREMGenerator.js +25 -25
- package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
- package/src/renderers/common/nodes/NodeLibrary.js +118 -0
- package/{examples/jsm → src}/renderers/common/nodes/NodeSampledTexture.js +8 -7
- package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +2 -1
- package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
- package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
- package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
- package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
- package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +69 -21
- package/src/renderers/common/nodes/StandardNodeLibrary.js +105 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +16 -1
- package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -4
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
- package/src/renderers/shaders/UniformsLib.js +3 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -2
- package/src/renderers/webgl/WebGLBufferRenderer.js +6 -19
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +6 -18
- package/src/renderers/webgl/WebGLLights.js +6 -0
- package/src/renderers/webgl/WebGLProgram.js +27 -1
- package/src/renderers/webgl/WebGLPrograms.js +1 -1
- package/src/renderers/webgl/WebGLProperties.js +7 -0
- package/src/renderers/webgl/WebGLTextures.js +75 -57
- package/src/renderers/webgl/WebGLUniforms.js +12 -2
- package/src/renderers/webgl/WebGLUniformsGroups.js +7 -7
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +242 -120
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +227 -44
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +2 -2
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +1 -0
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +22 -1
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +62 -23
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +1 -1
- package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +242 -136
- package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +9 -9
- package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +281 -107
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +64 -33
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +4 -1
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +34 -36
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +76 -44
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +42 -4
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -0
- package/src/renderers/webxr/WebXRManager.js +37 -24
- package/src/textures/CompressedArrayTexture.js +1 -1
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/nodes/Nodes.js +0 -202
- package/examples/jsm/nodes/accessors/BatchNode.js +0 -78
- package/examples/jsm/nodes/accessors/CameraNode.js +0 -12
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
- package/examples/jsm/nodes/accessors/InstanceNode.js +0 -94
- package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/examples/jsm/nodes/accessors/ModelNode.js +0 -36
- package/examples/jsm/nodes/accessors/NormalNode.js +0 -14
- package/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
- package/examples/jsm/nodes/accessors/PositionNode.js +0 -10
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -6
- package/examples/jsm/nodes/accessors/SkinningNode.js +0 -124
- package/examples/jsm/nodes/accessors/TangentNode.js +0 -23
- package/examples/jsm/nodes/core/CacheNode.js +0 -49
- package/examples/jsm/nodes/core/NodeCache.js +0 -26
- package/examples/jsm/nodes/core/NodeKeywords.js +0 -80
- package/examples/jsm/nodes/core/PropertyNode.js +0 -83
- package/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
- package/examples/jsm/nodes/display/BlendModeNode.js +0 -128
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
- package/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
- package/examples/jsm/nodes/display/FrontFacingNode.js +0 -40
- package/examples/jsm/nodes/display/PassNode.js +0 -201
- package/examples/jsm/nodes/display/ToneMappingNode.js +0 -188
- package/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -37
- package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
- package/examples/jsm/nodes/lighting/AONode.js +0 -27
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -256
- package/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
- package/examples/jsm/nodes/lighting/LightsNode.js +0 -215
- package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
- package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
- package/examples/jsm/nodes/materials/MeshMatcapNodeMaterial.js +0 -52
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -38
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
- package/examples/jsm/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/examples/jsm/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/examples/jsm/nodes/math/HashNode.js +0 -34
- package/examples/jsm/nodes/math/MathNode.js +0 -391
- package/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
- package/examples/jsm/nodes/utils/DiscardNode.js +0 -27
- package/examples/jsm/nodes/utils/PackingNode.js +0 -55
- package/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
- package/examples/jsm/renderers/common/PostProcessing.js +0 -33
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
- /package/{examples/jsm/nodes/accessors/UVNode.js → src/nodes/accessors/UV.js} +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
- /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
- /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
- /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
- /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Animation.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
- /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
- /package/{examples/jsm → src}/renderers/common/ChainMap.js +0 -0
- /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
- /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Pipelines.js +0 -0
- /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
- /package/{examples/jsm → src}/renderers/common/RenderBundle.js +0 -0
- /package/{examples/jsm → src}/renderers/common/RenderBundles.js +0 -0
- /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
- /package/{examples/jsm → src}/renderers/common/RenderObjects.js +0 -0
- /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
- /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
- /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
- /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBufferRenderer.js +0 -0
- /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
- /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
|
@@ -33,24 +33,28 @@ const COLOR_SPACES = {
|
|
|
33
33
|
[ LinearSRGBColorSpace ]: {
|
|
34
34
|
transfer: LinearTransfer,
|
|
35
35
|
primaries: Rec709Primaries,
|
|
36
|
+
luminanceCoefficients: [ 0.2126, 0.7152, 0.0722 ],
|
|
36
37
|
toReference: ( color ) => color,
|
|
37
38
|
fromReference: ( color ) => color,
|
|
38
39
|
},
|
|
39
40
|
[ SRGBColorSpace ]: {
|
|
40
41
|
transfer: SRGBTransfer,
|
|
41
42
|
primaries: Rec709Primaries,
|
|
43
|
+
luminanceCoefficients: [ 0.2126, 0.7152, 0.0722 ],
|
|
42
44
|
toReference: ( color ) => color.convertSRGBToLinear(),
|
|
43
45
|
fromReference: ( color ) => color.convertLinearToSRGB(),
|
|
44
46
|
},
|
|
45
47
|
[ LinearDisplayP3ColorSpace ]: {
|
|
46
48
|
transfer: LinearTransfer,
|
|
47
49
|
primaries: P3Primaries,
|
|
50
|
+
luminanceCoefficients: [ 0.2289, 0.6917, 0.0793 ],
|
|
48
51
|
toReference: ( color ) => color.applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),
|
|
49
52
|
fromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ),
|
|
50
53
|
},
|
|
51
54
|
[ DisplayP3ColorSpace ]: {
|
|
52
55
|
transfer: SRGBTransfer,
|
|
53
56
|
primaries: P3Primaries,
|
|
57
|
+
luminanceCoefficients: [ 0.2289, 0.6917, 0.0793 ],
|
|
54
58
|
toReference: ( color ) => color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),
|
|
55
59
|
fromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB(),
|
|
56
60
|
},
|
|
@@ -123,6 +127,12 @@ export const ColorManagement = {
|
|
|
123
127
|
|
|
124
128
|
},
|
|
125
129
|
|
|
130
|
+
getLuminanceCoefficients: function ( target, colorSpace = this._workingColorSpace ) {
|
|
131
|
+
|
|
132
|
+
return target.fromArray( COLOR_SPACES[ colorSpace ].luminanceCoefficients );
|
|
133
|
+
|
|
134
|
+
},
|
|
135
|
+
|
|
126
136
|
};
|
|
127
137
|
|
|
128
138
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export class Matrix2 {
|
|
2
|
+
|
|
3
|
+
constructor( n11, n12, n21, n22 ) {
|
|
4
|
+
|
|
5
|
+
Matrix2.prototype.isMatrix2 = true;
|
|
6
|
+
|
|
7
|
+
this.elements = [
|
|
8
|
+
1, 0,
|
|
9
|
+
0, 1,
|
|
10
|
+
];
|
|
11
|
+
|
|
12
|
+
if ( n11 !== undefined ) {
|
|
13
|
+
|
|
14
|
+
this.set( n11, n12, n21, n22 );
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
identity() {
|
|
21
|
+
|
|
22
|
+
this.set(
|
|
23
|
+
1, 0,
|
|
24
|
+
0, 1,
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
return this;
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
fromArray( array, offset = 0 ) {
|
|
32
|
+
|
|
33
|
+
for ( let i = 0; i < 4; i ++ ) {
|
|
34
|
+
|
|
35
|
+
this.elements[ i ] = array[ i + offset ];
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return this;
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
set( n11, n12, n21, n22 ) {
|
|
44
|
+
|
|
45
|
+
const te = this.elements;
|
|
46
|
+
|
|
47
|
+
te[ 0 ] = n11; te[ 2 ] = n12;
|
|
48
|
+
te[ 1 ] = n21; te[ 3 ] = n22;
|
|
49
|
+
|
|
50
|
+
return this;
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
}
|
package/src/math/Vector4.js
CHANGED
|
@@ -413,6 +413,19 @@ class Vector4 {
|
|
|
413
413
|
|
|
414
414
|
}
|
|
415
415
|
|
|
416
|
+
setFromMatrixPosition( m ) {
|
|
417
|
+
|
|
418
|
+
const e = m.elements;
|
|
419
|
+
|
|
420
|
+
this.x = e[ 12 ];
|
|
421
|
+
this.y = e[ 13 ];
|
|
422
|
+
this.z = e[ 14 ];
|
|
423
|
+
this.w = e[ 15 ];
|
|
424
|
+
|
|
425
|
+
return this;
|
|
426
|
+
|
|
427
|
+
}
|
|
428
|
+
|
|
416
429
|
min( v ) {
|
|
417
430
|
|
|
418
431
|
this.x = Math.min( this.x, v.x );
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// constants
|
|
2
|
+
export * from './core/constants.js';
|
|
3
|
+
|
|
4
|
+
// core
|
|
5
|
+
export { default as AssignNode } from './core/AssignNode.js';
|
|
6
|
+
export { default as AttributeNode } from './core/AttributeNode.js';
|
|
7
|
+
export { default as BypassNode } from './core/BypassNode.js';
|
|
8
|
+
export { default as CacheNode } from './core/CacheNode.js';
|
|
9
|
+
export { default as ConstNode } from './core/ConstNode.js';
|
|
10
|
+
export { default as ContextNode } from './core/ContextNode.js';
|
|
11
|
+
export { default as IndexNode } from './core/IndexNode.js';
|
|
12
|
+
export { default as LightingModel } from './core/LightingModel.js';
|
|
13
|
+
export { default as Node, registerNode } from './core/Node.js';
|
|
14
|
+
export { default as VarNode } from './core/VarNode.js';
|
|
15
|
+
export { default as NodeAttribute } from './core/NodeAttribute.js';
|
|
16
|
+
export { default as NodeBuilder } from './core/NodeBuilder.js';
|
|
17
|
+
export { default as NodeCache } from './core/NodeCache.js';
|
|
18
|
+
export { default as NodeCode } from './core/NodeCode.js';
|
|
19
|
+
export { default as NodeFrame } from './core/NodeFrame.js';
|
|
20
|
+
export { default as NodeFunctionInput } from './core/NodeFunctionInput.js';
|
|
21
|
+
export { default as NodeUniform } from './core/NodeUniform.js';
|
|
22
|
+
export { default as NodeVar } from './core/NodeVar.js';
|
|
23
|
+
export { default as NodeVarying } from './core/NodeVarying.js';
|
|
24
|
+
export { default as ParameterNode } from './core/ParameterNode.js';
|
|
25
|
+
export { default as PropertyNode } from './core/PropertyNode.js';
|
|
26
|
+
export { default as StackNode } from './core/StackNode.js';
|
|
27
|
+
export { default as TempNode } from './core/TempNode.js';
|
|
28
|
+
export { default as UniformGroupNode } from './core/UniformGroupNode.js';
|
|
29
|
+
export { default as UniformNode } from './core/UniformNode.js';
|
|
30
|
+
export { default as VaryingNode } from './core/VaryingNode.js';
|
|
31
|
+
export { default as OutputStructNode } from './core/OutputStructNode.js';
|
|
32
|
+
export { default as MRTNode } from './core/MRTNode.js';
|
|
33
|
+
|
|
34
|
+
import * as NodeUtils from './core/NodeUtils.js';
|
|
35
|
+
export { NodeUtils };
|
|
36
|
+
|
|
37
|
+
// utils
|
|
38
|
+
export { default as ArrayElementNode } from './utils/ArrayElementNode.js';
|
|
39
|
+
export { default as ConvertNode } from './utils/ConvertNode.js';
|
|
40
|
+
export { default as EquirectUVNode } from './utils/EquirectUVNode.js';
|
|
41
|
+
export { default as FunctionOverloadingNode } from './utils/FunctionOverloadingNode.js';
|
|
42
|
+
export { default as JoinNode } from './utils/JoinNode.js';
|
|
43
|
+
export { default as LoopNode } from './utils/LoopNode.js';
|
|
44
|
+
export { default as MatcapUVNode } from './utils/MatcapUVNode.js';
|
|
45
|
+
export { default as MaxMipLevelNode } from './utils/MaxMipLevelNode.js';
|
|
46
|
+
export { default as OscNode } from './utils/OscNode.js';
|
|
47
|
+
export { default as RemapNode } from './utils/RemapNode.js';
|
|
48
|
+
export { default as RotateNode } from './utils/RotateNode.js';
|
|
49
|
+
export { default as SetNode } from './utils/SetNode.js';
|
|
50
|
+
export { default as SplitNode } from './utils/SplitNode.js';
|
|
51
|
+
export { default as SpriteSheetUVNode } from './utils/SpriteSheetUVNode.js';
|
|
52
|
+
export { default as StorageArrayElementNode } from './utils/StorageArrayElementNode.js';
|
|
53
|
+
export { default as TimerNode } from './utils/TimerNode.js';
|
|
54
|
+
export { default as TriplanarTexturesNode } from './utils/TriplanarTexturesNode.js';
|
|
55
|
+
export { default as ReflectorNode } from './utils/ReflectorNode.js';
|
|
56
|
+
export { default as RTTNode } from './utils/RTTNode.js';
|
|
57
|
+
|
|
58
|
+
// accessors
|
|
59
|
+
export { default as UniformArrayNode } from './accessors/UniformArrayNode.js';
|
|
60
|
+
export { default as BufferAttributeNode } from './accessors/BufferAttributeNode.js';
|
|
61
|
+
export { default as BufferNode } from './accessors/BufferNode.js';
|
|
62
|
+
export { default as VertexColorNode } from './accessors/VertexColorNode.js';
|
|
63
|
+
export { default as CubeTextureNode } from './accessors/CubeTextureNode.js';
|
|
64
|
+
export { default as InstanceNode } from './accessors/InstanceNode.js';
|
|
65
|
+
export { default as BatchNode } from './accessors/BatchNode.js';
|
|
66
|
+
export { default as MaterialNode } from './accessors/MaterialNode.js';
|
|
67
|
+
export { default as MaterialReferenceNode } from './accessors/MaterialReferenceNode.js';
|
|
68
|
+
export { default as RendererReferenceNode } from './accessors/RendererReferenceNode.js';
|
|
69
|
+
export { default as MorphNode } from './accessors/MorphNode.js';
|
|
70
|
+
export { default as ModelNode } from './accessors/ModelNode.js';
|
|
71
|
+
export { default as ModelViewProjectionNode } from './accessors/ModelViewProjectionNode.js';
|
|
72
|
+
export { default as Object3DNode } from './accessors/Object3DNode.js';
|
|
73
|
+
export { default as PointUVNode } from './accessors/PointUVNode.js';
|
|
74
|
+
export { default as ReferenceNode } from './accessors/ReferenceNode.js';
|
|
75
|
+
export { default as SkinningNode } from './accessors/SkinningNode.js';
|
|
76
|
+
export { default as SceneNode } from './accessors/SceneNode.js';
|
|
77
|
+
export { default as StorageBufferNode } from './accessors/StorageBufferNode.js';
|
|
78
|
+
export { default as TextureNode } from './accessors/TextureNode.js';
|
|
79
|
+
export { default as TextureSizeNode } from './accessors/TextureSizeNode.js';
|
|
80
|
+
export { default as StorageTextureNode } from './accessors/StorageTextureNode.js';
|
|
81
|
+
export { default as Texture3DNode } from './accessors/Texture3DNode.js';
|
|
82
|
+
export { default as UserDataNode } from './accessors/UserDataNode.js';
|
|
83
|
+
|
|
84
|
+
// display
|
|
85
|
+
export { default as BumpMapNode } from './display/BumpMapNode.js';
|
|
86
|
+
export { default as ColorSpaceNode } from './display/ColorSpaceNode.js';
|
|
87
|
+
export { default as FrontFacingNode } from './display/FrontFacingNode.js';
|
|
88
|
+
export { default as NormalMapNode } from './display/NormalMapNode.js';
|
|
89
|
+
export { default as PosterizeNode } from './display/PosterizeNode.js';
|
|
90
|
+
export { default as ToneMappingNode } from './display/ToneMappingNode.js';
|
|
91
|
+
export { default as ViewportNode } from './display/ViewportNode.js';
|
|
92
|
+
export { default as ViewportTextureNode } from './display/ViewportTextureNode.js';
|
|
93
|
+
export { default as ViewportSharedTextureNode } from './display/ViewportSharedTextureNode.js';
|
|
94
|
+
export { default as ViewportDepthTextureNode } from './display/ViewportDepthTextureNode.js';
|
|
95
|
+
export { default as ViewportDepthNode } from './display/ViewportDepthNode.js';
|
|
96
|
+
export { default as GaussianBlurNode } from './display/GaussianBlurNode.js';
|
|
97
|
+
export { default as AfterImageNode } from './display/AfterImageNode.js';
|
|
98
|
+
export { default as AnamorphicNode } from './display/AnamorphicNode.js';
|
|
99
|
+
export { default as SobelOperatorNode } from './display/SobelOperatorNode.js';
|
|
100
|
+
export { default as DepthOfFieldNode } from './display/DepthOfFieldNode.js';
|
|
101
|
+
export { default as DotScreenNode } from './display/DotScreenNode.js';
|
|
102
|
+
export { default as RGBShiftNode } from './display/RGBShiftNode.js';
|
|
103
|
+
export { default as FilmNode } from './display/FilmNode.js';
|
|
104
|
+
export { default as Lut3DNode } from './display/Lut3DNode.js';
|
|
105
|
+
export { default as GTAONode } from './display/GTAONode.js';
|
|
106
|
+
export { default as DenoiseNode } from './display/DenoiseNode.js';
|
|
107
|
+
export { default as FXAANode } from './display/FXAANode.js';
|
|
108
|
+
export { default as BloomNode } from './display/BloomNode.js';
|
|
109
|
+
export { default as TransitionNode } from './display/TransitionNode.js';
|
|
110
|
+
export { default as RenderOutputNode } from './display/RenderOutputNode.js';
|
|
111
|
+
export { default as PixelationPassNode } from './display/PixelationPassNode.js';
|
|
112
|
+
export { default as SSAAPassNode } from './display/SSAAPassNode.js';
|
|
113
|
+
export { default as StereoPassNode } from './display/StereoPassNode.js';
|
|
114
|
+
export { default as AnaglyphPassNode } from './display/AnaglyphPassNode.js';
|
|
115
|
+
export { default as ParallaxBarrierPassNode } from './display/ParallaxBarrierPassNode.js';
|
|
116
|
+
export { default as PassNode } from './display/PassNode.js';
|
|
117
|
+
|
|
118
|
+
// code
|
|
119
|
+
export { default as ExpressionNode } from './code/ExpressionNode.js';
|
|
120
|
+
export { default as CodeNode } from './code/CodeNode.js';
|
|
121
|
+
export { default as FunctionCallNode } from './code/FunctionCallNode.js';
|
|
122
|
+
export { default as FunctionNode } from './code/FunctionNode.js';
|
|
123
|
+
export { default as ScriptableNode } from './code/ScriptableNode.js';
|
|
124
|
+
export { default as ScriptableValueNode } from './code/ScriptableValueNode.js';
|
|
125
|
+
|
|
126
|
+
// fog
|
|
127
|
+
export { default as FogNode } from './fog/FogNode.js';
|
|
128
|
+
export { default as FogRangeNode } from './fog/FogRangeNode.js';
|
|
129
|
+
export { default as FogExp2Node } from './fog/FogExp2Node.js';
|
|
130
|
+
|
|
131
|
+
// geometry
|
|
132
|
+
export { default as RangeNode } from './geometry/RangeNode.js';
|
|
133
|
+
|
|
134
|
+
// gpgpu
|
|
135
|
+
export { default as ComputeNode } from './gpgpu/ComputeNode.js';
|
|
136
|
+
|
|
137
|
+
// lighting
|
|
138
|
+
export { default as LightNode } from './lighting/LightNode.js';
|
|
139
|
+
export { default as PointLightNode } from './lighting/PointLightNode.js';
|
|
140
|
+
export { default as DirectionalLightNode } from './lighting/DirectionalLightNode.js';
|
|
141
|
+
export { default as RectAreaLightNode } from './lighting/RectAreaLightNode.js';
|
|
142
|
+
export { default as SpotLightNode } from './lighting/SpotLightNode.js';
|
|
143
|
+
export { default as IESSpotLightNode } from './lighting/IESSpotLightNode.js';
|
|
144
|
+
export { default as AmbientLightNode } from './lighting/AmbientLightNode.js';
|
|
145
|
+
export { default as LightsNode } from './lighting/LightsNode.js';
|
|
146
|
+
export { default as LightingNode } from './lighting/LightingNode.js';
|
|
147
|
+
export { default as LightingContextNode } from './lighting/LightingContextNode.js';
|
|
148
|
+
export { default as HemisphereLightNode } from './lighting/HemisphereLightNode.js';
|
|
149
|
+
export { default as LightProbeNode } from './lighting/LightProbeNode.js';
|
|
150
|
+
export { default as EnvironmentNode } from './lighting/EnvironmentNode.js';
|
|
151
|
+
export { default as BasicEnvironmentNode } from './lighting/BasicEnvironmentNode.js';
|
|
152
|
+
export { default as IrradianceNode } from './lighting/IrradianceNode.js';
|
|
153
|
+
export { default as AONode } from './lighting/AONode.js';
|
|
154
|
+
export { default as AnalyticLightNode } from './lighting/AnalyticLightNode.js';
|
|
155
|
+
|
|
156
|
+
// pmrem
|
|
157
|
+
export { default as PMREMNode } from './pmrem/PMREMNode.js';
|
|
158
|
+
|
|
159
|
+
// parsers
|
|
160
|
+
export { default as GLSLNodeParser } from './parsers/GLSLNodeParser.js'; // @TODO: Move to jsm/renderers/webgl.
|
|
161
|
+
|
|
162
|
+
// lighting models
|
|
163
|
+
export { default as PhongLightingModel } from './functions/PhongLightingModel.js';
|
|
164
|
+
export { default as PhysicalLightingModel } from './functions/PhysicalLightingModel.js';
|
package/src/nodes/TSL.js
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// constants
|
|
2
|
+
export * from './core/constants.js';
|
|
3
|
+
|
|
4
|
+
// core
|
|
5
|
+
export * from './core/AssignNode.js';
|
|
6
|
+
export * from './core/AttributeNode.js';
|
|
7
|
+
export * from './core/BypassNode.js';
|
|
8
|
+
export * from './core/CacheNode.js';
|
|
9
|
+
export * from './core/ContextNode.js';
|
|
10
|
+
export * from './core/IndexNode.js';
|
|
11
|
+
export * from './core/ParameterNode.js';
|
|
12
|
+
export * from './core/PropertyNode.js';
|
|
13
|
+
export * from './core/StackNode.js';
|
|
14
|
+
export * from './core/UniformGroupNode.js';
|
|
15
|
+
export * from './core/UniformNode.js';
|
|
16
|
+
export * from './core/VaryingNode.js';
|
|
17
|
+
export * from './core/OutputStructNode.js';
|
|
18
|
+
export * from './core/MRTNode.js';
|
|
19
|
+
|
|
20
|
+
// math
|
|
21
|
+
export * from './math/Hash.js';
|
|
22
|
+
export * from './math/MathUtils.js';
|
|
23
|
+
export * from './math/TriNoise3D.js';
|
|
24
|
+
|
|
25
|
+
// utils
|
|
26
|
+
export { default as EquirectUVNode, equirectUV } from './utils/EquirectUVNode.js';
|
|
27
|
+
export { default as FunctionOverloadingNode, overloadingFn } from './utils/FunctionOverloadingNode.js';
|
|
28
|
+
export { default as LoopNode, Loop, Continue, Break } from './utils/LoopNode.js';
|
|
29
|
+
export { default as MatcapUVNode, matcapUV } from './utils/MatcapUVNode.js';
|
|
30
|
+
export { default as MaxMipLevelNode, maxMipLevel } from './utils/MaxMipLevelNode.js';
|
|
31
|
+
export { default as OscNode, oscSine, oscSquare, oscTriangle, oscSawtooth } from './utils/OscNode.js';
|
|
32
|
+
export * from './utils/Packing.js';
|
|
33
|
+
export { default as RemapNode, remap, remapClamp } from './utils/RemapNode.js';
|
|
34
|
+
export * from './utils/UVUtils.js';
|
|
35
|
+
export * from './utils/SpriteUtils.js';
|
|
36
|
+
export * from './utils/ViewportUtils.js';
|
|
37
|
+
export { default as RotateNode, rotate } from './utils/RotateNode.js';
|
|
38
|
+
export { default as SpriteSheetUVNode, spritesheetUV } from './utils/SpriteSheetUVNode.js';
|
|
39
|
+
export { default as TimerNode, timerLocal, timerGlobal, timerDelta, frameId } from './utils/TimerNode.js';
|
|
40
|
+
export { default as TriplanarTexturesNode, triplanarTextures, triplanarTexture } from './utils/TriplanarTexturesNode.js';
|
|
41
|
+
export { default as ReflectorNode, reflector } from './utils/ReflectorNode.js';
|
|
42
|
+
export { default as RTTNode, rtt, convertToTexture } from './utils/RTTNode.js';
|
|
43
|
+
|
|
44
|
+
// three.js shading language
|
|
45
|
+
export * from './tsl/TSLBase.js';
|
|
46
|
+
|
|
47
|
+
// accessors
|
|
48
|
+
export * from './accessors/AccessorsUtils.js';
|
|
49
|
+
export { default as UniformArrayNode, uniformArray } from './accessors/UniformArrayNode.js';
|
|
50
|
+
export * from './accessors/Bitangent.js';
|
|
51
|
+
export { default as BufferAttributeNode, bufferAttribute, dynamicBufferAttribute, instancedBufferAttribute, instancedDynamicBufferAttribute } from './accessors/BufferAttributeNode.js';
|
|
52
|
+
export { default as BufferNode, buffer } from './accessors/BufferNode.js';
|
|
53
|
+
export * from './accessors/Camera.js';
|
|
54
|
+
export { default as VertexColorNode, vertexColor } from './accessors/VertexColorNode.js';
|
|
55
|
+
export { default as CubeTextureNode, cubeTexture } from './accessors/CubeTextureNode.js';
|
|
56
|
+
export { default as InstanceNode, instance } from './accessors/InstanceNode.js';
|
|
57
|
+
export { default as BatchNode, batch } from './accessors/BatchNode.js';
|
|
58
|
+
export { default as MaterialNode, materialAlphaTest, materialColor, materialShininess, materialEmissive, materialOpacity, materialSpecular, materialSpecularStrength, materialReflectivity, materialRoughness, materialMetalness, materialNormal, materialClearcoat, materialClearcoatRoughness, materialClearcoatNormal, materialRotation, materialSheen, materialSheenRoughness, materialIridescence, materialIridescenceIOR, materialIridescenceThickness, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineWidth, materialLineDashOffset, materialPointWidth, materialAnisotropy, materialAnisotropyVector, materialDispersion, materialLightMap, materialAOMap } from './accessors/MaterialNode.js';
|
|
59
|
+
export * from './accessors/MaterialProperties.js';
|
|
60
|
+
export { default as MaterialReferenceNode, materialReference } from './accessors/MaterialReferenceNode.js';
|
|
61
|
+
export { default as RendererReferenceNode, rendererReference } from './accessors/RendererReferenceNode.js';
|
|
62
|
+
export { default as MorphNode, morphReference } from './accessors/MorphNode.js';
|
|
63
|
+
export * from './accessors/TextureBicubic.js';
|
|
64
|
+
export { default as ModelNode, modelDirection, modelViewMatrix, modelNormalMatrix, modelWorldMatrix, modelPosition, modelViewPosition, modelScale, modelWorldMatrixInverse } from './accessors/ModelNode.js';
|
|
65
|
+
export { default as ModelViewProjectionNode, modelViewProjection } from './accessors/ModelViewProjectionNode.js';
|
|
66
|
+
export * from './accessors/Normal.js';
|
|
67
|
+
export { default as Object3DNode, objectDirection, objectViewMatrix, objectNormalMatrix, objectWorldMatrix, objectPosition, objectScale, objectViewPosition } from './accessors/Object3DNode.js';
|
|
68
|
+
export { default as PointUVNode, pointUV } from './accessors/PointUVNode.js';
|
|
69
|
+
export * from './accessors/Position.js';
|
|
70
|
+
export { default as ReferenceNode, reference, referenceBuffer } from './accessors/ReferenceNode.js';
|
|
71
|
+
export * from './accessors/ReflectVector.js';
|
|
72
|
+
export { default as SkinningNode, skinning, skinningReference } from './accessors/SkinningNode.js';
|
|
73
|
+
export { default as SceneNode, backgroundBlurriness, backgroundIntensity } from './accessors/SceneNode.js';
|
|
74
|
+
export { default as StorageBufferNode, storage, storageObject } from './accessors/StorageBufferNode.js';
|
|
75
|
+
export * from './accessors/Tangent.js';
|
|
76
|
+
export { default as TextureNode, texture, textureLoad, /*textureLevel,*/ sampler } from './accessors/TextureNode.js';
|
|
77
|
+
export { default as TextureSizeNode, textureSize } from './accessors/TextureSizeNode.js';
|
|
78
|
+
export { default as StorageTextureNode, storageTexture, textureStore } from './accessors/StorageTextureNode.js';
|
|
79
|
+
export { default as Texture3DNode, texture3D } from './accessors/Texture3DNode.js';
|
|
80
|
+
export * from './accessors/UV.js';
|
|
81
|
+
export { default as UserDataNode, userData } from './accessors/UserDataNode.js';
|
|
82
|
+
export * from './accessors/VelocityNode.js';
|
|
83
|
+
|
|
84
|
+
// display
|
|
85
|
+
export * from './display/BlendMode.js';
|
|
86
|
+
export { default as BumpMapNode, bumpMap } from './display/BumpMapNode.js';
|
|
87
|
+
export * from './display/ColorAdjustment.js';
|
|
88
|
+
export { default as ColorSpaceNode, toOutputColorSpace, toWorkingColorSpace } from './display/ColorSpaceNode.js';
|
|
89
|
+
export { default as FrontFacingNode, frontFacing, faceDirection } from './display/FrontFacingNode.js';
|
|
90
|
+
export { default as NormalMapNode, normalMap } from './display/NormalMapNode.js';
|
|
91
|
+
export { default as PosterizeNode, posterize } from './display/PosterizeNode.js';
|
|
92
|
+
export { default as ToneMappingNode, toneMapping } from './display/ToneMappingNode.js';
|
|
93
|
+
export { default as ViewportNode, viewport, viewportCoordinate, viewportResolution, viewportUV, viewportTopLeft, viewportBottomLeft } from './display/ViewportNode.js';
|
|
94
|
+
export { default as ViewportTextureNode, viewportTexture, viewportMipTexture } from './display/ViewportTextureNode.js';
|
|
95
|
+
export { default as ViewportSharedTextureNode, viewportSharedTexture } from './display/ViewportSharedTextureNode.js';
|
|
96
|
+
export { default as ViewportDepthTextureNode, viewportDepthTexture } from './display/ViewportDepthTextureNode.js';
|
|
97
|
+
export { default as ViewportDepthNode, viewZToOrthographicDepth, orthographicDepthToViewZ, viewZToPerspectiveDepth, perspectiveDepthToViewZ, depth, linearDepth, viewportLinearDepth } from './display/ViewportDepthNode.js';
|
|
98
|
+
export { default as GaussianBlurNode, gaussianBlur } from './display/GaussianBlurNode.js';
|
|
99
|
+
export { default as AfterImageNode, afterImage } from './display/AfterImageNode.js';
|
|
100
|
+
export { default as AnamorphicNode, anamorphic } from './display/AnamorphicNode.js';
|
|
101
|
+
export { default as SobelOperatorNode, sobel } from './display/SobelOperatorNode.js';
|
|
102
|
+
export { default as DepthOfFieldNode, dof } from './display/DepthOfFieldNode.js';
|
|
103
|
+
export { default as DotScreenNode, dotScreen } from './display/DotScreenNode.js';
|
|
104
|
+
export { default as RGBShiftNode, rgbShift } from './display/RGBShiftNode.js';
|
|
105
|
+
export { default as FilmNode, film } from './display/FilmNode.js';
|
|
106
|
+
export { default as Lut3DNode, lut3D } from './display/Lut3DNode.js';
|
|
107
|
+
export * from './display/MotionBlur.js';
|
|
108
|
+
export { default as GTAONode, ao } from './display/GTAONode.js';
|
|
109
|
+
export { default as DenoiseNode, denoise } from './display/DenoiseNode.js';
|
|
110
|
+
export { default as FXAANode, fxaa } from './display/FXAANode.js';
|
|
111
|
+
export { default as BloomNode, bloom } from './display/BloomNode.js';
|
|
112
|
+
export { default as TransitionNode, transition } from './display/TransitionNode.js';
|
|
113
|
+
export { default as RenderOutputNode, renderOutput } from './display/RenderOutputNode.js';
|
|
114
|
+
export { default as PixelationPassNode, pixelationPass } from './display/PixelationPassNode.js';
|
|
115
|
+
export { default as SSAAPassNode, ssaaPass } from './display/SSAAPassNode.js';
|
|
116
|
+
export { default as StereoPassNode, stereoPass } from './display/StereoPassNode.js';
|
|
117
|
+
export { default as AnaglyphPassNode, anaglyphPass } from './display/AnaglyphPassNode.js';
|
|
118
|
+
export { default as ParallaxBarrierPassNode, parallaxBarrierPass } from './display/ParallaxBarrierPassNode.js';
|
|
119
|
+
export { bleach } from './display/BleachBypass.js';
|
|
120
|
+
export { sepia } from './display/Sepia.js';
|
|
121
|
+
|
|
122
|
+
export { default as PassNode, pass, passTexture, depthPass } from './display/PassNode.js';
|
|
123
|
+
|
|
124
|
+
import * as ColorSpaceFunctions from './display/ColorSpaceFunctions.js';
|
|
125
|
+
export { ColorSpaceFunctions };
|
|
126
|
+
|
|
127
|
+
import * as ToneMappingFunctions from './display/ToneMappingFunctions.js';
|
|
128
|
+
export { ToneMappingFunctions };
|
|
129
|
+
|
|
130
|
+
// code
|
|
131
|
+
export { default as ExpressionNode, expression } from './code/ExpressionNode.js';
|
|
132
|
+
export { default as CodeNode, code, js, wgsl, glsl } from './code/CodeNode.js';
|
|
133
|
+
export { default as FunctionCallNode, call } from './code/FunctionCallNode.js';
|
|
134
|
+
export { default as FunctionNode, wgslFn, glslFn } from './code/FunctionNode.js';
|
|
135
|
+
export { default as ScriptableNode, scriptable, global } from './code/ScriptableNode.js';
|
|
136
|
+
export { default as ScriptableValueNode, scriptableValue } from './code/ScriptableValueNode.js';
|
|
137
|
+
|
|
138
|
+
// fog
|
|
139
|
+
export { default as FogNode, fog } from './fog/FogNode.js';
|
|
140
|
+
export { default as FogRangeNode, rangeFog } from './fog/FogRangeNode.js';
|
|
141
|
+
export { default as FogExp2Node, densityFog } from './fog/FogExp2Node.js';
|
|
142
|
+
|
|
143
|
+
// geometry
|
|
144
|
+
export { default as RangeNode, range } from './geometry/RangeNode.js';
|
|
145
|
+
|
|
146
|
+
// gpgpu
|
|
147
|
+
export { default as ComputeNode, compute } from './gpgpu/ComputeNode.js';
|
|
148
|
+
|
|
149
|
+
// lighting
|
|
150
|
+
export { default as LightNode, lightTargetDirection } from './lighting/LightNode.js';
|
|
151
|
+
export { default as LightsNode, lights } from './lighting/LightsNode.js';
|
|
152
|
+
export { default as LightingContextNode, lightingContext } from './lighting/LightingContextNode.js';
|
|
153
|
+
|
|
154
|
+
// pmrem
|
|
155
|
+
export { default as PMREMNode, pmremTexture } from './pmrem/PMREMNode.js';
|
|
156
|
+
export * from './pmrem/PMREMUtils.js';
|
|
157
|
+
|
|
158
|
+
// procedural
|
|
159
|
+
export * from './procedural/Checker.js';
|
|
160
|
+
|
|
161
|
+
// materialX
|
|
162
|
+
export * from './materialx/MaterialXNodes.js';
|
|
163
|
+
|
|
164
|
+
// functions
|
|
165
|
+
export { default as BRDF_GGX } from './functions/BSDF/BRDF_GGX.js';
|
|
166
|
+
export { default as BRDF_Lambert } from './functions/BSDF/BRDF_Lambert.js';
|
|
167
|
+
export { default as D_GGX } from './functions/BSDF/D_GGX.js';
|
|
168
|
+
export { default as DFGApprox } from './functions/BSDF/DFGApprox.js';
|
|
169
|
+
export { default as F_Schlick } from './functions/BSDF/F_Schlick.js';
|
|
170
|
+
export { default as Schlick_to_F0 } from './functions/BSDF/Schlick_to_F0.js';
|
|
171
|
+
export { default as V_GGX_SmithCorrelated } from './functions/BSDF/V_GGX_SmithCorrelated.js';
|
|
172
|
+
|
|
173
|
+
export * from './lighting/LightUtils.js';
|
|
174
|
+
|
|
175
|
+
export { default as getGeometryRoughness } from './functions/material/getGeometryRoughness.js';
|
|
176
|
+
export { default as getRoughness } from './functions/material/getRoughness.js';
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { bitangentView } from './
|
|
2
|
-
import { normalView, transformedNormalView } from './
|
|
3
|
-
import { tangentView } from './
|
|
4
|
-
import { mat3 } from '../
|
|
1
|
+
import { bitangentView } from './Bitangent.js';
|
|
2
|
+
import { normalView, transformedNormalView } from './Normal.js';
|
|
3
|
+
import { tangentView } from './Tangent.js';
|
|
4
|
+
import { mat3 } from '../tsl/TSLBase.js';
|
|
5
5
|
import { mix } from '../math/MathNode.js';
|
|
6
6
|
import { anisotropy, anisotropyB, roughness } from '../core/PropertyNode.js';
|
|
7
|
-
import { positionViewDirection } from './
|
|
7
|
+
import { positionViewDirection } from './Position.js';
|
|
8
8
|
|
|
9
|
-
export const TBNViewMatrix = mat3( tangentView, bitangentView, normalView );
|
|
9
|
+
export const TBNViewMatrix = /*@__PURE__*/ mat3( tangentView, bitangentView, normalView );
|
|
10
10
|
|
|
11
|
-
export const parallaxDirection = positionViewDirection.mul( TBNViewMatrix )/*.normalize()*/;
|
|
11
|
+
export const parallaxDirection = /*@__PURE__*/ positionViewDirection.mul( TBNViewMatrix )/*.normalize()*/;
|
|
12
12
|
export const parallaxUV = ( uv, scale ) => uv.sub( parallaxDirection.mul( scale ) );
|
|
13
13
|
|
|
14
|
-
export const transformedBentNormalView = ( () => {
|
|
14
|
+
export const transformedBentNormalView = /*@__PURE__*/ ( () => {
|
|
15
15
|
|
|
16
16
|
// https://google.github.io/filament/Filament.md.html#lighting/imagebasedlights/anisotropy
|
|
17
17
|
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import Node, { registerNode } from '../core/Node.js';
|
|
2
|
+
import { normalLocal } from './Normal.js';
|
|
3
|
+
import { positionLocal } from './Position.js';
|
|
4
|
+
import { nodeProxy, vec3, mat3, mat4, int, ivec2, float, Fn } from '../tsl/TSLBase.js';
|
|
5
|
+
import { textureLoad } from './TextureNode.js';
|
|
6
|
+
import { textureSize } from './TextureSizeNode.js';
|
|
7
|
+
import { tangentLocal } from './Tangent.js';
|
|
8
|
+
import { instanceIndex, drawIndex } from '../core/IndexNode.js';
|
|
9
|
+
import { varyingProperty } from '../core/PropertyNode.js';
|
|
10
|
+
|
|
11
|
+
class BatchNode extends Node {
|
|
12
|
+
|
|
13
|
+
constructor( batchMesh ) {
|
|
14
|
+
|
|
15
|
+
super( 'void' );
|
|
16
|
+
|
|
17
|
+
this.batchMesh = batchMesh;
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
this.batchingIdNode = null;
|
|
21
|
+
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
setup( builder ) {
|
|
25
|
+
|
|
26
|
+
// POSITION
|
|
27
|
+
|
|
28
|
+
if ( this.batchingIdNode === null ) {
|
|
29
|
+
|
|
30
|
+
if ( builder.getDrawIndex() === null ) {
|
|
31
|
+
|
|
32
|
+
this.batchingIdNode = instanceIndex;
|
|
33
|
+
|
|
34
|
+
} else {
|
|
35
|
+
|
|
36
|
+
this.batchingIdNode = drawIndex;
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const getIndirectIndex = Fn( ( [ id ] ) => {
|
|
43
|
+
|
|
44
|
+
const size = textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 );
|
|
45
|
+
const x = int( id ).modInt( int( size ) );
|
|
46
|
+
const y = int( id ).div( int( size ) );
|
|
47
|
+
return textureLoad( this.batchMesh._indirectTexture, ivec2( x, y ) ).x;
|
|
48
|
+
|
|
49
|
+
} ).setLayout( {
|
|
50
|
+
name: 'getIndirectIndex',
|
|
51
|
+
type: 'uint',
|
|
52
|
+
inputs: [
|
|
53
|
+
{ name: 'id', type: 'int' }
|
|
54
|
+
]
|
|
55
|
+
} );
|
|
56
|
+
|
|
57
|
+
const indirectId = getIndirectIndex( int( this.batchingIdNode ) );
|
|
58
|
+
|
|
59
|
+
const matricesTexture = this.batchMesh._matricesTexture;
|
|
60
|
+
|
|
61
|
+
const size = textureSize( textureLoad( matricesTexture ), 0 );
|
|
62
|
+
const j = float( indirectId ).mul( 4 ).toInt().toVar();
|
|
63
|
+
|
|
64
|
+
const x = j.modInt( size );
|
|
65
|
+
const y = j.div( int( size ) );
|
|
66
|
+
const batchingMatrix = mat4(
|
|
67
|
+
textureLoad( matricesTexture, ivec2( x, y ) ),
|
|
68
|
+
textureLoad( matricesTexture, ivec2( x.add( 1 ), y ) ),
|
|
69
|
+
textureLoad( matricesTexture, ivec2( x.add( 2 ), y ) ),
|
|
70
|
+
textureLoad( matricesTexture, ivec2( x.add( 3 ), y ) )
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
const colorsTexture = this.batchMesh._colorsTexture;
|
|
75
|
+
|
|
76
|
+
if ( colorsTexture !== null ) {
|
|
77
|
+
|
|
78
|
+
const getBatchingColor = Fn( ( [ id ] ) => {
|
|
79
|
+
|
|
80
|
+
const size = textureSize( textureLoad( colorsTexture ), 0 ).x;
|
|
81
|
+
const j = id;
|
|
82
|
+
const x = j.modInt( size );
|
|
83
|
+
const y = j.div( size );
|
|
84
|
+
return textureLoad( colorsTexture, ivec2( x, y ) ).rgb;
|
|
85
|
+
|
|
86
|
+
} ).setLayout( {
|
|
87
|
+
name: 'getBatchingColor',
|
|
88
|
+
type: 'vec3',
|
|
89
|
+
inputs: [
|
|
90
|
+
{ name: 'id', type: 'int' }
|
|
91
|
+
]
|
|
92
|
+
} );
|
|
93
|
+
|
|
94
|
+
const color = getBatchingColor( indirectId );
|
|
95
|
+
|
|
96
|
+
varyingProperty( 'vec3', 'vBatchColor' ).assign( color );
|
|
97
|
+
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const bm = mat3( batchingMatrix );
|
|
101
|
+
|
|
102
|
+
positionLocal.assign( batchingMatrix.mul( positionLocal ) );
|
|
103
|
+
|
|
104
|
+
const transformedNormal = normalLocal.div( vec3( bm[ 0 ].dot( bm[ 0 ] ), bm[ 1 ].dot( bm[ 1 ] ), bm[ 2 ].dot( bm[ 2 ] ) ) );
|
|
105
|
+
|
|
106
|
+
const batchingNormal = bm.mul( transformedNormal ).xyz;
|
|
107
|
+
|
|
108
|
+
normalLocal.assign( batchingNormal );
|
|
109
|
+
|
|
110
|
+
if ( builder.hasGeometryAttribute( 'tangent' ) ) {
|
|
111
|
+
|
|
112
|
+
tangentLocal.mulAssign( bm );
|
|
113
|
+
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export default BatchNode;
|
|
121
|
+
|
|
122
|
+
BatchNode.type = /*@__PURE__*/ registerNode( 'Batch', BatchNode );
|
|
123
|
+
|
|
124
|
+
export const batch = /*@__PURE__*/ nodeProxy( BatchNode );
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { varying } from '../core/VaryingNode.js';
|
|
2
|
-
import { cameraViewMatrix } from './
|
|
3
|
-
import { normalGeometry, normalLocal, normalView, normalWorld, transformedNormalView } from './
|
|
4
|
-
import { tangentGeometry, tangentLocal, tangentView, tangentWorld, transformedTangentView } from './
|
|
2
|
+
import { cameraViewMatrix } from './Camera.js';
|
|
3
|
+
import { normalGeometry, normalLocal, normalView, normalWorld, transformedNormalView } from './Normal.js';
|
|
4
|
+
import { tangentGeometry, tangentLocal, tangentView, tangentWorld, transformedTangentView } from './Tangent.js';
|
|
5
5
|
|
|
6
6
|
const getBitangent = ( crossNormalTangent ) => crossNormalTangent.mul( tangentGeometry.w ).xyz;
|
|
7
7
|
|
|
8
|
-
export const bitangentGeometry =
|
|
9
|
-
export const bitangentLocal =
|
|
10
|
-
export const bitangentView =
|
|
11
|
-
export const bitangentWorld =
|
|
12
|
-
export const transformedBitangentView =
|
|
13
|
-
export const transformedBitangentWorld =
|
|
8
|
+
export const bitangentGeometry = /*@__PURE__*/ varying( getBitangent( normalGeometry.cross( tangentGeometry ) ), 'v_bitangentGeometry' ).normalize().toVar( 'bitangentGeometry' );
|
|
9
|
+
export const bitangentLocal = /*@__PURE__*/ varying( getBitangent( normalLocal.cross( tangentLocal ) ), 'v_bitangentLocal' ).normalize().toVar( 'bitangentLocal' );
|
|
10
|
+
export const bitangentView = /*@__PURE__*/ varying( getBitangent( normalView.cross( tangentView ) ), 'v_bitangentView' ).normalize().toVar( 'bitangentView' );
|
|
11
|
+
export const bitangentWorld = /*@__PURE__*/ varying( getBitangent( normalWorld.cross( tangentWorld ) ), 'v_bitangentWorld' ).normalize().toVar( 'bitangentWorld' );
|
|
12
|
+
export const transformedBitangentView = /*@__PURE__*/ getBitangent( transformedNormalView.cross( transformedTangentView ) ).normalize().toVar( 'transformedBitangentView' );
|
|
13
|
+
export const transformedBitangentWorld = /*@__PURE__*/ transformedBitangentView.transformDirection( cameraViewMatrix ).normalize().toVar( 'transformedBitangentWorld' );
|