@plastic-software/three 0.178.0 → 0.179.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 +1 -1
- package/build/three.cjs +856 -196
- package/build/three.core.js +647 -123
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +211 -76
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +70 -21
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +1796 -557
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +1754 -557
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -2
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/csm/CSMShadowNode.js +4 -4
- package/examples/jsm/environments/RoomEnvironment.js +8 -3
- package/examples/jsm/exporters/USDZExporter.js +676 -299
- package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
- package/examples/jsm/interactive/HTMLMesh.js +5 -3
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lights/LightProbeGenerator.js +14 -3
- package/examples/jsm/loaders/EXRLoader.js +210 -22
- package/examples/jsm/loaders/FBXLoader.js +1 -1
- package/examples/jsm/loaders/MaterialXLoader.js +212 -30
- package/examples/jsm/loaders/TTFLoader.js +13 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -892
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/objects/LensflareMesh.js +3 -3
- package/examples/jsm/objects/SkyMesh.js +2 -2
- package/examples/jsm/physics/RapierPhysics.js +14 -5
- package/examples/jsm/postprocessing/GTAOPass.js +10 -9
- package/examples/jsm/postprocessing/OutlinePass.js +17 -17
- package/examples/jsm/postprocessing/SSAOPass.js +10 -9
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
- package/examples/jsm/tsl/display/BloomNode.js +8 -7
- package/examples/jsm/tsl/display/GaussianBlurNode.js +6 -8
- package/examples/jsm/tsl/display/{TRAAPassNode.js → TRAANode.js} +181 -172
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +1 -1
- package/package.json +1 -1
- package/src/Three.Core.js +1 -0
- package/src/Three.TSL.js +69 -20
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/constants.js +1 -1
- package/{examples/jsm/misc → src/core}/Timer.js +4 -42
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/helpers/CameraHelper.js +41 -11
- package/src/helpers/SkeletonHelper.js +35 -6
- package/src/lights/LightShadow.js +21 -8
- package/src/lights/PointLightShadow.js +1 -1
- package/src/loaders/FileLoader.js +25 -2
- package/src/loaders/ImageBitmapLoader.js +23 -0
- package/src/loaders/Loader.js +14 -0
- package/src/loaders/LoadingManager.js +23 -0
- package/src/materials/MeshBasicMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +0 -8
- package/src/materials/nodes/NodeMaterial.js +1 -1
- package/src/materials/nodes/PointsNodeMaterial.js +5 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -2
- package/src/math/Frustum.js +19 -8
- package/src/math/FrustumArray.js +10 -5
- package/src/math/Line3.js +129 -2
- package/src/math/Matrix4.js +48 -27
- package/src/math/Spherical.js +2 -2
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/Camera.js +12 -12
- package/src/nodes/accessors/Normal.js +11 -11
- package/src/nodes/accessors/ReferenceNode.js +18 -3
- package/src/nodes/accessors/SceneNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +12 -0
- package/src/nodes/core/ArrayNode.js +12 -0
- package/src/nodes/core/AssignNode.js +3 -0
- package/src/nodes/core/ContextNode.js +20 -1
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +25 -20
- package/src/nodes/core/NodeUtils.js +4 -1
- package/src/nodes/core/StackNode.js +42 -0
- package/src/nodes/core/UniformNode.js +63 -5
- package/src/nodes/core/VarNode.js +91 -2
- package/src/nodes/display/PassNode.js +148 -2
- package/src/nodes/display/ViewportTextureNode.js +67 -7
- package/src/nodes/functions/PhysicalLightingModel.js +2 -2
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +67 -23
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +28 -3
- package/src/nodes/lighting/ProjectorLightNode.js +19 -6
- package/src/nodes/lighting/ShadowFilterNode.js +1 -1
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +165 -1
- package/src/nodes/math/ConditionalNode.js +1 -1
- package/src/nodes/math/MathNode.js +78 -54
- package/src/nodes/math/OperatorNode.js +22 -22
- package/src/nodes/tsl/TSLCore.js +64 -9
- package/src/nodes/utils/DebugNode.js +1 -1
- package/src/nodes/utils/EventNode.js +83 -0
- package/src/nodes/utils/RTTNode.js +9 -0
- package/src/objects/BatchedMesh.js +4 -2
- package/src/renderers/WebGLRenderer.js +21 -22
- package/src/renderers/common/Bindings.js +19 -18
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/PostProcessing.js +60 -5
- package/src/renderers/common/Renderer.js +18 -15
- package/src/renderers/common/SampledTexture.js +3 -71
- package/src/renderers/common/Sampler.js +79 -0
- package/src/renderers/common/Storage3DTexture.js +21 -0
- package/src/renderers/common/StorageArrayTexture.js +21 -0
- package/src/renderers/common/StorageTexture.js +19 -0
- package/src/renderers/common/Textures.js +19 -3
- package/src/renderers/common/XRManager.js +26 -8
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +20 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/webgl/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl/WebGLMaterials.js +6 -6
- package/src/renderers/webgl/WebGLProgram.js +22 -16
- package/src/renderers/webgl/WebGLPrograms.js +4 -4
- package/src/renderers/webgl/WebGLShadowMap.js +11 -1
- package/src/renderers/webgl/WebGLTextures.js +19 -7
- package/src/renderers/webgl-fallback/WebGLBackend.js +22 -12
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +2 -2
- package/src/renderers/webgpu/WebGPUBackend.js +54 -15
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +53 -73
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +35 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +11 -64
- package/src/renderers/webgpu/utils/WebGPUUtils.js +2 -17
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +68 -8
- package/src/textures/ExternalTexture.js +45 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +11 -1
- package/src/textures/VideoTexture.js +30 -2
package/build/three.module.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Copyright 2010-2025 Three.js Authors
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
|
-
import { Matrix3, Vector2, Color, Matrix4, mergeUniforms, Vector3, CubeUVReflectionMapping, Mesh, BoxGeometry, ShaderMaterial, BackSide, cloneUniforms, Euler, ColorManagement, SRGBTransfer, PlaneGeometry, FrontSide, getUnlitUniformColorSpace, IntType, HalfFloatType, UnsignedByteType, FloatType, RGBAFormat, Plane, EquirectangularReflectionMapping, EquirectangularRefractionMapping, WebGLCubeRenderTarget, CubeReflectionMapping, CubeRefractionMapping, OrthographicCamera, PerspectiveCamera, NoToneMapping, MeshBasicMaterial, NoBlending, WebGLRenderTarget, BufferGeometry, BufferAttribute, LinearSRGBColorSpace, LinearFilter, warnOnce, Uint32BufferAttribute, Uint16BufferAttribute, arrayNeedsUint32, Vector4, DataArrayTexture, CubeTexture, Data3DTexture, LessEqualCompare, DepthTexture, Texture, TriPlanarMapping, CylindricalMapping, UVMapping, GLSL3, PCFShadowMap, PCFSoftShadowMap, VSMShadowMap, CustomToneMapping, NeutralToneMapping, AgXToneMapping, ACESFilmicToneMapping, CineonToneMapping, ReinhardToneMapping, LinearToneMapping, LinearTransfer, AddOperation, MixOperation, MultiplyOperation, UniformsUtils, DoubleSide, NormalBlending, TangentSpaceNormalMap, ObjectSpaceNormalMap, Layers, Frustum, MeshDepthMaterial, RGBADepthPacking, MeshDistanceMaterial, NearestFilter, LessEqualDepth, ReverseSubtractEquation, SubtractEquation, AddEquation, OneMinusConstantAlphaFactor, ConstantAlphaFactor, OneMinusConstantColorFactor, ConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, DstAlphaFactor, DstColorFactor, SrcAlphaSaturateFactor, SrcAlphaFactor, SrcColorFactor, OneFactor, ZeroFactor, NotEqualDepth, GreaterDepth, GreaterEqualDepth, EqualDepth, LessDepth, AlwaysDepth, NeverDepth, CullFaceNone, CullFaceBack, CullFaceFront, CustomBlending, MultiplyBlending, SubtractiveBlending, AdditiveBlending, MinEquation, MaxEquation, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NotEqualCompare, GreaterCompare, GreaterEqualCompare, EqualCompare, LessCompare, AlwaysCompare, NeverCompare, NoColorSpace, DepthStencilFormat, getByteLength, DepthFormat, UnsignedIntType, UnsignedInt248Type, UnsignedShortType, createElementNS, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedInt5999Type, ByteType, ShortType, AlphaFormat, RGBFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, EventDispatcher, ArrayCamera, WebXRController, RAD2DEG, createCanvasElement, SRGBColorSpace, REVISION,
|
|
7
|
-
export { AdditiveAnimationBlendMode, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxHelper, BufferGeometryLoader, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CircleGeometry, Clock, ColorKeyframeTrack, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, Controls, CubeCamera, CubeTextureLoader, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceFrontBack, Curve, CurvePath, CylinderGeometry, Cylindrical, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualStencilFunc, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, Fog, FogExp2, FramebufferTexture, FrustumArray, GLBufferAttribute, GLSL1, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InterpolationSamplingMode, InterpolationSamplingType, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialLoader, MathUtils, Matrix2, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NeverStencilFunc, NormalAnimationBlendMode, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, OctahedronGeometry, Path, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RGBDepthPacking, RGBIntegerFormat, RGDepthPacking, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RenderTarget, RenderTarget3D, ReplaceStencilOp, RingGeometry, Scene, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, TOUCH, TetrahedronGeometry, TextureLoader, TextureUtils, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroSlopeEnding, ZeroStencilOp } from './three.core.js';
|
|
6
|
+
import { Matrix3, Vector2, Color, Matrix4, mergeUniforms, Vector3, CubeUVReflectionMapping, Mesh, BoxGeometry, ShaderMaterial, BackSide, cloneUniforms, Euler, ColorManagement, SRGBTransfer, PlaneGeometry, FrontSide, getUnlitUniformColorSpace, IntType, HalfFloatType, UnsignedByteType, FloatType, RGBAFormat, Plane, EquirectangularReflectionMapping, EquirectangularRefractionMapping, WebGLCubeRenderTarget, CubeReflectionMapping, CubeRefractionMapping, OrthographicCamera, PerspectiveCamera, NoToneMapping, MeshBasicMaterial, NoBlending, WebGLRenderTarget, BufferGeometry, BufferAttribute, LinearSRGBColorSpace, LinearFilter, warnOnce, Uint32BufferAttribute, Uint16BufferAttribute, arrayNeedsUint32, Vector4, DataArrayTexture, CubeTexture, Data3DTexture, LessEqualCompare, DepthTexture, Texture, TriPlanarMapping, CylindricalMapping, UVMapping, GLSL3, PCFShadowMap, PCFSoftShadowMap, VSMShadowMap, CustomToneMapping, NeutralToneMapping, AgXToneMapping, ACESFilmicToneMapping, CineonToneMapping, ReinhardToneMapping, LinearToneMapping, LinearTransfer, AddOperation, MixOperation, MultiplyOperation, UniformsUtils, DoubleSide, NormalBlending, TangentSpaceNormalMap, ObjectSpaceNormalMap, Layers, Frustum, MeshDepthMaterial, RGBADepthPacking, MeshDistanceMaterial, NearestFilter, LessEqualDepth, ReverseSubtractEquation, SubtractEquation, AddEquation, OneMinusConstantAlphaFactor, ConstantAlphaFactor, OneMinusConstantColorFactor, ConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, DstAlphaFactor, DstColorFactor, SrcAlphaSaturateFactor, SrcAlphaFactor, SrcColorFactor, OneFactor, ZeroFactor, NotEqualDepth, GreaterDepth, GreaterEqualDepth, EqualDepth, LessDepth, AlwaysDepth, NeverDepth, CullFaceNone, CullFaceBack, CullFaceFront, CustomBlending, MultiplyBlending, SubtractiveBlending, AdditiveBlending, MinEquation, MaxEquation, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NotEqualCompare, GreaterCompare, GreaterEqualCompare, EqualCompare, LessCompare, AlwaysCompare, NeverCompare, NoColorSpace, DepthStencilFormat, getByteLength, DepthFormat, UnsignedIntType, UnsignedInt248Type, UnsignedShortType, createElementNS, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedInt5999Type, ByteType, ShortType, AlphaFormat, RGBFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, EventDispatcher, ArrayCamera, WebXRController, RAD2DEG, createCanvasElement, SRGBColorSpace, REVISION, WebGLCoordinateSystem, probeAsync } from './three.core.js';
|
|
7
|
+
export { AdditiveAnimationBlendMode, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxHelper, BufferGeometryLoader, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CircleGeometry, Clock, ColorKeyframeTrack, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, Controls, CubeCamera, CubeTextureLoader, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceFrontBack, Curve, CurvePath, CylinderGeometry, Cylindrical, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualStencilFunc, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, Fog, FogExp2, FramebufferTexture, FrustumArray, GLBufferAttribute, GLSL1, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InterpolationSamplingMode, InterpolationSamplingType, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialLoader, MathUtils, Matrix2, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NeverStencilFunc, NormalAnimationBlendMode, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, OctahedronGeometry, Path, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RGBDepthPacking, RGBIntegerFormat, RGDepthPacking, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RenderTarget, RenderTarget3D, ReplaceStencilOp, RingGeometry, Scene, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, TOUCH, TetrahedronGeometry, TextureLoader, TextureUtils, Timer, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroSlopeEnding, ZeroStencilOp } from './three.core.js';
|
|
8
8
|
|
|
9
9
|
function WebGLAnimation() {
|
|
10
10
|
|
|
@@ -473,7 +473,7 @@ var roughnessmap_fragment = "float roughnessFactor = roughness;\n#ifdef USE_ROUG
|
|
|
473
473
|
|
|
474
474
|
var roughnessmap_pars_fragment = "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif";
|
|
475
475
|
|
|
476
|
-
var shadowmap_pars_fragment = "#if NUM_SPOT_LIGHT_COORDS > 0\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\
|
|
476
|
+
var shadowmap_pars_fragment = "#if NUM_SPOT_LIGHT_COORDS > 0\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\tfloat depth = unpackRGBAToDepth( texture2D( depths, uv ) );\n\t\t#ifdef USE_REVERSEDEPTHBUF\n\t\t\treturn step( depth, compare );\n\t\t#else\n\t\t\treturn step( compare, depth );\n\t\t#endif\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\t#ifdef USE_REVERSEDEPTHBUF\n\t\t\tfloat hard_shadow = step( distribution.x, compare );\n\t\t#else\n\t\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\t#endif\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn mix( 1.0, shadow, shadowIntensity );\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tfloat shadow = 1.0;\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\t\n\t\tfloat lightToPositionLength = length( lightToPosition );\n\t\tif ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\n\t\t\tfloat dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\t\tdp += shadowBias;\n\t\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\t\tshadow = (\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t\t) * ( 1.0 / 9.0 );\n\t\t\t#else\n\t\t\t\tshadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t\t#endif\n\t\t}\n\t\treturn mix( 1.0, shadow, shadowIntensity );\n\t}\n#endif";
|
|
477
477
|
|
|
478
478
|
var shadowmap_pars_vertex = "#if NUM_SPOT_LIGHT_COORDS > 0\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif";
|
|
479
479
|
|
|
@@ -523,7 +523,7 @@ const fragment$f = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform fl
|
|
|
523
523
|
|
|
524
524
|
const vertex$e = "#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <batching_vertex>\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#include <morphinstance_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}";
|
|
525
525
|
|
|
526
|
-
const fragment$e = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <clipping_planes_fragment>\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <triplanar_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <logdepthbuf_fragment>\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#elif DEPTH_PACKING == 3202\n\t\tgl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\n\t#elif DEPTH_PACKING == 3203\n\t\tgl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\n\t#endif\n}";
|
|
526
|
+
const fragment$e = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <clipping_planes_fragment>\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <triplanar_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <logdepthbuf_fragment>\n\t#ifdef USE_REVERSEDEPTHBUF\n\t\tfloat fragCoordZ = vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ];\n\t#else\n\t\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ] + 0.5;\n\t#endif\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#elif DEPTH_PACKING == 3202\n\t\tgl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\n\t#elif DEPTH_PACKING == 3203\n\t\tgl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\n\t#endif\n}";
|
|
527
527
|
|
|
528
528
|
const vertex$d = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <batching_vertex>\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#include <morphinstance_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}";
|
|
529
529
|
|
|
@@ -2361,7 +2361,7 @@ function WebGLCapabilities( gl, extensions, parameters, utils ) {
|
|
|
2361
2361
|
}
|
|
2362
2362
|
|
|
2363
2363
|
const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;
|
|
2364
|
-
const
|
|
2364
|
+
const reversedDepthBuffer = parameters.reversedDepthBuffer === true && extensions.has( 'EXT_clip_control' );
|
|
2365
2365
|
|
|
2366
2366
|
const maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );
|
|
2367
2367
|
const maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );
|
|
@@ -2389,7 +2389,7 @@ function WebGLCapabilities( gl, extensions, parameters, utils ) {
|
|
|
2389
2389
|
|
|
2390
2390
|
precision: precision,
|
|
2391
2391
|
logarithmicDepthBuffer: logarithmicDepthBuffer,
|
|
2392
|
-
|
|
2392
|
+
reversedDepthBuffer: reversedDepthBuffer,
|
|
2393
2393
|
|
|
2394
2394
|
maxTextures: maxTextures,
|
|
2395
2395
|
maxVertexTextures: maxVertexTextures,
|
|
@@ -2994,6 +2994,17 @@ class PMREMGenerator {
|
|
|
2994
2994
|
renderer.toneMapping = NoToneMapping;
|
|
2995
2995
|
renderer.autoClear = false;
|
|
2996
2996
|
|
|
2997
|
+
// https://github.com/mrdoob/three.js/issues/31413#issuecomment-3095966812
|
|
2998
|
+
const reversedDepthBuffer = renderer.state.buffers.depth.getReversed();
|
|
2999
|
+
|
|
3000
|
+
if ( reversedDepthBuffer ) {
|
|
3001
|
+
|
|
3002
|
+
renderer.setRenderTarget( cubeUVRenderTarget );
|
|
3003
|
+
renderer.clearDepth();
|
|
3004
|
+
renderer.setRenderTarget( null );
|
|
3005
|
+
|
|
3006
|
+
}
|
|
3007
|
+
|
|
2997
3008
|
const backgroundMaterial = new MeshBasicMaterial( {
|
|
2998
3009
|
name: 'PMREM.Background',
|
|
2999
3010
|
side: BackSide,
|
|
@@ -5625,7 +5636,9 @@ function getEncodingComponents( colorSpace ) {
|
|
|
5625
5636
|
function getShaderErrors( gl, shader, type ) {
|
|
5626
5637
|
|
|
5627
5638
|
const status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );
|
|
5628
|
-
|
|
5639
|
+
|
|
5640
|
+
const shaderInfoLog = gl.getShaderInfoLog( shader ) || '';
|
|
5641
|
+
const errors = shaderInfoLog.trim();
|
|
5629
5642
|
|
|
5630
5643
|
if ( status && errors === '' ) return '';
|
|
5631
5644
|
|
|
@@ -6129,8 +6142,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
6129
6142
|
parameters.bumpMap ? '#define USE_BUMPMAP' : '',
|
|
6130
6143
|
parameters.normalMap ? '#define USE_NORMALMAP' : '',
|
|
6131
6144
|
parameters.normalMapMode === TriPlanarMapping ? '#define USE_NORMALMAP_TRIPLANAR' : parameters.normalMapMode === CylindricalMapping ? '#define USE_NORMALMAP_CYLINDRICAL' : parameters.normalMapMode === UVMapping ? '#define USE_NORMALMAP_UV' : '',
|
|
6132
|
-
parameters.normalMapObjectSpace && [UVMapping, CylindricalMapping].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_OBJECTSPACE' : '',
|
|
6133
|
-
parameters.normalMapTangentSpace && [UVMapping, CylindricalMapping].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
|
|
6145
|
+
parameters.normalMapObjectSpace && [ UVMapping, CylindricalMapping ].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_OBJECTSPACE' : '',
|
|
6146
|
+
parameters.normalMapTangentSpace && [ UVMapping, CylindricalMapping ].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
|
|
6134
6147
|
parameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',
|
|
6135
6148
|
parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
|
|
6136
6149
|
|
|
@@ -6140,9 +6153,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
6140
6153
|
parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
|
|
6141
6154
|
parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
|
|
6142
6155
|
parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
|
|
6143
|
-
parameters.clearcoatNormalMapMode === TriPlanarMapping ? '#define USE_CLEARCOAT_NORMALMAP_TRIPLANAR'
|
|
6144
|
-
|
|
6145
|
-
|
|
6156
|
+
parameters.clearcoatNormalMapMode === TriPlanarMapping ? '#define USE_CLEARCOAT_NORMALMAP_TRIPLANAR'
|
|
6157
|
+
: parameters.clearcoatNormalMapMode === CylindricalMapping ? '#define USE_CLEARCOAT_NORMALMAP_CYLINDRICAL'
|
|
6158
|
+
: parameters.clearcoatNormalMapMode === UVMapping ? '#define USE_CLEARCOAT_NORMALMAP_UV' : '',
|
|
6146
6159
|
|
|
6147
6160
|
parameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',
|
|
6148
6161
|
parameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',
|
|
@@ -6230,7 +6243,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
6230
6243
|
parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
|
|
6231
6244
|
|
|
6232
6245
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
6233
|
-
parameters.
|
|
6246
|
+
parameters.reversedDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
|
|
6234
6247
|
|
|
6235
6248
|
'uniform mat4 modelMatrix;',
|
|
6236
6249
|
'uniform mat4 modelViewMatrix;',
|
|
@@ -6336,8 +6349,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
6336
6349
|
parameters.bumpMap ? '#define USE_BUMPMAP' : '',
|
|
6337
6350
|
parameters.normalMap ? '#define USE_NORMALMAP' : '',
|
|
6338
6351
|
parameters.normalMapMode === TriPlanarMapping ? '#define USE_NORMALMAP_TRIPLANAR' : parameters.normalMapMode === CylindricalMapping ? '#define USE_NORMALMAP_CYLINDRICAL' : parameters.normalMapMode === UVMapping ? '#define USE_NORMALMAP_UV' : '',
|
|
6339
|
-
parameters.normalMapObjectSpace && [UVMapping, CylindricalMapping].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_OBJECTSPACE' : '',
|
|
6340
|
-
parameters.normalMapTangentSpace && [UVMapping, CylindricalMapping].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
|
|
6352
|
+
parameters.normalMapObjectSpace && [ UVMapping, CylindricalMapping ].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_OBJECTSPACE' : '',
|
|
6353
|
+
parameters.normalMapTangentSpace && [ UVMapping, CylindricalMapping ].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
|
|
6341
6354
|
parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
|
|
6342
6355
|
|
|
6343
6356
|
parameters.anisotropy ? '#define USE_ANISOTROPY' : '',
|
|
@@ -6347,9 +6360,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
6347
6360
|
parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
|
|
6348
6361
|
parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
|
|
6349
6362
|
parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
|
|
6350
|
-
parameters.clearcoatNormalMapMode === TriPlanarMapping ? '#define USE_CLEARCOAT_NORMALMAP_TRIPLANAR'
|
|
6351
|
-
|
|
6352
|
-
|
|
6363
|
+
parameters.clearcoatNormalMapMode === TriPlanarMapping ? '#define USE_CLEARCOAT_NORMALMAP_TRIPLANAR'
|
|
6364
|
+
: parameters.clearcoatNormalMapMode === CylindricalMapping ? '#define USE_CLEARCOAT_NORMALMAP_CYLINDRICAL'
|
|
6365
|
+
: parameters.clearcoatNormalMapMode === UVMapping ? '#define USE_CLEARCOAT_NORMALMAP_UV' : '',
|
|
6353
6366
|
|
|
6354
6367
|
parameters.dispersion ? '#define USE_DISPERSION' : '',
|
|
6355
6368
|
|
|
@@ -6406,7 +6419,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
6406
6419
|
parameters.decodeVideoTextureEmissive ? '#define DECODE_VIDEO_TEXTURE_EMISSIVE' : '',
|
|
6407
6420
|
|
|
6408
6421
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
6409
|
-
parameters.
|
|
6422
|
+
parameters.reversedDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
|
|
6410
6423
|
|
|
6411
6424
|
'uniform mat4 modelViewMatrix;',
|
|
6412
6425
|
'uniform mat4 viewMatrix;',
|
|
@@ -6507,9 +6520,13 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
6507
6520
|
// check for link errors
|
|
6508
6521
|
if ( renderer.debug.checkShaderErrors ) {
|
|
6509
6522
|
|
|
6510
|
-
const
|
|
6511
|
-
const
|
|
6512
|
-
const
|
|
6523
|
+
const programInfoLog = gl.getProgramInfoLog( program ) || '';
|
|
6524
|
+
const vertexShaderInfoLog = gl.getShaderInfoLog( glVertexShader ) || '';
|
|
6525
|
+
const fragmentShaderInfoLog = gl.getShaderInfoLog( glFragmentShader ) || '';
|
|
6526
|
+
|
|
6527
|
+
const programLog = programInfoLog.trim();
|
|
6528
|
+
const vertexLog = vertexShaderInfoLog.trim();
|
|
6529
|
+
const fragmentLog = fragmentShaderInfoLog.trim();
|
|
6513
6530
|
|
|
6514
6531
|
let runnable = true;
|
|
6515
6532
|
let haveDiagnostics = true;
|
|
@@ -6895,7 +6912,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
6895
6912
|
}
|
|
6896
6913
|
|
|
6897
6914
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
6898
|
-
const
|
|
6915
|
+
const reversedDepthBuffer = renderer.state.buffers.depth.getReversed();
|
|
6899
6916
|
|
|
6900
6917
|
const IS_INSTANCEDMESH = object.isInstancedMesh === true;
|
|
6901
6918
|
const IS_BATCHEDMESH = object.isBatchedMesh === true;
|
|
@@ -7101,7 +7118,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
7101
7118
|
|
|
7102
7119
|
sizeAttenuation: material.sizeAttenuation === true,
|
|
7103
7120
|
logarithmicDepthBuffer: logarithmicDepthBuffer,
|
|
7104
|
-
|
|
7121
|
+
reversedDepthBuffer: reversedDepthBuffer,
|
|
7105
7122
|
|
|
7106
7123
|
skinning: object.isSkinnedMesh === true,
|
|
7107
7124
|
|
|
@@ -7234,7 +7251,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
7234
7251
|
array.push( parameters.anisotropyMapUv );
|
|
7235
7252
|
array.push( parameters.clearcoatMapUv );
|
|
7236
7253
|
array.push( parameters.clearcoatNormalMapUv );
|
|
7237
|
-
array.push( parameters.clearcoatNormalMapMode);
|
|
7254
|
+
array.push( parameters.clearcoatNormalMapMode );
|
|
7238
7255
|
array.push( parameters.clearcoatRoughnessMapUv );
|
|
7239
7256
|
array.push( parameters.iridescenceMapUv );
|
|
7240
7257
|
array.push( parameters.iridescenceThicknessMapUv );
|
|
@@ -7333,7 +7350,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
7333
7350
|
_programLayers.enable( 2 );
|
|
7334
7351
|
if ( parameters.logarithmicDepthBuffer )
|
|
7335
7352
|
_programLayers.enable( 3 );
|
|
7336
|
-
if ( parameters.
|
|
7353
|
+
if ( parameters.reversedDepthBuffer )
|
|
7337
7354
|
_programLayers.enable( 4 );
|
|
7338
7355
|
if ( parameters.skinning )
|
|
7339
7356
|
_programLayers.enable( 5 );
|
|
@@ -8500,7 +8517,17 @@ function WebGLShadowMap( renderer, objects, capabilities ) {
|
|
|
8500
8517
|
|
|
8501
8518
|
// Set GL state for depth map.
|
|
8502
8519
|
_state.setBlending( NoBlending );
|
|
8503
|
-
|
|
8520
|
+
|
|
8521
|
+
if ( _state.buffers.depth.getReversed() ) {
|
|
8522
|
+
|
|
8523
|
+
_state.buffers.color.setClear( 0, 0, 0, 0 );
|
|
8524
|
+
|
|
8525
|
+
} else {
|
|
8526
|
+
|
|
8527
|
+
_state.buffers.color.setClear( 1, 1, 1, 1 );
|
|
8528
|
+
|
|
8529
|
+
}
|
|
8530
|
+
|
|
8504
8531
|
_state.buffers.depth.setTest( true );
|
|
8505
8532
|
_state.setScissorTest( false );
|
|
8506
8533
|
|
|
@@ -10674,7 +10701,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
10674
10701
|
|
|
10675
10702
|
if ( texture.isVideoTexture ) updateVideoTexture( texture );
|
|
10676
10703
|
|
|
10677
|
-
if ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {
|
|
10704
|
+
if ( texture.isRenderTargetTexture === false && texture.isExternalTexture !== true && texture.version > 0 && textureProperties.__version !== texture.version ) {
|
|
10678
10705
|
|
|
10679
10706
|
const image = texture.image;
|
|
10680
10707
|
|
|
@@ -10693,6 +10720,10 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
10693
10720
|
|
|
10694
10721
|
}
|
|
10695
10722
|
|
|
10723
|
+
} else if ( texture.isExternalTexture ) {
|
|
10724
|
+
|
|
10725
|
+
textureProperties.__webglTexture = texture.sourceTexture ? texture.sourceTexture : null;
|
|
10726
|
+
|
|
10696
10727
|
}
|
|
10697
10728
|
|
|
10698
10729
|
state.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
|
|
@@ -10703,7 +10734,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
10703
10734
|
|
|
10704
10735
|
const textureProperties = properties.get( texture );
|
|
10705
10736
|
|
|
10706
|
-
if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
|
|
10737
|
+
if ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {
|
|
10707
10738
|
|
|
10708
10739
|
uploadTexture( textureProperties, texture, slot );
|
|
10709
10740
|
return;
|
|
@@ -10718,7 +10749,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
10718
10749
|
|
|
10719
10750
|
const textureProperties = properties.get( texture );
|
|
10720
10751
|
|
|
10721
|
-
if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
|
|
10752
|
+
if ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {
|
|
10722
10753
|
|
|
10723
10754
|
uploadTexture( textureProperties, texture, slot );
|
|
10724
10755
|
return;
|
|
@@ -12161,13 +12192,21 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
12161
12192
|
const attachment = textures[ i ];
|
|
12162
12193
|
const attachmentProperties = properties.get( attachment );
|
|
12163
12194
|
|
|
12164
|
-
|
|
12165
|
-
|
|
12166
|
-
|
|
12195
|
+
let glTextureType = _gl.TEXTURE_2D;
|
|
12196
|
+
|
|
12197
|
+
if ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {
|
|
12198
|
+
|
|
12199
|
+
glTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;
|
|
12200
|
+
|
|
12201
|
+
}
|
|
12202
|
+
|
|
12203
|
+
state.bindTexture( glTextureType, attachmentProperties.__webglTexture );
|
|
12204
|
+
setTextureParameters( glTextureType, attachment );
|
|
12205
|
+
setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, glTextureType, 0 );
|
|
12167
12206
|
|
|
12168
12207
|
if ( textureNeedsGenerateMipmaps( attachment ) ) {
|
|
12169
12208
|
|
|
12170
|
-
generateMipmap(
|
|
12209
|
+
generateMipmap( glTextureType );
|
|
12171
12210
|
|
|
12172
12211
|
}
|
|
12173
12212
|
|
|
@@ -12688,6 +12727,48 @@ function WebGLUtils( gl, extensions ) {
|
|
|
12688
12727
|
|
|
12689
12728
|
}
|
|
12690
12729
|
|
|
12730
|
+
/**
|
|
12731
|
+
* Represents a texture created externally from the renderer context.
|
|
12732
|
+
*
|
|
12733
|
+
* This may be a texture from a protected media stream, device camera feed,
|
|
12734
|
+
* or other data feeds like a depth sensor.
|
|
12735
|
+
*
|
|
12736
|
+
* Note that this class is only supported in {@link WebGLRenderer} right now.
|
|
12737
|
+
*
|
|
12738
|
+
* @augments Texture
|
|
12739
|
+
*/
|
|
12740
|
+
class ExternalTexture extends Texture {
|
|
12741
|
+
|
|
12742
|
+
/**
|
|
12743
|
+
* Creates a new raw texture.
|
|
12744
|
+
*
|
|
12745
|
+
* @param {?WebGLTexture} [sourceTexture=null] - The external texture.
|
|
12746
|
+
*/
|
|
12747
|
+
constructor( sourceTexture = null ) {
|
|
12748
|
+
|
|
12749
|
+
super();
|
|
12750
|
+
|
|
12751
|
+
/**
|
|
12752
|
+
* The external source texture.
|
|
12753
|
+
*
|
|
12754
|
+
* @type {?WebGLTexture}
|
|
12755
|
+
* @default null
|
|
12756
|
+
*/
|
|
12757
|
+
this.sourceTexture = sourceTexture;
|
|
12758
|
+
|
|
12759
|
+
/**
|
|
12760
|
+
* This flag can be used for type testing.
|
|
12761
|
+
*
|
|
12762
|
+
* @type {boolean}
|
|
12763
|
+
* @readonly
|
|
12764
|
+
* @default true
|
|
12765
|
+
*/
|
|
12766
|
+
this.isExternalTexture = true;
|
|
12767
|
+
|
|
12768
|
+
}
|
|
12769
|
+
|
|
12770
|
+
}
|
|
12771
|
+
|
|
12691
12772
|
const _occlusion_vertex = `
|
|
12692
12773
|
void main() {
|
|
12693
12774
|
|
|
@@ -12727,9 +12808,9 @@ class WebXRDepthSensing {
|
|
|
12727
12808
|
constructor() {
|
|
12728
12809
|
|
|
12729
12810
|
/**
|
|
12730
|
-
*
|
|
12811
|
+
* An opaque texture representing the depth of the user's environment.
|
|
12731
12812
|
*
|
|
12732
|
-
* @type {?
|
|
12813
|
+
* @type {?ExternalTexture}
|
|
12733
12814
|
*/
|
|
12734
12815
|
this.texture = null;
|
|
12735
12816
|
|
|
@@ -12759,18 +12840,14 @@ class WebXRDepthSensing {
|
|
|
12759
12840
|
/**
|
|
12760
12841
|
* Inits the depth sensing module
|
|
12761
12842
|
*
|
|
12762
|
-
* @param {WebGLRenderer} renderer - The renderer.
|
|
12763
12843
|
* @param {XRWebGLDepthInformation} depthData - The XR depth data.
|
|
12764
12844
|
* @param {XRRenderState} renderState - The XR render state.
|
|
12765
12845
|
*/
|
|
12766
|
-
init(
|
|
12846
|
+
init( depthData, renderState ) {
|
|
12767
12847
|
|
|
12768
12848
|
if ( this.texture === null ) {
|
|
12769
12849
|
|
|
12770
|
-
const texture = new
|
|
12771
|
-
|
|
12772
|
-
const texProps = renderer.properties.get( texture );
|
|
12773
|
-
texProps.__webglTexture = depthData.texture;
|
|
12850
|
+
const texture = new ExternalTexture( depthData.texture );
|
|
12774
12851
|
|
|
12775
12852
|
if ( ( depthData.depthNear !== renderState.depthNear ) || ( depthData.depthFar !== renderState.depthFar ) ) {
|
|
12776
12853
|
|
|
@@ -12831,7 +12908,7 @@ class WebXRDepthSensing {
|
|
|
12831
12908
|
/**
|
|
12832
12909
|
* Returns a texture representing the depth of the user's environment.
|
|
12833
12910
|
*
|
|
12834
|
-
* @return {?
|
|
12911
|
+
* @return {?ExternalTexture} The depth texture.
|
|
12835
12912
|
*/
|
|
12836
12913
|
getDepthTexture() {
|
|
12837
12914
|
|
|
@@ -12881,6 +12958,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
12881
12958
|
let xrFrame = null;
|
|
12882
12959
|
|
|
12883
12960
|
const depthSensing = new WebXRDepthSensing();
|
|
12961
|
+
const cameraAccessTextures = {};
|
|
12884
12962
|
const attributes = gl.getContextAttributes();
|
|
12885
12963
|
|
|
12886
12964
|
let initialRenderTarget = null;
|
|
@@ -13061,6 +13139,11 @@ class WebXRManager extends EventDispatcher {
|
|
|
13061
13139
|
_currentDepthFar = null;
|
|
13062
13140
|
|
|
13063
13141
|
depthSensing.reset();
|
|
13142
|
+
for ( const key in cameraAccessTextures ) {
|
|
13143
|
+
|
|
13144
|
+
delete cameraAccessTextures[ key ];
|
|
13145
|
+
|
|
13146
|
+
}
|
|
13064
13147
|
|
|
13065
13148
|
// restore framebuffer/rendering state
|
|
13066
13149
|
|
|
@@ -13227,9 +13310,15 @@ class WebXRManager extends EventDispatcher {
|
|
|
13227
13310
|
currentPixelRatio = renderer.getPixelRatio();
|
|
13228
13311
|
renderer.getSize( currentSize );
|
|
13229
13312
|
|
|
13313
|
+
if ( typeof XRWebGLBinding !== 'undefined' ) {
|
|
13314
|
+
|
|
13315
|
+
glBinding = new XRWebGLBinding( session, gl );
|
|
13316
|
+
|
|
13317
|
+
}
|
|
13318
|
+
|
|
13230
13319
|
// Check that the browser implements the necessary APIs to use an
|
|
13231
13320
|
// XRProjectionLayer rather than an XRWebGLLayer
|
|
13232
|
-
const useLayers =
|
|
13321
|
+
const useLayers = glBinding !== null && 'createProjectionLayer' in XRWebGLBinding.prototype;
|
|
13233
13322
|
|
|
13234
13323
|
if ( ! useLayers ) {
|
|
13235
13324
|
|
|
@@ -13282,8 +13371,6 @@ class WebXRManager extends EventDispatcher {
|
|
|
13282
13371
|
scaleFactor: framebufferScaleFactor
|
|
13283
13372
|
};
|
|
13284
13373
|
|
|
13285
|
-
glBinding = new XRWebGLBinding( session, gl );
|
|
13286
|
-
|
|
13287
13374
|
glProjLayer = glBinding.createProjectionLayer( projectionlayerInit );
|
|
13288
13375
|
|
|
13289
13376
|
session.updateRenderState( { layers: [ glProjLayer ] } );
|
|
@@ -13551,9 +13638,10 @@ class WebXRManager extends EventDispatcher {
|
|
|
13551
13638
|
|
|
13552
13639
|
}
|
|
13553
13640
|
|
|
13554
|
-
|
|
13555
|
-
|
|
13556
|
-
|
|
13641
|
+
// inherit camera layers and enable eye layers (1 = left, 2 = right)
|
|
13642
|
+
cameraXR.layers.mask = camera.layers.mask | 0b110;
|
|
13643
|
+
cameraL.layers.mask = cameraXR.layers.mask & 0b011;
|
|
13644
|
+
cameraR.layers.mask = cameraXR.layers.mask & 0b101;
|
|
13557
13645
|
|
|
13558
13646
|
const parent = camera.parent;
|
|
13559
13647
|
const cameras = cameraXR.cameras;
|
|
@@ -13634,7 +13722,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
13634
13722
|
/**
|
|
13635
13723
|
* Returns the amount of foveation used by the XR compositor for the projection layer.
|
|
13636
13724
|
*
|
|
13637
|
-
* @return {number} The amount of foveation.
|
|
13725
|
+
* @return {number|undefined} The amount of foveation.
|
|
13638
13726
|
*/
|
|
13639
13727
|
this.getFoveation = function () {
|
|
13640
13728
|
|
|
@@ -13697,6 +13785,19 @@ class WebXRManager extends EventDispatcher {
|
|
|
13697
13785
|
|
|
13698
13786
|
};
|
|
13699
13787
|
|
|
13788
|
+
/**
|
|
13789
|
+
* Retrieves an opaque texture from the view-aligned {@link XRCamera}.
|
|
13790
|
+
* Only available during the current animation loop.
|
|
13791
|
+
*
|
|
13792
|
+
* @param {XRCamera} xrCamera - The camera to query.
|
|
13793
|
+
* @return {?Texture} An opaque texture representing the current raw camera frame.
|
|
13794
|
+
*/
|
|
13795
|
+
this.getCameraTexture = function ( xrCamera ) {
|
|
13796
|
+
|
|
13797
|
+
return cameraAccessTextures[ xrCamera ];
|
|
13798
|
+
|
|
13799
|
+
};
|
|
13800
|
+
|
|
13700
13801
|
// Animation Loop
|
|
13701
13802
|
|
|
13702
13803
|
let onAnimationFrameCallback = null;
|
|
@@ -13802,7 +13903,42 @@ class WebXRManager extends EventDispatcher {
|
|
|
13802
13903
|
|
|
13803
13904
|
if ( depthData && depthData.isValid && depthData.texture ) {
|
|
13804
13905
|
|
|
13805
|
-
depthSensing.init(
|
|
13906
|
+
depthSensing.init( depthData, session.renderState );
|
|
13907
|
+
|
|
13908
|
+
}
|
|
13909
|
+
|
|
13910
|
+
}
|
|
13911
|
+
|
|
13912
|
+
const cameraAccessEnabled = enabledFeatures &&
|
|
13913
|
+
enabledFeatures.includes( 'camera-access' );
|
|
13914
|
+
|
|
13915
|
+
if ( cameraAccessEnabled ) {
|
|
13916
|
+
|
|
13917
|
+
renderer.state.unbindTexture();
|
|
13918
|
+
|
|
13919
|
+
if ( glBinding ) {
|
|
13920
|
+
|
|
13921
|
+
for ( let i = 0; i < views.length; i ++ ) {
|
|
13922
|
+
|
|
13923
|
+
const camera = views[ i ].camera;
|
|
13924
|
+
|
|
13925
|
+
if ( camera ) {
|
|
13926
|
+
|
|
13927
|
+
let cameraTex = cameraAccessTextures[ camera ];
|
|
13928
|
+
|
|
13929
|
+
if ( ! cameraTex ) {
|
|
13930
|
+
|
|
13931
|
+
cameraTex = new ExternalTexture();
|
|
13932
|
+
cameraAccessTextures[ camera ] = cameraTex;
|
|
13933
|
+
|
|
13934
|
+
}
|
|
13935
|
+
|
|
13936
|
+
const glTexture = glBinding.getCameraImage( camera );
|
|
13937
|
+
cameraTex.sourceTexture = glTexture;
|
|
13938
|
+
|
|
13939
|
+
}
|
|
13940
|
+
|
|
13941
|
+
}
|
|
13806
13942
|
|
|
13807
13943
|
}
|
|
13808
13944
|
|
|
@@ -13991,17 +14127,17 @@ function WebGLMaterials( renderer, properties ) {
|
|
|
13991
14127
|
|
|
13992
14128
|
}
|
|
13993
14129
|
|
|
13994
|
-
|
|
14130
|
+
if ( material.texture3DMatrix ) {
|
|
13995
14131
|
|
|
13996
|
-
|
|
14132
|
+
uniforms.texture3DMatrix.value.copy( material.texture3DMatrix );
|
|
13997
14133
|
|
|
13998
|
-
|
|
14134
|
+
}
|
|
13999
14135
|
|
|
14000
|
-
|
|
14136
|
+
if ( material.triplanarHardness ) {
|
|
14001
14137
|
|
|
14002
|
-
|
|
14138
|
+
uniforms.triplanarHardness.value = material.triplanarHardness;
|
|
14003
14139
|
|
|
14004
|
-
|
|
14140
|
+
}
|
|
14005
14141
|
|
|
14006
14142
|
if ( material.alphaMap ) {
|
|
14007
14143
|
|
|
@@ -14865,7 +15001,7 @@ class WebGLRenderer {
|
|
|
14865
15001
|
preserveDrawingBuffer = false,
|
|
14866
15002
|
powerPreference = 'default',
|
|
14867
15003
|
failIfMajorPerformanceCaveat = false,
|
|
14868
|
-
|
|
15004
|
+
reversedDepthBuffer = false,
|
|
14869
15005
|
} = parameters;
|
|
14870
15006
|
|
|
14871
15007
|
/**
|
|
@@ -15098,7 +15234,6 @@ class WebGLRenderer {
|
|
|
15098
15234
|
|
|
15099
15235
|
// camera matrices cache
|
|
15100
15236
|
|
|
15101
|
-
const _currentProjectionMatrix = new Matrix4();
|
|
15102
15237
|
const _projScreenMatrix = new Matrix4();
|
|
15103
15238
|
|
|
15104
15239
|
const _vector3 = new Vector3();
|
|
@@ -15194,7 +15329,7 @@ class WebGLRenderer {
|
|
|
15194
15329
|
|
|
15195
15330
|
state = new WebGLState( _gl, extensions );
|
|
15196
15331
|
|
|
15197
|
-
if ( capabilities.
|
|
15332
|
+
if ( capabilities.reversedDepthBuffer && reversedDepthBuffer ) {
|
|
15198
15333
|
|
|
15199
15334
|
state.buffers.depth.setReversed( true );
|
|
15200
15335
|
|
|
@@ -16342,7 +16477,7 @@ class WebGLRenderer {
|
|
|
16342
16477
|
renderStateStack.push( currentRenderState );
|
|
16343
16478
|
|
|
16344
16479
|
_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
|
|
16345
|
-
_frustum.setFromProjectionMatrix( _projScreenMatrix );
|
|
16480
|
+
_frustum.setFromProjectionMatrix( _projScreenMatrix, WebGLCoordinateSystem, camera.reversedDepth );
|
|
16346
16481
|
|
|
16347
16482
|
_localClippingEnabled = this.localClippingEnabled;
|
|
16348
16483
|
_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );
|
|
@@ -17173,23 +17308,17 @@ class WebGLRenderer {
|
|
|
17173
17308
|
|
|
17174
17309
|
// common camera uniforms
|
|
17175
17310
|
|
|
17176
|
-
const
|
|
17177
|
-
|
|
17178
|
-
if ( reverseDepthBuffer ) {
|
|
17311
|
+
const reversedDepthBuffer = state.buffers.depth.getReversed();
|
|
17179
17312
|
|
|
17180
|
-
|
|
17313
|
+
if ( reversedDepthBuffer && camera.reversedDepth !== true ) {
|
|
17181
17314
|
|
|
17182
|
-
|
|
17183
|
-
|
|
17184
|
-
|
|
17185
|
-
p_uniforms.setValue( _gl, 'projectionMatrix', _currentProjectionMatrix );
|
|
17186
|
-
|
|
17187
|
-
} else {
|
|
17188
|
-
|
|
17189
|
-
p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );
|
|
17315
|
+
camera._reversedDepth = true;
|
|
17316
|
+
camera.updateProjectionMatrix();
|
|
17190
17317
|
|
|
17191
17318
|
}
|
|
17192
17319
|
|
|
17320
|
+
p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );
|
|
17321
|
+
|
|
17193
17322
|
p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );
|
|
17194
17323
|
|
|
17195
17324
|
const uCamPos = p_uniforms.map.cameraPosition;
|
|
@@ -17619,9 +17748,15 @@ class WebGLRenderer {
|
|
|
17619
17748
|
|
|
17620
17749
|
} else if ( isRenderTarget3D ) {
|
|
17621
17750
|
|
|
17622
|
-
const textureProperties = properties.get( renderTarget.texture );
|
|
17623
17751
|
const layer = activeCubeFace;
|
|
17624
|
-
|
|
17752
|
+
|
|
17753
|
+
for ( let i = 0; i < renderTarget.textures.length; i ++ ) {
|
|
17754
|
+
|
|
17755
|
+
const textureProperties = properties.get( renderTarget.textures[ i ] );
|
|
17756
|
+
|
|
17757
|
+
_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, textureProperties.__webglTexture, activeMipmapLevel, layer );
|
|
17758
|
+
|
|
17759
|
+
}
|
|
17625
17760
|
|
|
17626
17761
|
} else if ( renderTarget !== null && activeMipmapLevel !== 0 ) {
|
|
17627
17762
|
|
|
@@ -17773,7 +17908,7 @@ class WebGLRenderer {
|
|
|
17773
17908
|
_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );
|
|
17774
17909
|
_gl.bufferData( _gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ );
|
|
17775
17910
|
|
|
17776
|
-
// when using MRT, select the
|
|
17911
|
+
// when using MRT, select the correct color buffer for the subsequent read command
|
|
17777
17912
|
|
|
17778
17913
|
if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
|
|
17779
17914
|
|