super-three 0.161.0 → 0.163.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +822 -1332
- package/build/three.module.js +820 -1328
- package/build/three.module.min.js +1 -1
- package/examples/jsm/controls/DragControls.js +91 -30
- package/examples/jsm/controls/OrbitControls.js +32 -6
- package/examples/jsm/controls/TransformControls.js +9 -9
- package/examples/jsm/exporters/GLTFExporter.js +30 -3
- package/examples/jsm/exporters/USDZExporter.js +15 -0
- package/examples/jsm/geometries/TextGeometry.js +10 -2
- package/examples/jsm/interactive/HTMLMesh.js +7 -9
- package/examples/jsm/interactive/InteractiveGroup.js +15 -25
- package/examples/jsm/libs/fflate.module.js +694 -496
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/libs/tween.module.js +32 -14
- package/examples/jsm/lines/LineMaterial.js +0 -2
- package/examples/jsm/loaders/3DMLoader.js +13 -21
- package/examples/jsm/loaders/3MFLoader.js +2 -0
- package/examples/jsm/loaders/EXRLoader.js +89 -19
- package/examples/jsm/loaders/FBXLoader.js +1 -1
- package/examples/jsm/loaders/GLTFLoader.js +6 -0
- package/examples/jsm/loaders/KTX2Loader.js +2 -6
- package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
- package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
- package/examples/jsm/loaders/LUTImageLoader.js +0 -14
- package/examples/jsm/loaders/RGBMLoader.js +16 -0
- package/examples/jsm/loaders/VOXLoader.js +9 -2
- package/examples/jsm/loaders/VRMLLoader.js +6 -2
- package/examples/jsm/misc/GPUComputationRenderer.js +0 -6
- package/examples/jsm/misc/ProgressiveLightMap.js +1 -0
- package/examples/jsm/nodes/Nodes.js +15 -8
- package/examples/jsm/nodes/accessors/AccessorsUtils.js +10 -0
- package/examples/jsm/nodes/accessors/BatchNode.js +78 -0
- package/examples/jsm/nodes/accessors/ClippingNode.js +144 -0
- package/examples/jsm/nodes/accessors/InstanceNode.js +25 -2
- package/examples/jsm/nodes/accessors/MaterialNode.js +2 -2
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +2 -12
- package/examples/jsm/nodes/accessors/MorphNode.js +20 -10
- package/examples/jsm/nodes/accessors/NormalNode.js +12 -2
- package/examples/jsm/nodes/accessors/ReferenceNode.js +87 -29
- package/examples/jsm/nodes/accessors/RendererReferenceNode.js +29 -0
- package/examples/jsm/nodes/accessors/SkinningNode.js +31 -10
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +18 -0
- package/examples/jsm/nodes/accessors/TangentNode.js +8 -2
- package/examples/jsm/nodes/accessors/TextureNode.js +30 -7
- package/examples/jsm/nodes/accessors/UniformsNode.js +140 -0
- package/examples/jsm/nodes/code/CodeNode.js +6 -0
- package/examples/jsm/nodes/core/AssignNode.js +68 -12
- package/examples/jsm/nodes/core/Node.js +67 -6
- package/examples/jsm/nodes/core/NodeBuilder.js +23 -24
- package/examples/jsm/nodes/core/NodeFrame.js +8 -8
- package/examples/jsm/nodes/core/NodeUtils.js +2 -2
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/UniformNode.js +20 -0
- package/examples/jsm/nodes/display/BlendModeNode.js +30 -1
- package/examples/jsm/nodes/display/NormalMapNode.js +3 -5
- package/examples/jsm/nodes/display/PassNode.js +17 -1
- package/examples/jsm/nodes/display/ToneMappingNode.js +8 -4
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +6 -0
- package/examples/jsm/nodes/fog/FogExp2Node.js +4 -5
- package/examples/jsm/nodes/fog/FogNode.js +13 -3
- package/examples/jsm/nodes/fog/FogRangeNode.js +4 -3
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +12 -69
- package/examples/jsm/nodes/materials/NodeMaterial.js +70 -17
- package/examples/jsm/nodes/math/CondNode.js +42 -7
- package/examples/jsm/nodes/math/MathNode.js +20 -0
- package/examples/jsm/nodes/pmrem/PMREMNode.js +193 -0
- package/examples/jsm/nodes/pmrem/PMREMUtils.js +288 -0
- package/examples/jsm/nodes/shadernode/ShaderNode.js +1 -1
- package/examples/jsm/nodes/utils/ArrayElementNode.js +0 -6
- package/examples/jsm/nodes/utils/EquirectUVNode.js +1 -1
- package/examples/jsm/nodes/utils/LoopNode.js +2 -0
- package/examples/jsm/nodes/utils/StorageArrayElementNode.js +91 -0
- package/examples/jsm/objects/QuadMesh.js +7 -23
- package/examples/jsm/physics/RapierPhysics.js +4 -4
- package/examples/jsm/postprocessing/GlitchPass.js +0 -3
- package/examples/jsm/postprocessing/LUTPass.js +5 -71
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +0 -1
- package/examples/jsm/postprocessing/SSAOPass.js +0 -3
- package/examples/jsm/renderers/common/Animation.js +3 -0
- package/examples/jsm/renderers/common/Background.js +3 -3
- package/examples/jsm/renderers/common/ClippingContext.js +165 -0
- package/examples/jsm/renderers/common/Info.js +11 -19
- package/examples/jsm/renderers/common/PostProcessing.js +12 -4
- package/examples/jsm/renderers/common/RenderContext.js +3 -1
- package/examples/jsm/renderers/common/RenderContexts.js +2 -13
- package/examples/jsm/renderers/common/RenderObject.js +46 -3
- package/examples/jsm/renderers/common/RenderObjects.js +2 -0
- package/examples/jsm/renderers/common/Renderer.js +113 -39
- package/examples/jsm/renderers/common/StorageBufferAttribute.js +2 -2
- package/examples/jsm/renderers/common/StorageInstancedBufferAttribute.js +17 -0
- package/examples/jsm/renderers/common/Textures.js +3 -13
- package/examples/jsm/renderers/common/UniformsGroup.js +6 -4
- package/examples/jsm/renderers/common/extras/PMREMGenerator.js +777 -0
- package/examples/jsm/renderers/common/nodes/NodeStorageBuffer.js +23 -0
- package/examples/jsm/renderers/common/nodes/NodeUniformBuffer.js +23 -0
- package/examples/jsm/renderers/common/nodes/Nodes.js +6 -18
- package/examples/jsm/renderers/webgl/WebGLBackend.js +174 -30
- package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +141 -0
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +136 -11
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +8 -2
- package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +1 -0
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +90 -0
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +3 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -2
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +67 -37
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +20 -43
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +32 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -4
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +94 -20
- package/examples/jsm/shaders/OutputShader.js +4 -0
- package/examples/jsm/utils/GPUStatsPanel.js +10 -45
- package/examples/jsm/utils/SkeletonUtils.js +14 -3
- package/examples/jsm/utils/TextureUtils.js +1 -1
- package/examples/jsm/webxr/VRButton.js +13 -5
- package/examples/jsm/webxr/XRButton.js +0 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +8 -0
- package/package.json +4 -3
- package/src/Three.Legacy.js +20 -0
- package/src/Three.js +0 -2
- package/src/animation/AnimationClip.js +1 -1
- package/src/constants.js +4 -7
- package/src/core/BufferAttribute.js +0 -11
- package/src/core/BufferGeometry.js +23 -29
- package/src/core/Object3D.js +21 -7
- package/src/core/Raycaster.js +18 -4
- package/src/core/RenderTarget.js +44 -21
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/extras/curves/EllipseCurve.js +2 -2
- package/src/helpers/SpotLightHelper.js +18 -1
- package/src/loaders/DataTextureLoader.js +0 -4
- package/src/loaders/MaterialLoader.js +1 -0
- package/src/loaders/ObjectLoader.js +4 -1
- package/src/materials/Material.js +2 -1
- package/src/materials/MeshBasicMaterial.js +3 -0
- package/src/materials/MeshLambertMaterial.js +3 -0
- package/src/materials/MeshPhongMaterial.js +3 -0
- package/src/materials/MeshStandardMaterial.js +3 -0
- package/src/materials/ShaderMaterial.js +0 -4
- package/src/math/Quaternion.js +13 -12
- package/src/math/Spherical.js +4 -5
- package/src/math/Vector3.js +7 -7
- package/src/objects/BatchedMesh.js +4 -3
- package/src/objects/InstancedMesh.js +63 -0
- package/src/objects/Mesh.js +0 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -10
- package/src/renderers/WebGLRenderer.js +70 -136
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -0
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
- package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +32 -22
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +23 -0
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib.js +3 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +10 -1
- package/src/renderers/webgl/WebGLAttributes.js +6 -33
- package/src/renderers/webgl/WebGLBackground.js +18 -0
- package/src/renderers/webgl/WebGLBindingStates.js +14 -51
- package/src/renderers/webgl/WebGLBufferRenderer.js +3 -25
- package/src/renderers/webgl/WebGLCapabilities.js +2 -12
- package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
- package/src/renderers/webgl/WebGLExtensions.js +4 -19
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +3 -25
- package/src/renderers/webgl/WebGLLights.js +6 -32
- package/src/renderers/webgl/WebGLMaterials.js +26 -4
- package/src/renderers/webgl/WebGLMorphtargets.js +79 -210
- package/src/renderers/webgl/WebGLProgram.js +30 -48
- package/src/renderers/webgl/WebGLPrograms.js +5 -14
- package/src/renderers/webgl/WebGLRenderStates.js +8 -6
- package/src/renderers/webgl/WebGLState.js +21 -75
- package/src/renderers/webgl/WebGLTextures.js +143 -275
- package/src/renderers/webgl/WebGLUniformsGroups.js +1 -1
- package/src/renderers/webgl/WebGLUtils.js +6 -57
- package/src/renderers/webxr/WebXRDepthSensing.js +2 -3
- package/src/renderers/webxr/WebXRManager.js +2 -2
- package/src/scenes/Scene.js +14 -0
- package/src/textures/Texture.js +6 -24
- package/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
- package/src/renderers/WebGL1Renderer.js +0 -7
- package/src/renderers/WebGLMultipleRenderTargets.js +0 -82
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WebGLUniforms } from './WebGLUniforms.js';
|
|
2
2
|
import { WebGLShader } from './WebGLShader.js';
|
|
3
3
|
import { ShaderChunk } from '../shaders/ShaderChunk.js';
|
|
4
|
-
import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3, LinearSRGBColorSpace, SRGBColorSpace, LinearDisplayP3ColorSpace, DisplayP3ColorSpace, P3Primaries, Rec709Primaries } from '../../constants.js';
|
|
4
|
+
import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, NeutralToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3, LinearSRGBColorSpace, SRGBColorSpace, LinearDisplayP3ColorSpace, DisplayP3ColorSpace, P3Primaries, Rec709Primaries } from '../../constants.js';
|
|
5
5
|
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
6
6
|
|
|
7
7
|
// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/
|
|
@@ -124,6 +124,10 @@ function getToneMappingFunction( functionName, toneMapping ) {
|
|
|
124
124
|
toneMappingName = 'AgX';
|
|
125
125
|
break;
|
|
126
126
|
|
|
127
|
+
case NeutralToneMapping:
|
|
128
|
+
toneMappingName = 'Neutral';
|
|
129
|
+
break;
|
|
130
|
+
|
|
127
131
|
case CustomToneMapping:
|
|
128
132
|
toneMappingName = 'Custom';
|
|
129
133
|
break;
|
|
@@ -138,19 +142,6 @@ function getToneMappingFunction( functionName, toneMapping ) {
|
|
|
138
142
|
|
|
139
143
|
}
|
|
140
144
|
|
|
141
|
-
function generateExtensions( parameters ) {
|
|
142
|
-
|
|
143
|
-
const chunks = [
|
|
144
|
-
( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.normalMapTangentSpace || parameters.clearcoatNormalMap || parameters.flatShading || parameters.alphaToCoverage || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',
|
|
145
|
-
( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',
|
|
146
|
-
( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',
|
|
147
|
-
( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''
|
|
148
|
-
];
|
|
149
|
-
|
|
150
|
-
return chunks.filter( filterEmptyLine ).join( '\n' );
|
|
151
|
-
|
|
152
|
-
}
|
|
153
|
-
|
|
154
145
|
function generateVertexExtensions( parameters ) {
|
|
155
146
|
|
|
156
147
|
const chunks = [
|
|
@@ -318,27 +309,21 @@ function generatePrecision( parameters ) {
|
|
|
318
309
|
precision ${parameters.precision} int;
|
|
319
310
|
precision ${parameters.precision} sampler2D;
|
|
320
311
|
precision ${parameters.precision} samplerCube;
|
|
312
|
+
precision ${parameters.precision} sampler3D;
|
|
313
|
+
precision ${parameters.precision} sampler2DArray;
|
|
314
|
+
precision ${parameters.precision} sampler2DShadow;
|
|
315
|
+
precision ${parameters.precision} samplerCubeShadow;
|
|
316
|
+
precision ${parameters.precision} sampler2DArrayShadow;
|
|
317
|
+
precision ${parameters.precision} isampler2D;
|
|
318
|
+
precision ${parameters.precision} isampler3D;
|
|
319
|
+
precision ${parameters.precision} isamplerCube;
|
|
320
|
+
precision ${parameters.precision} isampler2DArray;
|
|
321
|
+
precision ${parameters.precision} usampler2D;
|
|
322
|
+
precision ${parameters.precision} usampler3D;
|
|
323
|
+
precision ${parameters.precision} usamplerCube;
|
|
324
|
+
precision ${parameters.precision} usampler2DArray;
|
|
321
325
|
`;
|
|
322
326
|
|
|
323
|
-
if ( parameters.isWebGL2 ) {
|
|
324
|
-
|
|
325
|
-
precisionstring += `precision ${parameters.precision} sampler3D;
|
|
326
|
-
precision ${parameters.precision} sampler2DArray;
|
|
327
|
-
precision ${parameters.precision} sampler2DShadow;
|
|
328
|
-
precision ${parameters.precision} samplerCubeShadow;
|
|
329
|
-
precision ${parameters.precision} sampler2DArrayShadow;
|
|
330
|
-
precision ${parameters.precision} isampler2D;
|
|
331
|
-
precision ${parameters.precision} isampler3D;
|
|
332
|
-
precision ${parameters.precision} isamplerCube;
|
|
333
|
-
precision ${parameters.precision} isampler2DArray;
|
|
334
|
-
precision ${parameters.precision} usampler2D;
|
|
335
|
-
precision ${parameters.precision} usampler3D;
|
|
336
|
-
precision ${parameters.precision} usamplerCube;
|
|
337
|
-
precision ${parameters.precision} usampler2DArray;
|
|
338
|
-
`;
|
|
339
|
-
|
|
340
|
-
}
|
|
341
|
-
|
|
342
327
|
if ( parameters.precision === 'highp' ) {
|
|
343
328
|
|
|
344
329
|
precisionstring += '\n#define HIGH_PRECISION';
|
|
@@ -487,8 +472,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
487
472
|
const envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );
|
|
488
473
|
const envMapCubeUVSize = generateCubeUVSize( parameters );
|
|
489
474
|
|
|
490
|
-
const customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );
|
|
491
|
-
|
|
492
475
|
const customVertexExtensions = generateVertexExtensions( parameters );
|
|
493
476
|
|
|
494
477
|
const customDefines = generateDefines( defines );
|
|
@@ -519,8 +502,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
519
502
|
|
|
520
503
|
prefixFragment = [
|
|
521
504
|
|
|
522
|
-
customExtensions,
|
|
523
|
-
|
|
524
505
|
'#define SHADER_TYPE ' + parameters.shaderType,
|
|
525
506
|
'#define SHADER_NAME ' + parameters.shaderName,
|
|
526
507
|
|
|
@@ -549,6 +530,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
549
530
|
parameters.batching ? '#define USE_BATCHING' : '',
|
|
550
531
|
parameters.instancing ? '#define USE_INSTANCING' : '',
|
|
551
532
|
parameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',
|
|
533
|
+
parameters.instancingMorph ? '#define USE_INSTANCING_MORPH' : '',
|
|
552
534
|
|
|
553
535
|
parameters.useFog && parameters.fog ? '#define USE_FOG' : '',
|
|
554
536
|
parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',
|
|
@@ -641,10 +623,10 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
641
623
|
|
|
642
624
|
parameters.morphTargets ? '#define USE_MORPHTARGETS' : '',
|
|
643
625
|
parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',
|
|
644
|
-
( parameters.morphColors
|
|
645
|
-
( parameters.morphTargetsCount > 0
|
|
646
|
-
( parameters.morphTargetsCount > 0
|
|
647
|
-
( parameters.morphTargetsCount > 0
|
|
626
|
+
( parameters.morphColors ) ? '#define USE_MORPHCOLORS' : '',
|
|
627
|
+
( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE' : '',
|
|
628
|
+
( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',
|
|
629
|
+
( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',
|
|
648
630
|
parameters.doubleSided ? '#define DOUBLE_SIDED' : '',
|
|
649
631
|
parameters.flipSided ? '#define FLIP_SIDED' : '',
|
|
650
632
|
|
|
@@ -658,7 +640,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
658
640
|
parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
|
|
659
641
|
|
|
660
642
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
661
|
-
( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',
|
|
662
643
|
|
|
663
644
|
'uniform mat4 modelMatrix;',
|
|
664
645
|
'uniform mat4 modelViewMatrix;',
|
|
@@ -680,6 +661,12 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
680
661
|
|
|
681
662
|
'#endif',
|
|
682
663
|
|
|
664
|
+
'#ifdef USE_INSTANCING_MORPH',
|
|
665
|
+
|
|
666
|
+
' uniform sampler2D morphTexture;',
|
|
667
|
+
|
|
668
|
+
'#endif',
|
|
669
|
+
|
|
683
670
|
'attribute vec3 position;',
|
|
684
671
|
'attribute vec3 normal;',
|
|
685
672
|
'attribute vec2 uv;',
|
|
@@ -756,8 +743,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
756
743
|
|
|
757
744
|
prefixFragment = [
|
|
758
745
|
|
|
759
|
-
customExtensions,
|
|
760
|
-
|
|
761
746
|
generatePrecision( parameters ),
|
|
762
747
|
|
|
763
748
|
'#define SHADER_TYPE ' + parameters.shaderType,
|
|
@@ -845,7 +830,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
845
830
|
parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
|
|
846
831
|
|
|
847
832
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
848
|
-
( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',
|
|
849
833
|
|
|
850
834
|
'uniform mat4 viewMatrix;',
|
|
851
835
|
'uniform vec3 cameraPosition;',
|
|
@@ -880,7 +864,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
880
864
|
vertexShader = unrollLoops( vertexShader );
|
|
881
865
|
fragmentShader = unrollLoops( fragmentShader );
|
|
882
866
|
|
|
883
|
-
if ( parameters.
|
|
867
|
+
if ( parameters.isRawShaderMaterial !== true ) {
|
|
884
868
|
|
|
885
869
|
// GLSL 3.0 conversion for built-in materials and ShaderMaterial
|
|
886
870
|
|
|
@@ -888,14 +872,12 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
888
872
|
|
|
889
873
|
prefixVertex = [
|
|
890
874
|
customVertexExtensions,
|
|
891
|
-
'precision mediump sampler2DArray;',
|
|
892
875
|
'#define attribute in',
|
|
893
876
|
'#define varying out',
|
|
894
877
|
'#define texture2D texture'
|
|
895
878
|
].join( '\n' ) + '\n' + prefixVertex;
|
|
896
879
|
|
|
897
880
|
prefixFragment = [
|
|
898
|
-
'precision mediump sampler2DArray;',
|
|
899
881
|
'#define varying in',
|
|
900
882
|
( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',
|
|
901
883
|
( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',
|
|
@@ -13,7 +13,6 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
13
13
|
const _activeChannels = new Set();
|
|
14
14
|
const programs = [];
|
|
15
15
|
|
|
16
|
-
const IS_WEBGL2 = capabilities.isWebGL2;
|
|
17
16
|
const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;
|
|
18
17
|
const SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;
|
|
19
18
|
|
|
@@ -177,8 +176,6 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
177
176
|
|
|
178
177
|
const parameters = {
|
|
179
178
|
|
|
180
|
-
isWebGL2: IS_WEBGL2,
|
|
181
|
-
|
|
182
179
|
shaderID: shaderID,
|
|
183
180
|
shaderType: material.type,
|
|
184
181
|
shaderName: material.name,
|
|
@@ -198,6 +195,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
198
195
|
batching: IS_BATCHEDMESH,
|
|
199
196
|
instancing: IS_INSTANCEDMESH,
|
|
200
197
|
instancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,
|
|
198
|
+
instancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null,
|
|
201
199
|
|
|
202
200
|
supportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,
|
|
203
201
|
numMultiviewViews: numMultiviewViews,
|
|
@@ -352,16 +350,9 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
352
350
|
|
|
353
351
|
index0AttributeName: material.index0AttributeName,
|
|
354
352
|
|
|
355
|
-
extensionDerivatives: HAS_EXTENSIONS && material.extensions.derivatives === true,
|
|
356
|
-
extensionFragDepth: HAS_EXTENSIONS && material.extensions.fragDepth === true,
|
|
357
|
-
extensionDrawBuffers: HAS_EXTENSIONS && material.extensions.drawBuffers === true,
|
|
358
|
-
extensionShaderTextureLOD: HAS_EXTENSIONS && material.extensions.shaderTextureLOD === true,
|
|
359
353
|
extensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ),
|
|
360
354
|
extensionMultiDraw: HAS_EXTENSIONS && material.extensions.multiDraw === true && extensions.has( 'WEBGL_multi_draw' ),
|
|
361
355
|
|
|
362
|
-
rendererExtensionFragDepth: IS_WEBGL2 || extensions.has( 'EXT_frag_depth' ),
|
|
363
|
-
rendererExtensionDrawBuffers: IS_WEBGL2 || extensions.has( 'WEBGL_draw_buffers' ),
|
|
364
|
-
rendererExtensionShaderTextureLod: IS_WEBGL2 || extensions.has( 'EXT_shader_texture_lod' ),
|
|
365
356
|
rendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),
|
|
366
357
|
|
|
367
358
|
customProgramCacheKey: material.customProgramCacheKey()
|
|
@@ -477,13 +468,13 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
477
468
|
|
|
478
469
|
_programLayers.disableAll();
|
|
479
470
|
|
|
480
|
-
if ( parameters.isWebGL2 )
|
|
481
|
-
_programLayers.enable( 0 );
|
|
482
471
|
if ( parameters.supportsVertexTextures )
|
|
483
|
-
_programLayers.enable(
|
|
472
|
+
_programLayers.enable( 0 );
|
|
484
473
|
if ( parameters.instancing )
|
|
485
|
-
_programLayers.enable(
|
|
474
|
+
_programLayers.enable( 1 );
|
|
486
475
|
if ( parameters.instancingColor )
|
|
476
|
+
_programLayers.enable( 2 );
|
|
477
|
+
if ( parameters.instancingMorph )
|
|
487
478
|
_programLayers.enable( 3 );
|
|
488
479
|
if ( parameters.matcap )
|
|
489
480
|
_programLayers.enable( 4 );
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { WebGLLights } from './WebGLLights.js';
|
|
2
2
|
|
|
3
|
-
function WebGLRenderState( extensions
|
|
3
|
+
function WebGLRenderState( extensions ) {
|
|
4
4
|
|
|
5
|
-
const lights = new WebGLLights( extensions
|
|
5
|
+
const lights = new WebGLLights( extensions );
|
|
6
6
|
|
|
7
7
|
const lightsArray = [];
|
|
8
8
|
const shadowsArray = [];
|
|
@@ -42,7 +42,9 @@ function WebGLRenderState( extensions, capabilities ) {
|
|
|
42
42
|
lightsArray: lightsArray,
|
|
43
43
|
shadowsArray: shadowsArray,
|
|
44
44
|
|
|
45
|
-
lights: lights
|
|
45
|
+
lights: lights,
|
|
46
|
+
|
|
47
|
+
transmissionRenderTarget: null
|
|
46
48
|
};
|
|
47
49
|
|
|
48
50
|
return {
|
|
@@ -57,7 +59,7 @@ function WebGLRenderState( extensions, capabilities ) {
|
|
|
57
59
|
|
|
58
60
|
}
|
|
59
61
|
|
|
60
|
-
function WebGLRenderStates( extensions
|
|
62
|
+
function WebGLRenderStates( extensions ) {
|
|
61
63
|
|
|
62
64
|
let renderStates = new WeakMap();
|
|
63
65
|
|
|
@@ -68,14 +70,14 @@ function WebGLRenderStates( extensions, capabilities ) {
|
|
|
68
70
|
|
|
69
71
|
if ( renderStateArray === undefined ) {
|
|
70
72
|
|
|
71
|
-
renderState = new WebGLRenderState( extensions
|
|
73
|
+
renderState = new WebGLRenderState( extensions );
|
|
72
74
|
renderStates.set( scene, [ renderState ] );
|
|
73
75
|
|
|
74
76
|
} else {
|
|
75
77
|
|
|
76
78
|
if ( renderCallDepth >= renderStateArray.length ) {
|
|
77
79
|
|
|
78
|
-
renderState = new WebGLRenderState( extensions
|
|
80
|
+
renderState = new WebGLRenderState( extensions );
|
|
79
81
|
renderStateArray.push( renderState );
|
|
80
82
|
|
|
81
83
|
} else {
|
|
@@ -2,9 +2,7 @@ import { NotEqualDepth, GreaterDepth, GreaterEqualDepth, EqualDepth, LessEqualDe
|
|
|
2
2
|
import { Color } from '../../math/Color.js';
|
|
3
3
|
import { Vector4 } from '../../math/Vector4.js';
|
|
4
4
|
|
|
5
|
-
function WebGLState( gl
|
|
6
|
-
|
|
7
|
-
const isWebGL2 = capabilities.isWebGL2;
|
|
5
|
+
function WebGLState( gl ) {
|
|
8
6
|
|
|
9
7
|
function ColorBuffer() {
|
|
10
8
|
|
|
@@ -376,7 +374,7 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
376
374
|
|
|
377
375
|
for ( let i = 0; i < count; i ++ ) {
|
|
378
376
|
|
|
379
|
-
if (
|
|
377
|
+
if ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) {
|
|
380
378
|
|
|
381
379
|
gl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );
|
|
382
380
|
|
|
@@ -395,13 +393,8 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
395
393
|
const emptyTextures = {};
|
|
396
394
|
emptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );
|
|
397
395
|
emptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
emptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );
|
|
402
|
-
emptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );
|
|
403
|
-
|
|
404
|
-
}
|
|
396
|
+
emptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );
|
|
397
|
+
emptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );
|
|
405
398
|
|
|
406
399
|
// init
|
|
407
400
|
|
|
@@ -450,21 +443,17 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
450
443
|
|
|
451
444
|
currentBoundFramebuffers[ target ] = framebuffer;
|
|
452
445
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER
|
|
446
|
+
// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER
|
|
456
447
|
|
|
457
|
-
|
|
448
|
+
if ( target === gl.DRAW_FRAMEBUFFER ) {
|
|
458
449
|
|
|
459
|
-
|
|
450
|
+
currentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;
|
|
460
451
|
|
|
461
|
-
|
|
452
|
+
}
|
|
462
453
|
|
|
463
|
-
|
|
454
|
+
if ( target === gl.FRAMEBUFFER ) {
|
|
464
455
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
}
|
|
456
|
+
currentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;
|
|
468
457
|
|
|
469
458
|
}
|
|
470
459
|
|
|
@@ -493,33 +482,19 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
493
482
|
|
|
494
483
|
}
|
|
495
484
|
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
const textures = renderTarget.texture;
|
|
485
|
+
const textures = renderTarget.textures;
|
|
499
486
|
|
|
500
|
-
|
|
487
|
+
if ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {
|
|
501
488
|
|
|
502
|
-
|
|
489
|
+
for ( let i = 0, il = textures.length; i < il; i ++ ) {
|
|
503
490
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
drawBuffers.length = textures.length;
|
|
509
|
-
|
|
510
|
-
needsUpdate = true;
|
|
491
|
+
drawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;
|
|
511
492
|
|
|
512
493
|
}
|
|
513
494
|
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
if ( drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {
|
|
517
|
-
|
|
518
|
-
drawBuffers[ 0 ] = gl.COLOR_ATTACHMENT0;
|
|
519
|
-
|
|
520
|
-
needsUpdate = true;
|
|
495
|
+
drawBuffers.length = textures.length;
|
|
521
496
|
|
|
522
|
-
|
|
497
|
+
needsUpdate = true;
|
|
523
498
|
|
|
524
499
|
}
|
|
525
500
|
|
|
@@ -537,19 +512,10 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
537
512
|
|
|
538
513
|
if ( needsUpdate ) {
|
|
539
514
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
gl.drawBuffers( drawBuffers );
|
|
543
|
-
|
|
544
|
-
} else {
|
|
545
|
-
|
|
546
|
-
extensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );
|
|
547
|
-
|
|
548
|
-
}
|
|
515
|
+
gl.drawBuffers( drawBuffers );
|
|
549
516
|
|
|
550
517
|
}
|
|
551
518
|
|
|
552
|
-
|
|
553
519
|
}
|
|
554
520
|
|
|
555
521
|
function useProgram( program ) {
|
|
@@ -574,23 +540,8 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
574
540
|
[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT
|
|
575
541
|
};
|
|
576
542
|
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
equationToGL[ MinEquation ] = gl.MIN;
|
|
580
|
-
equationToGL[ MaxEquation ] = gl.MAX;
|
|
581
|
-
|
|
582
|
-
} else {
|
|
583
|
-
|
|
584
|
-
const extension = extensions.get( 'EXT_blend_minmax' );
|
|
585
|
-
|
|
586
|
-
if ( extension !== null ) {
|
|
587
|
-
|
|
588
|
-
equationToGL[ MinEquation ] = extension.MIN_EXT;
|
|
589
|
-
equationToGL[ MaxEquation ] = extension.MAX_EXT;
|
|
590
|
-
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
}
|
|
543
|
+
equationToGL[ MinEquation ] = gl.MIN;
|
|
544
|
+
equationToGL[ MaxEquation ] = gl.MAX;
|
|
594
545
|
|
|
595
546
|
const factorToGL = {
|
|
596
547
|
[ ZeroFactor ]: gl.ZERO,
|
|
@@ -1214,13 +1165,8 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
1214
1165
|
gl.activeTexture( gl.TEXTURE0 );
|
|
1215
1166
|
|
|
1216
1167
|
gl.bindFramebuffer( gl.FRAMEBUFFER, null );
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
gl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );
|
|
1221
|
-
gl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );
|
|
1222
|
-
|
|
1223
|
-
}
|
|
1168
|
+
gl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );
|
|
1169
|
+
gl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );
|
|
1224
1170
|
|
|
1225
1171
|
gl.useProgram( null );
|
|
1226
1172
|
|