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.
Files changed (206) hide show
  1. package/build/three.cjs +822 -1332
  2. package/build/three.module.js +820 -1328
  3. package/build/three.module.min.js +1 -1
  4. package/examples/jsm/controls/DragControls.js +91 -30
  5. package/examples/jsm/controls/OrbitControls.js +32 -6
  6. package/examples/jsm/controls/TransformControls.js +9 -9
  7. package/examples/jsm/exporters/GLTFExporter.js +30 -3
  8. package/examples/jsm/exporters/USDZExporter.js +15 -0
  9. package/examples/jsm/geometries/TextGeometry.js +10 -2
  10. package/examples/jsm/interactive/HTMLMesh.js +7 -9
  11. package/examples/jsm/interactive/InteractiveGroup.js +15 -25
  12. package/examples/jsm/libs/fflate.module.js +694 -496
  13. package/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
  14. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
  15. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  16. package/examples/jsm/libs/tween.module.js +32 -14
  17. package/examples/jsm/lines/LineMaterial.js +0 -2
  18. package/examples/jsm/loaders/3DMLoader.js +13 -21
  19. package/examples/jsm/loaders/3MFLoader.js +2 -0
  20. package/examples/jsm/loaders/EXRLoader.js +89 -19
  21. package/examples/jsm/loaders/FBXLoader.js +1 -1
  22. package/examples/jsm/loaders/GLTFLoader.js +6 -0
  23. package/examples/jsm/loaders/KTX2Loader.js +2 -6
  24. package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
  25. package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
  26. package/examples/jsm/loaders/LUTImageLoader.js +0 -14
  27. package/examples/jsm/loaders/RGBMLoader.js +16 -0
  28. package/examples/jsm/loaders/VOXLoader.js +9 -2
  29. package/examples/jsm/loaders/VRMLLoader.js +6 -2
  30. package/examples/jsm/misc/GPUComputationRenderer.js +0 -6
  31. package/examples/jsm/misc/ProgressiveLightMap.js +1 -0
  32. package/examples/jsm/nodes/Nodes.js +15 -8
  33. package/examples/jsm/nodes/accessors/AccessorsUtils.js +10 -0
  34. package/examples/jsm/nodes/accessors/BatchNode.js +78 -0
  35. package/examples/jsm/nodes/accessors/ClippingNode.js +144 -0
  36. package/examples/jsm/nodes/accessors/InstanceNode.js +25 -2
  37. package/examples/jsm/nodes/accessors/MaterialNode.js +2 -2
  38. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +2 -12
  39. package/examples/jsm/nodes/accessors/MorphNode.js +20 -10
  40. package/examples/jsm/nodes/accessors/NormalNode.js +12 -2
  41. package/examples/jsm/nodes/accessors/ReferenceNode.js +87 -29
  42. package/examples/jsm/nodes/accessors/RendererReferenceNode.js +29 -0
  43. package/examples/jsm/nodes/accessors/SkinningNode.js +31 -10
  44. package/examples/jsm/nodes/accessors/StorageBufferNode.js +18 -0
  45. package/examples/jsm/nodes/accessors/TangentNode.js +8 -2
  46. package/examples/jsm/nodes/accessors/TextureNode.js +30 -7
  47. package/examples/jsm/nodes/accessors/UniformsNode.js +140 -0
  48. package/examples/jsm/nodes/code/CodeNode.js +6 -0
  49. package/examples/jsm/nodes/core/AssignNode.js +68 -12
  50. package/examples/jsm/nodes/core/Node.js +67 -6
  51. package/examples/jsm/nodes/core/NodeBuilder.js +23 -24
  52. package/examples/jsm/nodes/core/NodeFrame.js +8 -8
  53. package/examples/jsm/nodes/core/NodeUtils.js +2 -2
  54. package/examples/jsm/nodes/core/TempNode.js +1 -1
  55. package/examples/jsm/nodes/core/UniformNode.js +20 -0
  56. package/examples/jsm/nodes/display/BlendModeNode.js +30 -1
  57. package/examples/jsm/nodes/display/NormalMapNode.js +3 -5
  58. package/examples/jsm/nodes/display/PassNode.js +17 -1
  59. package/examples/jsm/nodes/display/ToneMappingNode.js +8 -4
  60. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +6 -0
  61. package/examples/jsm/nodes/fog/FogExp2Node.js +4 -5
  62. package/examples/jsm/nodes/fog/FogNode.js +13 -3
  63. package/examples/jsm/nodes/fog/FogRangeNode.js +4 -3
  64. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  65. package/examples/jsm/nodes/lighting/EnvironmentNode.js +12 -69
  66. package/examples/jsm/nodes/materials/NodeMaterial.js +70 -17
  67. package/examples/jsm/nodes/math/CondNode.js +42 -7
  68. package/examples/jsm/nodes/math/MathNode.js +20 -0
  69. package/examples/jsm/nodes/pmrem/PMREMNode.js +193 -0
  70. package/examples/jsm/nodes/pmrem/PMREMUtils.js +288 -0
  71. package/examples/jsm/nodes/shadernode/ShaderNode.js +1 -1
  72. package/examples/jsm/nodes/utils/ArrayElementNode.js +0 -6
  73. package/examples/jsm/nodes/utils/EquirectUVNode.js +1 -1
  74. package/examples/jsm/nodes/utils/LoopNode.js +2 -0
  75. package/examples/jsm/nodes/utils/StorageArrayElementNode.js +91 -0
  76. package/examples/jsm/objects/QuadMesh.js +7 -23
  77. package/examples/jsm/physics/RapierPhysics.js +4 -4
  78. package/examples/jsm/postprocessing/GlitchPass.js +0 -3
  79. package/examples/jsm/postprocessing/LUTPass.js +5 -71
  80. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  81. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  82. package/examples/jsm/postprocessing/SSAOPass.js +0 -3
  83. package/examples/jsm/renderers/common/Animation.js +3 -0
  84. package/examples/jsm/renderers/common/Background.js +3 -3
  85. package/examples/jsm/renderers/common/ClippingContext.js +165 -0
  86. package/examples/jsm/renderers/common/Info.js +11 -19
  87. package/examples/jsm/renderers/common/PostProcessing.js +12 -4
  88. package/examples/jsm/renderers/common/RenderContext.js +3 -1
  89. package/examples/jsm/renderers/common/RenderContexts.js +2 -13
  90. package/examples/jsm/renderers/common/RenderObject.js +46 -3
  91. package/examples/jsm/renderers/common/RenderObjects.js +2 -0
  92. package/examples/jsm/renderers/common/Renderer.js +113 -39
  93. package/examples/jsm/renderers/common/StorageBufferAttribute.js +2 -2
  94. package/examples/jsm/renderers/common/StorageInstancedBufferAttribute.js +17 -0
  95. package/examples/jsm/renderers/common/Textures.js +3 -13
  96. package/examples/jsm/renderers/common/UniformsGroup.js +6 -4
  97. package/examples/jsm/renderers/common/extras/PMREMGenerator.js +777 -0
  98. package/examples/jsm/renderers/common/nodes/NodeStorageBuffer.js +23 -0
  99. package/examples/jsm/renderers/common/nodes/NodeUniformBuffer.js +23 -0
  100. package/examples/jsm/renderers/common/nodes/Nodes.js +6 -18
  101. package/examples/jsm/renderers/webgl/WebGLBackend.js +174 -30
  102. package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +141 -0
  103. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +136 -11
  104. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +8 -2
  105. package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +1 -0
  106. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +90 -0
  107. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +3 -1
  108. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -2
  109. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -2
  110. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +67 -37
  111. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +20 -43
  112. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +32 -1
  113. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -4
  114. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +94 -20
  115. package/examples/jsm/shaders/OutputShader.js +4 -0
  116. package/examples/jsm/utils/GPUStatsPanel.js +10 -45
  117. package/examples/jsm/utils/SkeletonUtils.js +14 -3
  118. package/examples/jsm/utils/TextureUtils.js +1 -1
  119. package/examples/jsm/webxr/VRButton.js +13 -5
  120. package/examples/jsm/webxr/XRButton.js +0 -1
  121. package/examples/jsm/webxr/XRControllerModelFactory.js +8 -0
  122. package/package.json +4 -3
  123. package/src/Three.Legacy.js +20 -0
  124. package/src/Three.js +0 -2
  125. package/src/animation/AnimationClip.js +1 -1
  126. package/src/constants.js +4 -7
  127. package/src/core/BufferAttribute.js +0 -11
  128. package/src/core/BufferGeometry.js +23 -29
  129. package/src/core/Object3D.js +21 -7
  130. package/src/core/Raycaster.js +18 -4
  131. package/src/core/RenderTarget.js +44 -21
  132. package/src/extras/PMREMGenerator.js +11 -0
  133. package/src/extras/curves/EllipseCurve.js +2 -2
  134. package/src/helpers/SpotLightHelper.js +18 -1
  135. package/src/loaders/DataTextureLoader.js +0 -4
  136. package/src/loaders/MaterialLoader.js +1 -0
  137. package/src/loaders/ObjectLoader.js +4 -1
  138. package/src/materials/Material.js +2 -1
  139. package/src/materials/MeshBasicMaterial.js +3 -0
  140. package/src/materials/MeshLambertMaterial.js +3 -0
  141. package/src/materials/MeshPhongMaterial.js +3 -0
  142. package/src/materials/MeshStandardMaterial.js +3 -0
  143. package/src/materials/ShaderMaterial.js +0 -4
  144. package/src/math/Quaternion.js +13 -12
  145. package/src/math/Spherical.js +4 -5
  146. package/src/math/Vector3.js +7 -7
  147. package/src/objects/BatchedMesh.js +4 -3
  148. package/src/objects/InstancedMesh.js +63 -0
  149. package/src/objects/Mesh.js +0 -1
  150. package/src/renderers/WebGLCubeRenderTarget.js +1 -10
  151. package/src/renderers/WebGLRenderer.js +70 -136
  152. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -0
  153. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
  154. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
  155. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  156. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  157. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
  158. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
  159. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +1 -1
  160. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
  161. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +11 -2
  162. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +32 -22
  163. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +23 -0
  164. package/src/renderers/shaders/ShaderChunk.js +2 -0
  165. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
  166. package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
  167. package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  168. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  169. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -0
  170. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
  171. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
  172. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -0
  173. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
  174. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
  175. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  176. package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  177. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
  178. package/src/renderers/shaders/ShaderLib.js +3 -2
  179. package/src/renderers/shaders/UniformsLib.js +1 -0
  180. package/src/renderers/shaders/UniformsUtils.js +10 -1
  181. package/src/renderers/webgl/WebGLAttributes.js +6 -33
  182. package/src/renderers/webgl/WebGLBackground.js +18 -0
  183. package/src/renderers/webgl/WebGLBindingStates.js +14 -51
  184. package/src/renderers/webgl/WebGLBufferRenderer.js +3 -25
  185. package/src/renderers/webgl/WebGLCapabilities.js +2 -12
  186. package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  187. package/src/renderers/webgl/WebGLExtensions.js +4 -19
  188. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +3 -25
  189. package/src/renderers/webgl/WebGLLights.js +6 -32
  190. package/src/renderers/webgl/WebGLMaterials.js +26 -4
  191. package/src/renderers/webgl/WebGLMorphtargets.js +79 -210
  192. package/src/renderers/webgl/WebGLProgram.js +30 -48
  193. package/src/renderers/webgl/WebGLPrograms.js +5 -14
  194. package/src/renderers/webgl/WebGLRenderStates.js +8 -6
  195. package/src/renderers/webgl/WebGLState.js +21 -75
  196. package/src/renderers/webgl/WebGLTextures.js +143 -275
  197. package/src/renderers/webgl/WebGLUniformsGroups.js +1 -1
  198. package/src/renderers/webgl/WebGLUtils.js +6 -57
  199. package/src/renderers/webxr/WebXRDepthSensing.js +2 -3
  200. package/src/renderers/webxr/WebXRManager.js +2 -2
  201. package/src/scenes/Scene.js +14 -0
  202. package/src/textures/Texture.js +6 -24
  203. package/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
  204. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  205. package/src/renderers/WebGL1Renderer.js +0 -7
  206. 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 && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',
645
- ( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',
646
- ( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',
647
- ( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',
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.isWebGL2 && parameters.isRawShaderMaterial !== true ) {
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( 1 );
472
+ _programLayers.enable( 0 );
484
473
  if ( parameters.instancing )
485
- _programLayers.enable( 2 );
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, capabilities ) {
3
+ function WebGLRenderState( extensions ) {
4
4
 
5
- const lights = new WebGLLights( extensions, capabilities );
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, capabilities ) {
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, capabilities );
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, capabilities );
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, extensions, capabilities ) {
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 ( isWebGL2 && ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) ) {
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
- if ( isWebGL2 ) {
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
- if ( isWebGL2 ) {
454
-
455
- // gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER
446
+ // gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER
456
447
 
457
- if ( target === gl.DRAW_FRAMEBUFFER ) {
448
+ if ( target === gl.DRAW_FRAMEBUFFER ) {
458
449
 
459
- currentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;
450
+ currentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;
460
451
 
461
- }
452
+ }
462
453
 
463
- if ( target === gl.FRAMEBUFFER ) {
454
+ if ( target === gl.FRAMEBUFFER ) {
464
455
 
465
- currentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;
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
- if ( renderTarget.isWebGLMultipleRenderTargets ) {
497
-
498
- const textures = renderTarget.texture;
485
+ const textures = renderTarget.textures;
499
486
 
500
- if ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {
487
+ if ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {
501
488
 
502
- for ( let i = 0, il = textures.length; i < il; i ++ ) {
489
+ for ( let i = 0, il = textures.length; i < il; i ++ ) {
503
490
 
504
- drawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;
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
- } else {
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
- if ( capabilities.isWebGL2 ) {
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
- if ( isWebGL2 ) {
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
- if ( isWebGL2 === true ) {
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