super-three 0.152.0 → 0.154.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 (339) hide show
  1. package/build/three.cjs +779 -557
  2. package/build/three.js +779 -557
  3. package/build/three.min.js +2 -1
  4. package/build/three.module.js +770 -539
  5. package/build/three.module.min.js +2 -1
  6. package/examples/jsm/cameras/CinematicCamera.js +1 -2
  7. package/examples/jsm/capabilities/WebGPU.js +15 -1
  8. package/examples/jsm/controls/ArcballControls.js +2 -1
  9. package/examples/jsm/controls/FlyControls.js +25 -9
  10. package/examples/jsm/controls/OrbitControls.js +5 -1
  11. package/examples/jsm/csm/CSM.js +1 -3
  12. package/examples/jsm/effects/AnaglyphEffect.js +6 -20
  13. package/examples/jsm/effects/OutlineEffect.js +1 -1
  14. package/examples/jsm/effects/ParallaxBarrierEffect.js +3 -0
  15. package/examples/jsm/environments/RoomEnvironment.js +6 -2
  16. package/examples/jsm/exporters/GLTFExporter.js +74 -2
  17. package/examples/jsm/exporters/USDZExporter.js +170 -129
  18. package/examples/jsm/helpers/ViewHelper.js +1 -1
  19. package/examples/jsm/lines/LineMaterial.js +1 -1
  20. package/examples/jsm/loaders/3DMLoader.js +1 -1
  21. package/examples/jsm/loaders/3MFLoader.js +5 -1
  22. package/examples/jsm/loaders/AMFLoader.js +5 -1
  23. package/examples/jsm/loaders/ColladaLoader.js +4 -1
  24. package/examples/jsm/loaders/DRACOLoader.js +2 -0
  25. package/examples/jsm/loaders/FBXLoader.js +9 -2
  26. package/examples/jsm/loaders/GLTFLoader.js +230 -94
  27. package/examples/jsm/loaders/KTX2Loader.js +106 -47
  28. package/examples/jsm/loaders/LDrawLoader.js +4 -7
  29. package/examples/jsm/loaders/MMDLoader.js +40 -13
  30. package/examples/jsm/loaders/PCDLoader.js +25 -10
  31. package/examples/jsm/loaders/PDBLoader.js +7 -2
  32. package/examples/jsm/loaders/PLYLoader.js +30 -8
  33. package/examples/jsm/loaders/STLLoader.js +8 -3
  34. package/examples/jsm/loaders/VRMLLoader.js +55 -7
  35. package/examples/jsm/loaders/VTKLoader.js +12 -4
  36. package/examples/jsm/loaders/XYZLoader.js +9 -3
  37. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -2
  38. package/examples/jsm/math/Lut.js +5 -4
  39. package/examples/jsm/math/MeshSurfaceSampler.js +82 -37
  40. package/examples/jsm/misc/GPUComputationRenderer.js +1 -0
  41. package/examples/jsm/misc/VolumeSlice.js +3 -1
  42. package/examples/jsm/nodes/Nodes.js +22 -16
  43. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +99 -0
  44. package/examples/jsm/nodes/accessors/BufferNode.js +2 -2
  45. package/examples/jsm/nodes/accessors/CameraNode.js +25 -4
  46. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +7 -1
  47. package/examples/jsm/nodes/accessors/InstanceNode.js +29 -12
  48. package/examples/jsm/nodes/accessors/MaterialNode.js +55 -47
  49. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +2 -2
  50. package/examples/jsm/nodes/accessors/ModelNode.js +3 -1
  51. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +4 -9
  52. package/examples/jsm/nodes/accessors/MorphNode.js +70 -0
  53. package/examples/jsm/nodes/accessors/NormalNode.js +3 -2
  54. package/examples/jsm/nodes/accessors/Object3DNode.js +10 -2
  55. package/examples/jsm/nodes/accessors/ReferenceNode.js +2 -2
  56. package/examples/jsm/nodes/accessors/SceneNode.js +46 -0
  57. package/examples/jsm/nodes/accessors/SkinningNode.js +43 -62
  58. package/examples/jsm/nodes/accessors/StorageBufferNode.js +2 -2
  59. package/examples/jsm/nodes/accessors/TangentNode.js +2 -2
  60. package/examples/jsm/nodes/accessors/TextureBicubicNode.js +94 -0
  61. package/examples/jsm/nodes/accessors/TextureNode.js +68 -6
  62. package/examples/jsm/nodes/accessors/TextureSizeNode.js +35 -0
  63. package/examples/jsm/nodes/accessors/UVNode.js +1 -1
  64. package/examples/jsm/nodes/code/CodeNode.js +3 -0
  65. package/examples/jsm/nodes/code/FunctionNode.js +25 -4
  66. package/examples/jsm/nodes/core/AttributeNode.js +1 -1
  67. package/examples/jsm/nodes/core/BypassNode.js +2 -2
  68. package/examples/jsm/nodes/core/ContextNode.js +2 -0
  69. package/examples/jsm/nodes/core/IndexNode.js +66 -0
  70. package/examples/jsm/nodes/core/LightingModel.js +2 -1
  71. package/examples/jsm/nodes/core/Node.js +13 -16
  72. package/examples/jsm/nodes/core/NodeAttribute.js +2 -1
  73. package/examples/jsm/nodes/core/NodeBuilder.js +86 -8
  74. package/examples/jsm/nodes/core/NodeUtils.js +10 -0
  75. package/examples/jsm/nodes/core/PropertyNode.js +6 -2
  76. package/examples/jsm/nodes/core/StackNode.js +8 -1
  77. package/examples/jsm/nodes/core/UniformNode.js +1 -1
  78. package/examples/jsm/nodes/core/VarNode.js +1 -3
  79. package/examples/jsm/nodes/display/BlendModeNode.js +9 -9
  80. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +7 -7
  81. package/examples/jsm/nodes/display/ColorSpaceNode.js +50 -49
  82. package/examples/jsm/nodes/display/NormalMapNode.js +3 -3
  83. package/examples/jsm/nodes/display/ToneMappingNode.js +24 -15
  84. package/examples/jsm/nodes/display/ViewportDepthNode.js +69 -0
  85. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +34 -0
  86. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +7 -6
  87. package/examples/jsm/nodes/display/ViewportTextureNode.js +33 -19
  88. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +5 -5
  89. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -8
  90. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  91. package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +43 -0
  92. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +4 -4
  93. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +2 -2
  94. package/examples/jsm/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
  95. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +2 -4
  96. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  97. package/examples/jsm/nodes/functions/PhongLightingModel.js +7 -7
  98. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +132 -19
  99. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +2 -2
  100. package/examples/jsm/nodes/functions/material/getRoughness.js +3 -3
  101. package/examples/jsm/nodes/geometry/RangeNode.js +33 -51
  102. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +6 -3
  103. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +2 -2
  104. package/examples/jsm/nodes/lighting/EnvironmentNode.js +107 -62
  105. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +2 -2
  106. package/examples/jsm/nodes/lighting/LightUtils.js +2 -2
  107. package/examples/jsm/nodes/lighting/LightingContextNode.js +17 -15
  108. package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
  109. package/examples/jsm/nodes/lighting/SpotLightNode.js +3 -3
  110. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -15
  111. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -15
  112. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -10
  113. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -9
  114. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +41 -0
  115. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +1 -14
  116. package/examples/jsm/nodes/materials/NodeMaterial.js +119 -29
  117. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -9
  118. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -7
  119. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +3 -3
  120. package/examples/jsm/nodes/materialx/lib/mx_noise.js +14 -14
  121. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +4 -4
  122. package/examples/jsm/nodes/math/MathNode.js +6 -0
  123. package/examples/jsm/nodes/math/OperatorNode.js +1 -1
  124. package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
  125. package/examples/jsm/nodes/shadernode/ShaderNode.js +60 -33
  126. package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -3
  127. package/examples/jsm/nodes/utils/LoopNode.js +186 -0
  128. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +1 -1
  129. package/examples/jsm/objects/GroundProjectedSkybox.js +1 -1
  130. package/examples/jsm/objects/Lensflare.js +3 -4
  131. package/examples/jsm/objects/MarchingCubes.js +5 -1
  132. package/examples/jsm/objects/Reflector.js +4 -1
  133. package/examples/jsm/objects/Refractor.js +1 -1
  134. package/examples/jsm/objects/Sky.js +1 -1
  135. package/examples/jsm/objects/Water.js +2 -1
  136. package/examples/jsm/objects/Water2.js +1 -1
  137. package/examples/jsm/offscreen/scene.js +1 -0
  138. package/examples/jsm/physics/RapierPhysics.js +93 -133
  139. package/examples/jsm/postprocessing/AfterimagePass.js +3 -0
  140. package/examples/jsm/postprocessing/BloomPass.js +7 -2
  141. package/examples/jsm/postprocessing/BokehPass.js +3 -2
  142. package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
  143. package/examples/jsm/postprocessing/EffectComposer.js +4 -1
  144. package/examples/jsm/postprocessing/FilmPass.js +1 -0
  145. package/examples/jsm/postprocessing/OutlinePass.js +8 -9
  146. package/examples/jsm/postprocessing/OutputPass.js +72 -0
  147. package/examples/jsm/postprocessing/RenderPixelatedPass.js +4 -3
  148. package/examples/jsm/postprocessing/SAOPass.js +4 -2
  149. package/examples/jsm/postprocessing/SMAAPass.js +5 -2
  150. package/examples/jsm/postprocessing/SSAARenderPass.js +5 -13
  151. package/examples/jsm/postprocessing/SSAOPass.js +4 -2
  152. package/examples/jsm/postprocessing/SSRPass.js +3 -1
  153. package/examples/jsm/postprocessing/SavePass.js +5 -2
  154. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  155. package/examples/jsm/postprocessing/TAARenderPass.js +17 -4
  156. package/examples/jsm/postprocessing/TexturePass.js +2 -1
  157. package/examples/jsm/postprocessing/UnrealBloomPass.js +13 -13
  158. package/examples/jsm/renderers/{webgpu/WebGPUAnimation.js → common/Animation.js} +2 -2
  159. package/examples/jsm/renderers/common/Attributes.js +75 -0
  160. package/examples/jsm/renderers/common/Backend.js +162 -0
  161. package/examples/jsm/renderers/common/Background.js +134 -0
  162. package/examples/jsm/renderers/common/Binding.js +11 -0
  163. package/examples/jsm/renderers/common/Bindings.js +169 -0
  164. package/examples/jsm/renderers/common/Buffer.js +38 -0
  165. package/examples/jsm/renderers/{webgpu/WebGPUBufferUtils.js → common/BufferUtils.js} +2 -2
  166. package/examples/jsm/renderers/{webgpu/WebGPUWeakMap.js → common/ChainMap.js} +11 -5
  167. package/examples/jsm/renderers/common/ComputePipeline.js +17 -0
  168. package/examples/jsm/renderers/common/Constants.js +14 -0
  169. package/examples/jsm/renderers/common/CubeRenderTarget.js +65 -0
  170. package/examples/jsm/renderers/common/DataMap.js +54 -0
  171. package/examples/jsm/renderers/{webgpu/WebGPUGeometries.js → common/Geometries.js} +38 -37
  172. package/examples/jsm/renderers/{webgpu/WebGPUInfo.js → common/Info.js} +2 -3
  173. package/examples/jsm/renderers/common/Pipeline.js +13 -0
  174. package/examples/jsm/renderers/common/Pipelines.js +321 -0
  175. package/examples/jsm/renderers/common/ProgrammableStage.js +18 -0
  176. package/examples/jsm/renderers/common/RenderContext.js +37 -0
  177. package/examples/jsm/renderers/common/RenderContexts.js +38 -0
  178. package/examples/jsm/renderers/{webgpu/WebGPURenderLists.js → common/RenderList.js} +2 -39
  179. package/examples/jsm/renderers/common/RenderLists.js +38 -0
  180. package/examples/jsm/renderers/common/RenderObject.js +113 -0
  181. package/examples/jsm/renderers/common/RenderObjects.js +92 -0
  182. package/examples/jsm/renderers/common/RenderPipeline.js +16 -0
  183. package/examples/jsm/renderers/{webgpu/WebGPURenderTarget.js → common/RenderTarget.js} +2 -2
  184. package/examples/jsm/renderers/common/Renderer.js +864 -0
  185. package/examples/jsm/renderers/common/SampledTexture.js +80 -0
  186. package/examples/jsm/renderers/common/Sampler.js +18 -0
  187. package/examples/jsm/renderers/common/StorageBuffer.js +17 -0
  188. package/examples/jsm/renderers/common/Textures.js +206 -0
  189. package/examples/jsm/renderers/{webgpu/WebGPUUniform.js → common/Uniform.js} +13 -9
  190. package/examples/jsm/renderers/common/UniformBuffer.js +15 -0
  191. package/examples/jsm/renderers/{webgpu/WebGPUUniformsGroup.js → common/UniformsGroup.js} +13 -13
  192. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodes.js → common/nodes/NodeRender.js} +3 -3
  193. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampledTexture.js → common/nodes/NodeSampledTexture.js} +4 -4
  194. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampler.js → common/nodes/NodeSampler.js} +3 -3
  195. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeUniform.js → common/nodes/NodeUniform.js} +1 -1
  196. package/examples/jsm/renderers/common/nodes/Nodes.js +319 -0
  197. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +340 -0
  198. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +23 -19
  199. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +847 -0
  200. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +15 -1131
  201. package/examples/jsm/renderers/webgpu/nodes/{WebGPUNodeBuilder.js → WGSLNodeBuilder.js} +75 -45
  202. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeFunction.js +2 -2
  203. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeParser.js +1 -1
  204. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +255 -0
  205. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +145 -0
  206. package/examples/jsm/renderers/webgpu/{constants.js → utils/WebGPUConstants.js} +6 -7
  207. package/examples/jsm/renderers/webgpu/{WebGPURenderPipeline.js → utils/WebGPUPipelineUtils.js} +154 -247
  208. package/examples/jsm/renderers/webgpu/{WebGPUTextureUtils.js → utils/WebGPUTextureMipmapUtils.js} +3 -25
  209. package/examples/jsm/renderers/webgpu/{WebGPUTextures.js → utils/WebGPUTextureUtils.js} +392 -505
  210. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +92 -0
  211. package/examples/jsm/shaders/BleachBypassShader.js +2 -0
  212. package/examples/jsm/shaders/BlendShader.js +1 -2
  213. package/examples/jsm/shaders/BokehShader2.js +3 -0
  214. package/examples/jsm/shaders/ColorifyShader.js +2 -0
  215. package/examples/jsm/shaders/ConvolutionShader.js +2 -0
  216. package/examples/jsm/shaders/CopyShader.js +4 -2
  217. package/examples/jsm/shaders/DotScreenShader.js +2 -0
  218. package/examples/jsm/shaders/ExposureShader.js +44 -0
  219. package/examples/jsm/shaders/FilmShader.js +2 -0
  220. package/examples/jsm/shaders/GammaCorrectionShader.js +2 -0
  221. package/examples/jsm/shaders/HorizontalBlurShader.js +2 -0
  222. package/examples/jsm/shaders/OutputShader.js +61 -0
  223. package/examples/jsm/shaders/RGBShiftShader.js +2 -0
  224. package/examples/jsm/shaders/SepiaShader.js +2 -0
  225. package/examples/jsm/shaders/ToonShader.js +13 -5
  226. package/examples/jsm/shaders/VerticalBlurShader.js +2 -0
  227. package/examples/jsm/shaders/VignetteShader.js +2 -0
  228. package/examples/jsm/shaders/WaterRefractionShader.js +5 -2
  229. package/examples/jsm/utils/BufferGeometryUtils.js +17 -1
  230. package/examples/jsm/utils/TextureUtils.js +86 -0
  231. package/examples/jsm/webxr/OculusHandPointerModel.js +34 -13
  232. package/examples/jsm/webxr/XRHandPrimitiveModel.js +1 -0
  233. package/examples/jsm/webxr/XRPlanes.js +100 -0
  234. package/package.json +3 -1
  235. package/src/Three.Legacy.js +0 -228
  236. package/src/audio/PositionalAudio.js +8 -0
  237. package/src/cameras/Camera.js +5 -0
  238. package/src/cameras/CubeCamera.js +76 -13
  239. package/src/cameras/OrthographicCamera.js +1 -1
  240. package/src/cameras/PerspectiveCamera.js +1 -1
  241. package/src/constants.js +13 -1
  242. package/src/core/BufferAttribute.js +3 -25
  243. package/src/core/BufferGeometry.js +1 -8
  244. package/src/core/Object3D.js +1 -1
  245. package/src/extras/core/Curve.js +1 -1
  246. package/src/loaders/CubeTextureLoader.js +2 -0
  247. package/src/loaders/Loader.js +2 -0
  248. package/src/loaders/MaterialLoader.js +5 -0
  249. package/src/loaders/ObjectLoader.js +1 -0
  250. package/src/materials/Material.js +13 -1
  251. package/src/materials/MeshPhysicalMaterial.js +32 -6
  252. package/src/math/Color.js +16 -11
  253. package/src/math/Frustum.js +16 -2
  254. package/src/math/MathUtils.js +16 -0
  255. package/src/math/Matrix3.js +26 -6
  256. package/src/math/Matrix4.js +74 -19
  257. package/src/objects/InstancedMesh.js +3 -0
  258. package/src/objects/Mesh.js +14 -10
  259. package/src/objects/Skeleton.js +1 -3
  260. package/src/objects/SkinnedMesh.js +36 -8
  261. package/src/renderers/WebGLRenderer.js +126 -21
  262. package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
  263. package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
  264. package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +6 -0
  265. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -0
  266. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +26 -3
  267. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +9 -1
  268. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +26 -0
  269. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -2
  270. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +10 -2
  271. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +1 -1
  272. package/src/renderers/shaders/ShaderChunk/{output_fragment.glsl.js → opaque_fragment.glsl.js} +1 -2
  273. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  274. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +3 -3
  275. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +10 -5
  276. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +6 -1
  277. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +7 -1
  278. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +6 -1
  279. package/src/renderers/shaders/ShaderChunk.js +10 -6
  280. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  281. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -1
  282. package/src/renderers/shaders/ShaderLib/cube.glsl.js +1 -1
  283. package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
  284. package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  285. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -1
  286. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -2
  287. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +4 -2
  288. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +4 -2
  289. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +4 -2
  290. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +4 -2
  291. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +12 -2
  292. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +4 -2
  293. package/src/renderers/shaders/ShaderLib/points.glsl.js +4 -2
  294. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  295. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +4 -2
  296. package/src/renderers/shaders/ShaderLib.js +4 -1
  297. package/src/renderers/shaders/UniformsLib.js +2 -0
  298. package/src/renderers/webgl/WebGLBindingStates.js +13 -5
  299. package/src/renderers/webgl/WebGLGeometries.js +12 -0
  300. package/src/renderers/webgl/WebGLInfo.js +0 -1
  301. package/src/renderers/webgl/WebGLMaterials.js +18 -0
  302. package/src/renderers/webgl/WebGLObjects.js +23 -3
  303. package/src/renderers/webgl/WebGLProgram.js +43 -5
  304. package/src/renderers/webgl/WebGLPrograms.js +19 -7
  305. package/src/renderers/webgl/WebGLTextures.js +19 -1
  306. package/src/renderers/webvr/WebVRManager.js +12 -0
  307. package/src/renderers/webxr/WebXRManager.js +39 -99
  308. package/src/scenes/Scene.js +0 -14
  309. package/src/textures/DepthTexture.js +22 -0
  310. package/src/textures/FramebufferTexture.js +1 -3
  311. package/src/textures/Source.js +4 -0
  312. package/src/textures/Texture.js +1 -1
  313. package/examples/jsm/exporters/ColladaExporter.js +0 -725
  314. package/examples/jsm/geometries/LightningStrike.js +0 -1017
  315. package/examples/jsm/loaders/PRWMLoader.js +0 -299
  316. package/examples/jsm/nodes/core/InstanceIndexNode.js +0 -26
  317. package/examples/jsm/objects/LightningStorm.js +0 -245
  318. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -361
  319. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +0 -197
  320. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +0 -190
  321. package/examples/jsm/renderers/webgpu/WebGPUBinding.js +0 -22
  322. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +0 -270
  323. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +0 -43
  324. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +0 -78
  325. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +0 -22
  326. package/examples/jsm/renderers/webgpu/WebGPUProperties.js +0 -44
  327. package/examples/jsm/renderers/webgpu/WebGPURenderObject.js +0 -40
  328. package/examples/jsm/renderers/webgpu/WebGPURenderObjects.js +0 -50
  329. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +0 -274
  330. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +0 -54
  331. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +0 -75
  332. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +0 -29
  333. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +0 -20
  334. package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +0 -38
  335. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +0 -18
  336. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +0 -88
  337. package/examples/jsm/shaders/ToneMapShader.js +0 -73
  338. /package/src/renderers/shaders/ShaderChunk/{encodings_fragment.glsl.js → colorspace_fragment.glsl.js} +0 -0
  339. /package/src/renderers/shaders/ShaderChunk/{encodings_pars_fragment.glsl.js → colorspace_pars_fragment.glsl.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  export default /* glsl */`
2
- #ifdef USE_UV
2
+ #if defined( USE_UV ) || defined( USE_ANISOTROPY )
3
3
 
4
4
  varying vec2 vUv;
5
5
 
@@ -63,6 +63,12 @@ export default /* glsl */`
63
63
  uniform mat3 roughnessMapTransform;
64
64
  varying vec2 vRoughnessMapUv;
65
65
 
66
+ #endif
67
+ #ifdef USE_ANISOTROPYMAP
68
+
69
+ uniform mat3 anisotropyMapTransform;
70
+ varying vec2 vAnisotropyMapUv;
71
+
66
72
  #endif
67
73
  #ifdef USE_CLEARCOATMAP
68
74
 
@@ -1,5 +1,5 @@
1
1
  export default /* glsl */`
2
- #ifdef USE_UV
2
+ #if defined( USE_UV ) || defined( USE_ANISOTROPY )
3
3
 
4
4
  vUv = vec3( uv, 1 ).xy;
5
5
 
@@ -53,6 +53,11 @@ export default /* glsl */`
53
53
 
54
54
  vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;
55
55
 
56
+ #endif
57
+ #ifdef USE_ANISOTROPYMAP
58
+
59
+ vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;
60
+
56
61
  #endif
57
62
  #ifdef USE_CLEARCOATMAP
58
63
 
@@ -1,3 +1,5 @@
1
+ import alphahash_fragment from './ShaderChunk/alphahash_fragment.glsl.js';
2
+ import alphahash_pars_fragment from './ShaderChunk/alphahash_pars_fragment.glsl.js';
1
3
  import alphamap_fragment from './ShaderChunk/alphamap_fragment.glsl.js';
2
4
  import alphamap_pars_fragment from './ShaderChunk/alphamap_pars_fragment.glsl.js';
3
5
  import alphatest_fragment from './ShaderChunk/alphatest_fragment.glsl.js';
@@ -24,8 +26,8 @@ import displacementmap_pars_vertex from './ShaderChunk/displacementmap_pars_vert
24
26
  import displacementmap_vertex from './ShaderChunk/displacementmap_vertex.glsl.js';
25
27
  import emissivemap_fragment from './ShaderChunk/emissivemap_fragment.glsl.js';
26
28
  import emissivemap_pars_fragment from './ShaderChunk/emissivemap_pars_fragment.glsl.js';
27
- import encodings_fragment from './ShaderChunk/encodings_fragment.glsl.js';
28
- import encodings_pars_fragment from './ShaderChunk/encodings_pars_fragment.glsl.js';
29
+ import colorspace_fragment from './ShaderChunk/colorspace_fragment.glsl.js';
30
+ import colorspace_pars_fragment from './ShaderChunk/colorspace_pars_fragment.glsl.js';
29
31
  import envmap_fragment from './ShaderChunk/envmap_fragment.glsl.js';
30
32
  import envmap_common_pars_fragment from './ShaderChunk/envmap_common_pars_fragment.glsl.js';
31
33
  import envmap_pars_fragment from './ShaderChunk/envmap_pars_fragment.glsl.js';
@@ -75,7 +77,7 @@ import clearcoat_normal_fragment_begin from './ShaderChunk/clearcoat_normal_frag
75
77
  import clearcoat_normal_fragment_maps from './ShaderChunk/clearcoat_normal_fragment_maps.glsl.js';
76
78
  import clearcoat_pars_fragment from './ShaderChunk/clearcoat_pars_fragment.glsl.js';
77
79
  import iridescence_pars_fragment from './ShaderChunk/iridescence_pars_fragment.glsl.js';
78
- import output_fragment from './ShaderChunk/output_fragment.glsl.js';
80
+ import opaque_fragment from './ShaderChunk/opaque_fragment.glsl.js';
79
81
  import packing from './ShaderChunk/packing.glsl.js';
80
82
  import premultiplied_alpha_fragment from './ShaderChunk/premultiplied_alpha_fragment.glsl.js';
81
83
  import project_vertex from './ShaderChunk/project_vertex.glsl.js';
@@ -121,6 +123,8 @@ import * as shadow from './ShaderLib/shadow.glsl.js';
121
123
  import * as sprite from './ShaderLib/sprite.glsl.js';
122
124
 
123
125
  export const ShaderChunk = {
126
+ alphahash_fragment: alphahash_fragment,
127
+ alphahash_pars_fragment: alphahash_pars_fragment,
124
128
  alphamap_fragment: alphamap_fragment,
125
129
  alphamap_pars_fragment: alphamap_pars_fragment,
126
130
  alphatest_fragment: alphatest_fragment,
@@ -147,8 +151,8 @@ export const ShaderChunk = {
147
151
  displacementmap_vertex: displacementmap_vertex,
148
152
  emissivemap_fragment: emissivemap_fragment,
149
153
  emissivemap_pars_fragment: emissivemap_pars_fragment,
150
- encodings_fragment: encodings_fragment,
151
- encodings_pars_fragment: encodings_pars_fragment,
154
+ colorspace_fragment: colorspace_fragment,
155
+ colorspace_pars_fragment: colorspace_pars_fragment,
152
156
  envmap_fragment: envmap_fragment,
153
157
  envmap_common_pars_fragment: envmap_common_pars_fragment,
154
158
  envmap_pars_fragment: envmap_pars_fragment,
@@ -198,7 +202,7 @@ export const ShaderChunk = {
198
202
  clearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,
199
203
  clearcoat_pars_fragment: clearcoat_pars_fragment,
200
204
  iridescence_pars_fragment: iridescence_pars_fragment,
201
- output_fragment: output_fragment,
205
+ opaque_fragment: opaque_fragment,
202
206
  packing: packing,
203
207
  premultiplied_alpha_fragment: premultiplied_alpha_fragment,
204
208
  project_vertex: project_vertex,
@@ -26,7 +26,7 @@ void main() {
26
26
  gl_FragColor = texColor;
27
27
 
28
28
  #include <tonemapping_fragment>
29
- #include <encodings_fragment>
29
+ #include <colorspace_fragment>
30
30
 
31
31
  }
32
32
  `;
@@ -56,7 +56,7 @@ void main() {
56
56
  gl_FragColor = texColor;
57
57
 
58
58
  #include <tonemapping_fragment>
59
- #include <encodings_fragment>
59
+ #include <colorspace_fragment>
60
60
 
61
61
  }
62
62
  `;
@@ -30,7 +30,7 @@ void main() {
30
30
  gl_FragColor.a *= opacity;
31
31
 
32
32
  #include <tonemapping_fragment>
33
- #include <encodings_fragment>
33
+ #include <colorspace_fragment>
34
34
 
35
35
  }
36
36
  `;
@@ -52,6 +52,7 @@ export const fragment = /* glsl */`
52
52
  #include <map_pars_fragment>
53
53
  #include <alphamap_pars_fragment>
54
54
  #include <alphatest_pars_fragment>
55
+ #include <alphahash_pars_fragment>
55
56
  #include <logdepthbuf_pars_fragment>
56
57
  #include <clipping_planes_pars_fragment>
57
58
 
@@ -72,6 +73,7 @@ void main() {
72
73
  #include <map_fragment>
73
74
  #include <alphamap_fragment>
74
75
  #include <alphatest_fragment>
76
+ #include <alphahash_fragment>
75
77
 
76
78
  #include <logdepthbuf_fragment>
77
79
 
@@ -51,6 +51,7 @@ varying vec3 vWorldPosition;
51
51
  #include <map_pars_fragment>
52
52
  #include <alphamap_pars_fragment>
53
53
  #include <alphatest_pars_fragment>
54
+ #include <alphahash_pars_fragment>
54
55
  #include <clipping_planes_pars_fragment>
55
56
 
56
57
  void main () {
@@ -62,6 +63,7 @@ void main () {
62
63
  #include <map_fragment>
63
64
  #include <alphamap_fragment>
64
65
  #include <alphatest_fragment>
66
+ #include <alphahash_fragment>
65
67
 
66
68
  float dist = length( vWorldPosition - referencePosition );
67
69
  dist = ( dist - nearDistance ) / ( farDistance - nearDistance );
@@ -29,7 +29,7 @@ void main() {
29
29
  gl_FragColor = texture2D( tEquirect, sampleUV );
30
30
 
31
31
  #include <tonemapping_fragment>
32
- #include <encodings_fragment>
32
+ #include <colorspace_fragment>
33
33
 
34
34
  }
35
35
  `;
@@ -65,9 +65,9 @@ void main() {
65
65
 
66
66
  outgoingLight = diffuseColor.rgb; // simple shader
67
67
 
68
- #include <output_fragment>
68
+ #include <opaque_fragment>
69
69
  #include <tonemapping_fragment>
70
- #include <encodings_fragment>
70
+ #include <colorspace_fragment>
71
71
  #include <fog_fragment>
72
72
  #include <premultiplied_alpha_fragment>
73
73
 
@@ -56,6 +56,7 @@ uniform float opacity;
56
56
  #include <map_pars_fragment>
57
57
  #include <alphamap_pars_fragment>
58
58
  #include <alphatest_pars_fragment>
59
+ #include <alphahash_pars_fragment>
59
60
  #include <aomap_pars_fragment>
60
61
  #include <lightmap_pars_fragment>
61
62
  #include <envmap_common_pars_fragment>
@@ -76,6 +77,7 @@ void main() {
76
77
  #include <color_fragment>
77
78
  #include <alphamap_fragment>
78
79
  #include <alphatest_fragment>
80
+ #include <alphahash_fragment>
79
81
  #include <specularmap_fragment>
80
82
 
81
83
  ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
@@ -101,9 +103,9 @@ void main() {
101
103
 
102
104
  #include <envmap_fragment>
103
105
 
104
- #include <output_fragment>
106
+ #include <opaque_fragment>
105
107
  #include <tonemapping_fragment>
106
- #include <encodings_fragment>
108
+ #include <colorspace_fragment>
107
109
  #include <fog_fragment>
108
110
  #include <premultiplied_alpha_fragment>
109
111
  #include <dithering_fragment>
@@ -62,6 +62,7 @@ uniform float opacity;
62
62
  #include <map_pars_fragment>
63
63
  #include <alphamap_pars_fragment>
64
64
  #include <alphatest_pars_fragment>
65
+ #include <alphahash_pars_fragment>
65
66
  #include <aomap_pars_fragment>
66
67
  #include <lightmap_pars_fragment>
67
68
  #include <emissivemap_pars_fragment>
@@ -92,6 +93,7 @@ void main() {
92
93
  #include <color_fragment>
93
94
  #include <alphamap_fragment>
94
95
  #include <alphatest_fragment>
96
+ #include <alphahash_fragment>
95
97
  #include <specularmap_fragment>
96
98
  #include <normal_fragment_begin>
97
99
  #include <normal_fragment_maps>
@@ -109,9 +111,9 @@ void main() {
109
111
  vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
110
112
 
111
113
  #include <envmap_fragment>
112
- #include <output_fragment>
114
+ #include <opaque_fragment>
113
115
  #include <tonemapping_fragment>
114
- #include <encodings_fragment>
116
+ #include <colorspace_fragment>
115
117
  #include <fog_fragment>
116
118
  #include <premultiplied_alpha_fragment>
117
119
  #include <dithering_fragment>
@@ -58,6 +58,7 @@ varying vec3 vViewPosition;
58
58
  #include <map_pars_fragment>
59
59
  #include <alphamap_pars_fragment>
60
60
  #include <alphatest_pars_fragment>
61
+ #include <alphahash_pars_fragment>
61
62
  #include <fog_pars_fragment>
62
63
  #include <normal_pars_fragment>
63
64
  #include <bumpmap_pars_fragment>
@@ -76,6 +77,7 @@ void main() {
76
77
  #include <color_fragment>
77
78
  #include <alphamap_fragment>
78
79
  #include <alphatest_fragment>
80
+ #include <alphahash_fragment>
79
81
  #include <normal_fragment_begin>
80
82
  #include <normal_fragment_maps>
81
83
 
@@ -96,9 +98,9 @@ void main() {
96
98
 
97
99
  vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;
98
100
 
99
- #include <output_fragment>
101
+ #include <opaque_fragment>
100
102
  #include <tonemapping_fragment>
101
- #include <encodings_fragment>
103
+ #include <colorspace_fragment>
102
104
  #include <fog_fragment>
103
105
  #include <premultiplied_alpha_fragment>
104
106
  #include <dithering_fragment>
@@ -64,6 +64,7 @@ uniform float opacity;
64
64
  #include <map_pars_fragment>
65
65
  #include <alphamap_pars_fragment>
66
66
  #include <alphatest_pars_fragment>
67
+ #include <alphahash_pars_fragment>
67
68
  #include <aomap_pars_fragment>
68
69
  #include <lightmap_pars_fragment>
69
70
  #include <emissivemap_pars_fragment>
@@ -94,6 +95,7 @@ void main() {
94
95
  #include <color_fragment>
95
96
  #include <alphamap_fragment>
96
97
  #include <alphatest_fragment>
98
+ #include <alphahash_fragment>
97
99
  #include <specularmap_fragment>
98
100
  #include <normal_fragment_begin>
99
101
  #include <normal_fragment_maps>
@@ -111,9 +113,9 @@ void main() {
111
113
  vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;
112
114
 
113
115
  #include <envmap_fragment>
114
- #include <output_fragment>
116
+ #include <opaque_fragment>
115
117
  #include <tonemapping_fragment>
116
- #include <encodings_fragment>
118
+ #include <colorspace_fragment>
117
119
  #include <fog_fragment>
118
120
  #include <premultiplied_alpha_fragment>
119
121
  #include <dithering_fragment>
@@ -112,6 +112,14 @@ uniform float opacity;
112
112
  #endif
113
113
  #endif
114
114
 
115
+ #ifdef USE_ANISOTROPY
116
+ uniform vec2 anisotropyVector;
117
+
118
+ #ifdef USE_ANISOTROPYMAP
119
+ uniform sampler2D anisotropyMap;
120
+ #endif
121
+ #endif
122
+
115
123
  varying vec3 vViewPosition;
116
124
 
117
125
  #include <common>
@@ -122,6 +130,7 @@ varying vec3 vViewPosition;
122
130
  #include <map_pars_fragment>
123
131
  #include <alphamap_pars_fragment>
124
132
  #include <alphatest_pars_fragment>
133
+ #include <alphahash_pars_fragment>
125
134
  #include <aomap_pars_fragment>
126
135
  #include <lightmap_pars_fragment>
127
136
  #include <emissivemap_pars_fragment>
@@ -157,6 +166,7 @@ void main() {
157
166
  #include <color_fragment>
158
167
  #include <alphamap_fragment>
159
168
  #include <alphatest_fragment>
169
+ #include <alphahash_fragment>
160
170
  #include <roughnessmap_fragment>
161
171
  #include <metalnessmap_fragment>
162
172
  #include <normal_fragment_begin>
@@ -201,9 +211,9 @@ void main() {
201
211
 
202
212
  #endif
203
213
 
204
- #include <output_fragment>
214
+ #include <opaque_fragment>
205
215
  #include <tonemapping_fragment>
206
- #include <encodings_fragment>
216
+ #include <colorspace_fragment>
207
217
  #include <fog_fragment>
208
218
  #include <premultiplied_alpha_fragment>
209
219
  #include <dithering_fragment>
@@ -60,6 +60,7 @@ uniform float opacity;
60
60
  #include <map_pars_fragment>
61
61
  #include <alphamap_pars_fragment>
62
62
  #include <alphatest_pars_fragment>
63
+ #include <alphahash_pars_fragment>
63
64
  #include <aomap_pars_fragment>
64
65
  #include <lightmap_pars_fragment>
65
66
  #include <emissivemap_pars_fragment>
@@ -88,6 +89,7 @@ void main() {
88
89
  #include <color_fragment>
89
90
  #include <alphamap_fragment>
90
91
  #include <alphatest_fragment>
92
+ #include <alphahash_fragment>
91
93
  #include <normal_fragment_begin>
92
94
  #include <normal_fragment_maps>
93
95
  #include <emissivemap_fragment>
@@ -103,9 +105,9 @@ void main() {
103
105
 
104
106
  vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
105
107
 
106
- #include <output_fragment>
108
+ #include <opaque_fragment>
107
109
  #include <tonemapping_fragment>
108
- #include <encodings_fragment>
110
+ #include <colorspace_fragment>
109
111
  #include <fog_fragment>
110
112
  #include <premultiplied_alpha_fragment>
111
113
  #include <dithering_fragment>
@@ -56,6 +56,7 @@ uniform float opacity;
56
56
  #include <color_pars_fragment>
57
57
  #include <map_particle_pars_fragment>
58
58
  #include <alphatest_pars_fragment>
59
+ #include <alphahash_pars_fragment>
59
60
  #include <fog_pars_fragment>
60
61
  #include <logdepthbuf_pars_fragment>
61
62
  #include <clipping_planes_pars_fragment>
@@ -71,12 +72,13 @@ void main() {
71
72
  #include <map_particle_fragment>
72
73
  #include <color_fragment>
73
74
  #include <alphatest_fragment>
75
+ #include <alphahash_fragment>
74
76
 
75
77
  outgoingLight = diffuseColor.rgb;
76
78
 
77
- #include <output_fragment>
79
+ #include <opaque_fragment>
78
80
  #include <tonemapping_fragment>
79
- #include <encodings_fragment>
81
+ #include <colorspace_fragment>
80
82
  #include <fog_fragment>
81
83
  #include <premultiplied_alpha_fragment>
82
84
 
@@ -47,7 +47,7 @@ void main() {
47
47
  gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );
48
48
 
49
49
  #include <tonemapping_fragment>
50
- #include <encodings_fragment>
50
+ #include <colorspace_fragment>
51
51
  #include <fog_fragment>
52
52
 
53
53
  }
@@ -52,6 +52,7 @@ uniform float opacity;
52
52
  #include <map_pars_fragment>
53
53
  #include <alphamap_pars_fragment>
54
54
  #include <alphatest_pars_fragment>
55
+ #include <alphahash_pars_fragment>
55
56
  #include <fog_pars_fragment>
56
57
  #include <logdepthbuf_pars_fragment>
57
58
  #include <clipping_planes_pars_fragment>
@@ -67,12 +68,13 @@ void main() {
67
68
  #include <map_fragment>
68
69
  #include <alphamap_fragment>
69
70
  #include <alphatest_fragment>
71
+ #include <alphahash_fragment>
70
72
 
71
73
  outgoingLight = diffuseColor.rgb;
72
74
 
73
- #include <output_fragment>
75
+ #include <opaque_fragment>
74
76
  #include <tonemapping_fragment>
75
- #include <encodings_fragment>
77
+ #include <colorspace_fragment>
76
78
  #include <fog_fragment>
77
79
 
78
80
  }
@@ -343,7 +343,10 @@ ShaderLib.physical = {
343
343
  specularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },
344
344
  specularIntensity: { value: 1 },
345
345
  specularIntensityMap: { value: null },
346
- specularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() }
346
+ specularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },
347
+ anisotropyVector: { value: /*@__PURE__*/ new Vector2() },
348
+ anisotropyMap: { value: null },
349
+ anisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },
347
350
  }
348
351
  ] ),
349
352
 
@@ -205,6 +205,7 @@ const UniformsLib = {
205
205
  scale: { value: 1.0 },
206
206
  map: { value: null },
207
207
  alphaMap: { value: null },
208
+ alphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },
208
209
  alphaTest: { value: 0 },
209
210
  uvTransform: { value: /*@__PURE__*/ new Matrix3() }
210
211
 
@@ -219,6 +220,7 @@ const UniformsLib = {
219
220
  map: { value: null },
220
221
  mapTransform: { value: /*@__PURE__*/ new Matrix3() },
221
222
  alphaMap: { value: null },
223
+ alphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },
222
224
  alphaTest: { value: 0 }
223
225
 
224
226
  }
@@ -1,4 +1,6 @@
1
- function WebGLBindingStates( gl, extensions, attributes, capabilities ) {
1
+ import { IntType } from '../../constants.js';
2
+
3
+ function WebGLBindingStates( gl, extensions, attributes, capabilities ) {
2
4
 
3
5
  const maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );
4
6
 
@@ -315,9 +317,9 @@
315
317
 
316
318
  }
317
319
 
318
- function vertexAttribPointer( index, size, type, normalized, stride, offset ) {
320
+ function vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {
319
321
 
320
- if ( capabilities.isWebGL2 === true && ( type === gl.INT || type === gl.UNSIGNED_INT ) ) {
322
+ if ( integer === true ) {
321
323
 
322
324
  gl.vertexAttribIPointer( index, size, type, stride, offset );
323
325
 
@@ -375,6 +377,10 @@
375
377
  const type = attribute.type;
376
378
  const bytesPerElement = attribute.bytesPerElement;
377
379
 
380
+ // check for integer attributes (WebGL 2 only)
381
+
382
+ const integer = ( capabilities.isWebGL2 === true && ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType ) );
383
+
378
384
  if ( geometryAttribute.isInterleavedBufferAttribute ) {
379
385
 
380
386
  const data = geometryAttribute.data;
@@ -415,7 +421,8 @@
415
421
  type,
416
422
  normalized,
417
423
  stride * bytesPerElement,
418
- ( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement
424
+ ( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,
425
+ integer
419
426
  );
420
427
 
421
428
  }
@@ -456,7 +463,8 @@
456
463
  type,
457
464
  normalized,
458
465
  size * bytesPerElement,
459
- ( size / programAttribute.locationSize ) * i * bytesPerElement
466
+ ( size / programAttribute.locationSize ) * i * bytesPerElement,
467
+ integer
460
468
  );
461
469
 
462
470
  }
@@ -22,6 +22,18 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
22
22
 
23
23
  }
24
24
 
25
+ for ( const name in geometry.morphAttributes ) {
26
+
27
+ const array = geometry.morphAttributes[ name ];
28
+
29
+ for ( let i = 0, l = array.length; i < l; i ++ ) {
30
+
31
+ attributes.remove( array[ i ] );
32
+
33
+ }
34
+
35
+ }
36
+
25
37
  geometry.removeEventListener( 'dispose', onGeometryDispose );
26
38
 
27
39
  delete geometries[ geometry.id ];
@@ -49,7 +49,6 @@ function WebGLInfo( gl ) {
49
49
 
50
50
  function reset() {
51
51
 
52
- render.frame ++;
53
52
  render.calls = 0;
54
53
  render.triangles = 0;
55
54
  render.points = 0;
@@ -289,6 +289,8 @@ function WebGLMaterials( renderer, properties ) {
289
289
 
290
290
  uniforms.alphaMap.value = material.alphaMap;
291
291
 
292
+ refreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );
293
+
292
294
  }
293
295
 
294
296
  if ( material.alphaTest > 0 ) {
@@ -317,6 +319,8 @@ function WebGLMaterials( renderer, properties ) {
317
319
 
318
320
  uniforms.alphaMap.value = material.alphaMap;
319
321
 
322
+ refreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );
323
+
320
324
  }
321
325
 
322
326
  if ( material.alphaTest > 0 ) {
@@ -498,6 +502,20 @@ function WebGLMaterials( renderer, properties ) {
498
502
 
499
503
  }
500
504
 
505
+ if ( material.anisotropy > 0 ) {
506
+
507
+ uniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );
508
+
509
+ if ( material.anisotropyMap ) {
510
+
511
+ uniforms.anisotropyMap.value = material.anisotropyMap;
512
+
513
+ refreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );
514
+
515
+ }
516
+
517
+ }
518
+
501
519
  uniforms.specularIntensity.value = material.specularIntensity;
502
520
  uniforms.specularColor.value.copy( material.specularColor );
503
521
 
@@ -27,11 +27,31 @@ function WebGLObjects( gl, geometries, attributes, info ) {
27
27
 
28
28
  }
29
29
 
30
- attributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );
30
+ if ( updateMap.get( object ) !== frame ) {
31
31
 
32
- if ( object.instanceColor !== null ) {
32
+ attributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );
33
33
 
34
- attributes.update( object.instanceColor, gl.ARRAY_BUFFER );
34
+ if ( object.instanceColor !== null ) {
35
+
36
+ attributes.update( object.instanceColor, gl.ARRAY_BUFFER );
37
+
38
+ }
39
+
40
+ updateMap.set( object, frame );
41
+
42
+ }
43
+
44
+ }
45
+
46
+ if ( object.isSkinnedMesh ) {
47
+
48
+ const skeleton = object.skeleton;
49
+
50
+ if ( updateMap.get( skeleton ) !== frame ) {
51
+
52
+ skeleton.update();
53
+
54
+ updateMap.set( skeleton, frame );
35
55
 
36
56
  }
37
57