super-three 0.184.0 → 0.185.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +1260 -927
- package/build/three.core.js +1104 -829
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +156 -98
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +11 -4
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +7538 -3367
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +7538 -3366
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +3 -0
- package/examples/jsm/controls/ArcballControls.js +6 -2
- package/examples/jsm/controls/FirstPersonControls.js +79 -42
- package/examples/jsm/controls/TransformControls.js +68 -15
- package/examples/jsm/csm/CSMFrustum.js +31 -6
- package/examples/jsm/csm/CSMShadowNode.js +4 -1
- package/examples/jsm/effects/AsciiEffect.js +14 -1
- package/examples/jsm/exporters/DRACOExporter.js +27 -6
- package/examples/jsm/exporters/GLTFExporter.js +114 -12
- package/examples/jsm/exporters/PLYExporter.js +286 -73
- package/examples/jsm/exporters/USDZExporter.js +347 -112
- package/examples/jsm/generators/CityGenerator.js +346 -0
- package/examples/jsm/generators/ForestGenerator.js +347 -0
- package/examples/jsm/generators/TerrainGenerator.js +504 -0
- package/examples/jsm/generators/TreeGenerator.js +377 -0
- package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
- package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
- package/examples/jsm/geometries/LoftGeometry.js +355 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +1 -1
- package/examples/jsm/helpers/LightProbeHelper.js +5 -4
- package/examples/jsm/helpers/ViewHelper.js +16 -6
- package/examples/jsm/inspector/Inspector.js +53 -15
- package/examples/jsm/inspector/RendererInspector.js +152 -36
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +1 -1
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -1
- package/examples/jsm/inspector/tabs/Console.js +200 -18
- package/examples/jsm/inspector/tabs/Memory.js +8 -0
- package/examples/jsm/inspector/tabs/Parameters.js +64 -4
- package/examples/jsm/inspector/tabs/Performance.js +21 -6
- package/examples/jsm/inspector/tabs/Settings.js +51 -9
- package/examples/jsm/inspector/tabs/Timeline.js +178 -93
- package/examples/jsm/inspector/tabs/Viewer.js +628 -16
- package/examples/jsm/inspector/ui/Graph.js +162 -25
- package/examples/jsm/inspector/ui/Item.js +92 -13
- package/examples/jsm/inspector/ui/List.js +1 -1
- package/examples/jsm/inspector/ui/Profiler.js +90 -45
- package/examples/jsm/inspector/ui/Style.js +1788 -1401
- package/examples/jsm/inspector/ui/Tab.js +5 -3
- package/examples/jsm/inspector/ui/Values.js +71 -6
- package/examples/jsm/inspector/ui/utils.js +130 -10
- package/examples/jsm/libs/basis/README.md +0 -1
- package/examples/jsm/libs/demuxer_mp4.js +3 -3
- package/examples/jsm/libs/draco/README.md +0 -1
- package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
- package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
- package/examples/jsm/libs/mikktspace.module.js +34 -9
- package/examples/jsm/lighting/ClusteredLighting.js +55 -0
- package/examples/jsm/lighting/LightProbeGrid.js +106 -76
- package/examples/jsm/lines/LineMaterial.js +38 -15
- package/examples/jsm/lines/LineSegments2.js +8 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +46 -13
- package/examples/jsm/loaders/EXRLoader.js +27 -55
- package/examples/jsm/loaders/HDRLoader.js +6 -28
- package/examples/jsm/loaders/KTX2Loader.js +31 -12
- package/examples/jsm/loaders/LDrawLoader.js +8 -8
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +4 -0
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MaterialXLoader.js +31 -9
- package/examples/jsm/loaders/NRRDLoader.js +3 -3
- package/examples/jsm/loaders/PCDLoader.js +7 -7
- package/examples/jsm/loaders/PLYLoader.js +218 -55
- package/examples/jsm/loaders/SVGLoader.js +547 -495
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/USDLoader.js +33 -9
- package/examples/jsm/loaders/VRMLLoader.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +93 -20
- package/examples/jsm/loaders/usd/USDCParser.js +1 -1
- package/examples/jsm/loaders/usd/USDComposer.js +52 -19
- package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
- package/examples/jsm/misc/Volume.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +1 -1
- package/examples/jsm/objects/Reflector.js +2 -3
- package/examples/jsm/objects/Water2Mesh.js +1 -1
- package/examples/jsm/physics/AmmoPhysics.js +15 -8
- package/examples/jsm/physics/RapierPhysics.js +27 -2
- package/examples/jsm/shaders/VolumeShader.js +31 -44
- package/examples/jsm/transpiler/GLSLDecoder.js +6 -6
- package/examples/jsm/transpiler/Linker.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +59 -19
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +2 -2
- package/examples/jsm/tsl/display/FXAANode.js +11 -12
- package/examples/jsm/tsl/display/GTAONode.js +34 -13
- package/examples/jsm/tsl/display/GodraysNode.js +1 -1
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +2 -2
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +13 -25
- package/examples/jsm/tsl/display/SSGINode.js +89 -39
- package/examples/jsm/tsl/display/SSRNode.js +829 -132
- package/examples/jsm/tsl/display/SSSNode.js +2 -2
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +1 -1
- package/examples/jsm/tsl/math/curlNoise.js +107 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
- package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
- package/examples/jsm/tsl/utils/RNoise.js +51 -0
- package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +126 -59
- package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
- package/examples/jsm/utils/SceneOptimizer.js +1 -1
- package/examples/jsm/webxr/ARButton.js +1 -1
- package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
- package/package.json +7 -7
- package/src/Three.TSL.js +10 -3
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationAction.js +15 -11
- package/src/animation/AnimationClip.js +0 -139
- package/src/animation/KeyframeTrack.js +2 -2
- package/src/animation/PropertyBinding.js +2 -2
- package/src/cameras/Camera.js +2 -2
- package/src/cameras/StereoCamera.js +5 -2
- package/src/constants.js +1 -1
- package/src/core/BufferGeometry.js +29 -7
- package/src/core/Object3D.js +17 -7
- package/src/core/Raycaster.js +1 -1
- package/src/core/RenderTarget.js +15 -2
- package/src/extras/PMREMGenerator.js +6 -4
- package/src/extras/TextureUtils.js +1 -1
- package/src/extras/core/ShapePath.js +149 -160
- package/src/geometries/SphereGeometry.js +8 -3
- package/src/helpers/DirectionalLightHelper.js +2 -0
- package/src/helpers/HemisphereLightHelper.js +2 -0
- package/src/helpers/PointLightHelper.js +2 -0
- package/src/helpers/SpotLightHelper.js +1 -1
- package/src/loaders/DataTextureLoader.js +69 -38
- package/src/loaders/LoadingManager.js +5 -0
- package/src/loaders/MaterialLoader.js +36 -266
- package/src/loaders/ObjectLoader.js +3 -1
- package/src/materials/LineBasicMaterial.js +4 -0
- package/src/materials/Material.js +196 -1
- package/src/materials/MeshBasicMaterial.js +24 -0
- package/src/materials/MeshDepthMaterial.js +10 -0
- package/src/materials/MeshDistanceMaterial.js +10 -0
- package/src/materials/MeshLambertMaterial.js +40 -1
- package/src/materials/MeshMatcapMaterial.js +25 -1
- package/src/materials/MeshNormalMaterial.js +9 -1
- package/src/materials/MeshPhongMaterial.js +40 -1
- package/src/materials/MeshPhysicalMaterial.js +38 -0
- package/src/materials/MeshStandardMaterial.js +42 -1
- package/src/materials/MeshToonMaterial.js +34 -1
- package/src/materials/PointsMaterial.js +7 -0
- package/src/materials/ShaderMaterial.js +86 -0
- package/src/materials/SpriteMaterial.js +7 -0
- package/src/materials/nodes/Line2NodeMaterial.js +378 -322
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +0 -30
- package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
- package/src/materials/nodes/MeshStandardNodeMaterial.js +0 -11
- package/src/materials/nodes/NodeMaterial.js +115 -71
- package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
- package/src/materials/nodes/manager/NodeMaterialObserver.js +49 -20
- package/src/math/Box3.js +5 -0
- package/src/math/FrustumArray.js +103 -133
- package/src/math/Interpolant.js +1 -1
- package/src/math/MathUtils.js +2 -2
- package/src/math/Matrix3.js +11 -0
- package/src/math/Matrix4.js +28 -3
- package/src/math/Vector2.js +2 -2
- package/src/math/Vector3.js +2 -2
- package/src/math/Vector4.js +2 -2
- package/src/math/interpolants/BezierInterpolant.js +4 -6
- package/src/nodes/Nodes.js +2 -5
- package/src/nodes/TSL.js +8 -6
- package/src/nodes/accessors/Arrays.js +4 -4
- package/src/nodes/accessors/Batch.js +108 -0
- package/src/nodes/accessors/Bitangent.js +2 -2
- package/src/nodes/accessors/BufferAttributeNode.js +13 -2
- package/src/nodes/accessors/Camera.js +7 -7
- package/src/nodes/accessors/ClippingNode.js +1 -1
- package/src/nodes/accessors/Instance.js +264 -0
- package/src/nodes/accessors/MaterialNode.js +18 -2
- package/src/nodes/accessors/MaterialProperties.js +4 -3
- package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
- package/src/nodes/accessors/Normal.js +13 -13
- package/src/nodes/accessors/Position.js +5 -1
- package/src/nodes/accessors/ReferenceNode.js +1 -0
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneProperties.js +1 -1
- package/src/nodes/accessors/Skinning.js +263 -0
- package/src/nodes/accessors/StorageBufferNode.js +2 -2
- package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
- package/src/nodes/accessors/StorageTextureNode.js +39 -7
- package/src/nodes/accessors/Tangent.js +4 -4
- package/src/nodes/accessors/TextureNode.js +60 -5
- package/src/nodes/code/FunctionNode.js +2 -16
- package/src/nodes/core/MRTNode.js +7 -2
- package/src/nodes/core/Node.js +39 -2
- package/src/nodes/core/NodeBuilder.js +201 -41
- package/src/nodes/core/NodeUtils.js +13 -13
- package/src/nodes/core/OutputStructNode.js +1 -1
- package/src/nodes/core/OverrideContextNode.js +153 -0
- package/src/nodes/core/PropertyNode.js +51 -5
- package/src/nodes/core/StackNode.js +56 -34
- package/src/nodes/core/StructNode.js +4 -6
- package/src/nodes/core/StructTypeNode.js +6 -6
- package/src/nodes/core/VarNode.js +8 -0
- package/src/nodes/core/VaryingNode.js +12 -2
- package/src/nodes/display/BlendModes.js +1 -41
- package/src/nodes/display/BumpMapNode.js +6 -1
- package/src/nodes/display/ColorAdjustment.js +10 -9
- package/src/nodes/display/FrontFacingNode.js +38 -9
- package/src/nodes/display/NormalMapNode.js +2 -2
- package/src/nodes/display/PassNode.js +35 -43
- package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
- package/src/nodes/display/RenderOutputNode.js +12 -3
- package/src/nodes/functions/VolumetricLightingModel.js +40 -7
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +1 -1
- package/src/nodes/lighting/EnvironmentNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +40 -2
- package/src/nodes/lighting/LightingContextNode.js +10 -2
- package/src/nodes/lighting/LightsNode.js +90 -37
- package/src/nodes/lighting/PointShadowNode.js +6 -1
- package/src/nodes/lighting/ShadowFilterNode.js +21 -52
- package/src/nodes/lighting/ShadowNode.js +34 -14
- package/src/nodes/materialx/lib/mx_noise.js +2 -2
- package/src/nodes/math/ConditionalNode.js +3 -3
- package/src/nodes/math/MathNode.js +39 -11
- package/src/nodes/math/OperatorNode.js +23 -23
- package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +33 -2
- package/src/nodes/tsl/TSLCore.js +63 -18
- package/src/nodes/utils/EquirectUV.js +30 -5
- package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
- package/src/nodes/utils/Packing.js +35 -4
- package/src/nodes/utils/RTTNode.js +40 -24
- package/src/nodes/utils/ReflectorNode.js +1 -0
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/objects/BatchedMesh.js +22 -14
- package/src/objects/InstancedMesh.js +0 -11
- package/src/objects/Skeleton.js +0 -9
- package/src/renderers/WebGLRenderer.js +19 -15
- package/src/renderers/common/Backend.js +49 -5
- package/src/renderers/common/Bindings.js +114 -45
- package/src/renderers/common/Buffer.js +9 -0
- package/src/renderers/common/ClippingContext.js +10 -2
- package/src/renderers/common/Info.js +63 -22
- package/src/renderers/common/Lighting.js +53 -5
- package/src/renderers/common/RenderList.js +41 -4
- package/src/renderers/common/RenderObject.js +73 -13
- package/src/renderers/common/Renderer.js +281 -108
- package/src/renderers/common/Sampler.js +16 -48
- package/src/renderers/common/Textures.js +32 -5
- package/src/renderers/common/TimestampQueryPool.js +1 -1
- package/src/renderers/common/UniformsGroup.js +31 -9
- package/src/renderers/common/XRManager.js +340 -22
- package/src/renderers/common/extras/PMREMGenerator.js +15 -38
- package/src/renderers/common/nodes/NodeBuilderState.js +9 -1
- package/src/renderers/common/nodes/NodeLibrary.js +4 -4
- package/src/renderers/common/nodes/NodeManager.js +63 -14
- package/src/renderers/common/nodes/NodeUniformBuffer.js +13 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/distance.glsl.js +1 -1
- package/src/renderers/webgl/WebGLOutput.js +2 -1
- package/src/renderers/webgl/WebGLProgram.js +5 -4
- package/src/renderers/webgl/WebGLPrograms.js +12 -5
- package/src/renderers/webgl/WebGLRenderLists.js +9 -1
- package/src/renderers/webgl/WebGLShaderCache.js +5 -11
- package/src/renderers/webgl/WebGLTextures.js +20 -7
- package/src/renderers/webgl/WebGLUniformsGroups.js +66 -38
- package/src/renderers/webgl-fallback/WebGLBackend.js +84 -25
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +138 -8
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +52 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +4 -2
- package/src/renderers/webgpu/WebGPUBackend.js +480 -169
- package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
- package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
- package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
- package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
- package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
- package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
- package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
- package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
- package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
- package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
- package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
- package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +164 -7
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +98 -38
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +72 -68
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +164 -69
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +158 -95
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +297 -141
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +33 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +38 -3
- package/src/textures/DepthTexture.js +1 -1
- package/src/textures/ExternalTexture.js +0 -3
- package/examples/fonts/LICENSE +0 -13
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
- package/examples/fonts/README.md +0 -11
- package/examples/fonts/droid/NOTICE +0 -190
- package/examples/fonts/droid/README.txt +0 -18
- package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
- package/examples/fonts/gentilis_bold.typeface.json +0 -1
- package/examples/fonts/gentilis_regular.typeface.json +0 -1
- package/examples/fonts/helvetiker_bold.typeface.json +0 -1
- package/examples/fonts/helvetiker_regular.typeface.json +0 -1
- package/examples/fonts/optimer_bold.typeface.json +0 -1
- package/examples/fonts/optimer_regular.typeface.json +0 -1
- package/examples/fonts/ttf/README.md +0 -9
- package/examples/fonts/ttf/kenpixel.ttf +0 -0
- package/examples/jsm/inspector/extensions/extensions.json +0 -6
- package/examples/jsm/libs/ammo.wasm.js +0 -822
- package/examples/jsm/libs/ammo.wasm.wasm +0 -0
- package/examples/jsm/libs/draco/draco_encoder.js +0 -33
- package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
- package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
- package/examples/jsm/libs/opentype.module.js +0 -14506
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lighting/TiledLighting.js +0 -42
- package/examples/jsm/tsl/display/AnamorphicNode.js +0 -293
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
- package/src/nodes/accessors/BatchNode.js +0 -163
- package/src/nodes/accessors/InstanceNode.js +0 -349
- package/src/nodes/accessors/InstancedMeshNode.js +0 -50
- package/src/nodes/accessors/SkinningNode.js +0 -328
|
@@ -3,8 +3,8 @@ import ChainMap from '../ChainMap.js';
|
|
|
3
3
|
import NodeBuilderState from './NodeBuilderState.js';
|
|
4
4
|
import NodeMaterial from '../../../materials/nodes/NodeMaterial.js';
|
|
5
5
|
import { cubeMapNode } from '../../../nodes/utils/CubeMapNode.js';
|
|
6
|
-
import { NodeFrame, StackTrace } from '../../../nodes/Nodes.js';
|
|
7
|
-
import { renderGroup, cubeTexture, texture, fog, rangeFogFactor, densityFogFactor, reference, pmremTexture, screenUV } from '../../../nodes/TSL.js';
|
|
6
|
+
import { NodeFrame, NodeUpdateType, StackTrace } from '../../../nodes/Nodes.js';
|
|
7
|
+
import { renderGroup, cubeTexture, texture, fog, rangeFogFactor, densityFogFactor, reference, pmremTexture, screenUV, uniform } from '../../../nodes/TSL.js';
|
|
8
8
|
import { builtin } from '../../../nodes/accessors/BuiltinNode.js';
|
|
9
9
|
|
|
10
10
|
import { CubeUVReflectionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping } from '../../../constants.js';
|
|
@@ -14,6 +14,10 @@ import { error } from '../../../utils.js';
|
|
|
14
14
|
const _chainKeys = [];
|
|
15
15
|
const _cacheKeyValues = [];
|
|
16
16
|
|
|
17
|
+
// Dedicated uniform for output pass array layer selection
|
|
18
|
+
// This is separate from cameraIndex to avoid the sharedUniformGroup complexity
|
|
19
|
+
const _outputLayerIndex = /*@__PURE__*/ uniform( 0, 'int' ).setGroup( renderGroup );
|
|
20
|
+
|
|
17
21
|
/**
|
|
18
22
|
* This renderer module manages node-related objects and is the
|
|
19
23
|
* primary interface between the renderer and the node system.
|
|
@@ -111,6 +115,12 @@ class NodeManager extends DataMap {
|
|
|
111
115
|
|
|
112
116
|
const groupNode = nodeUniformsGroup.groupNode;
|
|
113
117
|
|
|
118
|
+
// groups that are updated per object always require an update so no further checks are needed
|
|
119
|
+
|
|
120
|
+
if ( groupNode.updateType === NodeUpdateType.OBJECT ) return true;
|
|
121
|
+
|
|
122
|
+
// check for update
|
|
123
|
+
|
|
114
124
|
_chainKeys[ 0 ] = groupNode;
|
|
115
125
|
_chainKeys[ 1 ] = nodeUniformsGroup;
|
|
116
126
|
|
|
@@ -444,7 +454,7 @@ class NodeManager extends DataMap {
|
|
|
444
454
|
|
|
445
455
|
let nodeBuilderState = computeData.nodeBuilderState;
|
|
446
456
|
|
|
447
|
-
if ( nodeBuilderState === undefined ) {
|
|
457
|
+
if ( nodeBuilderState === undefined || computeData.version !== computeNode.version ) {
|
|
448
458
|
|
|
449
459
|
const nodeBuilder = this.backend.createNodeBuilder( computeNode, this.renderer );
|
|
450
460
|
nodeBuilder.build();
|
|
@@ -452,6 +462,7 @@ class NodeManager extends DataMap {
|
|
|
452
462
|
nodeBuilderState = this._createNodeBuilderState( nodeBuilder );
|
|
453
463
|
|
|
454
464
|
computeData.nodeBuilderState = nodeBuilderState;
|
|
465
|
+
computeData.version = computeNode.version;
|
|
455
466
|
|
|
456
467
|
}
|
|
457
468
|
|
|
@@ -478,6 +489,7 @@ class NodeManager extends DataMap {
|
|
|
478
489
|
nodeBuilder.updateBeforeNodes,
|
|
479
490
|
nodeBuilder.updateAfterNodes,
|
|
480
491
|
nodeBuilder.observer,
|
|
492
|
+
nodeBuilder.hardwareClipping,
|
|
481
493
|
nodeBuilder.transforms
|
|
482
494
|
);
|
|
483
495
|
|
|
@@ -492,6 +504,8 @@ class NodeManager extends DataMap {
|
|
|
492
504
|
*/
|
|
493
505
|
getEnvironmentNode( scene ) {
|
|
494
506
|
|
|
507
|
+
if ( this.renderer.lighting.enabled === false ) return null;
|
|
508
|
+
|
|
495
509
|
this.updateEnvironment( scene );
|
|
496
510
|
|
|
497
511
|
let environmentNode = null;
|
|
@@ -584,16 +598,23 @@ class NodeManager extends DataMap {
|
|
|
584
598
|
|
|
585
599
|
if ( cacheKeyData.callId !== callId ) {
|
|
586
600
|
|
|
587
|
-
|
|
588
|
-
|
|
601
|
+
_cacheKeyValues.push( this.renderer.getOutputRenderTarget() && this.renderer.getOutputRenderTarget().multiview ? 1 : 0 );
|
|
602
|
+
_cacheKeyValues.push( this.renderer.lighting.enabled ? 1 : 0 );
|
|
589
603
|
|
|
590
|
-
if (
|
|
591
|
-
if ( environmentNode ) _cacheKeyValues.push( environmentNode.getCacheKey() );
|
|
592
|
-
if ( fogNode ) _cacheKeyValues.push( fogNode.getCacheKey() );
|
|
604
|
+
if ( this.renderer.lighting.enabled ) {
|
|
593
605
|
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
606
|
+
_cacheKeyValues.push( lightsNode.getCacheKey( true ) );
|
|
607
|
+
|
|
608
|
+
_cacheKeyValues.push( this.renderer.shadowMap.enabled ? 1 : 0 );
|
|
609
|
+
_cacheKeyValues.push( this.renderer.shadowMap.type );
|
|
610
|
+
|
|
611
|
+
const environmentNode = this.getEnvironmentNode( scene );
|
|
612
|
+
if ( environmentNode ) _cacheKeyValues.push( environmentNode.getCacheKey() );
|
|
613
|
+
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
const fogNode = this.getFogNode( scene );
|
|
617
|
+
if ( fogNode ) _cacheKeyValues.push( fogNode.getCacheKey() );
|
|
597
618
|
|
|
598
619
|
cacheKeyData.callId = callId;
|
|
599
620
|
cacheKeyData.cacheKey = hashArray( _cacheKeyValues );
|
|
@@ -864,14 +885,42 @@ class NodeManager extends DataMap {
|
|
|
864
885
|
|
|
865
886
|
const renderer = this.renderer;
|
|
866
887
|
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
888
|
+
let output;
|
|
889
|
+
|
|
890
|
+
if ( outputTarget.isArrayTexture ) {
|
|
891
|
+
|
|
892
|
+
if ( this.backend.isWebGLBackend ) {
|
|
893
|
+
|
|
894
|
+
output = texture( outputTarget, screenUV ).depth( builtin( 'gl_ViewID_OVR' ) ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
|
|
895
|
+
|
|
896
|
+
} else {
|
|
897
|
+
|
|
898
|
+
output = texture( outputTarget, screenUV ).depth( _outputLayerIndex ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
|
|
899
|
+
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
} else {
|
|
903
|
+
|
|
904
|
+
output = texture( outputTarget, screenUV ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
|
|
905
|
+
|
|
906
|
+
}
|
|
870
907
|
|
|
871
908
|
return output;
|
|
872
909
|
|
|
873
910
|
}
|
|
874
911
|
|
|
912
|
+
/**
|
|
913
|
+
* Sets the output layer index for array texture output pass.
|
|
914
|
+
* This should be called before each layer render during the output pass.
|
|
915
|
+
*
|
|
916
|
+
* @param {number} index - The layer index.
|
|
917
|
+
*/
|
|
918
|
+
setOutputLayerIndex( index ) {
|
|
919
|
+
|
|
920
|
+
_outputLayerIndex.value = index;
|
|
921
|
+
|
|
922
|
+
}
|
|
923
|
+
|
|
875
924
|
/**
|
|
876
925
|
* Triggers the call of `updateBefore()` methods
|
|
877
926
|
* for all nodes of the given render object.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import UniformBuffer from '../UniformBuffer.js';
|
|
2
|
+
import { getFloatLength } from '../BufferUtils.js';
|
|
2
3
|
|
|
3
4
|
let _id = 0;
|
|
4
5
|
|
|
@@ -89,6 +90,18 @@ class NodeUniformBuffer extends UniformBuffer {
|
|
|
89
90
|
|
|
90
91
|
}
|
|
91
92
|
|
|
93
|
+
/**
|
|
94
|
+
* The buffer's byte length.
|
|
95
|
+
*
|
|
96
|
+
* @type {number}
|
|
97
|
+
* @readonly
|
|
98
|
+
*/
|
|
99
|
+
get byteLength() {
|
|
100
|
+
|
|
101
|
+
return getFloatLength( this.buffer.byteLength );
|
|
102
|
+
|
|
103
|
+
}
|
|
104
|
+
|
|
92
105
|
/**
|
|
93
106
|
* The uniform buffer.
|
|
94
107
|
*
|
|
@@ -64,12 +64,21 @@ vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
|
|
|
64
64
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
#define inverseTransformDirection transformDirectionByInverseViewMatrix // @deprecated r185
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
// upper-left 3x3 of matrix is assumed to be orthogonal
|
|
69
|
+
vec3 transformNormalByInverseViewMatrix( in vec3 normal, in mat4 viewMatrix ) {
|
|
71
70
|
|
|
72
|
-
|
|
71
|
+
// upper-left 3x3 of view matrix is assumed to be orthogonal
|
|
72
|
+
|
|
73
|
+
return normalize( ( vec4( normal, 0.0 ) * viewMatrix ).xyz );
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
vec3 transformDirectionByInverseViewMatrix( in vec3 dir, in mat4 viewMatrix ) {
|
|
78
|
+
|
|
79
|
+
// upper-left 3x3 of view matrix is assumed to be orthogonal
|
|
80
|
+
|
|
81
|
+
return normalize( ( vec4( dir, 0.0 ) * viewMatrix ).xyz );
|
|
73
82
|
|
|
74
83
|
}
|
|
75
84
|
|
|
@@ -16,7 +16,7 @@ export default /* glsl */`
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
// Transforming Normal Vectors with the Inverse Transformation
|
|
19
|
-
vec3 worldNormal =
|
|
19
|
+
vec3 worldNormal = transformNormalByInverseViewMatrix( normal, viewMatrix );
|
|
20
20
|
|
|
21
21
|
#ifdef ENVMAP_MODE_REFLECTION
|
|
22
22
|
|
|
@@ -5,7 +5,7 @@ export default /* glsl */`
|
|
|
5
5
|
|
|
6
6
|
#ifdef ENVMAP_TYPE_CUBE_UV
|
|
7
7
|
|
|
8
|
-
vec3 worldNormal =
|
|
8
|
+
vec3 worldNormal = transformNormalByInverseViewMatrix( normal, viewMatrix );
|
|
9
9
|
|
|
10
10
|
vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );
|
|
11
11
|
|
|
@@ -28,7 +28,7 @@ export default /* glsl */`
|
|
|
28
28
|
// Mixing the reflection with the normal is more accurate and keeps rough objects from gathering light from behind their tangent plane.
|
|
29
29
|
reflectVec = normalize( mix( reflectVec, normal, pow4( roughness ) ) );
|
|
30
30
|
|
|
31
|
-
reflectVec =
|
|
31
|
+
reflectVec = transformDirectionByInverseViewMatrix( reflectVec, viewMatrix );
|
|
32
32
|
|
|
33
33
|
vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );
|
|
34
34
|
|
|
@@ -197,7 +197,7 @@ IncidentLight directLight;
|
|
|
197
197
|
#ifdef USE_LIGHT_PROBES_GRID
|
|
198
198
|
|
|
199
199
|
vec3 probeWorldPos = ( ( vec4( geometryPosition, 1.0 ) - viewMatrix[ 3 ] ) * viewMatrix ).xyz;
|
|
200
|
-
vec3 probeWorldNormal =
|
|
200
|
+
vec3 probeWorldNormal = transformNormalByInverseViewMatrix( geometryNormal, viewMatrix );
|
|
201
201
|
irradiance += getLightProbeGridIrradiance( probeWorldPos, probeWorldNormal );
|
|
202
202
|
|
|
203
203
|
#endif
|
|
@@ -37,7 +37,7 @@ vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
|
|
|
37
37
|
|
|
38
38
|
vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {
|
|
39
39
|
|
|
40
|
-
vec3 worldNormal =
|
|
40
|
+
vec3 worldNormal = transformNormalByInverseViewMatrix( normal, viewMatrix );
|
|
41
41
|
|
|
42
42
|
vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
|
|
43
43
|
|
|
@@ -39,7 +39,7 @@ float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
|
|
|
39
39
|
|
|
40
40
|
#endif
|
|
41
41
|
|
|
42
|
-
#
|
|
42
|
+
#ifdef DOUBLE_SIDED
|
|
43
43
|
|
|
44
44
|
tbn[0] *= faceDirection;
|
|
45
45
|
tbn[1] *= faceDirection;
|
|
@@ -60,7 +60,7 @@ float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
|
|
|
60
60
|
|
|
61
61
|
#endif
|
|
62
62
|
|
|
63
|
-
#
|
|
63
|
+
#ifdef DOUBLE_SIDED
|
|
64
64
|
|
|
65
65
|
tbn2[0] *= faceDirection;
|
|
66
66
|
tbn2[1] *= faceDirection;
|
|
@@ -6,7 +6,7 @@ export default /* glsl */`
|
|
|
6
6
|
|
|
7
7
|
// Offsetting the position used for querying occlusion along the world normal can be used to reduce shadow acne.
|
|
8
8
|
|
|
9
|
-
vec3 shadowWorldNormal =
|
|
9
|
+
vec3 shadowWorldNormal = transformNormalByInverseViewMatrix( transformedNormal, viewMatrix );
|
|
10
10
|
|
|
11
11
|
#else
|
|
12
12
|
|
|
@@ -21,7 +21,7 @@ export default /* glsl */`
|
|
|
21
21
|
|
|
22
22
|
vec3 pos = vWorldPosition;
|
|
23
23
|
vec3 v = normalize( cameraPosition - pos );
|
|
24
|
-
vec3 n =
|
|
24
|
+
vec3 n = transformNormalByInverseViewMatrix( normal, viewMatrix );
|
|
25
25
|
|
|
26
26
|
vec4 transmitted = getIBLVolumeRefraction(
|
|
27
27
|
n, v, material.roughness, material.diffuseContribution, material.specularColorBlended, material.specularF90,
|
|
@@ -29,13 +29,14 @@ const toneMappingMap = {
|
|
|
29
29
|
[ CustomToneMapping ]: 'CUSTOM_TONE_MAPPING'
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
function WebGLOutput( type, width, height, depth, stencil ) {
|
|
32
|
+
function WebGLOutput( type, width, height, antialias, depth, stencil ) {
|
|
33
33
|
|
|
34
34
|
// render targets for scene and post-processing
|
|
35
35
|
const targetA = new WebGLRenderTarget( width, height, {
|
|
36
36
|
type: type,
|
|
37
37
|
depthBuffer: depth,
|
|
38
38
|
stencilBuffer: stencil,
|
|
39
|
+
samples: antialias ? 4 : 0,
|
|
39
40
|
depthTexture: depth ? new DepthTexture( width, height ) : undefined
|
|
40
41
|
} );
|
|
41
42
|
|
|
@@ -265,7 +265,7 @@ function includeReplacer( match, include ) {
|
|
|
265
265
|
|
|
266
266
|
} else {
|
|
267
267
|
|
|
268
|
-
throw new Error( 'Can not resolve #include <' + include + '>' );
|
|
268
|
+
throw new Error( 'THREE.WebGLProgram: Can not resolve #include <' + include + '>' );
|
|
269
269
|
|
|
270
270
|
}
|
|
271
271
|
|
|
@@ -896,9 +896,10 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
896
896
|
|
|
897
897
|
gl.bindAttribLocation( program, 0, parameters.index0AttributeName );
|
|
898
898
|
|
|
899
|
-
} else if ( parameters.
|
|
899
|
+
} else if ( parameters.hasPositionAttribute === true ) {
|
|
900
|
+
|
|
901
|
+
// below avoids the "Attribute 0 is disabled" performance penalty
|
|
900
902
|
|
|
901
|
-
// programs with morphTargets displace position out of attribute 0
|
|
902
903
|
gl.bindAttribLocation( program, 0, 'position' );
|
|
903
904
|
|
|
904
905
|
}
|
|
@@ -937,7 +938,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
937
938
|
const fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );
|
|
938
939
|
|
|
939
940
|
error(
|
|
940
|
-
'
|
|
941
|
+
'WebGLProgram: Shader Error ' + gl.getError() + ' - ' +
|
|
941
942
|
'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\n\n' +
|
|
942
943
|
'Material Name: ' + self.name + '\n' +
|
|
943
944
|
'Material Type: ' + self.type + '\n\n' +
|
|
@@ -108,10 +108,13 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
108
108
|
vertexShader = material.vertexShader;
|
|
109
109
|
fragmentShader = material.fragmentShader;
|
|
110
110
|
|
|
111
|
-
_customShaders.
|
|
111
|
+
const vertexShaderStage = _customShaders.getVertexShaderStage( material );
|
|
112
|
+
const fragmentShaderStage = _customShaders.getFragmentShaderStage( material );
|
|
112
113
|
|
|
113
|
-
|
|
114
|
-
|
|
114
|
+
_customShaders.update( material, vertexShaderStage, fragmentShaderStage );
|
|
115
|
+
|
|
116
|
+
customVertexShaderID = vertexShaderStage.id;
|
|
117
|
+
customFragmentShaderID = fragmentShaderStage.id;
|
|
115
118
|
|
|
116
119
|
}
|
|
117
120
|
|
|
@@ -128,7 +131,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
128
131
|
const HAS_ENVMAP = !! envMap;
|
|
129
132
|
const HAS_AOMAP = !! material.aoMap;
|
|
130
133
|
const HAS_LIGHTMAP = !! material.lightMap;
|
|
131
|
-
const HAS_BUMPMAP = !! material.bumpMap;
|
|
134
|
+
const HAS_BUMPMAP = !! material.bumpMap && material.wireframe === false;
|
|
132
135
|
const HAS_NORMALMAP = !! material.normalMap;
|
|
133
136
|
const HAS_DISPLACEMENTMAP = !! material.displacementMap;
|
|
134
137
|
const HAS_EMISSIVEMAP = !! material.emissiveMap;
|
|
@@ -327,6 +330,8 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
327
330
|
|
|
328
331
|
skinning: object.isSkinnedMesh === true,
|
|
329
332
|
|
|
333
|
+
hasPositionAttribute: geometry.attributes.position !== undefined,
|
|
334
|
+
|
|
330
335
|
morphTargets: geometry.morphAttributes.position !== undefined,
|
|
331
336
|
morphNormals: geometry.morphAttributes.normal !== undefined,
|
|
332
337
|
morphColors: geometry.morphAttributes.color !== undefined,
|
|
@@ -588,8 +593,10 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
588
593
|
_programLayers.enable( 21 );
|
|
589
594
|
if ( parameters.numLightProbeGrids > 0 )
|
|
590
595
|
_programLayers.enable( 22 );
|
|
591
|
-
if ( parameters.
|
|
596
|
+
if ( parameters.hasPositionAttribute )
|
|
592
597
|
_programLayers.enable( 23 );
|
|
598
|
+
if ( parameters.numMultiviewViews )
|
|
599
|
+
_programLayers.enable( 24 );
|
|
593
600
|
|
|
594
601
|
array.push( _programLayers.mask );
|
|
595
602
|
|
|
@@ -159,12 +159,20 @@ function WebGLRenderList() {
|
|
|
159
159
|
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
function sort( customOpaqueSort, customTransparentSort ) {
|
|
162
|
+
function sort( customOpaqueSort, customTransparentSort, reversedDepth ) {
|
|
163
163
|
|
|
164
164
|
if ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );
|
|
165
165
|
if ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );
|
|
166
166
|
if ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );
|
|
167
167
|
|
|
168
|
+
if ( reversedDepth ) {
|
|
169
|
+
|
|
170
|
+
opaque.reverse();
|
|
171
|
+
transmissive.reverse();
|
|
172
|
+
transparent.reverse();
|
|
173
|
+
|
|
174
|
+
}
|
|
175
|
+
|
|
168
176
|
}
|
|
169
177
|
|
|
170
178
|
function finish() {
|
|
@@ -9,13 +9,7 @@ class WebGLShaderCache {
|
|
|
9
9
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
update( material ) {
|
|
13
|
-
|
|
14
|
-
const vertexShader = material.vertexShader;
|
|
15
|
-
const fragmentShader = material.fragmentShader;
|
|
16
|
-
|
|
17
|
-
const vertexShaderStage = this._getShaderStage( vertexShader );
|
|
18
|
-
const fragmentShaderStage = this._getShaderStage( fragmentShader );
|
|
12
|
+
update( material, vertexShaderStage, fragmentShaderStage ) {
|
|
19
13
|
|
|
20
14
|
const materialShaders = this._getShaderCacheForMaterial( material );
|
|
21
15
|
|
|
@@ -55,15 +49,15 @@ class WebGLShaderCache {
|
|
|
55
49
|
|
|
56
50
|
}
|
|
57
51
|
|
|
58
|
-
|
|
52
|
+
getVertexShaderStage( material ) {
|
|
59
53
|
|
|
60
|
-
return this._getShaderStage( material.vertexShader )
|
|
54
|
+
return this._getShaderStage( material.vertexShader );
|
|
61
55
|
|
|
62
56
|
}
|
|
63
57
|
|
|
64
|
-
|
|
58
|
+
getFragmentShaderStage( material ) {
|
|
65
59
|
|
|
66
|
-
return this._getShaderStage( material.fragmentShader )
|
|
60
|
+
return this._getShaderStage( material.fragmentShader );
|
|
67
61
|
|
|
68
62
|
}
|
|
69
63
|
|
|
@@ -1339,12 +1339,25 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1339
1339
|
|
|
1340
1340
|
}
|
|
1341
1341
|
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1342
|
+
if ( _gl.texElementImage2D.length === 3 ) {
|
|
1343
|
+
|
|
1344
|
+
// Chrome 150+
|
|
1345
|
+
|
|
1346
|
+
_gl.texElementImage2D( _gl.TEXTURE_2D, _gl.RGBA8, image );
|
|
1347
|
+
|
|
1348
|
+
} else {
|
|
1349
|
+
|
|
1350
|
+
// Chrome 138 - 149
|
|
1351
|
+
|
|
1352
|
+
const level = 0;
|
|
1353
|
+
const internalFormat = _gl.RGBA;
|
|
1354
|
+
const srcFormat = _gl.RGBA;
|
|
1355
|
+
const srcType = _gl.UNSIGNED_BYTE;
|
|
1356
|
+
|
|
1357
|
+
_gl.texElementImage2D( _gl.TEXTURE_2D, level, internalFormat, srcFormat, srcType, image );
|
|
1358
|
+
|
|
1359
|
+
}
|
|
1346
1360
|
|
|
1347
|
-
_gl.texElementImage2D( _gl.TEXTURE_2D, level, internalFormat, srcFormat, srcType, image );
|
|
1348
1361
|
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, _gl.LINEAR );
|
|
1349
1362
|
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );
|
|
1350
1363
|
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );
|
|
@@ -1866,7 +1879,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1866
1879
|
|
|
1867
1880
|
if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {
|
|
1868
1881
|
|
|
1869
|
-
throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );
|
|
1882
|
+
throw new Error( 'THREE.WebGLTextures: renderTarget.depthTexture must be an instance of THREE.DepthTexture.' );
|
|
1870
1883
|
|
|
1871
1884
|
}
|
|
1872
1885
|
|
|
@@ -2005,7 +2018,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2005
2018
|
|
|
2006
2019
|
} else {
|
|
2007
2020
|
|
|
2008
|
-
throw new Error( 'Unknown depthTexture format' );
|
|
2021
|
+
throw new Error( 'THREE.WebGLTextures: Unknown depthTexture format.' );
|
|
2009
2022
|
|
|
2010
2023
|
}
|
|
2011
2024
|
|