super-three 0.164.0 → 0.167.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/README.md +3 -3
- package/build/three.cjs +1273 -503
- package/build/three.module.js +1269 -504
- package/build/three.module.min.js +1 -1
- package/build/three.webgpu.js +76086 -0
- package/build/three.webgpu.min.js +6 -0
- package/examples/jsm/Addons.js +2 -1
- package/examples/jsm/controls/TransformControls.js +1 -1
- package/examples/jsm/csm/CSMShader.js +4 -4
- package/examples/jsm/environments/RoomEnvironment.js +1 -5
- package/examples/jsm/exporters/GLTFExporter.js +8 -4
- package/examples/jsm/exporters/USDZExporter.js +6 -4
- package/examples/jsm/geometries/TeapotGeometry.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +75 -61
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
- package/examples/jsm/lines/LineMaterial.js +1 -15
- package/examples/jsm/lines/LineSegments2.js +15 -0
- package/examples/jsm/lines/Wireframe.js +16 -1
- package/examples/jsm/lines/webgpu/Line2.js +20 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
- package/examples/jsm/loaders/DRACOLoader.js +1 -1
- package/examples/jsm/loaders/FBXLoader.js +47 -58
- package/examples/jsm/loaders/GLTFLoader.js +12 -4
- package/examples/jsm/loaders/LDrawLoader.js +3 -2
- package/examples/jsm/loaders/MMDLoader.js +31 -12
- package/examples/jsm/loaders/MaterialXLoader.js +2 -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/CurveModifier.js +11 -9
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
- package/examples/jsm/objects/InstancedPoints.js +2 -2
- package/examples/jsm/objects/Lensflare.js +2 -2
- package/examples/jsm/postprocessing/RenderPass.js +1 -1
- package/examples/jsm/postprocessing/RenderTransitionPass.js +13 -38
- package/examples/jsm/postprocessing/SSAOPass.js +6 -9
- package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
- package/examples/jsm/renderers/CSS2DRenderer.js +25 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +24 -3
- 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/transpiler/GLSLDecoder.js +46 -4
- package/examples/jsm/transpiler/TSLEncoder.js +17 -15
- package/examples/jsm/utils/BufferGeometryUtils.js +18 -16
- package/examples/jsm/utils/GPUStatsPanel.js +2 -0
- package/examples/jsm/utils/SortUtils.js +8 -5
- package/package.json +9 -7
- package/src/Three.WebGPU.js +194 -0
- package/src/Three.js +2 -0
- package/src/animation/tracks/BooleanKeyframeTrack.js +10 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -2
- package/src/animation/tracks/StringKeyframeTrack.js +10 -1
- package/src/constants.js +4 -1
- package/src/core/Object3D.js +24 -22
- package/src/core/Raycaster.js +6 -2
- 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/FileLoader.js +4 -0
- package/src/loaders/LoaderUtils.js +3 -1
- package/src/loaders/ObjectLoader.js +34 -2
- package/src/materials/Material.js +13 -4
- 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/{examples/jsm → src}/nodes/Nodes.js +39 -20
- package/{examples/jsm → src}/nodes/accessors/BatchNode.js +28 -10
- package/src/nodes/accessors/BitangentNode.js +13 -0
- package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +36 -1
- package/{examples/jsm → src}/nodes/accessors/BufferNode.js +6 -0
- package/src/nodes/accessors/CameraNode.js +19 -0
- package/{examples/jsm → src}/nodes/accessors/CubeTextureNode.js +22 -5
- package/src/nodes/accessors/InstanceNode.js +140 -0
- package/{examples/jsm → src}/nodes/accessors/MaterialNode.js +24 -2
- package/{examples/jsm → src}/nodes/accessors/ModelNode.js +4 -0
- package/{examples/jsm → src}/nodes/accessors/MorphNode.js +24 -20
- package/src/nodes/accessors/NormalNode.js +14 -0
- package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/PositionNode.js +10 -0
- package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +7 -1
- package/src/nodes/accessors/ReflectVectorNode.js +10 -0
- package/{examples/jsm → src}/nodes/accessors/StorageBufferNode.js +50 -1
- package/{examples/jsm/nodes/accessors/TextureStoreNode.js → src/nodes/accessors/StorageTextureNode.js} +28 -6
- package/src/nodes/accessors/TangentNode.js +23 -0
- package/src/nodes/accessors/Texture3DNode.js +100 -0
- package/{examples/jsm → src}/nodes/accessors/TextureNode.js +55 -18
- package/src/nodes/accessors/UVNode.js +3 -0
- package/{examples/jsm → src}/nodes/accessors/UniformsNode.js +7 -1
- package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +2 -1
- package/{examples/jsm → src}/nodes/code/ScriptableNode.js +14 -0
- package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +2 -1
- package/{examples/jsm → src}/nodes/core/AttributeNode.js +34 -8
- package/{examples/jsm → src}/nodes/core/CacheNode.js +7 -10
- package/{examples/jsm → src}/nodes/core/ContextNode.js +6 -0
- package/{examples/jsm → src}/nodes/core/IndexNode.js +6 -0
- package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
- package/src/nodes/core/MRTNode.js +76 -0
- package/{examples/jsm → src}/nodes/core/Node.js +33 -14
- package/{examples/jsm → src}/nodes/core/NodeBuilder.js +194 -45
- 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/NodeKeywords.js +1 -1
- package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
- package/{examples/jsm → src}/nodes/core/NodeUtils.js +6 -1
- package/{examples/jsm → src}/nodes/core/OutputStructNode.js +1 -5
- package/{examples/jsm → src}/nodes/core/PropertyNode.js +2 -0
- package/{examples/jsm → src}/nodes/core/TempNode.js +2 -2
- package/{examples/jsm → src}/nodes/core/UniformGroupNode.js +20 -0
- package/{examples/jsm → src}/nodes/core/UniformNode.js +10 -1
- package/{examples/jsm → src}/nodes/core/VarNode.js +2 -6
- package/src/nodes/core/VaryingNode.js +104 -0
- package/{examples/jsm → src}/nodes/display/AfterImageNode.js +24 -20
- package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +18 -21
- package/src/nodes/display/BloomNode.js +333 -0
- package/{examples/jsm → src}/nodes/display/ColorAdjustmentNode.js +7 -2
- package/{examples/jsm → src}/nodes/display/ColorSpaceNode.js +1 -1
- package/src/nodes/display/DenoiseNode.js +198 -0
- package/src/nodes/display/DepthOfFieldNode.js +119 -0
- package/src/nodes/display/DotScreenNode.js +75 -0
- package/src/nodes/display/FXAANode.js +327 -0
- package/src/nodes/display/FilmNode.js +52 -0
- package/{examples/jsm → src}/nodes/display/FrontFacingNode.js +2 -1
- package/src/nodes/display/GTAONode.js +324 -0
- package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +34 -17
- package/src/nodes/display/Lut3DNode.js +53 -0
- package/{examples/jsm → src}/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PassNode.js +291 -0
- package/src/nodes/display/PixelationPassNode.js +201 -0
- package/src/nodes/display/RGBShiftNode.js +49 -0
- package/src/nodes/display/RenderOutputNode.js +56 -0
- package/src/nodes/display/SobelOperatorNode.js +121 -0
- package/{examples/jsm → src}/nodes/display/ToneMappingNode.js +44 -5
- package/src/nodes/display/TransitionNode.js +76 -0
- package/{examples/jsm → src}/nodes/display/ViewportDepthNode.js +39 -16
- package/{examples/jsm → src}/nodes/display/ViewportDepthTextureNode.js +2 -1
- package/{examples/jsm → src}/nodes/display/ViewportNode.js +3 -2
- package/{examples/jsm → src}/nodes/display/ViewportSharedTextureNode.js +2 -1
- package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +131 -0
- package/src/nodes/functions/BasicLightingModel.js +78 -0
- package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +5 -3
- package/{examples/jsm → src}/nodes/functions/PhysicalLightingModel.js +103 -18
- package/src/nodes/functions/ToonLightingModel.js +51 -0
- package/{examples/jsm → src}/nodes/geometry/RangeNode.js +19 -6
- package/{examples/jsm → src}/nodes/lighting/AONode.js +1 -4
- package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +333 -0
- package/src/nodes/lighting/BasicEnvironmentNode.js +26 -0
- package/src/nodes/lighting/BasicLightMapNode.js +29 -0
- package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +2 -3
- package/{examples/jsm → src}/nodes/lighting/EnvironmentNode.js +5 -4
- package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +2 -1
- package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +1 -1
- package/{examples/jsm → src}/nodes/lighting/LightingNode.js +2 -0
- package/{examples/jsm → src}/nodes/lighting/LightsNode.js +18 -3
- package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +2 -3
- package/src/nodes/lighting/RectAreaLightNode.js +97 -0
- package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +2 -3
- package/{examples/jsm → src}/nodes/loaders/NodeLoader.js +3 -1
- package/{examples/jsm → src}/nodes/loaders/NodeMaterialLoader.js +2 -1
- package/{examples/jsm → src}/nodes/loaders/NodeObjectLoader.js +2 -1
- package/{examples/jsm → src}/nodes/materials/InstancedPointsNodeMaterial.js +3 -3
- package/{examples/jsm → src}/nodes/materials/Line2NodeMaterial.js +4 -4
- package/{examples/jsm → src}/nodes/materials/LineBasicNodeMaterial.js +3 -3
- package/{examples/jsm → src}/nodes/materials/LineDashedNodeMaterial.js +4 -3
- package/{examples/jsm → src}/nodes/materials/Materials.js +3 -0
- package/src/nodes/materials/MeshBasicNodeMaterial.js +73 -0
- package/{examples/jsm → src}/nodes/materials/MeshLambertNodeMaterial.js +12 -3
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +53 -0
- package/{examples/jsm → src}/nodes/materials/MeshNormalNodeMaterial.js +5 -3
- package/{examples/jsm → src}/nodes/materials/MeshPhongNodeMaterial.js +11 -3
- package/{examples/jsm → src}/nodes/materials/MeshPhysicalNodeMaterial.js +26 -8
- package/{examples/jsm → src}/nodes/materials/MeshStandardNodeMaterial.js +14 -3
- package/src/nodes/materials/MeshToonNodeMaterial.js +34 -0
- package/{examples/jsm → src}/nodes/materials/NodeMaterial.js +97 -24
- package/{examples/jsm → src}/nodes/materials/PointsNodeMaterial.js +3 -3
- package/{examples/jsm → src}/nodes/materials/ShadowNodeMaterial.js +3 -3
- package/{examples/jsm → src}/nodes/materials/SpriteNodeMaterial.js +3 -3
- package/src/nodes/materials/VolumeNodeMaterial.js +106 -0
- package/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +9 -17
- package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +474 -577
- package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +2 -8
- package/{examples/jsm → src}/nodes/math/CondNode.js +13 -6
- package/{examples/jsm → src}/nodes/math/HashNode.js +2 -2
- package/{examples/jsm → src}/nodes/math/MathNode.js +14 -1
- package/{examples/jsm → src}/nodes/math/OperatorNode.js +6 -6
- package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
- package/{examples/jsm → src}/nodes/pmrem/PMREMNode.js +2 -1
- package/{examples/jsm → src}/nodes/shadernode/ShaderNode.js +57 -33
- package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +1 -1
- package/{examples/jsm → src}/nodes/utils/DiscardNode.js +1 -0
- package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +2 -0
- package/{examples/jsm → src}/nodes/utils/LoopNode.js +7 -6
- package/{examples/jsm → src}/nodes/utils/MatcapUVNode.js +1 -1
- package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +8 -2
- package/src/nodes/utils/RTTNode.js +130 -0
- package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +9 -1
- package/{examples/jsm → src}/nodes/utils/TimerNode.js +1 -1
- package/src/objects/BatchedMesh.js +232 -162
- package/src/objects/InstancedMesh.js +1 -1
- package/src/renderers/WebGLRenderer.js +312 -68
- package/{examples/jsm → src}/renderers/common/Attributes.js +4 -1
- package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
- package/{examples/jsm → src}/renderers/common/Background.js +9 -3
- package/src/renderers/common/BindGroup.js +16 -0
- package/{examples/jsm → src}/renderers/common/Bindings.js +54 -22
- package/src/renderers/common/ChainMap.js +59 -0
- package/{examples/jsm → src}/renderers/common/ClippingContext.js +8 -6
- package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
- package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +7 -1
- package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
- package/{examples/jsm → src}/renderers/common/Info.js +34 -6
- package/{examples/jsm → src}/renderers/common/Pipelines.js +2 -2
- package/src/renderers/common/PostProcessing.js +87 -0
- package/{examples/jsm/objects → src/renderers/common}/QuadMesh.js +6 -3
- package/src/renderers/common/RenderBundle.js +18 -0
- package/src/renderers/common/RenderBundles.js +38 -0
- package/{examples/jsm → src}/renderers/common/RenderContext.js +1 -1
- package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
- package/{examples/jsm → src}/renderers/common/RenderList.js +9 -0
- package/{examples/jsm → src}/renderers/common/RenderObject.js +50 -11
- package/{examples/jsm → src}/renderers/common/Renderer.js +220 -40
- package/{examples/jsm → src}/renderers/common/SampledTexture.js +2 -2
- 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 +6 -2
- package/{examples/jsm → src}/renderers/common/Uniform.js +10 -5
- package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
- package/{examples/jsm → src}/renderers/common/extras/PMREMGenerator.js +13 -12
- package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
- package/{examples/jsm → src}/renderers/common/nodes/NodeSampledTexture.js +19 -4
- package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +8 -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 +37 -16
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
- package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -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/lights_pars_begin.glsl.js +8 -22
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
- package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +10 -31
- package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
- 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/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/WebGLBackground.js +6 -0
- package/src/renderers/webgl/WebGLBufferRenderer.js +6 -19
- package/src/renderers/webgl/WebGLExtensions.js +3 -1
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +6 -18
- package/src/renderers/webgl/WebGLLights.js +15 -12
- package/src/renderers/webgl/WebGLMaterials.js +1 -5
- package/src/renderers/webgl/WebGLMorphtargets.js +1 -2
- package/src/renderers/webgl/WebGLProgram.js +28 -31
- package/src/renderers/webgl/WebGLPrograms.js +15 -15
- package/src/renderers/webgl/WebGLRenderStates.js +2 -2
- package/src/renderers/webgl/WebGLTextures.js +100 -70
- 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 +156 -54
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +188 -41
- 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 +1 -1
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +126 -7
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +1 -1
- package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +212 -78
- package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +2 -2
- package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +245 -49
- 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 +30 -14
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +9 -1
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +74 -24
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +101 -25
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +24 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +9 -3
- package/src/renderers/webxr/WebXRManager.js +12 -2
- package/src/textures/CompressedArrayTexture.js +14 -0
- package/src/textures/DataArrayTexture.js +14 -0
- package/src/textures/DepthTexture.js +1 -3
- package/src/utils.js +30 -1
- package/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
- package/examples/jsm/nodes/accessors/CameraNode.js +0 -119
- package/examples/jsm/nodes/accessors/InstanceNode.js +0 -94
- package/examples/jsm/nodes/accessors/NormalNode.js +0 -106
- package/examples/jsm/nodes/accessors/PositionNode.js +0 -104
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
- package/examples/jsm/nodes/accessors/TangentNode.js +0 -109
- package/examples/jsm/nodes/accessors/UVNode.js +0 -47
- package/examples/jsm/nodes/core/NodeCache.js +0 -26
- package/examples/jsm/nodes/core/VaryingNode.js +0 -65
- package/examples/jsm/nodes/display/PassNode.js +0 -199
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -255
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
- package/examples/jsm/renderers/common/ChainMap.js +0 -89
- 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 → src}/nodes/accessors/AccessorsUtils.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/InstancedPointsMaterialNode.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/ModelViewProjectionNode.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/PointUVNode.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/RendererReferenceNode.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/SceneNode.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/SkinningNode.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/TextureBicubicNode.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/TextureSizeNode.js +0 -0
- /package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +0 -0
- /package/{examples/jsm → src}/nodes/code/CodeNode.js +0 -0
- /package/{examples/jsm → src}/nodes/code/ExpressionNode.js +0 -0
- /package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +0 -0
- /package/{examples/jsm → src}/nodes/code/FunctionNode.js +0 -0
- /package/{examples/jsm → src}/nodes/core/AssignNode.js +0 -0
- /package/{examples/jsm → src}/nodes/core/BypassNode.js +0 -0
- /package/{examples/jsm → src}/nodes/core/ConstNode.js +0 -0
- /package/{examples/jsm → src}/nodes/core/InputNode.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/ParameterNode.js +0 -0
- /package/{examples/jsm → src}/nodes/core/StackNode.js +0 -0
- /package/{examples/jsm → src}/nodes/core/StructTypeNode.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/display/BlendModeNode.js +0 -0
- /package/{examples/jsm → src}/nodes/display/BumpMapNode.js +0 -0
- /package/{examples/jsm → src}/nodes/display/PosterizeNode.js +0 -0
- /package/{examples/jsm → src}/nodes/fog/FogExp2Node.js +0 -0
- /package/{examples/jsm → src}/nodes/fog/FogNode.js +0 -0
- /package/{examples/jsm → src}/nodes/fog/FogRangeNode.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_GGX.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX_Anisotropic.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/ShadowMaskModel.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/material/getGeometryRoughness.js +0 -0
- /package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +0 -0
- /package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +0 -0
- /package/{examples/jsm → src}/nodes/lighting/IrradianceNode.js +0 -0
- /package/{examples/jsm → src}/nodes/lighting/LightNode.js +0 -0
- /package/{examples/jsm → src}/nodes/lighting/LightUtils.js +0 -0
- /package/{examples/jsm → src}/nodes/lighting/LightingContextNode.js +0 -0
- /package/{examples/jsm → src}/nodes/materials/MeshSSSNodeMaterial.js +0 -0
- /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
- /package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +0 -0
- /package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -0
- /package/{examples/jsm → src}/nodes/math/TriNoise3D.js +0 -0
- /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
- /package/{examples/jsm → src}/nodes/pmrem/PMREMUtils.js +0 -0
- /package/{examples/jsm → src}/nodes/procedural/CheckerNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/ConvertNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/EquirectUVNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/JoinNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/OscNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/PackingNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/RemapNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/RotateNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/RotateUVNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/SetNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/SplitNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +0 -0
- /package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.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/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/ProgrammableStage.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
- /package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +0 -0
|
@@ -249,11 +249,7 @@ function WebGLMaterials( renderer, properties ) {
|
|
|
249
249
|
if ( material.lightMap ) {
|
|
250
250
|
|
|
251
251
|
uniforms.lightMap.value = material.lightMap;
|
|
252
|
-
|
|
253
|
-
// artist-friendly light intensity scaling factor
|
|
254
|
-
const scaleFactor = ( renderer._useLegacyLights === true ) ? Math.PI : 1;
|
|
255
|
-
|
|
256
|
-
uniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;
|
|
252
|
+
uniforms.lightMapIntensity.value = material.lightMapIntensity;
|
|
257
253
|
|
|
258
254
|
refreshTransformUniform( material.lightMap, uniforms.lightMapTransform );
|
|
259
255
|
|
|
@@ -12,8 +12,7 @@ function WebGLMorphtargets( gl, capabilities, textures ) {
|
|
|
12
12
|
|
|
13
13
|
const objectInfluences = object.morphTargetInfluences;
|
|
14
14
|
|
|
15
|
-
//
|
|
16
|
-
// into an array of data textures. Each layer represents a single morph target.
|
|
15
|
+
// the following encodes morph targets into an array of data textures. Each layer represents a single morph target.
|
|
17
16
|
|
|
18
17
|
const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
|
|
19
18
|
const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
|
|
@@ -3,6 +3,7 @@ import { WebGLShader } from './WebGLShader.js';
|
|
|
3
3
|
import { ShaderChunk } from '../shaders/ShaderChunk.js';
|
|
4
4
|
import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, NeutralToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3, LinearSRGBColorSpace, SRGBColorSpace, LinearDisplayP3ColorSpace, DisplayP3ColorSpace, P3Primaries, Rec709Primaries } from '../../constants.js';
|
|
5
5
|
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
6
|
+
import { Vector3 } from '../../math/Vector3.js';
|
|
6
7
|
|
|
7
8
|
// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/
|
|
8
9
|
const COMPLETION_STATUS_KHR = 0x91B1;
|
|
@@ -142,6 +143,30 @@ function getToneMappingFunction( functionName, toneMapping ) {
|
|
|
142
143
|
|
|
143
144
|
}
|
|
144
145
|
|
|
146
|
+
const _v0 = /*@__PURE__*/ new Vector3();
|
|
147
|
+
|
|
148
|
+
function getLuminanceFunction() {
|
|
149
|
+
|
|
150
|
+
ColorManagement.getLuminanceCoefficients( _v0 );
|
|
151
|
+
|
|
152
|
+
const r = _v0.x.toFixed( 4 );
|
|
153
|
+
const g = _v0.y.toFixed( 4 );
|
|
154
|
+
const b = _v0.z.toFixed( 4 );
|
|
155
|
+
|
|
156
|
+
return [
|
|
157
|
+
|
|
158
|
+
'float luminance( const in vec3 rgb ) {',
|
|
159
|
+
|
|
160
|
+
` const vec3 weights = vec3( ${ r }, ${ g }, ${ b } );`,
|
|
161
|
+
|
|
162
|
+
' return dot( weights, rgb );',
|
|
163
|
+
|
|
164
|
+
'}'
|
|
165
|
+
|
|
166
|
+
].join( '\n' );
|
|
167
|
+
|
|
168
|
+
}
|
|
169
|
+
|
|
145
170
|
function generateVertexExtensions( parameters ) {
|
|
146
171
|
|
|
147
172
|
const chunks = [
|
|
@@ -524,6 +549,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
524
549
|
|
|
525
550
|
parameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',
|
|
526
551
|
parameters.batching ? '#define USE_BATCHING' : '',
|
|
552
|
+
parameters.batchingColor ? '#define USE_BATCHING_COLOR' : '',
|
|
527
553
|
parameters.instancing ? '#define USE_INSTANCING' : '',
|
|
528
554
|
parameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',
|
|
529
555
|
parameters.instancingMorph ? '#define USE_INSTANCING_MORPH' : '',
|
|
@@ -620,7 +646,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
620
646
|
parameters.morphTargets ? '#define USE_MORPHTARGETS' : '',
|
|
621
647
|
parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',
|
|
622
648
|
( parameters.morphColors ) ? '#define USE_MORPHCOLORS' : '',
|
|
623
|
-
( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE' : '',
|
|
624
649
|
( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',
|
|
625
650
|
( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',
|
|
626
651
|
parameters.doubleSided ? '#define DOUBLE_SIDED' : '',
|
|
@@ -633,8 +658,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
633
658
|
|
|
634
659
|
parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
|
|
635
660
|
|
|
636
|
-
parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
|
|
637
|
-
|
|
638
661
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
639
662
|
|
|
640
663
|
'uniform mat4 modelMatrix;',
|
|
@@ -701,31 +724,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
701
724
|
|
|
702
725
|
'#endif',
|
|
703
726
|
|
|
704
|
-
'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',
|
|
705
|
-
|
|
706
|
-
' attribute vec3 morphTarget0;',
|
|
707
|
-
' attribute vec3 morphTarget1;',
|
|
708
|
-
' attribute vec3 morphTarget2;',
|
|
709
|
-
' attribute vec3 morphTarget3;',
|
|
710
|
-
|
|
711
|
-
' #ifdef USE_MORPHNORMALS',
|
|
712
|
-
|
|
713
|
-
' attribute vec3 morphNormal0;',
|
|
714
|
-
' attribute vec3 morphNormal1;',
|
|
715
|
-
' attribute vec3 morphNormal2;',
|
|
716
|
-
' attribute vec3 morphNormal3;',
|
|
717
|
-
|
|
718
|
-
' #else',
|
|
719
|
-
|
|
720
|
-
' attribute vec3 morphTarget4;',
|
|
721
|
-
' attribute vec3 morphTarget5;',
|
|
722
|
-
' attribute vec3 morphTarget6;',
|
|
723
|
-
' attribute vec3 morphTarget7;',
|
|
724
|
-
|
|
725
|
-
' #endif',
|
|
726
|
-
|
|
727
|
-
'#endif',
|
|
728
|
-
|
|
729
727
|
'#ifdef USE_SKINNING',
|
|
730
728
|
|
|
731
729
|
' attribute vec4 skinIndex;',
|
|
@@ -801,7 +799,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
801
799
|
parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',
|
|
802
800
|
|
|
803
801
|
parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
|
|
804
|
-
parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',
|
|
802
|
+
parameters.vertexColors || parameters.instancingColor || parameters.batchingColor ? '#define USE_COLOR' : '',
|
|
805
803
|
parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
|
|
806
804
|
parameters.vertexUv1s ? '#define USE_UV1' : '',
|
|
807
805
|
parameters.vertexUv2s ? '#define USE_UV2' : '',
|
|
@@ -823,8 +821,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
823
821
|
|
|
824
822
|
parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
|
|
825
823
|
|
|
826
|
-
parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
|
|
827
|
-
|
|
828
824
|
parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
|
|
829
825
|
|
|
830
826
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
@@ -842,6 +838,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
842
838
|
|
|
843
839
|
ShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below
|
|
844
840
|
getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),
|
|
841
|
+
getLuminanceFunction(),
|
|
845
842
|
|
|
846
843
|
parameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',
|
|
847
844
|
|
|
@@ -194,6 +194,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
194
194
|
precision: precision,
|
|
195
195
|
|
|
196
196
|
batching: IS_BATCHEDMESH,
|
|
197
|
+
batchingColor: IS_BATCHEDMESH && object._colorsTexture !== null,
|
|
197
198
|
instancing: IS_INSTANCEDMESH,
|
|
198
199
|
instancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,
|
|
199
200
|
instancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null,
|
|
@@ -339,7 +340,6 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
339
340
|
shadowMapType: renderer.shadowMap.type,
|
|
340
341
|
|
|
341
342
|
toneMapping: toneMapping,
|
|
342
|
-
useLegacyLights: renderer._useLegacyLights,
|
|
343
343
|
|
|
344
344
|
decodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),
|
|
345
345
|
|
|
@@ -354,7 +354,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
354
354
|
index0AttributeName: material.index0AttributeName,
|
|
355
355
|
|
|
356
356
|
extensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ),
|
|
357
|
-
extensionMultiDraw: HAS_EXTENSIONS && material.extensions.multiDraw === true && extensions.has( 'WEBGL_multi_draw' ),
|
|
357
|
+
extensionMultiDraw: ( HAS_EXTENSIONS && material.extensions.multiDraw === true || IS_BATCHEDMESH ) && extensions.has( 'WEBGL_multi_draw' ),
|
|
358
358
|
|
|
359
359
|
rendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),
|
|
360
360
|
|
|
@@ -513,6 +513,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
513
513
|
_programLayers.enable( 19 );
|
|
514
514
|
if ( parameters.dispersion )
|
|
515
515
|
_programLayers.enable( 20 );
|
|
516
|
+
if ( parameters.batchingColor )
|
|
517
|
+
_programLayers.enable( 21 );
|
|
516
518
|
|
|
517
519
|
array.push( _programLayers.mask );
|
|
518
520
|
_programLayers.disableAll();
|
|
@@ -537,30 +539,28 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
537
539
|
_programLayers.enable( 8 );
|
|
538
540
|
if ( parameters.shadowMapEnabled )
|
|
539
541
|
_programLayers.enable( 9 );
|
|
540
|
-
if ( parameters.useLegacyLights )
|
|
541
|
-
_programLayers.enable( 10 );
|
|
542
542
|
if ( parameters.doubleSided )
|
|
543
|
-
_programLayers.enable(
|
|
543
|
+
_programLayers.enable( 10 );
|
|
544
544
|
if ( parameters.flipSided )
|
|
545
|
-
_programLayers.enable(
|
|
545
|
+
_programLayers.enable( 11 );
|
|
546
546
|
if ( parameters.useDepthPacking )
|
|
547
|
-
_programLayers.enable(
|
|
547
|
+
_programLayers.enable( 12 );
|
|
548
548
|
if ( parameters.dithering )
|
|
549
|
-
_programLayers.enable(
|
|
549
|
+
_programLayers.enable( 13 );
|
|
550
550
|
if ( parameters.transmission )
|
|
551
|
-
_programLayers.enable(
|
|
551
|
+
_programLayers.enable( 14 );
|
|
552
552
|
if ( parameters.sheen )
|
|
553
|
-
_programLayers.enable(
|
|
553
|
+
_programLayers.enable( 15 );
|
|
554
554
|
if ( parameters.opaque )
|
|
555
|
-
_programLayers.enable(
|
|
555
|
+
_programLayers.enable( 16 );
|
|
556
556
|
if ( parameters.pointsUvs )
|
|
557
|
-
_programLayers.enable(
|
|
557
|
+
_programLayers.enable( 17 );
|
|
558
558
|
if ( parameters.decodeVideoTexture )
|
|
559
|
-
_programLayers.enable(
|
|
559
|
+
_programLayers.enable( 18 );
|
|
560
560
|
if ( parameters.alphaToCoverage )
|
|
561
|
-
_programLayers.enable(
|
|
561
|
+
_programLayers.enable( 19 );
|
|
562
562
|
if ( parameters.numMultiviewViews )
|
|
563
|
-
_programLayers.enable(
|
|
563
|
+
_programLayers.enable( 20 );
|
|
564
564
|
|
|
565
565
|
array.push( _programLayers.mask );
|
|
566
566
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, RGBAFormat, DepthFormat, DepthStencilFormat, UnsignedIntType,
|
|
1
|
+
import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, RGBAFormat, DepthFormat, DepthStencilFormat, UnsignedIntType, FloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, UnsignedByteType, NoColorSpace, LinearSRGBColorSpace, NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, SRGBTransfer, LinearTransfer, UnsignedShortType, UnsignedInt248Type } from '../../constants.js';
|
|
2
2
|
import { createElementNS } from '../../utils.js';
|
|
3
3
|
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
4
4
|
import { Vector2 } from '../../math/Vector2.js';
|
|
5
|
+
import { getByteLength } from '../../extras/TextureUtils.js';
|
|
5
6
|
|
|
6
7
|
function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {
|
|
7
8
|
|
|
@@ -200,6 +201,48 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
200
201
|
|
|
201
202
|
}
|
|
202
203
|
|
|
204
|
+
function getInternalDepthFormat( useStencil, depthType ) {
|
|
205
|
+
|
|
206
|
+
let glInternalFormat;
|
|
207
|
+
if ( useStencil ) {
|
|
208
|
+
|
|
209
|
+
if ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) {
|
|
210
|
+
|
|
211
|
+
glInternalFormat = _gl.DEPTH24_STENCIL8;
|
|
212
|
+
|
|
213
|
+
} else if ( depthType === FloatType ) {
|
|
214
|
+
|
|
215
|
+
glInternalFormat = _gl.DEPTH32F_STENCIL8;
|
|
216
|
+
|
|
217
|
+
} else if ( depthType === UnsignedShortType ) {
|
|
218
|
+
|
|
219
|
+
glInternalFormat = _gl.DEPTH24_STENCIL8;
|
|
220
|
+
console.warn( 'DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.' );
|
|
221
|
+
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
} else {
|
|
225
|
+
|
|
226
|
+
if ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) {
|
|
227
|
+
|
|
228
|
+
glInternalFormat = _gl.DEPTH_COMPONENT24;
|
|
229
|
+
|
|
230
|
+
} else if ( depthType === FloatType ) {
|
|
231
|
+
|
|
232
|
+
glInternalFormat = _gl.DEPTH_COMPONENT32F;
|
|
233
|
+
|
|
234
|
+
} else if ( depthType === UnsignedShortType ) {
|
|
235
|
+
|
|
236
|
+
glInternalFormat = _gl.DEPTH_COMPONENT16;
|
|
237
|
+
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
return glInternalFormat;
|
|
243
|
+
|
|
244
|
+
}
|
|
245
|
+
|
|
203
246
|
function getMipLevels( texture, image ) {
|
|
204
247
|
|
|
205
248
|
if ( textureNeedsGenerateMipmaps( texture ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {
|
|
@@ -754,23 +797,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
754
797
|
|
|
755
798
|
if ( texture.isDepthTexture ) {
|
|
756
799
|
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
glInternalFormat = _gl.DEPTH_COMPONENT16;
|
|
760
|
-
|
|
761
|
-
if ( texture.type === FloatType ) {
|
|
762
|
-
|
|
763
|
-
glInternalFormat = _gl.DEPTH_COMPONENT32F;
|
|
764
|
-
|
|
765
|
-
} else if ( texture.type === UnsignedIntType ) {
|
|
766
|
-
|
|
767
|
-
glInternalFormat = _gl.DEPTH_COMPONENT24;
|
|
768
|
-
|
|
769
|
-
} else if ( texture.type === UnsignedInt248Type ) {
|
|
770
|
-
|
|
771
|
-
glInternalFormat = _gl.DEPTH24_STENCIL8;
|
|
772
|
-
|
|
773
|
-
}
|
|
800
|
+
glInternalFormat = getInternalDepthFormat( texture.format === DepthStencilFormat, texture.type );
|
|
774
801
|
|
|
775
802
|
//
|
|
776
803
|
|
|
@@ -870,7 +897,27 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
870
897
|
|
|
871
898
|
if ( dataReady ) {
|
|
872
899
|
|
|
873
|
-
|
|
900
|
+
if ( texture.layerUpdates.size > 0 ) {
|
|
901
|
+
|
|
902
|
+
const layerByteLength = getByteLength( mipmap.width, mipmap.height, texture.format, texture.type );
|
|
903
|
+
|
|
904
|
+
for ( const layerIndex of texture.layerUpdates ) {
|
|
905
|
+
|
|
906
|
+
const layerData = mipmap.data.subarray(
|
|
907
|
+
layerIndex * layerByteLength / mipmap.data.BYTES_PER_ELEMENT,
|
|
908
|
+
( layerIndex + 1 ) * layerByteLength / mipmap.data.BYTES_PER_ELEMENT
|
|
909
|
+
);
|
|
910
|
+
state.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, layerIndex, mipmap.width, mipmap.height, 1, glFormat, layerData, 0, 0 );
|
|
911
|
+
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
texture.clearLayerUpdates();
|
|
915
|
+
|
|
916
|
+
} else {
|
|
917
|
+
|
|
918
|
+
state.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );
|
|
919
|
+
|
|
920
|
+
}
|
|
874
921
|
|
|
875
922
|
}
|
|
876
923
|
|
|
@@ -976,7 +1023,27 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
976
1023
|
|
|
977
1024
|
if ( dataReady ) {
|
|
978
1025
|
|
|
979
|
-
|
|
1026
|
+
if ( texture.layerUpdates.size > 0 ) {
|
|
1027
|
+
|
|
1028
|
+
const layerByteLength = getByteLength( image.width, image.height, texture.format, texture.type );
|
|
1029
|
+
|
|
1030
|
+
for ( const layerIndex of texture.layerUpdates ) {
|
|
1031
|
+
|
|
1032
|
+
const layerData = image.data.subarray(
|
|
1033
|
+
layerIndex * layerByteLength / image.data.BYTES_PER_ELEMENT,
|
|
1034
|
+
( layerIndex + 1 ) * layerByteLength / image.data.BYTES_PER_ELEMENT
|
|
1035
|
+
);
|
|
1036
|
+
state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, layerIndex, image.width, image.height, 1, glFormat, glType, layerData );
|
|
1037
|
+
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
texture.clearLayerUpdates();
|
|
1041
|
+
|
|
1042
|
+
} else {
|
|
1043
|
+
|
|
1044
|
+
state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );
|
|
1045
|
+
|
|
1046
|
+
}
|
|
980
1047
|
|
|
981
1048
|
}
|
|
982
1049
|
|
|
@@ -1420,7 +1487,6 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1420
1487
|
|
|
1421
1488
|
}
|
|
1422
1489
|
|
|
1423
|
-
|
|
1424
1490
|
// Setup storage for internal depth/stencil buffers and bind to correct framebuffer
|
|
1425
1491
|
function setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {
|
|
1426
1492
|
|
|
@@ -1480,66 +1546,30 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1480
1546
|
|
|
1481
1547
|
} else if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {
|
|
1482
1548
|
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
if ( depthTexture && depthTexture.isDepthTexture ) {
|
|
1490
|
-
|
|
1491
|
-
if ( depthTexture.type === FloatType ) {
|
|
1492
|
-
|
|
1493
|
-
glInternalFormat = _gl.DEPTH_COMPONENT32F;
|
|
1494
|
-
|
|
1495
|
-
} else if ( depthTexture.type === UnsignedIntType ) {
|
|
1496
|
-
|
|
1497
|
-
glInternalFormat = _gl.DEPTH_COMPONENT24;
|
|
1498
|
-
|
|
1499
|
-
}
|
|
1500
|
-
|
|
1501
|
-
}
|
|
1502
|
-
|
|
1503
|
-
const samples = getRenderTargetSamples( renderTarget );
|
|
1504
|
-
|
|
1505
|
-
if ( useMultisampledRTT( renderTarget ) ) {
|
|
1506
|
-
|
|
1507
|
-
multisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
|
|
1508
|
-
|
|
1509
|
-
} else {
|
|
1510
|
-
|
|
1511
|
-
_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
|
|
1512
|
-
|
|
1513
|
-
}
|
|
1514
|
-
|
|
1515
|
-
} else {
|
|
1516
|
-
|
|
1517
|
-
_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );
|
|
1518
|
-
|
|
1519
|
-
}
|
|
1520
|
-
|
|
1521
|
-
_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );
|
|
1522
|
-
|
|
1523
|
-
} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {
|
|
1549
|
+
// retrieve the depth attachment types
|
|
1550
|
+
const depthTexture = renderTarget.depthTexture;
|
|
1551
|
+
const depthType = depthTexture && depthTexture.isDepthTexture ? depthTexture.type : null;
|
|
1552
|
+
const glInternalFormat = getInternalDepthFormat( renderTarget.stencilBuffer, depthType );
|
|
1553
|
+
const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;
|
|
1524
1554
|
|
|
1555
|
+
// set up the attachment
|
|
1525
1556
|
const samples = getRenderTargetSamples( renderTarget );
|
|
1557
|
+
const isUseMultisampledRTT = useMultisampledRTT( renderTarget );
|
|
1558
|
+
if ( isUseMultisampledRTT ) {
|
|
1526
1559
|
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );
|
|
1560
|
+
multisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
|
|
1530
1561
|
|
|
1531
|
-
} else if (
|
|
1562
|
+
} else if ( isMultisample ) {
|
|
1532
1563
|
|
|
1533
|
-
|
|
1564
|
+
_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
|
|
1534
1565
|
|
|
1535
1566
|
} else {
|
|
1536
1567
|
|
|
1537
|
-
_gl.renderbufferStorage( _gl.RENDERBUFFER,
|
|
1568
|
+
_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );
|
|
1538
1569
|
|
|
1539
1570
|
}
|
|
1540
1571
|
|
|
1541
|
-
|
|
1542
|
-
_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );
|
|
1572
|
+
_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );
|
|
1543
1573
|
|
|
1544
1574
|
} else {
|
|
1545
1575
|
|
|
@@ -51,7 +51,6 @@ import { LessEqualCompare } from '../../constants.js';
|
|
|
51
51
|
const emptyTexture = /*@__PURE__*/ new Texture();
|
|
52
52
|
|
|
53
53
|
const emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );
|
|
54
|
-
emptyShadowTexture.compareFunction = LessEqualCompare;
|
|
55
54
|
|
|
56
55
|
const emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();
|
|
57
56
|
const empty3dTexture = /*@__PURE__*/ new Data3DTexture();
|
|
@@ -569,7 +568,18 @@ function setValueT1( gl, v, textures ) {
|
|
|
569
568
|
|
|
570
569
|
}
|
|
571
570
|
|
|
572
|
-
|
|
571
|
+
let emptyTexture2D;
|
|
572
|
+
|
|
573
|
+
if ( this.type === gl.SAMPLER_2D_SHADOW ) {
|
|
574
|
+
|
|
575
|
+
emptyShadowTexture.compareFunction = LessEqualCompare; // #28670
|
|
576
|
+
emptyTexture2D = emptyShadowTexture;
|
|
577
|
+
|
|
578
|
+
} else {
|
|
579
|
+
|
|
580
|
+
emptyTexture2D = emptyTexture;
|
|
581
|
+
|
|
582
|
+
}
|
|
573
583
|
|
|
574
584
|
textures.setTexture2D( v || emptyTexture2D, unit );
|
|
575
585
|
|
|
@@ -240,27 +240,27 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) {
|
|
|
240
240
|
|
|
241
241
|
const info = getUniformSize( value );
|
|
242
242
|
|
|
243
|
-
//
|
|
244
|
-
const
|
|
243
|
+
const chunkOffset = offset % chunkSize; // offset in the current chunk
|
|
244
|
+
const chunkPadding = chunkOffset % info.boundary; // required padding to match boundary
|
|
245
|
+
const chunkStart = chunkOffset + chunkPadding; // the start position in the current chunk for the data
|
|
246
|
+
|
|
247
|
+
offset += chunkPadding;
|
|
245
248
|
|
|
246
249
|
// Check for chunk overflow
|
|
247
|
-
if (
|
|
250
|
+
if ( chunkStart !== 0 && ( chunkSize - chunkStart ) < info.storage ) {
|
|
248
251
|
|
|
249
252
|
// Add padding and adjust offset
|
|
250
|
-
offset += ( chunkSize -
|
|
253
|
+
offset += ( chunkSize - chunkStart );
|
|
251
254
|
|
|
252
255
|
}
|
|
253
256
|
|
|
254
257
|
// the following two properties will be used for partial buffer updates
|
|
255
|
-
|
|
256
258
|
uniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );
|
|
257
259
|
uniform.__offset = offset;
|
|
258
260
|
|
|
259
|
-
|
|
260
261
|
// Update the global offset
|
|
261
262
|
offset += info.storage;
|
|
262
263
|
|
|
263
|
-
|
|
264
264
|
}
|
|
265
265
|
|
|
266
266
|
}
|