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
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import DataMap from '../DataMap.js';
|
|
2
2
|
import ChainMap from '../ChainMap.js';
|
|
3
3
|
import NodeBuilderState from './NodeBuilderState.js';
|
|
4
|
-
import {
|
|
5
|
-
import { NodeFrame
|
|
4
|
+
import { cubeMapNode } from '../../../nodes/utils/CubeMapNode.js';
|
|
5
|
+
import { NodeFrame } from '../../../nodes/Nodes.js';
|
|
6
|
+
import { objectGroup, renderGroup, frameGroup, cubeTexture, texture, rangeFog, densityFog, reference, normalWorld, pmremTexture, viewportUV } from '../../../nodes/TSL.js';
|
|
7
|
+
|
|
8
|
+
import { EquirectangularReflectionMapping, EquirectangularRefractionMapping } from '../../../constants.js';
|
|
9
|
+
|
|
10
|
+
const outputNodeMap = new WeakMap();
|
|
6
11
|
|
|
7
12
|
class Nodes extends DataMap {
|
|
8
13
|
|
|
@@ -107,8 +112,10 @@ class Nodes extends DataMap {
|
|
|
107
112
|
|
|
108
113
|
if ( nodeBuilderState === undefined ) {
|
|
109
114
|
|
|
110
|
-
const nodeBuilder = this.backend.createNodeBuilder( renderObject.object, this.renderer
|
|
115
|
+
const nodeBuilder = this.backend.createNodeBuilder( renderObject.object, this.renderer );
|
|
116
|
+
nodeBuilder.scene = renderObject.scene;
|
|
111
117
|
nodeBuilder.material = renderObject.material;
|
|
118
|
+
nodeBuilder.camera = renderObject.camera;
|
|
112
119
|
nodeBuilder.context.material = renderObject.material;
|
|
113
120
|
nodeBuilder.lightsNode = renderObject.lightsNode;
|
|
114
121
|
nodeBuilder.environmentNode = this.getEnvironmentNode( renderObject.scene );
|
|
@@ -182,6 +189,8 @@ class Nodes extends DataMap {
|
|
|
182
189
|
nodeBuilder.getBindings(),
|
|
183
190
|
nodeBuilder.updateNodes,
|
|
184
191
|
nodeBuilder.updateBeforeNodes,
|
|
192
|
+
nodeBuilder.updateAfterNodes,
|
|
193
|
+
nodeBuilder.instanceBindGroups,
|
|
185
194
|
nodeBuilder.transforms
|
|
186
195
|
);
|
|
187
196
|
|
|
@@ -219,7 +228,7 @@ class Nodes extends DataMap {
|
|
|
219
228
|
|
|
220
229
|
const cacheKey = [];
|
|
221
230
|
|
|
222
|
-
if ( lightsNode ) cacheKey.push( lightsNode.getCacheKey() );
|
|
231
|
+
if ( lightsNode ) cacheKey.push( lightsNode.getCacheKey( true ) );
|
|
223
232
|
if ( environmentNode ) cacheKey.push( environmentNode.getCacheKey() );
|
|
224
233
|
if ( fogNode ) cacheKey.push( fogNode.getCacheKey() );
|
|
225
234
|
|
|
@@ -257,17 +266,39 @@ class Nodes extends DataMap {
|
|
|
257
266
|
|
|
258
267
|
if ( background ) {
|
|
259
268
|
|
|
260
|
-
|
|
269
|
+
const forceUpdate = ( scene.backgroundBlurriness === 0 && sceneData.backgroundBlurriness > 0 ) || ( scene.backgroundBlurriness > 0 && sceneData.backgroundBlurriness === 0 );
|
|
270
|
+
|
|
271
|
+
if ( sceneData.background !== background || forceUpdate ) {
|
|
261
272
|
|
|
262
273
|
let backgroundNode = null;
|
|
263
274
|
|
|
264
275
|
if ( background.isCubeTexture === true || ( background.mapping === EquirectangularReflectionMapping || background.mapping === EquirectangularRefractionMapping ) ) {
|
|
265
276
|
|
|
266
|
-
|
|
277
|
+
if ( scene.backgroundBlurriness > 0 ) {
|
|
278
|
+
|
|
279
|
+
backgroundNode = pmremTexture( background, normalWorld );
|
|
280
|
+
|
|
281
|
+
} else {
|
|
282
|
+
|
|
283
|
+
let envMap;
|
|
284
|
+
|
|
285
|
+
if ( background.isCubeTexture === true ) {
|
|
286
|
+
|
|
287
|
+
envMap = cubeTexture( background );
|
|
288
|
+
|
|
289
|
+
} else {
|
|
290
|
+
|
|
291
|
+
envMap = texture( background );
|
|
292
|
+
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
backgroundNode = cubeMapNode( envMap );
|
|
296
|
+
|
|
297
|
+
}
|
|
267
298
|
|
|
268
299
|
} else if ( background.isTexture === true ) {
|
|
269
300
|
|
|
270
|
-
backgroundNode = texture( background,
|
|
301
|
+
backgroundNode = texture( background, viewportUV.flipY() ).setUpdateMatrix( true );
|
|
271
302
|
|
|
272
303
|
} else if ( background.isColor !== true ) {
|
|
273
304
|
|
|
@@ -277,6 +308,7 @@ class Nodes extends DataMap {
|
|
|
277
308
|
|
|
278
309
|
sceneData.backgroundNode = backgroundNode;
|
|
279
310
|
sceneData.background = background;
|
|
311
|
+
sceneData.backgroundBlurriness = scene.backgroundBlurriness;
|
|
280
312
|
|
|
281
313
|
}
|
|
282
314
|
|
|
@@ -386,29 +418,30 @@ class Nodes extends DataMap {
|
|
|
386
418
|
|
|
387
419
|
}
|
|
388
420
|
|
|
389
|
-
|
|
421
|
+
getOutputCacheKey() {
|
|
390
422
|
|
|
391
|
-
|
|
423
|
+
const renderer = this.renderer;
|
|
392
424
|
|
|
393
|
-
|
|
425
|
+
return renderer.toneMapping + ',' + renderer.currentColorSpace;
|
|
394
426
|
|
|
395
|
-
|
|
427
|
+
}
|
|
396
428
|
|
|
397
|
-
|
|
429
|
+
hasOutputChange( outputTarget ) {
|
|
398
430
|
|
|
399
|
-
|
|
431
|
+
const cacheKey = outputNodeMap.get( outputTarget );
|
|
400
432
|
|
|
401
|
-
|
|
433
|
+
return cacheKey !== this.getOutputCacheKey();
|
|
402
434
|
|
|
403
|
-
|
|
435
|
+
}
|
|
404
436
|
|
|
405
|
-
|
|
437
|
+
getOutputNode( outputTexture ) {
|
|
406
438
|
|
|
407
|
-
|
|
439
|
+
const renderer = this.renderer;
|
|
440
|
+
const cacheKey = this.getOutputCacheKey();
|
|
408
441
|
|
|
409
|
-
|
|
442
|
+
const output = texture( outputTexture, viewportUV ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
|
|
410
443
|
|
|
411
|
-
|
|
444
|
+
outputNodeMap.set( outputTexture, cacheKey );
|
|
412
445
|
|
|
413
446
|
return output;
|
|
414
447
|
|
|
@@ -416,12 +449,27 @@ class Nodes extends DataMap {
|
|
|
416
449
|
|
|
417
450
|
updateBefore( renderObject ) {
|
|
418
451
|
|
|
419
|
-
const nodeFrame = this.getNodeFrameForRender( renderObject );
|
|
420
452
|
const nodeBuilder = renderObject.getNodeBuilderState();
|
|
421
453
|
|
|
422
454
|
for ( const node of nodeBuilder.updateBeforeNodes ) {
|
|
423
455
|
|
|
424
|
-
|
|
456
|
+
// update frame state for each node
|
|
457
|
+
|
|
458
|
+
this.getNodeFrameForRender( renderObject ).updateBeforeNode( node );
|
|
459
|
+
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
updateAfter( renderObject ) {
|
|
465
|
+
|
|
466
|
+
const nodeBuilder = renderObject.getNodeBuilderState();
|
|
467
|
+
|
|
468
|
+
for ( const node of nodeBuilder.updateAfterNodes ) {
|
|
469
|
+
|
|
470
|
+
// update frame state for each node
|
|
471
|
+
|
|
472
|
+
this.getNodeFrameForRender( renderObject ).updateAfterNode( node );
|
|
425
473
|
|
|
426
474
|
}
|
|
427
475
|
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import NodeLibrary from './NodeLibrary.js';
|
|
2
|
+
|
|
3
|
+
// Materials
|
|
4
|
+
import { MeshPhongMaterial } from '../../../materials/MeshPhongMaterial.js';
|
|
5
|
+
import MeshPhongNodeMaterial from '../../../materials/nodes/MeshPhongNodeMaterial.js';
|
|
6
|
+
import { MeshStandardMaterial } from '../../../materials/MeshStandardMaterial.js';
|
|
7
|
+
import MeshStandardNodeMaterial from '../../../materials/nodes/MeshStandardNodeMaterial.js';
|
|
8
|
+
import { MeshPhysicalMaterial } from '../../../materials/MeshPhysicalMaterial.js';
|
|
9
|
+
import MeshPhysicalNodeMaterial from '../../../materials/nodes/MeshPhysicalNodeMaterial.js';
|
|
10
|
+
import { MeshToonMaterial } from '../../../materials/MeshToonMaterial.js';
|
|
11
|
+
import MeshToonNodeMaterial from '../../../materials/nodes/MeshToonNodeMaterial.js';
|
|
12
|
+
import { MeshBasicMaterial } from '../../../materials/MeshBasicMaterial.js';
|
|
13
|
+
import MeshBasicNodeMaterial from '../../../materials/nodes/MeshBasicNodeMaterial.js';
|
|
14
|
+
import { MeshLambertMaterial } from '../../../materials/MeshLambertMaterial.js';
|
|
15
|
+
import MeshLambertNodeMaterial from '../../../materials/nodes/MeshLambertNodeMaterial.js';
|
|
16
|
+
import { MeshNormalMaterial } from '../../../materials/MeshNormalMaterial.js';
|
|
17
|
+
import MeshNormalNodeMaterial from '../../../materials/nodes/MeshNormalNodeMaterial.js';
|
|
18
|
+
import { MeshMatcapMaterial } from '../../../materials/MeshMatcapMaterial.js';
|
|
19
|
+
import MeshMatcapNodeMaterial from '../../../materials/nodes/MeshMatcapNodeMaterial.js';
|
|
20
|
+
import { LineBasicMaterial } from '../../../materials/LineBasicMaterial.js';
|
|
21
|
+
import LineBasicNodeMaterial from '../../../materials/nodes/LineBasicNodeMaterial.js';
|
|
22
|
+
import { LineDashedMaterial } from '../../../materials/LineDashedMaterial.js';
|
|
23
|
+
import LineDashedNodeMaterial from '../../../materials/nodes/LineDashedNodeMaterial.js';
|
|
24
|
+
import { PointsMaterial } from '../../../materials/PointsMaterial.js';
|
|
25
|
+
import PointsNodeMaterial from '../../../materials/nodes/PointsNodeMaterial.js';
|
|
26
|
+
import { SpriteMaterial } from '../../../materials/SpriteMaterial.js';
|
|
27
|
+
import SpriteNodeMaterial from '../../../materials/nodes/SpriteNodeMaterial.js';
|
|
28
|
+
import { ShadowMaterial } from '../../../materials/ShadowMaterial.js';
|
|
29
|
+
import ShadowNodeMaterial from '../../../materials/nodes/ShadowNodeMaterial.js';
|
|
30
|
+
//import { MeshDepthMaterial } from '../../../materials/MeshDepthMaterial.js';
|
|
31
|
+
//import MeshDepthNodeMaterial from '../../../materials/nodes/MeshDepthNodeMaterial.js';
|
|
32
|
+
//import { MeshDistanceMaterial } from '../../../materials/MeshDistanceMaterial.js';
|
|
33
|
+
//import MeshDistanceNodeMaterial from '../../../materials/nodes/MeshDistanceNodeMaterial.js';
|
|
34
|
+
|
|
35
|
+
// Lights
|
|
36
|
+
import { PointLight } from '../../../lights/PointLight.js';
|
|
37
|
+
import { PointLightNode } from '../../../nodes/Nodes.js';
|
|
38
|
+
import { DirectionalLight } from '../../../lights/DirectionalLight.js';
|
|
39
|
+
import { DirectionalLightNode } from '../../../nodes/Nodes.js';
|
|
40
|
+
import { RectAreaLight } from '../../../lights/RectAreaLight.js';
|
|
41
|
+
import { RectAreaLightNode } from '../../../nodes/Nodes.js';
|
|
42
|
+
import { SpotLight } from '../../../lights/SpotLight.js';
|
|
43
|
+
import { SpotLightNode } from '../../../nodes/Nodes.js';
|
|
44
|
+
import { AmbientLight } from '../../../lights/AmbientLight.js';
|
|
45
|
+
import { AmbientLightNode } from '../../../nodes/Nodes.js';
|
|
46
|
+
import { HemisphereLight } from '../../../lights/HemisphereLight.js';
|
|
47
|
+
import { HemisphereLightNode } from '../../../nodes/Nodes.js';
|
|
48
|
+
import { LightProbe } from '../../../lights/LightProbe.js';
|
|
49
|
+
import { LightProbeNode } from '../../../nodes/Nodes.js';
|
|
50
|
+
import IESSpotLight from '../../../lights/webgpu/IESSpotLight.js';
|
|
51
|
+
import { IESSpotLightNode } from '../../../nodes/Nodes.js';
|
|
52
|
+
|
|
53
|
+
// Tone Mapping
|
|
54
|
+
import { LinearToneMapping, ReinhardToneMapping, CineonToneMapping, ACESFilmicToneMapping, AgXToneMapping, NeutralToneMapping } from '../../../constants.js';
|
|
55
|
+
import * as TMF from '../../../nodes/display/ToneMappingFunctions.js';
|
|
56
|
+
|
|
57
|
+
// Color Space
|
|
58
|
+
import { LinearSRGBColorSpace, SRGBColorSpace } from '../../../constants.js';
|
|
59
|
+
import { getColorSpaceMethod } from '../../../nodes/display/ColorSpaceNode.js';
|
|
60
|
+
import * as CSF from '../../../nodes/display/ColorSpaceFunctions.js';
|
|
61
|
+
|
|
62
|
+
class StandardNodeLibrary extends NodeLibrary {
|
|
63
|
+
|
|
64
|
+
constructor() {
|
|
65
|
+
|
|
66
|
+
super();
|
|
67
|
+
|
|
68
|
+
this.addMaterial( MeshPhongNodeMaterial, MeshPhongMaterial );
|
|
69
|
+
this.addMaterial( MeshStandardNodeMaterial, MeshStandardMaterial );
|
|
70
|
+
this.addMaterial( MeshPhysicalNodeMaterial, MeshPhysicalMaterial );
|
|
71
|
+
this.addMaterial( MeshToonNodeMaterial, MeshToonMaterial );
|
|
72
|
+
this.addMaterial( MeshBasicNodeMaterial, MeshBasicMaterial );
|
|
73
|
+
this.addMaterial( MeshLambertNodeMaterial, MeshLambertMaterial );
|
|
74
|
+
this.addMaterial( MeshNormalNodeMaterial, MeshNormalMaterial );
|
|
75
|
+
this.addMaterial( MeshMatcapNodeMaterial, MeshMatcapMaterial );
|
|
76
|
+
this.addMaterial( LineBasicNodeMaterial, LineBasicMaterial );
|
|
77
|
+
this.addMaterial( LineDashedNodeMaterial, LineDashedMaterial );
|
|
78
|
+
this.addMaterial( PointsNodeMaterial, PointsMaterial );
|
|
79
|
+
this.addMaterial( SpriteNodeMaterial, SpriteMaterial );
|
|
80
|
+
this.addMaterial( ShadowNodeMaterial, ShadowMaterial );
|
|
81
|
+
|
|
82
|
+
this.addLight( PointLightNode, PointLight );
|
|
83
|
+
this.addLight( DirectionalLightNode, DirectionalLight );
|
|
84
|
+
this.addLight( RectAreaLightNode, RectAreaLight );
|
|
85
|
+
this.addLight( SpotLightNode, SpotLight );
|
|
86
|
+
this.addLight( AmbientLightNode, AmbientLight );
|
|
87
|
+
this.addLight( HemisphereLightNode, HemisphereLight );
|
|
88
|
+
this.addLight( LightProbeNode, LightProbe );
|
|
89
|
+
this.addLight( IESSpotLightNode, IESSpotLight );
|
|
90
|
+
|
|
91
|
+
this.addToneMapping( TMF.LinearToneMapping, LinearToneMapping );
|
|
92
|
+
this.addToneMapping( TMF.ReinhardToneMapping, ReinhardToneMapping );
|
|
93
|
+
this.addToneMapping( TMF.CineonToneMapping, CineonToneMapping );
|
|
94
|
+
this.addToneMapping( TMF.ACESFilmicToneMapping, ACESFilmicToneMapping );
|
|
95
|
+
this.addToneMapping( TMF.AgXToneMapping, AgXToneMapping );
|
|
96
|
+
this.addToneMapping( TMF.NeutralToneMapping, NeutralToneMapping );
|
|
97
|
+
|
|
98
|
+
this.addColorSpace( CSF.LinearTosRGB, getColorSpaceMethod( LinearSRGBColorSpace, SRGBColorSpace ) );
|
|
99
|
+
this.addColorSpace( CSF.sRGBToLinear, getColorSpaceMethod( SRGBColorSpace, LinearSRGBColorSpace ) );
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export default StandardNodeLibrary;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
export default /* glsl */`
|
|
2
2
|
#ifdef USE_BATCHING
|
|
3
|
-
|
|
3
|
+
#if ! defined( GL_ANGLE_multi_draw )
|
|
4
|
+
#define gl_DrawID _gl_DrawID
|
|
5
|
+
uniform int _gl_DrawID;
|
|
6
|
+
#endif
|
|
7
|
+
|
|
4
8
|
uniform highp sampler2D batchingTexture;
|
|
9
|
+
uniform highp usampler2D batchingIdTexture;
|
|
5
10
|
mat4 getBatchingMatrix( const in float i ) {
|
|
6
11
|
|
|
7
12
|
int size = textureSize( batchingTexture, 0 ).x;
|
|
@@ -15,6 +20,16 @@ export default /* glsl */`
|
|
|
15
20
|
return mat4( v1, v2, v3, v4 );
|
|
16
21
|
|
|
17
22
|
}
|
|
23
|
+
|
|
24
|
+
float getIndirectIndex( const in int i ) {
|
|
25
|
+
|
|
26
|
+
int size = textureSize( batchingIdTexture, 0 ).x;
|
|
27
|
+
int x = i % size;
|
|
28
|
+
int y = i / size;
|
|
29
|
+
return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
18
33
|
#endif
|
|
19
34
|
|
|
20
35
|
#ifdef USE_BATCHING_COLOR
|
|
@@ -32,13 +32,4 @@ vec4 sRGBTransferOETF( in vec4 value ) {
|
|
|
32
32
|
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
// @deprecated, r156
|
|
36
|
-
vec4 LinearToLinear( in vec4 value ) {
|
|
37
|
-
return value;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// @deprecated, r156
|
|
41
|
-
vec4 LinearTosRGB( in vec4 value ) {
|
|
42
|
-
return sRGBTransferOETF( value );
|
|
43
|
-
}
|
|
44
35
|
`;
|
|
@@ -85,16 +85,6 @@ mat3 transposeMat3( const in mat3 m ) {
|
|
|
85
85
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
float luminance( const in vec3 rgb ) {
|
|
89
|
-
|
|
90
|
-
// assumes rgb is in linear color space with sRGB primaries and D65 white point
|
|
91
|
-
|
|
92
|
-
const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );
|
|
93
|
-
|
|
94
|
-
return dot( weights, rgb );
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
98
88
|
bool isPerspectiveMatrix( mat4 m ) {
|
|
99
89
|
|
|
100
90
|
return m[ 2 ][ 3 ] == - 1.0;
|
|
@@ -68,7 +68,7 @@ IncidentLight directLight;
|
|
|
68
68
|
|
|
69
69
|
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
|
|
70
70
|
pointLightShadow = pointLightShadows[ i ];
|
|
71
|
-
directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
|
|
71
|
+
directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
|
|
72
72
|
#endif
|
|
73
73
|
|
|
74
74
|
RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
|
|
@@ -116,7 +116,7 @@ IncidentLight directLight;
|
|
|
116
116
|
|
|
117
117
|
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
|
|
118
118
|
spotLightShadow = spotLightShadows[ i ];
|
|
119
|
-
directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
|
|
119
|
+
directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
|
|
120
120
|
#endif
|
|
121
121
|
|
|
122
122
|
RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
|
|
@@ -142,7 +142,7 @@ IncidentLight directLight;
|
|
|
142
142
|
|
|
143
143
|
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
|
|
144
144
|
directionalLightShadow = directionalLightShadows[ i ];
|
|
145
|
-
directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
|
|
145
|
+
directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
|
|
146
146
|
#endif
|
|
147
147
|
|
|
148
148
|
RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
|
|
@@ -9,36 +9,68 @@ vec3 unpackRGBToNormal( const in vec3 rgb ) {
|
|
|
9
9
|
|
|
10
10
|
const float PackUpscale = 256. / 255.; // fraction -> 0..1 (including 1)
|
|
11
11
|
const float UnpackDownscale = 255. / 256.; // 0..1 -> fraction (excluding 1)
|
|
12
|
+
const float ShiftRight8 = 1. / 256.;
|
|
13
|
+
const float Inv255 = 1. / 255.;
|
|
12
14
|
|
|
13
|
-
const
|
|
14
|
-
const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );
|
|
15
|
+
const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );
|
|
15
16
|
|
|
16
|
-
const
|
|
17
|
+
const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );
|
|
18
|
+
const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );
|
|
19
|
+
const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );
|
|
17
20
|
|
|
18
21
|
vec4 packDepthToRGBA( const in float v ) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
if( v <= 0.0 )
|
|
23
|
+
return vec4( 0., 0., 0., 0. );
|
|
24
|
+
if( v >= 1.0 )
|
|
25
|
+
return vec4( 1., 1., 1., 1. );
|
|
26
|
+
float vuf;
|
|
27
|
+
float af = modf( v * PackFactors.a, vuf );
|
|
28
|
+
float bf = modf( vuf * ShiftRight8, vuf );
|
|
29
|
+
float gf = modf( vuf * ShiftRight8, vuf );
|
|
30
|
+
return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
vec3 packDepthToRGB( const in float v ) {
|
|
34
|
+
if( v <= 0.0 )
|
|
35
|
+
return vec3( 0., 0., 0. );
|
|
36
|
+
if( v >= 1.0 )
|
|
37
|
+
return vec3( 1., 1., 1. );
|
|
38
|
+
float vuf;
|
|
39
|
+
float bf = modf( v * PackFactors.b, vuf );
|
|
40
|
+
float gf = modf( vuf * ShiftRight8, vuf );
|
|
41
|
+
// the 0.9999 tweak is unimportant, very tiny empirical improvement
|
|
42
|
+
// return vec3( vuf * Inv255, gf * PackUpscale, bf * 0.9999 );
|
|
43
|
+
return vec3( vuf * Inv255, gf * PackUpscale, bf );
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
vec2 packDepthToRG( const in float v ) {
|
|
47
|
+
if( v <= 0.0 )
|
|
48
|
+
return vec2( 0., 0. );
|
|
49
|
+
if( v >= 1.0 )
|
|
50
|
+
return vec2( 1., 1. );
|
|
51
|
+
float vuf;
|
|
52
|
+
float gf = modf( v * 256., vuf );
|
|
53
|
+
return vec2( vuf * Inv255, gf );
|
|
22
54
|
}
|
|
23
55
|
|
|
24
56
|
float unpackRGBAToDepth( const in vec4 v ) {
|
|
25
|
-
return dot( v,
|
|
57
|
+
return dot( v, UnpackFactors4 );
|
|
26
58
|
}
|
|
27
59
|
|
|
28
|
-
|
|
29
|
-
return
|
|
60
|
+
float unpackRGBToDepth( const in vec3 v ) {
|
|
61
|
+
return dot( v, UnpackFactors3 );
|
|
30
62
|
}
|
|
31
63
|
|
|
32
|
-
float unpackRGToDepth( const in
|
|
33
|
-
return
|
|
64
|
+
float unpackRGToDepth( const in vec2 v ) {
|
|
65
|
+
return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;
|
|
34
66
|
}
|
|
35
67
|
|
|
36
|
-
vec4 pack2HalfToRGBA( vec2 v ) {
|
|
68
|
+
vec4 pack2HalfToRGBA( const in vec2 v ) {
|
|
37
69
|
vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );
|
|
38
70
|
return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );
|
|
39
71
|
}
|
|
40
72
|
|
|
41
|
-
vec2 unpackRGBATo2Half( vec4 v ) {
|
|
73
|
+
vec2 unpackRGBATo2Half( const in vec4 v ) {
|
|
42
74
|
return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );
|
|
43
75
|
}
|
|
44
76
|
|
|
@@ -19,6 +19,7 @@ export default /* glsl */`
|
|
|
19
19
|
varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
|
|
20
20
|
|
|
21
21
|
struct DirectionalLightShadow {
|
|
22
|
+
float shadowIntensity;
|
|
22
23
|
float shadowBias;
|
|
23
24
|
float shadowNormalBias;
|
|
24
25
|
float shadowRadius;
|
|
@@ -34,6 +35,7 @@ export default /* glsl */`
|
|
|
34
35
|
uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];
|
|
35
36
|
|
|
36
37
|
struct SpotLightShadow {
|
|
38
|
+
float shadowIntensity;
|
|
37
39
|
float shadowBias;
|
|
38
40
|
float shadowNormalBias;
|
|
39
41
|
float shadowRadius;
|
|
@@ -50,6 +52,7 @@ export default /* glsl */`
|
|
|
50
52
|
varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
|
|
51
53
|
|
|
52
54
|
struct PointLightShadow {
|
|
55
|
+
float shadowIntensity;
|
|
53
56
|
float shadowBias;
|
|
54
57
|
float shadowNormalBias;
|
|
55
58
|
float shadowRadius;
|
|
@@ -103,7 +106,7 @@ export default /* glsl */`
|
|
|
103
106
|
|
|
104
107
|
}
|
|
105
108
|
|
|
106
|
-
float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
|
|
109
|
+
float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
|
|
107
110
|
|
|
108
111
|
float shadow = 1.0;
|
|
109
112
|
|
|
@@ -196,7 +199,7 @@ export default /* glsl */`
|
|
|
196
199
|
|
|
197
200
|
}
|
|
198
201
|
|
|
199
|
-
return shadow;
|
|
202
|
+
return mix( 1.0, shadow, shadowIntensity );
|
|
200
203
|
|
|
201
204
|
}
|
|
202
205
|
|
|
@@ -271,7 +274,7 @@ export default /* glsl */`
|
|
|
271
274
|
|
|
272
275
|
}
|
|
273
276
|
|
|
274
|
-
float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
|
|
277
|
+
float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
|
|
275
278
|
|
|
276
279
|
float shadow = 1.0;
|
|
277
280
|
|
|
@@ -316,7 +319,7 @@ export default /* glsl */`
|
|
|
316
319
|
|
|
317
320
|
}
|
|
318
321
|
|
|
319
|
-
return shadow;
|
|
322
|
+
return mix( 1.0, shadow, shadowIntensity );
|
|
320
323
|
|
|
321
324
|
}
|
|
322
325
|
|
|
@@ -15,6 +15,7 @@ export default /* glsl */`
|
|
|
15
15
|
varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
|
|
16
16
|
|
|
17
17
|
struct DirectionalLightShadow {
|
|
18
|
+
float shadowIntensity;
|
|
18
19
|
float shadowBias;
|
|
19
20
|
float shadowNormalBias;
|
|
20
21
|
float shadowRadius;
|
|
@@ -28,6 +29,7 @@ export default /* glsl */`
|
|
|
28
29
|
#if NUM_SPOT_LIGHT_SHADOWS > 0
|
|
29
30
|
|
|
30
31
|
struct SpotLightShadow {
|
|
32
|
+
float shadowIntensity;
|
|
31
33
|
float shadowBias;
|
|
32
34
|
float shadowNormalBias;
|
|
33
35
|
float shadowRadius;
|
|
@@ -44,6 +46,7 @@ export default /* glsl */`
|
|
|
44
46
|
varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
|
|
45
47
|
|
|
46
48
|
struct PointLightShadow {
|
|
49
|
+
float shadowIntensity;
|
|
47
50
|
float shadowBias;
|
|
48
51
|
float shadowNormalBias;
|
|
49
52
|
float shadowRadius;
|
|
@@ -13,7 +13,7 @@ float getShadowMask() {
|
|
|
13
13
|
for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
|
|
14
14
|
|
|
15
15
|
directionalLight = directionalLightShadows[ i ];
|
|
16
|
-
shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
|
|
16
|
+
shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
|
|
17
17
|
|
|
18
18
|
}
|
|
19
19
|
#pragma unroll_loop_end
|
|
@@ -28,7 +28,7 @@ float getShadowMask() {
|
|
|
28
28
|
for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
|
|
29
29
|
|
|
30
30
|
spotLight = spotLightShadows[ i ];
|
|
31
|
-
shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
|
|
31
|
+
shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
|
|
32
32
|
|
|
33
33
|
}
|
|
34
34
|
#pragma unroll_loop_end
|
|
@@ -43,7 +43,7 @@ float getShadowMask() {
|
|
|
43
43
|
for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
|
|
44
44
|
|
|
45
45
|
pointLight = pointLightShadows[ i ];
|
|
46
|
-
shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
|
|
46
|
+
shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
|
|
47
47
|
|
|
48
48
|
}
|
|
49
49
|
#pragma unroll_loop_end
|
|
@@ -22,9 +22,9 @@ vec3 ReinhardToneMapping( vec3 color ) {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// source: http://filmicworlds.com/blog/filmic-tonemapping-operators/
|
|
25
|
-
vec3
|
|
25
|
+
vec3 CineonToneMapping( vec3 color ) {
|
|
26
26
|
|
|
27
|
-
//
|
|
27
|
+
// filmic operator by Jim Hejl and Richard Burgess-Dawson
|
|
28
28
|
color *= toneMappingExposure;
|
|
29
29
|
color = max( vec3( 0.0 ), color - 0.004 );
|
|
30
30
|
return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );
|
|
@@ -91,6 +91,14 @@ void main() {
|
|
|
91
91
|
|
|
92
92
|
gl_FragColor = packDepthToRGBA( fragCoordZ );
|
|
93
93
|
|
|
94
|
+
#elif DEPTH_PACKING == 3202
|
|
95
|
+
|
|
96
|
+
gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );
|
|
97
|
+
|
|
98
|
+
#elif DEPTH_PACKING == 3203
|
|
99
|
+
|
|
100
|
+
gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );
|
|
101
|
+
|
|
94
102
|
#endif
|
|
95
103
|
|
|
96
104
|
}
|
|
@@ -130,6 +130,7 @@ const UniformsLib = {
|
|
|
130
130
|
} },
|
|
131
131
|
|
|
132
132
|
directionalLightShadows: { value: [], properties: {
|
|
133
|
+
shadowIntensity: 1,
|
|
133
134
|
shadowBias: {},
|
|
134
135
|
shadowNormalBias: {},
|
|
135
136
|
shadowRadius: {},
|
|
@@ -150,6 +151,7 @@ const UniformsLib = {
|
|
|
150
151
|
} },
|
|
151
152
|
|
|
152
153
|
spotLightShadows: { value: [], properties: {
|
|
154
|
+
shadowIntensity: 1,
|
|
153
155
|
shadowBias: {},
|
|
154
156
|
shadowNormalBias: {},
|
|
155
157
|
shadowRadius: {},
|
|
@@ -168,6 +170,7 @@ const UniformsLib = {
|
|
|
168
170
|
} },
|
|
169
171
|
|
|
170
172
|
pointLightShadows: { value: [], properties: {
|
|
173
|
+
shadowIntensity: 1,
|
|
171
174
|
shadowBias: {},
|
|
172
175
|
shadowNormalBias: {},
|
|
173
176
|
shadowRadius: {},
|
|
@@ -145,6 +145,8 @@ function WebGLAttributes( gl ) {
|
|
|
145
145
|
|
|
146
146
|
function update( attribute, bufferType ) {
|
|
147
147
|
|
|
148
|
+
if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
|
|
149
|
+
|
|
148
150
|
if ( attribute.isGLBufferAttribute ) {
|
|
149
151
|
|
|
150
152
|
const cached = buffers.get( attribute );
|
|
@@ -164,8 +166,6 @@ function WebGLAttributes( gl ) {
|
|
|
164
166
|
|
|
165
167
|
}
|
|
166
168
|
|
|
167
|
-
if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
|
|
168
|
-
|
|
169
169
|
const data = buffers.get( attribute );
|
|
170
170
|
|
|
171
171
|
if ( data === undefined ) {
|