super-three 0.163.0 → 0.165.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/build/three.cjs +1127 -452
- package/build/three.module.js +1127 -452
- package/build/three.module.min.js +2 -2
- package/examples/jsm/animation/CCDIKSolver.js +4 -2
- package/examples/jsm/controls/TransformControls.js +1 -1
- package/examples/jsm/environments/RoomEnvironment.js +1 -5
- package/examples/jsm/exporters/GLTFExporter.js +45 -1
- package/examples/jsm/exporters/USDZExporter.js +13 -5
- package/examples/jsm/helpers/ViewHelper.js +32 -67
- package/examples/jsm/libs/draco/README.md +2 -2
- package/examples/jsm/libs/tween.module.js +75 -64
- package/examples/jsm/lines/LineMaterial.js +1 -15
- package/examples/jsm/lines/LineSegments2.js +15 -0
- package/examples/jsm/lines/Wireframe.js +16 -1
- package/examples/jsm/loaders/DRACOLoader.js +1 -1
- package/examples/jsm/loaders/EXRLoader.js +283 -99
- package/examples/jsm/loaders/FBXLoader.js +24 -13
- package/examples/jsm/loaders/GLTFLoader.js +55 -0
- package/examples/jsm/loaders/KTX2Loader.js +3 -6
- package/examples/jsm/loaders/LDrawLoader.js +3 -2
- package/examples/jsm/loaders/MMDLoader.js +31 -12
- package/examples/jsm/loaders/VRMLLoader.js +1 -1
- package/examples/jsm/loaders/lwo/IFFParser.js +8 -5
- package/examples/jsm/materials/MeshGouraudMaterial.js +7 -1
- package/examples/jsm/math/Octree.js +26 -20
- package/examples/jsm/modifiers/CurveModifier.js +11 -9
- package/examples/jsm/nodes/Nodes.js +15 -13
- package/examples/jsm/nodes/accessors/AccessorsUtils.js +16 -1
- package/examples/jsm/nodes/accessors/BitangentNode.js +7 -83
- package/examples/jsm/nodes/accessors/BufferNode.js +6 -0
- package/examples/jsm/nodes/accessors/CameraNode.js +12 -119
- package/examples/jsm/nodes/accessors/ClippingNode.js +3 -2
- package/examples/jsm/nodes/accessors/MaterialNode.js +109 -3
- package/examples/jsm/nodes/accessors/ModelNode.js +3 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +9 -101
- package/examples/jsm/nodes/accessors/PositionNode.js +6 -100
- package/examples/jsm/nodes/accessors/ReferenceNode.js +6 -0
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +2 -31
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +9 -0
- package/examples/jsm/nodes/accessors/{TextureStoreNode.js → StorageTextureNode.js} +19 -6
- package/examples/jsm/nodes/accessors/TangentNode.js +11 -97
- package/examples/jsm/nodes/accessors/Texture3DNode.js +100 -0
- package/examples/jsm/nodes/accessors/TextureNode.js +21 -3
- package/examples/jsm/nodes/accessors/TextureSizeNode.js +1 -1
- package/examples/jsm/nodes/accessors/UVNode.js +2 -46
- package/examples/jsm/nodes/code/FunctionNode.js +0 -8
- package/examples/jsm/nodes/core/AttributeNode.js +15 -3
- package/examples/jsm/nodes/core/ContextNode.js +6 -0
- package/examples/jsm/nodes/core/Node.js +23 -2
- package/examples/jsm/nodes/core/NodeBuilder.js +25 -18
- package/examples/jsm/nodes/core/NodeKeywords.js +1 -1
- package/examples/jsm/nodes/core/OutputStructNode.js +3 -6
- package/examples/jsm/nodes/core/PropertyNode.js +11 -0
- package/examples/jsm/nodes/core/VaryingNode.js +40 -9
- package/examples/jsm/nodes/display/AfterImageNode.js +14 -2
- package/examples/jsm/nodes/display/BumpMapNode.js +7 -26
- package/examples/jsm/nodes/display/FrontFacingNode.js +13 -0
- package/examples/jsm/nodes/display/PassNode.js +3 -1
- package/examples/jsm/nodes/display/ViewportDepthNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportNode.js +5 -3
- package/examples/jsm/nodes/display/ViewportTextureNode.js +4 -1
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +26 -7
- package/examples/jsm/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -3
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
- package/examples/jsm/nodes/functions/PhongLightingModel.js +1 -1
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +210 -12
- package/examples/jsm/nodes/functions/ShadowMaskModel.js +31 -0
- package/examples/jsm/nodes/functions/ToonLightingModel.js +49 -0
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +20 -5
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +2 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +11 -2
- package/examples/jsm/nodes/lighting/IrradianceNode.js +24 -0
- package/examples/jsm/nodes/lighting/LightsNode.js +28 -1
- package/examples/jsm/nodes/lighting/PointLightNode.js +2 -1
- package/examples/jsm/nodes/lighting/SpotLightNode.js +2 -1
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +11 -7
- package/examples/jsm/nodes/materials/Materials.js +4 -0
- package/examples/jsm/nodes/materials/MeshMatcapNodeMaterial.js +52 -0
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -2
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +94 -6
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +11 -4
- package/examples/jsm/nodes/materials/MeshToonNodeMaterial.js +34 -0
- package/examples/jsm/nodes/materials/NodeMaterial.js +43 -45
- package/examples/jsm/nodes/materials/ShadowNodeMaterial.js +34 -0
- package/examples/jsm/nodes/materials/VolumeNodeMaterial.js +106 -0
- package/examples/jsm/nodes/math/HashNode.js +2 -2
- package/examples/jsm/nodes/pmrem/PMREMUtils.js +1 -1
- package/examples/jsm/nodes/shadernode/ShaderNode.js +57 -41
- package/examples/jsm/nodes/utils/ArrayElementNode.js +1 -1
- package/examples/jsm/nodes/utils/MatcapUVNode.js +1 -1
- package/examples/jsm/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/objects/Lensflare.js +2 -2
- package/examples/jsm/physics/JoltPhysics.js +281 -0
- package/examples/jsm/postprocessing/RenderPass.js +1 -1
- package/examples/jsm/postprocessing/RenderTransitionPass.js +193 -0
- package/examples/jsm/renderers/CSS2DRenderer.js +25 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +24 -3
- package/examples/jsm/renderers/common/Attributes.js +2 -0
- package/examples/jsm/renderers/common/Background.js +3 -3
- package/examples/jsm/renderers/common/Bindings.js +17 -0
- package/examples/jsm/renderers/common/ChainMap.js +18 -48
- package/examples/jsm/renderers/common/ClippingContext.js +5 -5
- package/examples/jsm/renderers/common/Pipelines.js +2 -2
- package/examples/jsm/renderers/common/RenderBundle.js +18 -0
- package/examples/jsm/renderers/common/RenderBundles.js +38 -0
- package/examples/jsm/renderers/common/RenderList.js +10 -1
- package/examples/jsm/renderers/common/RenderObject.js +49 -1
- package/examples/jsm/renderers/common/Renderer.js +268 -25
- package/examples/jsm/renderers/common/Textures.js +1 -1
- package/examples/jsm/renderers/common/Uniform.js +1 -1
- package/examples/jsm/renderers/common/extras/PMREMGenerator.js +13 -17
- package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +18 -4
- package/examples/jsm/renderers/common/nodes/NodeSampler.js +6 -0
- package/examples/jsm/renderers/common/nodes/Nodes.js +31 -47
- package/examples/jsm/renderers/webgl/WebGLBackend.js +7 -21
- package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +5 -1
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +23 -5
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +114 -13
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +3 -21
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +80 -46
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +85 -12
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +4 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +10 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUConstants.js +6 -0
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +62 -19
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +62 -3
- package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +1 -1
- package/examples/jsm/utils/BufferGeometryUtils.js +18 -16
- package/examples/jsm/utils/GPUStatsPanel.js +2 -0
- package/examples/jsm/utils/SceneUtils.js +60 -1
- package/examples/jsm/utils/SortUtils.js +8 -5
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/XRHandModelFactory.js +4 -2
- package/package.json +3 -2
- package/src/animation/tracks/BooleanKeyframeTrack.js +10 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -2
- package/src/animation/tracks/StringKeyframeTrack.js +10 -1
- package/src/constants.js +1 -1
- package/src/core/Object3D.js +2 -0
- package/src/core/Raycaster.js +6 -2
- package/src/core/RenderTarget.js +8 -0
- package/src/extras/PMREMGenerator.js +12 -11
- package/src/loaders/FileLoader.js +5 -1
- package/src/loaders/LoaderUtils.js +3 -1
- package/src/loaders/MaterialLoader.js +1 -0
- package/src/loaders/ObjectLoader.js +1 -0
- package/src/materials/Material.js +2 -0
- package/src/materials/MeshPhysicalMaterial.js +20 -0
- package/src/objects/BatchedMesh.js +114 -1
- package/src/objects/Line.js +66 -43
- package/src/renderers/WebGLRenderer.js +371 -109
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +15 -0
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -0
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
- package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +10 -31
- package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +17 -9
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
- package/src/renderers/shaders/ShaderChunk.js +0 -2
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -0
- package/src/renderers/shaders/ShaderLib.js +1 -0
- package/src/renderers/webgl/WebGLBackground.js +24 -3
- package/src/renderers/webgl/WebGLBufferRenderer.js +36 -0
- package/src/renderers/webgl/WebGLCapabilities.js +33 -1
- package/src/renderers/webgl/WebGLExtensions.js +3 -1
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +36 -0
- package/src/renderers/webgl/WebGLLights.js +9 -12
- package/src/renderers/webgl/WebGLMaterials.js +7 -5
- package/src/renderers/webgl/WebGLMorphtargets.js +1 -2
- package/src/renderers/webgl/WebGLProgram.js +5 -36
- package/src/renderers/webgl/WebGLPrograms.js +19 -14
- package/src/renderers/webgl/WebGLRenderStates.js +8 -4
- package/src/renderers/webgl/WebGLShadowMap.js +25 -25
- package/src/renderers/webgl/WebGLTextures.js +206 -129
- package/src/renderers/webgl/WebGLUtils.js +3 -21
- package/src/renderers/webxr/WebXRDepthSensing.js +3 -3
- package/src/renderers/webxr/WebXRManager.js +8 -6
- package/src/textures/CompressedArrayTexture.js +14 -0
- package/src/textures/DataArrayTexture.js +14 -0
- package/src/textures/DepthTexture.js +1 -3
- package/src/utils.js +30 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -318
- package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +0 -26
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -792
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +0 -51
- package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
|
@@ -205,7 +205,7 @@ function WebGLLights( extensions ) {
|
|
|
205
205
|
const matrix4 = new Matrix4();
|
|
206
206
|
const matrix42 = new Matrix4();
|
|
207
207
|
|
|
208
|
-
function setup( lights
|
|
208
|
+
function setup( lights ) {
|
|
209
209
|
|
|
210
210
|
let r = 0, g = 0, b = 0;
|
|
211
211
|
|
|
@@ -228,9 +228,6 @@ function WebGLLights( extensions ) {
|
|
|
228
228
|
// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]
|
|
229
229
|
lights.sort( shadowCastingAndTexturingLightsFirst );
|
|
230
230
|
|
|
231
|
-
// artist-friendly light intensity scaling factor
|
|
232
|
-
const scaleFactor = ( useLegacyLights === true ) ? Math.PI : 1;
|
|
233
|
-
|
|
234
231
|
for ( let i = 0, l = lights.length; i < l; i ++ ) {
|
|
235
232
|
|
|
236
233
|
const light = lights[ i ];
|
|
@@ -243,9 +240,9 @@ function WebGLLights( extensions ) {
|
|
|
243
240
|
|
|
244
241
|
if ( light.isAmbientLight ) {
|
|
245
242
|
|
|
246
|
-
r += color.r * intensity
|
|
247
|
-
g += color.g * intensity
|
|
248
|
-
b += color.b * intensity
|
|
243
|
+
r += color.r * intensity;
|
|
244
|
+
g += color.g * intensity;
|
|
245
|
+
b += color.b * intensity;
|
|
249
246
|
|
|
250
247
|
} else if ( light.isLightProbe ) {
|
|
251
248
|
|
|
@@ -261,7 +258,7 @@ function WebGLLights( extensions ) {
|
|
|
261
258
|
|
|
262
259
|
const uniforms = cache.get( light );
|
|
263
260
|
|
|
264
|
-
uniforms.color.copy( light.color ).multiplyScalar( light.intensity
|
|
261
|
+
uniforms.color.copy( light.color ).multiplyScalar( light.intensity );
|
|
265
262
|
|
|
266
263
|
if ( light.castShadow ) {
|
|
267
264
|
|
|
@@ -292,7 +289,7 @@ function WebGLLights( extensions ) {
|
|
|
292
289
|
|
|
293
290
|
uniforms.position.setFromMatrixPosition( light.matrixWorld );
|
|
294
291
|
|
|
295
|
-
uniforms.color.copy( color ).multiplyScalar( intensity
|
|
292
|
+
uniforms.color.copy( color ).multiplyScalar( intensity );
|
|
296
293
|
uniforms.distance = distance;
|
|
297
294
|
|
|
298
295
|
uniforms.coneCos = Math.cos( light.angle );
|
|
@@ -353,7 +350,7 @@ function WebGLLights( extensions ) {
|
|
|
353
350
|
|
|
354
351
|
const uniforms = cache.get( light );
|
|
355
352
|
|
|
356
|
-
uniforms.color.copy( light.color ).multiplyScalar( light.intensity
|
|
353
|
+
uniforms.color.copy( light.color ).multiplyScalar( light.intensity );
|
|
357
354
|
uniforms.distance = light.distance;
|
|
358
355
|
uniforms.decay = light.decay;
|
|
359
356
|
|
|
@@ -386,8 +383,8 @@ function WebGLLights( extensions ) {
|
|
|
386
383
|
|
|
387
384
|
const uniforms = cache.get( light );
|
|
388
385
|
|
|
389
|
-
uniforms.skyColor.copy( light.color ).multiplyScalar( intensity
|
|
390
|
-
uniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity
|
|
386
|
+
uniforms.skyColor.copy( light.color ).multiplyScalar( intensity );
|
|
387
|
+
uniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );
|
|
391
388
|
|
|
392
389
|
state.hemi[ hemiLength ] = uniforms;
|
|
393
390
|
|
|
@@ -249,11 +249,7 @@ function WebGLMaterials( renderer, properties ) {
|
|
|
249
249
|
if ( material.lightMap ) {
|
|
250
250
|
|
|
251
251
|
uniforms.lightMap.value = material.lightMap;
|
|
252
|
-
|
|
253
|
-
// artist-friendly light intensity scaling factor
|
|
254
|
-
const scaleFactor = ( renderer._useLegacyLights === true ) ? Math.PI : 1;
|
|
255
|
-
|
|
256
|
-
uniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;
|
|
252
|
+
uniforms.lightMapIntensity.value = material.lightMapIntensity;
|
|
257
253
|
|
|
258
254
|
refreshTransformUniform( material.lightMap, uniforms.lightMapTransform );
|
|
259
255
|
|
|
@@ -470,6 +466,12 @@ function WebGLMaterials( renderer, properties ) {
|
|
|
470
466
|
|
|
471
467
|
}
|
|
472
468
|
|
|
469
|
+
if ( material.dispersion > 0 ) {
|
|
470
|
+
|
|
471
|
+
uniforms.dispersion.value = material.dispersion;
|
|
472
|
+
|
|
473
|
+
}
|
|
474
|
+
|
|
473
475
|
if ( material.iridescence > 0 ) {
|
|
474
476
|
|
|
475
477
|
uniforms.iridescence.value = material.iridescence;
|
|
@@ -12,8 +12,7 @@ function WebGLMorphtargets( gl, capabilities, textures ) {
|
|
|
12
12
|
|
|
13
13
|
const objectInfluences = object.morphTargetInfluences;
|
|
14
14
|
|
|
15
|
-
//
|
|
16
|
-
// into an array of data textures. Each layer represents a single morph target.
|
|
15
|
+
// the following encodes morph targets into an array of data textures. Each layer represents a single morph target.
|
|
17
16
|
|
|
18
17
|
const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
|
|
19
18
|
const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
|
|
@@ -244,11 +244,7 @@ function resolveIncludes( string ) {
|
|
|
244
244
|
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
-
const shaderChunkMap = new Map(
|
|
248
|
-
[ 'encodings_fragment', 'colorspace_fragment' ], // @deprecated, r154
|
|
249
|
-
[ 'encodings_pars_fragment', 'colorspace_pars_fragment' ], // @deprecated, r154
|
|
250
|
-
[ 'output_fragment', 'opaque_fragment' ], // @deprecated, r154
|
|
251
|
-
] );
|
|
247
|
+
const shaderChunkMap = new Map();
|
|
252
248
|
|
|
253
249
|
function includeReplacer( match, include ) {
|
|
254
250
|
|
|
@@ -528,6 +524,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
528
524
|
|
|
529
525
|
parameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',
|
|
530
526
|
parameters.batching ? '#define USE_BATCHING' : '',
|
|
527
|
+
parameters.batchingColor ? '#define USE_BATCHING_COLOR' : '',
|
|
531
528
|
parameters.instancing ? '#define USE_INSTANCING' : '',
|
|
532
529
|
parameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',
|
|
533
530
|
parameters.instancingMorph ? '#define USE_INSTANCING_MORPH' : '',
|
|
@@ -624,7 +621,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
624
621
|
parameters.morphTargets ? '#define USE_MORPHTARGETS' : '',
|
|
625
622
|
parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',
|
|
626
623
|
( parameters.morphColors ) ? '#define USE_MORPHCOLORS' : '',
|
|
627
|
-
( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE' : '',
|
|
628
624
|
( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',
|
|
629
625
|
( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',
|
|
630
626
|
parameters.doubleSided ? '#define DOUBLE_SIDED' : '',
|
|
@@ -637,8 +633,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
637
633
|
|
|
638
634
|
parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
|
|
639
635
|
|
|
640
|
-
parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
|
|
641
|
-
|
|
642
636
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
643
637
|
|
|
644
638
|
'uniform mat4 modelMatrix;',
|
|
@@ -705,31 +699,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
705
699
|
|
|
706
700
|
'#endif',
|
|
707
701
|
|
|
708
|
-
'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',
|
|
709
|
-
|
|
710
|
-
' attribute vec3 morphTarget0;',
|
|
711
|
-
' attribute vec3 morphTarget1;',
|
|
712
|
-
' attribute vec3 morphTarget2;',
|
|
713
|
-
' attribute vec3 morphTarget3;',
|
|
714
|
-
|
|
715
|
-
' #ifdef USE_MORPHNORMALS',
|
|
716
|
-
|
|
717
|
-
' attribute vec3 morphNormal0;',
|
|
718
|
-
' attribute vec3 morphNormal1;',
|
|
719
|
-
' attribute vec3 morphNormal2;',
|
|
720
|
-
' attribute vec3 morphNormal3;',
|
|
721
|
-
|
|
722
|
-
' #else',
|
|
723
|
-
|
|
724
|
-
' attribute vec3 morphTarget4;',
|
|
725
|
-
' attribute vec3 morphTarget5;',
|
|
726
|
-
' attribute vec3 morphTarget6;',
|
|
727
|
-
' attribute vec3 morphTarget7;',
|
|
728
|
-
|
|
729
|
-
' #endif',
|
|
730
|
-
|
|
731
|
-
'#endif',
|
|
732
|
-
|
|
733
702
|
'#ifdef USE_SKINNING',
|
|
734
703
|
|
|
735
704
|
' attribute vec4 skinIndex;',
|
|
@@ -779,6 +748,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
779
748
|
parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
|
|
780
749
|
parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
|
|
781
750
|
|
|
751
|
+
parameters.dispersion ? '#define USE_DISPERSION' : '',
|
|
752
|
+
|
|
782
753
|
parameters.iridescence ? '#define USE_IRIDESCENCE' : '',
|
|
783
754
|
parameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',
|
|
784
755
|
parameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',
|
|
@@ -803,7 +774,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
803
774
|
parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',
|
|
804
775
|
|
|
805
776
|
parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
|
|
806
|
-
parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',
|
|
777
|
+
parameters.vertexColors || parameters.instancingColor || parameters.batchingColor ? '#define USE_COLOR' : '',
|
|
807
778
|
parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
|
|
808
779
|
parameters.vertexUv1s ? '#define USE_UV1' : '',
|
|
809
780
|
parameters.vertexUv2s ? '#define USE_UV2' : '',
|
|
@@ -825,8 +796,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
825
796
|
|
|
826
797
|
parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
|
|
827
798
|
|
|
828
|
-
parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
|
|
829
|
-
|
|
830
799
|
parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
|
|
831
800
|
|
|
832
801
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
@@ -129,6 +129,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
129
129
|
|
|
130
130
|
const HAS_ANISOTROPY = material.anisotropy > 0;
|
|
131
131
|
const HAS_CLEARCOAT = material.clearcoat > 0;
|
|
132
|
+
const HAS_DISPERSION = material.dispersion > 0;
|
|
132
133
|
const HAS_IRIDESCENCE = material.iridescence > 0;
|
|
133
134
|
const HAS_SHEEN = material.sheen > 0;
|
|
134
135
|
const HAS_TRANSMISSION = material.transmission > 0;
|
|
@@ -193,6 +194,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
193
194
|
precision: precision,
|
|
194
195
|
|
|
195
196
|
batching: IS_BATCHEDMESH,
|
|
197
|
+
batchingColor: IS_BATCHEDMESH && object._colorsTexture !== null,
|
|
196
198
|
instancing: IS_INSTANCEDMESH,
|
|
197
199
|
instancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,
|
|
198
200
|
instancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null,
|
|
@@ -228,6 +230,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
228
230
|
clearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,
|
|
229
231
|
clearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,
|
|
230
232
|
|
|
233
|
+
dispersion: HAS_DISPERSION,
|
|
234
|
+
|
|
231
235
|
iridescence: HAS_IRIDESCENCE,
|
|
232
236
|
iridescenceMap: HAS_IRIDESCENCEMAP,
|
|
233
237
|
iridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,
|
|
@@ -336,7 +340,6 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
336
340
|
shadowMapType: renderer.shadowMap.type,
|
|
337
341
|
|
|
338
342
|
toneMapping: toneMapping,
|
|
339
|
-
useLegacyLights: renderer._useLegacyLights,
|
|
340
343
|
|
|
341
344
|
decodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),
|
|
342
345
|
|
|
@@ -508,6 +511,10 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
508
511
|
_programLayers.enable( 18 );
|
|
509
512
|
if ( parameters.batching )
|
|
510
513
|
_programLayers.enable( 19 );
|
|
514
|
+
if ( parameters.dispersion )
|
|
515
|
+
_programLayers.enable( 20 );
|
|
516
|
+
if ( parameters.batchingColor )
|
|
517
|
+
_programLayers.enable( 21 );
|
|
511
518
|
|
|
512
519
|
array.push( _programLayers.mask );
|
|
513
520
|
_programLayers.disableAll();
|
|
@@ -532,30 +539,28 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
532
539
|
_programLayers.enable( 8 );
|
|
533
540
|
if ( parameters.shadowMapEnabled )
|
|
534
541
|
_programLayers.enable( 9 );
|
|
535
|
-
if ( parameters.useLegacyLights )
|
|
536
|
-
_programLayers.enable( 10 );
|
|
537
542
|
if ( parameters.doubleSided )
|
|
538
|
-
_programLayers.enable(
|
|
543
|
+
_programLayers.enable( 10 );
|
|
539
544
|
if ( parameters.flipSided )
|
|
540
|
-
_programLayers.enable(
|
|
545
|
+
_programLayers.enable( 11 );
|
|
541
546
|
if ( parameters.useDepthPacking )
|
|
542
|
-
_programLayers.enable(
|
|
547
|
+
_programLayers.enable( 12 );
|
|
543
548
|
if ( parameters.dithering )
|
|
544
|
-
_programLayers.enable(
|
|
549
|
+
_programLayers.enable( 13 );
|
|
545
550
|
if ( parameters.transmission )
|
|
546
|
-
_programLayers.enable(
|
|
551
|
+
_programLayers.enable( 14 );
|
|
547
552
|
if ( parameters.sheen )
|
|
548
|
-
_programLayers.enable(
|
|
553
|
+
_programLayers.enable( 15 );
|
|
549
554
|
if ( parameters.opaque )
|
|
550
|
-
_programLayers.enable(
|
|
555
|
+
_programLayers.enable( 16 );
|
|
551
556
|
if ( parameters.pointsUvs )
|
|
552
|
-
_programLayers.enable(
|
|
557
|
+
_programLayers.enable( 17 );
|
|
553
558
|
if ( parameters.decodeVideoTexture )
|
|
554
|
-
_programLayers.enable(
|
|
559
|
+
_programLayers.enable( 18 );
|
|
555
560
|
if ( parameters.alphaToCoverage )
|
|
556
|
-
_programLayers.enable(
|
|
561
|
+
_programLayers.enable( 19 );
|
|
557
562
|
if ( parameters.numMultiviewViews )
|
|
558
|
-
_programLayers.enable(
|
|
563
|
+
_programLayers.enable( 20 );
|
|
559
564
|
|
|
560
565
|
array.push( _programLayers.mask );
|
|
561
566
|
|
|
@@ -7,7 +7,9 @@ function WebGLRenderState( extensions ) {
|
|
|
7
7
|
const lightsArray = [];
|
|
8
8
|
const shadowsArray = [];
|
|
9
9
|
|
|
10
|
-
function init() {
|
|
10
|
+
function init( camera ) {
|
|
11
|
+
|
|
12
|
+
state.camera = camera;
|
|
11
13
|
|
|
12
14
|
lightsArray.length = 0;
|
|
13
15
|
shadowsArray.length = 0;
|
|
@@ -26,9 +28,9 @@ function WebGLRenderState( extensions ) {
|
|
|
26
28
|
|
|
27
29
|
}
|
|
28
30
|
|
|
29
|
-
function setupLights(
|
|
31
|
+
function setupLights() {
|
|
30
32
|
|
|
31
|
-
lights.setup( lightsArray
|
|
33
|
+
lights.setup( lightsArray );
|
|
32
34
|
|
|
33
35
|
}
|
|
34
36
|
|
|
@@ -42,9 +44,11 @@ function WebGLRenderState( extensions ) {
|
|
|
42
44
|
lightsArray: lightsArray,
|
|
43
45
|
shadowsArray: shadowsArray,
|
|
44
46
|
|
|
47
|
+
camera: null,
|
|
48
|
+
|
|
45
49
|
lights: lights,
|
|
46
50
|
|
|
47
|
-
transmissionRenderTarget:
|
|
51
|
+
transmissionRenderTarget: {}
|
|
48
52
|
};
|
|
49
53
|
|
|
50
54
|
return {
|
|
@@ -12,7 +12,7 @@ import { Frustum } from '../../math/Frustum.js';
|
|
|
12
12
|
|
|
13
13
|
import * as vsm from '../shaders/ShaderLib/vsm.glsl.js';
|
|
14
14
|
|
|
15
|
-
function WebGLShadowMap(
|
|
15
|
+
function WebGLShadowMap( renderer, objects, capabilities ) {
|
|
16
16
|
|
|
17
17
|
let _frustum = new Frustum();
|
|
18
18
|
|
|
@@ -26,7 +26,7 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
26
26
|
|
|
27
27
|
_materialCache = {},
|
|
28
28
|
|
|
29
|
-
_maxTextureSize =
|
|
29
|
+
_maxTextureSize = capabilities.maxTextureSize;
|
|
30
30
|
|
|
31
31
|
const shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };
|
|
32
32
|
|
|
@@ -76,11 +76,11 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
76
76
|
|
|
77
77
|
if ( lights.length === 0 ) return;
|
|
78
78
|
|
|
79
|
-
const currentRenderTarget =
|
|
80
|
-
const activeCubeFace =
|
|
81
|
-
const activeMipmapLevel =
|
|
79
|
+
const currentRenderTarget = renderer.getRenderTarget();
|
|
80
|
+
const activeCubeFace = renderer.getActiveCubeFace();
|
|
81
|
+
const activeMipmapLevel = renderer.getActiveMipmapLevel();
|
|
82
82
|
|
|
83
|
-
const _state =
|
|
83
|
+
const _state = renderer.state;
|
|
84
84
|
|
|
85
85
|
// Set GL state for depth map.
|
|
86
86
|
_state.setBlending( NoBlending );
|
|
@@ -154,8 +154,8 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
154
154
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
|
|
158
|
-
|
|
157
|
+
renderer.setRenderTarget( shadow.map );
|
|
158
|
+
renderer.clear();
|
|
159
159
|
|
|
160
160
|
const viewportCount = shadow.getViewportCount();
|
|
161
161
|
|
|
@@ -196,13 +196,13 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
196
196
|
|
|
197
197
|
scope.needsUpdate = false;
|
|
198
198
|
|
|
199
|
-
|
|
199
|
+
renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );
|
|
200
200
|
|
|
201
201
|
};
|
|
202
202
|
|
|
203
203
|
function VSMPass( shadow, camera ) {
|
|
204
204
|
|
|
205
|
-
const geometry =
|
|
205
|
+
const geometry = objects.update( fullScreenMesh );
|
|
206
206
|
|
|
207
207
|
if ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {
|
|
208
208
|
|
|
@@ -225,18 +225,18 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
225
225
|
shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;
|
|
226
226
|
shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;
|
|
227
227
|
shadowMaterialVertical.uniforms.radius.value = shadow.radius;
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
228
|
+
renderer.setRenderTarget( shadow.mapPass );
|
|
229
|
+
renderer.clear();
|
|
230
|
+
renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );
|
|
231
231
|
|
|
232
232
|
// horizontal pass
|
|
233
233
|
|
|
234
234
|
shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;
|
|
235
235
|
shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;
|
|
236
236
|
shadowMaterialHorizontal.uniforms.radius.value = shadow.radius;
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
237
|
+
renderer.setRenderTarget( shadow.map );
|
|
238
|
+
renderer.clear();
|
|
239
|
+
renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );
|
|
240
240
|
|
|
241
241
|
}
|
|
242
242
|
|
|
@@ -254,7 +254,7 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
254
254
|
|
|
255
255
|
result = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;
|
|
256
256
|
|
|
257
|
-
if ( (
|
|
257
|
+
if ( ( renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||
|
|
258
258
|
( material.displacementMap && material.displacementScale !== 0 ) ||
|
|
259
259
|
( material.alphaMap && material.alphaTest > 0 ) ||
|
|
260
260
|
( material.map && material.alphaTest > 0 ) ) {
|
|
@@ -319,7 +319,7 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
319
319
|
|
|
320
320
|
if ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {
|
|
321
321
|
|
|
322
|
-
const materialProperties =
|
|
322
|
+
const materialProperties = renderer.properties.get( result );
|
|
323
323
|
materialProperties.light = light;
|
|
324
324
|
|
|
325
325
|
}
|
|
@@ -340,7 +340,7 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
340
340
|
|
|
341
341
|
object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );
|
|
342
342
|
|
|
343
|
-
const geometry =
|
|
343
|
+
const geometry = objects.update( object );
|
|
344
344
|
const material = object.material;
|
|
345
345
|
|
|
346
346
|
if ( Array.isArray( material ) ) {
|
|
@@ -356,11 +356,11 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
356
356
|
|
|
357
357
|
const depthMaterial = getDepthMaterial( object, groupMaterial, light, type );
|
|
358
358
|
|
|
359
|
-
object.onBeforeShadow(
|
|
359
|
+
object.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group );
|
|
360
360
|
|
|
361
|
-
|
|
361
|
+
renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );
|
|
362
362
|
|
|
363
|
-
object.onAfterShadow(
|
|
363
|
+
object.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group );
|
|
364
364
|
|
|
365
365
|
}
|
|
366
366
|
|
|
@@ -370,11 +370,11 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
370
370
|
|
|
371
371
|
const depthMaterial = getDepthMaterial( object, material, light, type );
|
|
372
372
|
|
|
373
|
-
object.onBeforeShadow(
|
|
373
|
+
object.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null );
|
|
374
374
|
|
|
375
|
-
|
|
375
|
+
renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );
|
|
376
376
|
|
|
377
|
-
object.onAfterShadow(
|
|
377
|
+
object.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null );
|
|
378
378
|
|
|
379
379
|
}
|
|
380
380
|
|