super-three 0.155.0 → 0.157.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 (268) hide show
  1. package/build/three.cjs +361 -324
  2. package/build/three.js +361 -324
  3. package/build/three.min.js +2 -2
  4. package/build/three.module.js +354 -323
  5. package/build/three.module.min.js +1 -1
  6. package/examples/jsm/capabilities/WebGL.js +17 -0
  7. package/examples/jsm/controls/DragControls.js +3 -2
  8. package/examples/jsm/controls/OrbitControls.js +13 -5
  9. package/examples/jsm/csm/CSMShader.js +59 -21
  10. package/examples/jsm/exporters/EXRExporter.js +102 -24
  11. package/examples/jsm/exporters/GLTFExporter.js +1 -1
  12. package/examples/jsm/libs/rhino3dm/rhino3dm.js +8726 -4
  13. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +8737 -4
  14. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  15. package/examples/jsm/libs/tween.module.js +790 -735
  16. package/examples/jsm/libs/utif.module.js +1644 -1558
  17. package/examples/jsm/lights/LightProbeGenerator.js +37 -3
  18. package/examples/jsm/lines/LineMaterial.js +90 -156
  19. package/examples/jsm/loaders/3DMLoader.js +378 -104
  20. package/examples/jsm/loaders/DDSLoader.js +46 -3
  21. package/examples/jsm/loaders/EXRLoader.js +4 -4
  22. package/examples/jsm/loaders/FBXLoader.js +2 -0
  23. package/examples/jsm/loaders/GLTFLoader.js +18 -8
  24. package/examples/jsm/loaders/KTX2Loader.js +126 -77
  25. package/examples/jsm/loaders/LDrawLoader.js +22 -16
  26. package/examples/jsm/loaders/LogLuvLoader.js +2 -2
  27. package/examples/jsm/loaders/MMDLoader.js +10 -7
  28. package/examples/jsm/loaders/RGBELoader.js +48 -66
  29. package/examples/jsm/loaders/STLLoader.js +7 -0
  30. package/examples/jsm/loaders/USDZLoader.js +215 -12
  31. package/examples/jsm/materials/MeshGouraudMaterial.js +22 -18
  32. package/examples/jsm/nodes/Nodes.js +8 -1
  33. package/examples/jsm/nodes/accessors/BitangentNode.js +1 -1
  34. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +30 -4
  35. package/examples/jsm/nodes/accessors/BufferNode.js +1 -1
  36. package/examples/jsm/nodes/accessors/CameraNode.js +1 -1
  37. package/examples/jsm/nodes/accessors/CubeTextureNode.js +19 -4
  38. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +4 -5
  39. package/examples/jsm/nodes/accessors/InstanceNode.js +2 -2
  40. package/examples/jsm/nodes/accessors/LineMaterialNode.js +29 -0
  41. package/examples/jsm/nodes/accessors/MaterialNode.js +23 -13
  42. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +12 -9
  43. package/examples/jsm/nodes/accessors/ModelNode.js +1 -1
  44. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +5 -4
  45. package/examples/jsm/nodes/accessors/MorphNode.js +4 -4
  46. package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
  47. package/examples/jsm/nodes/accessors/Object3DNode.js +3 -3
  48. package/examples/jsm/nodes/accessors/PointUVNode.js +1 -1
  49. package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
  50. package/examples/jsm/nodes/accessors/ReferenceNode.js +13 -7
  51. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +2 -2
  52. package/examples/jsm/nodes/accessors/SceneNode.js +2 -2
  53. package/examples/jsm/nodes/accessors/SkinningNode.js +2 -2
  54. package/examples/jsm/nodes/accessors/StorageBufferNode.js +1 -1
  55. package/examples/jsm/nodes/accessors/TangentNode.js +1 -1
  56. package/examples/jsm/nodes/accessors/TextureBicubicNode.js +2 -2
  57. package/examples/jsm/nodes/accessors/TextureNode.js +18 -8
  58. package/examples/jsm/nodes/accessors/TextureSizeNode.js +2 -2
  59. package/examples/jsm/nodes/accessors/TextureStoreNode.js +29 -0
  60. package/examples/jsm/nodes/accessors/UVNode.js +1 -1
  61. package/examples/jsm/nodes/accessors/UserDataNode.js +2 -2
  62. package/examples/jsm/nodes/code/CodeNode.js +1 -1
  63. package/examples/jsm/nodes/code/ExpressionNode.js +1 -1
  64. package/examples/jsm/nodes/code/FunctionCallNode.js +1 -1
  65. package/examples/jsm/nodes/code/FunctionNode.js +18 -7
  66. package/examples/jsm/nodes/code/ScriptableNode.js +2 -2
  67. package/examples/jsm/nodes/code/ScriptableValueNode.js +2 -2
  68. package/examples/jsm/nodes/core/ArrayUniformNode.js +1 -1
  69. package/examples/jsm/nodes/core/AttributeNode.js +3 -3
  70. package/examples/jsm/nodes/core/BypassNode.js +1 -1
  71. package/examples/jsm/nodes/core/CacheNode.js +1 -1
  72. package/examples/jsm/nodes/core/ConstNode.js +1 -1
  73. package/examples/jsm/nodes/core/ContextNode.js +2 -2
  74. package/examples/jsm/nodes/core/IndexNode.js +1 -1
  75. package/examples/jsm/nodes/core/InputNode.js +1 -1
  76. package/examples/jsm/nodes/core/Node.js +45 -14
  77. package/examples/jsm/nodes/core/NodeBuilder.js +83 -15
  78. package/examples/jsm/nodes/core/NodeFrame.js +37 -14
  79. package/examples/jsm/nodes/core/NodeUniform.js +1 -1
  80. package/examples/jsm/nodes/core/OutputStructNode.js +62 -0
  81. package/examples/jsm/nodes/core/PropertyNode.js +3 -1
  82. package/examples/jsm/nodes/core/StackNode.js +5 -5
  83. package/examples/jsm/nodes/core/StructTypeNode.js +24 -0
  84. package/examples/jsm/nodes/core/TempNode.js +1 -1
  85. package/examples/jsm/nodes/core/UniformNode.js +3 -1
  86. package/examples/jsm/nodes/core/VarNode.js +1 -1
  87. package/examples/jsm/nodes/core/VaryingNode.js +1 -1
  88. package/examples/jsm/nodes/core/constants.js +1 -1
  89. package/examples/jsm/nodes/display/BlendModeNode.js +2 -2
  90. package/examples/jsm/nodes/display/BumpMapNode.js +2 -2
  91. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -2
  92. package/examples/jsm/nodes/display/ColorSpaceNode.js +2 -2
  93. package/examples/jsm/nodes/display/FrontFacingNode.js +1 -1
  94. package/examples/jsm/nodes/display/NormalMapNode.js +2 -2
  95. package/examples/jsm/nodes/display/PosterizeNode.js +2 -2
  96. package/examples/jsm/nodes/display/ToneMappingNode.js +2 -2
  97. package/examples/jsm/nodes/display/ViewportDepthNode.js +2 -2
  98. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +1 -1
  99. package/examples/jsm/nodes/display/ViewportNode.js +21 -7
  100. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +1 -1
  101. package/examples/jsm/nodes/display/ViewportTextureNode.js +1 -1
  102. package/examples/jsm/nodes/fog/FogExp2Node.js +2 -2
  103. package/examples/jsm/nodes/fog/FogNode.js +2 -2
  104. package/examples/jsm/nodes/fog/FogRangeNode.js +2 -2
  105. package/examples/jsm/nodes/geometry/RangeNode.js +2 -2
  106. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  107. package/examples/jsm/nodes/lighting/AONode.js +2 -2
  108. package/examples/jsm/nodes/lighting/AmbientLightNode.js +3 -3
  109. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +4 -4
  110. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +4 -4
  111. package/examples/jsm/nodes/lighting/EnvironmentNode.js +2 -2
  112. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +3 -3
  113. package/examples/jsm/nodes/lighting/IESSpotLightNode.js +2 -2
  114. package/examples/jsm/nodes/lighting/LightNode.js +2 -2
  115. package/examples/jsm/nodes/lighting/LightingContextNode.js +3 -3
  116. package/examples/jsm/nodes/lighting/LightingNode.js +1 -1
  117. package/examples/jsm/nodes/lighting/LightsNode.js +4 -4
  118. package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
  119. package/examples/jsm/nodes/lighting/SpotLightNode.js +4 -4
  120. package/examples/jsm/nodes/materials/Line2NodeMaterial.js +449 -0
  121. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +1 -1
  122. package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +54 -0
  123. package/examples/jsm/nodes/materials/Materials.js +2 -0
  124. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -1
  125. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +2 -2
  126. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -2
  127. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
  128. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
  129. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +3 -3
  130. package/examples/jsm/nodes/materials/NodeMaterial.js +39 -29
  131. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +1 -1
  132. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +2 -2
  133. package/examples/jsm/nodes/math/CondNode.js +1 -1
  134. package/examples/jsm/nodes/math/HashNode.js +34 -0
  135. package/examples/jsm/nodes/math/MathNode.js +2 -2
  136. package/examples/jsm/nodes/math/OperatorNode.js +1 -1
  137. package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
  138. package/examples/jsm/nodes/shadernode/ShaderNode.js +85 -28
  139. package/examples/jsm/nodes/utils/ArrayElementNode.js +1 -1
  140. package/examples/jsm/nodes/utils/ConvertNode.js +1 -1
  141. package/examples/jsm/nodes/utils/DiscardNode.js +1 -1
  142. package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -2
  143. package/examples/jsm/nodes/utils/JoinNode.js +1 -1
  144. package/examples/jsm/nodes/utils/LoopNode.js +11 -11
  145. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -2
  146. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  147. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  148. package/examples/jsm/nodes/utils/PackingNode.js +2 -2
  149. package/examples/jsm/nodes/utils/RemapNode.js +2 -2
  150. package/examples/jsm/nodes/utils/RotateUVNode.js +2 -2
  151. package/examples/jsm/nodes/utils/SetNode.js +62 -0
  152. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +2 -2
  153. package/examples/jsm/nodes/utils/SplitNode.js +2 -2
  154. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +2 -2
  155. package/examples/jsm/nodes/utils/TimerNode.js +2 -2
  156. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +2 -2
  157. package/examples/jsm/objects/Sky.js +1 -3
  158. package/examples/jsm/postprocessing/FilmPass.js +3 -5
  159. package/examples/jsm/postprocessing/OutputPass.js +3 -2
  160. package/examples/jsm/postprocessing/RenderPass.js +30 -12
  161. package/examples/jsm/postprocessing/SAOPass.js +23 -98
  162. package/examples/jsm/postprocessing/SSAOPass.js +10 -30
  163. package/examples/jsm/renderers/common/Backend.js +11 -8
  164. package/examples/jsm/renderers/common/Background.js +2 -2
  165. package/examples/jsm/renderers/common/Binding.js +6 -0
  166. package/examples/jsm/renderers/common/Bindings.js +4 -5
  167. package/examples/jsm/renderers/common/Pipelines.js +9 -9
  168. package/examples/jsm/renderers/common/RenderContext.js +3 -0
  169. package/examples/jsm/renderers/common/RenderContexts.js +26 -1
  170. package/examples/jsm/renderers/common/RenderList.js +12 -4
  171. package/examples/jsm/renderers/common/RenderObject.js +43 -15
  172. package/examples/jsm/renderers/common/RenderObjects.js +8 -14
  173. package/examples/jsm/renderers/common/Renderer.js +52 -16
  174. package/examples/jsm/renderers/common/SampledTexture.js +6 -3
  175. package/examples/jsm/renderers/common/Sampler.js +1 -1
  176. package/examples/jsm/renderers/common/StorageBuffer.js +1 -1
  177. package/examples/jsm/renderers/common/StorageTexture.js +19 -0
  178. package/examples/jsm/renderers/common/Textures.js +166 -21
  179. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +35 -0
  180. package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +21 -11
  181. package/examples/jsm/renderers/common/nodes/NodeSampler.js +1 -7
  182. package/examples/jsm/renderers/common/nodes/Nodes.js +79 -18
  183. package/examples/jsm/renderers/webgl/WebGLBackend.js +702 -0
  184. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +207 -20
  185. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +84 -0
  186. package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +26 -0
  187. package/examples/jsm/renderers/webgl/utils/WebGLState.js +529 -0
  188. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +212 -0
  189. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +242 -0
  190. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +340 -0
  191. package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodeBuilder.js +4 -4
  192. package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodes.js +14 -2
  193. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +282 -43
  194. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +18 -2
  195. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +93 -60
  196. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +2 -2
  197. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +15 -2
  198. package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -14
  199. package/examples/jsm/renderers/webgpu/utils/WebGPUTexturePassUtils.js +285 -0
  200. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +205 -284
  201. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +6 -5
  202. package/examples/jsm/shaders/FilmShader.js +11 -54
  203. package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
  204. package/examples/jsm/shaders/MMDToonShader.js +4 -4
  205. package/examples/jsm/shaders/OutputShader.js +2 -2
  206. package/examples/jsm/shaders/SAOShader.js +0 -13
  207. package/examples/jsm/shaders/SSAOShader.js +33 -26
  208. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +6 -6
  209. package/examples/jsm/utils/BufferGeometryUtils.js +6 -4
  210. package/package.json +1 -1
  211. package/src/Three.js +1 -2
  212. package/src/animation/AnimationUtils.js +3 -20
  213. package/src/animation/KeyframeTrack.js +8 -8
  214. package/src/audio/Audio.js +6 -0
  215. package/src/cameras/Camera.js +1 -5
  216. package/src/cameras/CubeCamera.js +14 -8
  217. package/src/constants.js +10 -1
  218. package/src/core/Object3D.js +1 -14
  219. package/src/core/RenderTarget.js +16 -7
  220. package/src/core/UniformsGroup.js +2 -2
  221. package/src/extras/core/CurvePath.js +4 -1
  222. package/src/loaders/DataTextureLoader.js +0 -2
  223. package/src/loaders/MaterialLoader.js +1 -1
  224. package/src/loaders/ObjectLoader.js +6 -0
  225. package/src/materials/Material.js +10 -10
  226. package/src/math/Color.js +1 -5
  227. package/src/math/ColorManagement.js +82 -60
  228. package/src/math/Vector2.js +2 -2
  229. package/src/math/Vector3.js +3 -3
  230. package/src/math/Vector4.js +4 -4
  231. package/src/objects/Line.js +1 -1
  232. package/src/objects/Mesh.js +1 -1
  233. package/src/objects/Points.js +1 -1
  234. package/src/objects/Sprite.js +2 -2
  235. package/src/renderers/WebGLRenderer.js +42 -51
  236. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
  237. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +1 -1
  238. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +35 -2
  239. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -9
  240. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +19 -15
  241. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +2 -2
  242. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +4 -4
  243. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +3 -3
  244. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -6
  245. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +4 -4
  246. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +1 -1
  247. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +16 -16
  248. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +3 -3
  249. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +11 -1
  250. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +1 -1
  251. package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
  252. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -1
  253. package/src/renderers/shaders/UniformsUtils.js +2 -2
  254. package/src/renderers/webgl/WebGLBackground.js +9 -17
  255. package/src/renderers/webgl/WebGLLights.js +14 -3
  256. package/src/renderers/webgl/WebGLProgram.js +36 -5
  257. package/src/renderers/webgl/WebGLPrograms.js +9 -1
  258. package/src/renderers/webgl/WebGLTextures.js +19 -8
  259. package/src/renderers/webgl/WebGLUtils.js +25 -20
  260. package/src/scenes/Fog.js +1 -0
  261. package/src/scenes/FogExp2.js +1 -0
  262. package/src/textures/Source.js +2 -2
  263. package/src/textures/Texture.js +2 -2
  264. package/src/utils.js +9 -1
  265. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureMipmapUtils.js +0 -163
  266. package/src/lights/AmbientLightProbe.js +0 -21
  267. package/src/lights/HemisphereLightProbe.js +0 -30
  268. /package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/SlotNode.js +0 -0
@@ -40,9 +40,10 @@ class WebGPUUtils {
40
40
 
41
41
  let format;
42
42
 
43
- if ( renderContext.texture !== null ) {
43
+ if ( renderContext.textures !== null ) {
44
+
45
+ format = this.getTextureFormatGPU( renderContext.textures[ 0 ] );
44
46
 
45
- format = this.getTextureFormatGPU( renderContext.texture );
46
47
 
47
48
  } else {
48
49
 
@@ -56,9 +57,9 @@ class WebGPUUtils {
56
57
 
57
58
  getCurrentColorSpace( renderContext ) {
58
59
 
59
- if ( renderContext.texture !== null ) {
60
+ if ( renderContext.textures !== null ) {
60
61
 
61
- return renderContext.texture.colorSpace;
62
+ return renderContext.textures[ 0 ].colorSpace;
62
63
 
63
64
  }
64
65
 
@@ -77,7 +78,7 @@ class WebGPUUtils {
77
78
 
78
79
  getSampleCount( renderContext ) {
79
80
 
80
- if ( renderContext.texture !== null ) {
81
+ if ( renderContext.textures !== null ) {
81
82
 
82
83
  return renderContext.sampleCount;
83
84
 
@@ -1,23 +1,3 @@
1
- /**
2
- * Film grain & scanlines shader
3
- *
4
- * - ported from HLSL to WebGL / GLSL
5
- * https://web.archive.org/web/20210226214859/http://www.truevision3d.com/forums/showcase/staticnoise_colorblackwhite_scanline_shaders-t18698.0.html
6
- *
7
- * Screen Space Static Postprocessor
8
- *
9
- * Produces an analogue noise overlay similar to a film grain / TV static
10
- *
11
- * Original implementation and noise algorithm
12
- * Pat 'Hawthorne' Shearon
13
- *
14
- * Optimized scanlines + noise version with intensity scaling
15
- * Georg 'Leviathan' Steinrohder
16
- *
17
- * This version is provided under a Creative Commons Attribution 3.0 License
18
- * http://creativecommons.org/licenses/by/3.0/
19
- */
20
-
21
1
  const FilmShader = {
22
2
 
23
3
  name: 'FilmShader',
@@ -26,10 +6,8 @@ const FilmShader = {
26
6
 
27
7
  'tDiffuse': { value: null },
28
8
  'time': { value: 0.0 },
29
- 'nIntensity': { value: 0.5 },
30
- 'sIntensity': { value: 0.05 },
31
- 'sCount': { value: 4096 },
32
- 'grayscale': { value: 1 }
9
+ 'intensity': { value: 0.5 },
10
+ 'grayscale': { value: false }
33
11
 
34
12
  },
35
13
 
@@ -48,19 +26,9 @@ const FilmShader = {
48
26
 
49
27
  #include <common>
50
28
 
51
- // control parameter
52
- uniform float time;
53
-
29
+ uniform float intensity;
54
30
  uniform bool grayscale;
55
-
56
- // noise effect intensity value (0 = no effect, 1 = full effect)
57
- uniform float nIntensity;
58
-
59
- // scanlines effect intensity value (0 = no effect, 1 = full effect)
60
- uniform float sIntensity;
61
-
62
- // scanlines effect count value (0 = no effect, 4096 = full effect)
63
- uniform float sCount;
31
+ uniform float time;
64
32
 
65
33
  uniform sampler2D tDiffuse;
66
34
 
@@ -68,32 +36,21 @@ const FilmShader = {
68
36
 
69
37
  void main() {
70
38
 
71
- // sample the source
72
- vec4 cTextureScreen = texture2D( tDiffuse, vUv );
73
-
74
- // make some noise
75
- float dx = rand( vUv + time );
76
-
77
- // add noise
78
- vec3 cResult = cTextureScreen.rgb + cTextureScreen.rgb * clamp( 0.1 + dx, 0.0, 1.0 );
39
+ vec4 base = texture2D( tDiffuse, vUv );
79
40
 
80
- // get us a sine and cosine
81
- vec2 sc = vec2( sin( vUv.y * sCount ), cos( vUv.y * sCount ) );
41
+ float noise = rand( vUv + time );
82
42
 
83
- // add scanlines
84
- cResult += cTextureScreen.rgb * vec3( sc.x, sc.y, sc.x ) * sIntensity;
43
+ vec3 color = base.rgb + base.rgb * clamp( 0.1 + noise, 0.0, 1.0 );
85
44
 
86
- // interpolate between source and result by intensity
87
- cResult = cTextureScreen.rgb + clamp( nIntensity, 0.0,1.0 ) * ( cResult - cTextureScreen.rgb );
45
+ color = mix( base.rgb, color, intensity );
88
46
 
89
- // convert to grayscale if desired
90
- if( grayscale ) {
47
+ if ( grayscale ) {
91
48
 
92
- cResult = vec3( cResult.r * 0.3 + cResult.g * 0.59 + cResult.b * 0.11 );
49
+ color = vec3( luminance( color ) ); // assuming linear-srgb
93
50
 
94
51
  }
95
52
 
96
- gl_FragColor = vec4( cResult, cTextureScreen.a );
53
+ gl_FragColor = vec4( color, base.a );
97
54
 
98
55
  }`,
99
56
 
@@ -34,7 +34,7 @@ const GammaCorrectionShader = {
34
34
 
35
35
  vec4 tex = texture2D( tDiffuse, vUv );
36
36
 
37
- gl_FragColor = LinearTosRGB( tex );
37
+ gl_FragColor = sRGBTransferOETF( tex );
38
38
 
39
39
  }`
40
40
 
@@ -27,17 +27,17 @@ struct BlinnPhongMaterial {
27
27
 
28
28
  };
29
29
 
30
- void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
30
+ void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
31
31
 
32
- vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
32
+ vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;
33
33
 
34
34
  reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
35
35
 
36
- reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
36
+ reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;
37
37
 
38
38
  }
39
39
 
40
- void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
40
+ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
41
41
 
42
42
  reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
43
43
 
@@ -65,9 +65,9 @@ const OutputShader = {
65
65
 
66
66
  // color space
67
67
 
68
- #ifdef SRGB_COLOR_SPACE
68
+ #ifdef SRGB_TRANSFER
69
69
 
70
- gl_FragColor = LinearTosRGB( gl_FragColor );
70
+ gl_FragColor = sRGBTransferOETF( gl_FragColor );
71
71
 
72
72
  #endif
73
73
 
@@ -11,9 +11,7 @@ const SAOShader = {
11
11
  defines: {
12
12
  'NUM_SAMPLES': 7,
13
13
  'NUM_RINGS': 4,
14
- 'NORMAL_TEXTURE': 0,
15
14
  'DIFFUSE_TEXTURE': 0,
16
- 'DEPTH_PACKING': 1,
17
15
  'PERSPECTIVE_CAMERA': 1
18
16
  },
19
17
  uniforms: {
@@ -56,10 +54,7 @@ const SAOShader = {
56
54
  #endif
57
55
 
58
56
  uniform sampler2D tDepth;
59
-
60
- #if NORMAL_TEXTURE == 1
61
57
  uniform sampler2D tNormal;
62
- #endif
63
58
 
64
59
  uniform float cameraNear;
65
60
  uniform float cameraFar;
@@ -87,11 +82,7 @@ const SAOShader = {
87
82
  }
88
83
 
89
84
  float getDepth( const in vec2 screenPosition ) {
90
- #if DEPTH_PACKING == 1
91
- return unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );
92
- #else
93
85
  return texture2D( tDepth, screenPosition ).x;
94
- #endif
95
86
  }
96
87
 
97
88
  float getViewZ( const in float depth ) {
@@ -111,11 +102,7 @@ const SAOShader = {
111
102
  }
112
103
 
113
104
  vec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPosition ) {
114
- #if NORMAL_TEXTURE == 1
115
105
  return unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );
116
- #else
117
- return normalize( cross( dFdx( viewPosition ), dFdy( viewPosition ) ) );
118
- #endif
119
106
  }
120
107
 
121
108
  float scaleDividedByCameraFar;
@@ -19,7 +19,6 @@ const SSAOShader = {
19
19
 
20
20
  uniforms: {
21
21
 
22
- 'tDiffuse': { value: null },
23
22
  'tNormal': { value: null },
24
23
  'tDepth': { value: null },
25
24
  'tNoise': { value: null },
@@ -49,7 +48,6 @@ const SSAOShader = {
49
48
 
50
49
  fragmentShader: /* glsl */`
51
50
 
52
- uniform sampler2D tDiffuse;
53
51
  uniform sampler2D tNormal;
54
52
  uniform sampler2D tDepth;
55
53
  uniform sampler2D tNoise;
@@ -128,47 +126,56 @@ const SSAOShader = {
128
126
  void main() {
129
127
 
130
128
  float depth = getDepth( vUv );
131
- float viewZ = getViewZ( depth );
132
129
 
133
- vec3 viewPosition = getViewPosition( vUv, depth, viewZ );
134
- vec3 viewNormal = getViewNormal( vUv );
130
+ if ( depth == 1.0 ) {
131
+
132
+ gl_FragColor = vec4( 1.0 ); // don't influence background
133
+
134
+ } else {
135
+
136
+ float viewZ = getViewZ( depth );
137
+
138
+ vec3 viewPosition = getViewPosition( vUv, depth, viewZ );
139
+ vec3 viewNormal = getViewNormal( vUv );
135
140
 
136
- vec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );
137
- vec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );
141
+ vec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );
142
+ vec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );
138
143
 
139
- // compute matrix used to reorient a kernel vector
144
+ // compute matrix used to reorient a kernel vector
140
145
 
141
- vec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) );
142
- vec3 bitangent = cross( viewNormal, tangent );
143
- mat3 kernelMatrix = mat3( tangent, bitangent, viewNormal );
146
+ vec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) );
147
+ vec3 bitangent = cross( viewNormal, tangent );
148
+ mat3 kernelMatrix = mat3( tangent, bitangent, viewNormal );
144
149
 
145
- float occlusion = 0.0;
150
+ float occlusion = 0.0;
146
151
 
147
- for ( int i = 0; i < KERNEL_SIZE; i ++ ) {
152
+ for ( int i = 0; i < KERNEL_SIZE; i ++ ) {
148
153
 
149
- vec3 sampleVector = kernelMatrix * kernel[ i ]; // reorient sample vector in view space
150
- vec3 samplePoint = viewPosition + ( sampleVector * kernelRadius ); // calculate sample point
154
+ vec3 sampleVector = kernelMatrix * kernel[ i ]; // reorient sample vector in view space
155
+ vec3 samplePoint = viewPosition + ( sampleVector * kernelRadius ); // calculate sample point
151
156
 
152
- vec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 ); // project point and calculate NDC
153
- samplePointNDC /= samplePointNDC.w;
157
+ vec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 ); // project point and calculate NDC
158
+ samplePointNDC /= samplePointNDC.w;
154
159
 
155
- vec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5; // compute uv coordinates
160
+ vec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5; // compute uv coordinates
156
161
 
157
- float realDepth = getLinearDepth( samplePointUv ); // get linear depth from depth texture
158
- float sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar ); // compute linear depth of the sample view Z value
159
- float delta = sampleDepth - realDepth;
162
+ float realDepth = getLinearDepth( samplePointUv ); // get linear depth from depth texture
163
+ float sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar ); // compute linear depth of the sample view Z value
164
+ float delta = sampleDepth - realDepth;
160
165
 
161
- if ( delta > minDistance && delta < maxDistance ) { // if fragment is before sample point, increase occlusion
166
+ if ( delta > minDistance && delta < maxDistance ) { // if fragment is before sample point, increase occlusion
162
167
 
163
- occlusion += 1.0;
168
+ occlusion += 1.0;
169
+
170
+ }
164
171
 
165
172
  }
166
173
 
167
- }
174
+ occlusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 );
168
175
 
169
- occlusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 );
176
+ gl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 );
170
177
 
171
- gl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 );
178
+ }
172
179
 
173
180
  }`
174
181
 
@@ -57,10 +57,10 @@ const SubsurfaceScatteringShader = {
57
57
  'uniform float thicknessAttenuation;',
58
58
  'uniform vec3 thicknessColor;',
59
59
 
60
- 'void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {',
60
+ 'void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, inout ReflectedLight reflectedLight) {',
61
61
  ' vec3 thickness = thicknessColor * texture2D(thicknessMap, uv).r;',
62
- ' vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));',
63
- ' float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;',
62
+ ' vec3 scatteringHalf = normalize(directLight.direction + (geometryNormal * thicknessDistortion));',
63
+ ' float scatteringDot = pow(saturate(dot(geometryViewDir, -scatteringHalf)), thicknessPower) * thicknessScale;',
64
64
  ' vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;',
65
65
  ' reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;',
66
66
  '}',
@@ -69,12 +69,12 @@ const SubsurfaceScatteringShader = {
69
69
 
70
70
  replaceAll(
71
71
  ShaderChunk[ 'lights_fragment_begin' ],
72
- 'RE_Direct( directLight, geometry, material, reflectedLight );',
72
+ 'RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );',
73
73
  [
74
- 'RE_Direct( directLight, geometry, material, reflectedLight );',
74
+ 'RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );',
75
75
 
76
76
  '#if defined( SUBSURFACE ) && defined( USE_UV )',
77
- ' RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);',
77
+ ' RE_Direct_Scattering(directLight, vUv, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, reflectedLight);',
78
78
  '#endif',
79
79
  ].join( '\n' )
80
80
  ),
@@ -555,7 +555,7 @@ export function deinterleaveGeometry( geometry ) {
555
555
  }
556
556
 
557
557
  /**
558
- * @param {Array<BufferGeometry>} geometry
558
+ * @param {BufferGeometry} geometry
559
559
  * @return {number}
560
560
  */
561
561
  function estimateBytesUsed( geometry ) {
@@ -631,8 +631,10 @@ function mergeVertices( geometry, tolerance = 1e-4 ) {
631
631
  }
632
632
 
633
633
  // convert the error tolerance to an amount of decimal places to truncate to
634
- const decimalShift = Math.log10( 1 / tolerance );
635
- const shiftMultiplier = Math.pow( 10, decimalShift );
634
+ const halfTolerance = tolerance * 0.5;
635
+ const exponent = Math.log10( 1 / tolerance );
636
+ const hashMultiplier = Math.pow( 10, exponent );
637
+ const hashAdditive = halfTolerance * hashMultiplier;
636
638
  for ( let i = 0; i < vertexCount; i ++ ) {
637
639
 
638
640
  const index = indices ? indices.getX( i ) : i;
@@ -648,7 +650,7 @@ function mergeVertices( geometry, tolerance = 1e-4 ) {
648
650
  for ( let k = 0; k < itemSize; k ++ ) {
649
651
 
650
652
  // double tilde truncates the decimal value
651
- hash += `${ ~ ~ ( attribute[ getters[ k ] ]( index ) * shiftMultiplier ) },`;
653
+ hash += `${ ~ ~ ( attribute[ getters[ k ] ]( index ) * hashMultiplier + hashAdditive ) },`;
652
654
 
653
655
  }
654
656
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "super-three",
3
- "version": "0.155.0",
3
+ "version": "0.157.0",
4
4
  "description": "JavaScript 3D library",
5
5
  "type": "module",
6
6
  "main": "./build/three.js",
package/src/Three.js CHANGED
@@ -61,10 +61,8 @@ export { SpotLight } from './lights/SpotLight.js';
61
61
  export { PointLight } from './lights/PointLight.js';
62
62
  export { RectAreaLight } from './lights/RectAreaLight.js';
63
63
  export { HemisphereLight } from './lights/HemisphereLight.js';
64
- export { HemisphereLightProbe } from './lights/HemisphereLightProbe.js';
65
64
  export { DirectionalLight } from './lights/DirectionalLight.js';
66
65
  export { AmbientLight } from './lights/AmbientLight.js';
67
- export { AmbientLightProbe } from './lights/AmbientLightProbe.js';
68
66
  export { Light } from './lights/Light.js';
69
67
  export { LightProbe } from './lights/LightProbe.js';
70
68
  export { StereoCamera } from './cameras/StereoCamera.js';
@@ -158,6 +156,7 @@ export { ImageUtils } from './extras/ImageUtils.js';
158
156
  export { ShapeUtils } from './extras/ShapeUtils.js';
159
157
  export { PMREMGenerator } from './extras/PMREMGenerator.js';
160
158
  export { WebGLUtils } from './renderers/webgl/WebGLUtils.js';
159
+ export { createCanvasElement } from './utils.js';
161
160
  export * from './constants.js';
162
161
  export * from './Three.Legacy.js';
163
162
 
@@ -1,21 +1,6 @@
1
1
  import { Quaternion } from '../math/Quaternion.js';
2
2
  import { AdditiveAnimationBlendMode } from '../constants.js';
3
3
 
4
- // same as Array.prototype.slice, but also works on typed arrays
5
- function arraySlice( array, from, to ) {
6
-
7
- if ( isTypedArray( array ) ) {
8
-
9
- // in ios9 array.subarray(from, undefined) will return empty array
10
- // but array.subarray(from) or array.subarray(from, len) is correct
11
- return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );
12
-
13
- }
14
-
15
- return array.slice( from, to );
16
-
17
- }
18
-
19
4
  // converts an array to a specific type
20
5
  function convertArray( array, type, forceClone ) {
21
6
 
@@ -279,14 +264,14 @@ function makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targe
279
264
  // Reference frame is earlier than the first keyframe, so just use the first keyframe
280
265
  const startIndex = referenceOffset;
281
266
  const endIndex = referenceValueSize - referenceOffset;
282
- referenceValue = arraySlice( referenceTrack.values, startIndex, endIndex );
267
+ referenceValue = referenceTrack.values.slice( startIndex, endIndex );
283
268
 
284
269
  } else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {
285
270
 
286
271
  // Reference frame is after the last keyframe, so just use the last keyframe
287
272
  const startIndex = lastIndex * referenceValueSize + referenceOffset;
288
273
  const endIndex = startIndex + referenceValueSize - referenceOffset;
289
- referenceValue = arraySlice( referenceTrack.values, startIndex, endIndex );
274
+ referenceValue = referenceTrack.values.slice( startIndex, endIndex );
290
275
 
291
276
  } else {
292
277
 
@@ -295,7 +280,7 @@ function makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targe
295
280
  const startIndex = referenceOffset;
296
281
  const endIndex = referenceValueSize - referenceOffset;
297
282
  interpolant.evaluate( referenceTime );
298
- referenceValue = arraySlice( interpolant.resultBuffer, startIndex, endIndex );
283
+ referenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );
299
284
 
300
285
  }
301
286
 
@@ -350,7 +335,6 @@ function makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targe
350
335
  }
351
336
 
352
337
  const AnimationUtils = {
353
- arraySlice: arraySlice,
354
338
  convertArray: convertArray,
355
339
  isTypedArray: isTypedArray,
356
340
  getKeyframeOrder: getKeyframeOrder,
@@ -361,7 +345,6 @@ const AnimationUtils = {
361
345
  };
362
346
 
363
347
  export {
364
- arraySlice,
365
348
  convertArray,
366
349
  isTypedArray,
367
350
  getKeyframeOrder,
@@ -239,8 +239,8 @@ class KeyframeTrack {
239
239
  }
240
240
 
241
241
  const stride = this.getValueSize();
242
- this.times = AnimationUtils.arraySlice( times, from, to );
243
- this.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );
242
+ this.times = times.slice( from, to );
243
+ this.values = this.values.slice( from * stride, to * stride );
244
244
 
245
245
  }
246
246
 
@@ -330,8 +330,8 @@ class KeyframeTrack {
330
330
  optimize() {
331
331
 
332
332
  // times or values may be shared with other tracks, so overwriting is unsafe
333
- const times = AnimationUtils.arraySlice( this.times ),
334
- values = AnimationUtils.arraySlice( this.values ),
333
+ const times = this.times.slice(),
334
+ values = this.values.slice(),
335
335
  stride = this.getValueSize(),
336
336
 
337
337
  smoothInterpolation = this.getInterpolation() === InterpolateSmooth,
@@ -424,8 +424,8 @@ class KeyframeTrack {
424
424
 
425
425
  if ( writeIndex !== times.length ) {
426
426
 
427
- this.times = AnimationUtils.arraySlice( times, 0, writeIndex );
428
- this.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );
427
+ this.times = times.slice( 0, writeIndex );
428
+ this.values = values.slice( 0, writeIndex * stride );
429
429
 
430
430
  } else {
431
431
 
@@ -440,8 +440,8 @@ class KeyframeTrack {
440
440
 
441
441
  clone() {
442
442
 
443
- const times = AnimationUtils.arraySlice( this.times, 0 );
444
- const values = AnimationUtils.arraySlice( this.values, 0 );
443
+ const times = this.times.slice();
444
+ const values = this.values.slice();
445
445
 
446
446
  const TypedKeyframeTrack = this.constructor;
447
447
  const track = new TypedKeyframeTrack( this.name, times, values );
@@ -210,6 +210,12 @@ class Audio extends Object3D {
210
210
 
211
211
  disconnect() {
212
212
 
213
+ if ( this._connected === false ) {
214
+
215
+ return;
216
+
217
+ }
218
+
213
219
  if ( this.filters.length > 0 ) {
214
220
 
215
221
  this.source.disconnect( this.filters[ 0 ] );
@@ -38,11 +38,7 @@ class Camera extends Object3D {
38
38
 
39
39
  getWorldDirection( target ) {
40
40
 
41
- this.updateWorldMatrix( true, false );
42
-
43
- const e = this.matrixWorld.elements;
44
-
45
- return target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();
41
+ return super.getWorldDirection( target ).negate();
46
42
 
47
43
  }
48
44
 
@@ -15,6 +15,7 @@ class CubeCamera extends Object3D {
15
15
 
16
16
  this.renderTarget = renderTarget;
17
17
  this.coordinateSystem = null;
18
+ this.activeMipmapLevel = 0;
18
19
 
19
20
  const cameraPX = new PerspectiveCamera( fov, aspect, near, far );
20
21
  cameraPX.layers = this.layers;
@@ -112,7 +113,7 @@ class CubeCamera extends Object3D {
112
113
 
113
114
  if ( this.parent === null ) this.updateMatrixWorld();
114
115
 
115
- const renderTarget = this.renderTarget;
116
+ const { renderTarget, activeMipmapLevel } = this;
116
117
 
117
118
  if ( this.coordinateSystem !== renderer.coordinateSystem ) {
118
119
 
@@ -125,6 +126,8 @@ class CubeCamera extends Object3D {
125
126
  const [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;
126
127
 
127
128
  const currentRenderTarget = renderer.getRenderTarget();
129
+ const currentActiveCubeFace = renderer.getActiveCubeFace();
130
+ const currentActiveMipmapLevel = renderer.getActiveMipmapLevel();
128
131
 
129
132
  const currentXrEnabled = renderer.xr.enabled;
130
133
 
@@ -134,27 +137,30 @@ class CubeCamera extends Object3D {
134
137
 
135
138
  renderTarget.texture.generateMipmaps = false;
136
139
 
137
- renderer.setRenderTarget( renderTarget, 0 );
140
+ renderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );
138
141
  renderer.render( scene, cameraPX );
139
142
 
140
- renderer.setRenderTarget( renderTarget, 1 );
143
+ renderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );
141
144
  renderer.render( scene, cameraNX );
142
145
 
143
- renderer.setRenderTarget( renderTarget, 2 );
146
+ renderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );
144
147
  renderer.render( scene, cameraPY );
145
148
 
146
- renderer.setRenderTarget( renderTarget, 3 );
149
+ renderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );
147
150
  renderer.render( scene, cameraNY );
148
151
 
149
- renderer.setRenderTarget( renderTarget, 4 );
152
+ renderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );
150
153
  renderer.render( scene, cameraPZ );
151
154
 
155
+ // mipmaps are generated during the last call of render()
156
+ // at this point, all sides of the cube render target are defined
157
+
152
158
  renderTarget.texture.generateMipmaps = generateMipmaps;
153
159
 
154
- renderer.setRenderTarget( renderTarget, 5 );
160
+ renderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );
155
161
  renderer.render( scene, cameraNZ );
156
162
 
157
- renderer.setRenderTarget( currentRenderTarget );
163
+ renderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );
158
164
 
159
165
  renderer.xr.enabled = currentXrEnabled;
160
166
 
package/src/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export const REVISION = '155';
1
+ export const REVISION = '157';
2
2
 
3
3
  export const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };
4
4
  export const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };
@@ -122,6 +122,8 @@ export const RGBA_ASTC_10x10_Format = 37819;
122
122
  export const RGBA_ASTC_12x10_Format = 37820;
123
123
  export const RGBA_ASTC_12x12_Format = 37821;
124
124
  export const RGBA_BPTC_Format = 36492;
125
+ export const RGB_BPTC_SIGNED_Format = 36494;
126
+ export const RGB_BPTC_UNSIGNED_Format = 36495;
125
127
  export const RED_RGTC1_Format = 36283;
126
128
  export const SIGNED_RED_RGTC1_Format = 36284;
127
129
  export const RED_GREEN_RGTC2_Format = 36285;
@@ -154,6 +156,13 @@ export const NoColorSpace = '';
154
156
  export const SRGBColorSpace = 'srgb';
155
157
  export const LinearSRGBColorSpace = 'srgb-linear';
156
158
  export const DisplayP3ColorSpace = 'display-p3';
159
+ export const LinearDisplayP3ColorSpace = 'display-p3-linear';
160
+
161
+ export const LinearTransfer = 'linear';
162
+ export const SRGBTransfer = 'srgb';
163
+
164
+ export const Rec709Primaries = 'rec709';
165
+ export const P3Primaries = 'p3';
157
166
 
158
167
  export const ZeroStencilOp = 0;
159
168
  export const KeepStencilOp = 7680;
@@ -392,20 +392,7 @@ class Object3D extends EventDispatcher {
392
392
 
393
393
  clear() {
394
394
 
395
- for ( let i = 0; i < this.children.length; i ++ ) {
396
-
397
- const object = this.children[ i ];
398
-
399
- object.parent = null;
400
-
401
- object.dispatchEvent( _removedEvent );
402
-
403
- }
404
-
405
- this.children.length = 0;
406
-
407
- return this;
408
-
395
+ return this.remove( ... this.children );
409
396
 
410
397
  }
411
398