super-three 0.165.0 → 0.167.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 (370) hide show
  1. package/build/three.cjs +706 -383
  2. package/build/three.module.js +702 -384
  3. package/build/three.module.min.js +1 -1
  4. package/build/three.webgpu.js +76086 -0
  5. package/build/three.webgpu.min.js +6 -0
  6. package/examples/jsm/Addons.js +2 -1
  7. package/examples/jsm/csm/CSMShader.js +4 -4
  8. package/examples/jsm/exporters/GLTFExporter.js +7 -3
  9. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  10. package/examples/jsm/helpers/ViewHelper.js +51 -2
  11. package/examples/jsm/libs/tween.module.js +64 -75
  12. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  13. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  14. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  15. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  16. package/examples/jsm/loaders/FBXLoader.js +23 -45
  17. package/examples/jsm/loaders/GLTFLoader.js +10 -4
  18. package/examples/jsm/loaders/MaterialXLoader.js +2 -9
  19. package/examples/jsm/loaders/USDZLoader.js +124 -76
  20. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  21. package/examples/jsm/loaders/VTKLoader.js +76 -3
  22. package/examples/jsm/misc/GPUComputationRenderer.js +9 -19
  23. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  24. package/examples/jsm/objects/InstancedPoints.js +2 -2
  25. package/examples/jsm/postprocessing/RenderTransitionPass.js +13 -38
  26. package/examples/jsm/postprocessing/SSAOPass.js +6 -9
  27. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  28. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  29. package/examples/jsm/shaders/FXAAShader.js +0 -2
  30. package/examples/jsm/shaders/GTAOShader.js +1 -1
  31. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  32. package/examples/jsm/transpiler/GLSLDecoder.js +46 -4
  33. package/examples/jsm/transpiler/TSLEncoder.js +17 -15
  34. package/package.json +7 -6
  35. package/src/Three.WebGPU.js +194 -0
  36. package/src/Three.js +2 -0
  37. package/src/constants.js +4 -1
  38. package/src/core/Object3D.js +22 -22
  39. package/src/extras/TextureUtils.js +210 -0
  40. package/src/lights/Light.js +1 -0
  41. package/src/lights/LightShadow.js +5 -0
  42. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  43. package/src/loaders/ObjectLoader.js +33 -2
  44. package/src/materials/Material.js +13 -4
  45. package/src/math/Box2.js +4 -4
  46. package/src/math/Box3.js +6 -6
  47. package/src/math/ColorManagement.js +10 -0
  48. package/src/math/Matrix2.js +54 -0
  49. package/src/math/Vector4.js +13 -0
  50. package/{examples/jsm → src}/nodes/Nodes.js +30 -12
  51. package/{examples/jsm → src}/nodes/accessors/BatchNode.js +28 -10
  52. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +36 -1
  53. package/src/nodes/accessors/CameraNode.js +19 -0
  54. package/{examples/jsm → src}/nodes/accessors/CubeTextureNode.js +22 -5
  55. package/src/nodes/accessors/InstanceNode.js +140 -0
  56. package/{examples/jsm → src}/nodes/accessors/MaterialNode.js +22 -2
  57. package/{examples/jsm → src}/nodes/accessors/ModelNode.js +2 -1
  58. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +24 -20
  59. package/{examples/jsm → src}/nodes/accessors/NormalNode.js +1 -1
  60. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +1 -1
  61. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +1 -1
  62. package/{examples/jsm → src}/nodes/accessors/ReflectVectorNode.js +4 -0
  63. package/{examples/jsm → src}/nodes/accessors/StorageBufferNode.js +50 -1
  64. package/{examples/jsm → src}/nodes/accessors/StorageTextureNode.js +12 -3
  65. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +55 -18
  66. package/{examples/jsm → src}/nodes/accessors/UniformsNode.js +7 -1
  67. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +2 -1
  68. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +14 -0
  69. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +2 -1
  70. package/{examples/jsm → src}/nodes/core/AttributeNode.js +20 -6
  71. package/{examples/jsm → src}/nodes/core/CacheNode.js +7 -10
  72. package/{examples/jsm → src}/nodes/core/IndexNode.js +6 -0
  73. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  74. package/src/nodes/core/MRTNode.js +76 -0
  75. package/{examples/jsm → src}/nodes/core/Node.js +18 -12
  76. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +175 -37
  77. package/src/nodes/core/NodeCache.js +36 -0
  78. package/{examples/jsm → src}/nodes/core/NodeFrame.js +42 -0
  79. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  80. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  81. package/{examples/jsm → src}/nodes/core/NodeUtils.js +6 -1
  82. package/{examples/jsm → src}/nodes/core/PropertyNode.js +1 -0
  83. package/{examples/jsm → src}/nodes/core/TempNode.js +2 -2
  84. package/{examples/jsm → src}/nodes/core/UniformGroupNode.js +20 -0
  85. package/{examples/jsm → src}/nodes/core/UniformNode.js +10 -1
  86. package/{examples/jsm → src}/nodes/core/VarNode.js +2 -6
  87. package/{examples/jsm → src}/nodes/core/VaryingNode.js +8 -0
  88. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +19 -27
  89. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +18 -21
  90. package/src/nodes/display/BloomNode.js +333 -0
  91. package/{examples/jsm → src}/nodes/display/ColorAdjustmentNode.js +7 -2
  92. package/{examples/jsm → src}/nodes/display/ColorSpaceNode.js +1 -1
  93. package/src/nodes/display/DenoiseNode.js +198 -0
  94. package/src/nodes/display/DepthOfFieldNode.js +119 -0
  95. package/src/nodes/display/DotScreenNode.js +75 -0
  96. package/src/nodes/display/FXAANode.js +327 -0
  97. package/src/nodes/display/FilmNode.js +52 -0
  98. package/{examples/jsm → src}/nodes/display/FrontFacingNode.js +2 -1
  99. package/src/nodes/display/GTAONode.js +324 -0
  100. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +34 -17
  101. package/src/nodes/display/Lut3DNode.js +53 -0
  102. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +1 -1
  103. package/src/nodes/display/PassNode.js +291 -0
  104. package/src/nodes/display/PixelationPassNode.js +201 -0
  105. package/src/nodes/display/RGBShiftNode.js +49 -0
  106. package/src/nodes/display/RenderOutputNode.js +56 -0
  107. package/src/nodes/display/SobelOperatorNode.js +121 -0
  108. package/{examples/jsm → src}/nodes/display/ToneMappingNode.js +44 -5
  109. package/src/nodes/display/TransitionNode.js +76 -0
  110. package/{examples/jsm → src}/nodes/display/ViewportDepthNode.js +39 -16
  111. package/{examples/jsm → src}/nodes/display/ViewportDepthTextureNode.js +2 -1
  112. package/{examples/jsm → src}/nodes/display/ViewportNode.js +2 -1
  113. package/{examples/jsm → src}/nodes/display/ViewportSharedTextureNode.js +2 -1
  114. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +5 -2
  115. package/src/nodes/functions/BSDF/LTC.js +131 -0
  116. package/src/nodes/functions/BasicLightingModel.js +78 -0
  117. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +5 -3
  118. package/{examples/jsm → src}/nodes/functions/PhysicalLightingModel.js +42 -1
  119. package/{examples/jsm → src}/nodes/functions/ToonLightingModel.js +3 -1
  120. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +19 -6
  121. package/{examples/jsm → src}/nodes/lighting/AONode.js +1 -4
  122. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +1 -1
  123. package/src/nodes/lighting/AnalyticLightNode.js +333 -0
  124. package/src/nodes/lighting/BasicEnvironmentNode.js +26 -0
  125. package/src/nodes/lighting/BasicLightMapNode.js +29 -0
  126. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +2 -3
  127. package/{examples/jsm → src}/nodes/lighting/EnvironmentNode.js +5 -4
  128. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +2 -1
  129. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +1 -1
  130. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +2 -0
  131. package/{examples/jsm → src}/nodes/lighting/LightsNode.js +1 -3
  132. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +2 -3
  133. package/src/nodes/lighting/RectAreaLightNode.js +97 -0
  134. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +2 -3
  135. package/{examples/jsm → src}/nodes/loaders/NodeLoader.js +3 -1
  136. package/{examples/jsm → src}/nodes/loaders/NodeMaterialLoader.js +2 -1
  137. package/{examples/jsm → src}/nodes/loaders/NodeObjectLoader.js +2 -1
  138. package/{examples/jsm → src}/nodes/materials/InstancedPointsNodeMaterial.js +3 -3
  139. package/{examples/jsm → src}/nodes/materials/Line2NodeMaterial.js +3 -3
  140. package/{examples/jsm → src}/nodes/materials/LineBasicNodeMaterial.js +3 -3
  141. package/{examples/jsm → src}/nodes/materials/LineDashedNodeMaterial.js +4 -3
  142. package/src/nodes/materials/MeshBasicNodeMaterial.js +73 -0
  143. package/{examples/jsm → src}/nodes/materials/MeshLambertNodeMaterial.js +12 -3
  144. package/{examples/jsm → src}/nodes/materials/MeshMatcapNodeMaterial.js +6 -5
  145. package/{examples/jsm → src}/nodes/materials/MeshNormalNodeMaterial.js +5 -3
  146. package/{examples/jsm → src}/nodes/materials/MeshPhongNodeMaterial.js +11 -3
  147. package/{examples/jsm → src}/nodes/materials/MeshPhysicalNodeMaterial.js +5 -4
  148. package/{examples/jsm → src}/nodes/materials/MeshStandardNodeMaterial.js +14 -3
  149. package/{examples/jsm → src}/nodes/materials/MeshToonNodeMaterial.js +3 -3
  150. package/{examples/jsm → src}/nodes/materials/NodeMaterial.js +85 -20
  151. package/{examples/jsm → src}/nodes/materials/PointsNodeMaterial.js +3 -3
  152. package/{examples/jsm → src}/nodes/materials/ShadowNodeMaterial.js +3 -3
  153. package/{examples/jsm → src}/nodes/materials/SpriteNodeMaterial.js +3 -3
  154. package/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +9 -17
  155. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +474 -577
  156. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +2 -8
  157. package/{examples/jsm → src}/nodes/math/CondNode.js +13 -6
  158. package/{examples/jsm → src}/nodes/math/MathNode.js +14 -1
  159. package/{examples/jsm → src}/nodes/math/OperatorNode.js +6 -6
  160. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  161. package/{examples/jsm → src}/nodes/pmrem/PMREMNode.js +2 -1
  162. package/{examples/jsm → src}/nodes/shadernode/ShaderNode.js +2 -0
  163. package/{examples/jsm → src}/nodes/utils/DiscardNode.js +1 -0
  164. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +2 -0
  165. package/{examples/jsm → src}/nodes/utils/LoopNode.js +7 -6
  166. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +8 -2
  167. package/src/nodes/utils/RTTNode.js +130 -0
  168. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +9 -1
  169. package/src/objects/BatchedMesh.js +168 -188
  170. package/src/objects/InstancedMesh.js +1 -1
  171. package/src/renderers/WebGLRenderer.js +38 -25
  172. package/{examples/jsm → src}/renderers/common/Attributes.js +2 -1
  173. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  174. package/{examples/jsm → src}/renderers/common/Background.js +9 -3
  175. package/src/renderers/common/BindGroup.js +16 -0
  176. package/{examples/jsm → src}/renderers/common/Bindings.js +38 -23
  177. package/{examples/jsm → src}/renderers/common/ClippingContext.js +4 -2
  178. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  179. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +7 -1
  180. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  181. package/{examples/jsm → src}/renderers/common/Info.js +34 -6
  182. package/src/renderers/common/PostProcessing.js +87 -0
  183. package/{examples/jsm/objects → src/renderers/common}/QuadMesh.js +6 -3
  184. package/{examples/jsm → src}/renderers/common/RenderContext.js +1 -1
  185. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  186. package/{examples/jsm → src}/renderers/common/RenderObject.js +44 -11
  187. package/{examples/jsm → src}/renderers/common/Renderer.js +84 -32
  188. package/{examples/jsm → src}/renderers/common/SampledTexture.js +2 -2
  189. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  190. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  191. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  192. package/{examples/jsm → src}/renderers/common/Textures.js +6 -2
  193. package/{examples/jsm → src}/renderers/common/Uniform.js +9 -4
  194. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  195. package/{examples/jsm → src}/renderers/common/extras/PMREMGenerator.js +13 -12
  196. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  197. package/{examples/jsm → src}/renderers/common/nodes/NodeSampledTexture.js +6 -5
  198. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +2 -1
  199. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  200. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  201. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  202. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  203. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +37 -16
  204. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +16 -1
  205. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  206. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +1 -1
  207. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  208. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  209. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  210. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  211. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -4
  212. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  213. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  214. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  215. package/src/renderers/shaders/UniformsLib.js +3 -0
  216. package/src/renderers/webgl/WebGLAttributes.js +2 -2
  217. package/src/renderers/webgl/WebGLBufferRenderer.js +6 -19
  218. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +6 -18
  219. package/src/renderers/webgl/WebGLLights.js +6 -0
  220. package/src/renderers/webgl/WebGLProgram.js +26 -0
  221. package/src/renderers/webgl/WebGLPrograms.js +1 -1
  222. package/src/renderers/webgl/WebGLTextures.js +14 -53
  223. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  224. package/src/renderers/webgl/WebGLUniformsGroups.js +7 -7
  225. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +156 -54
  226. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +178 -43
  227. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +2 -2
  228. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +1 -0
  229. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  230. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +1 -1
  231. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +34 -2
  232. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +1 -1
  233. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +164 -76
  234. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +2 -2
  235. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +194 -56
  236. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  237. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  238. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +20 -13
  239. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +3 -1
  240. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +28 -21
  241. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +40 -23
  242. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +24 -3
  243. package/src/renderers/webxr/WebXRDepthSensing.js +6 -0
  244. package/src/renderers/webxr/WebXRManager.js +6 -0
  245. package/src/textures/CompressedArrayTexture.js +1 -1
  246. package/examples/jsm/nodes/accessors/CameraNode.js +0 -12
  247. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -94
  248. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  249. package/examples/jsm/nodes/display/PassNode.js +0 -201
  250. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -256
  251. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  252. package/examples/jsm/renderers/common/PostProcessing.js +0 -33
  253. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  254. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  255. /package/{examples/jsm → src}/nodes/accessors/AccessorsUtils.js +0 -0
  256. /package/{examples/jsm → src}/nodes/accessors/BitangentNode.js +0 -0
  257. /package/{examples/jsm → src}/nodes/accessors/BufferNode.js +0 -0
  258. /package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +0 -0
  259. /package/{examples/jsm → src}/nodes/accessors/InstancedPointsMaterialNode.js +0 -0
  260. /package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +0 -0
  261. /package/{examples/jsm → src}/nodes/accessors/ModelViewProjectionNode.js +0 -0
  262. /package/{examples/jsm → src}/nodes/accessors/PointUVNode.js +0 -0
  263. /package/{examples/jsm → src}/nodes/accessors/PositionNode.js +0 -0
  264. /package/{examples/jsm → src}/nodes/accessors/RendererReferenceNode.js +0 -0
  265. /package/{examples/jsm → src}/nodes/accessors/SceneNode.js +0 -0
  266. /package/{examples/jsm → src}/nodes/accessors/SkinningNode.js +0 -0
  267. /package/{examples/jsm → src}/nodes/accessors/TangentNode.js +0 -0
  268. /package/{examples/jsm → src}/nodes/accessors/Texture3DNode.js +0 -0
  269. /package/{examples/jsm → src}/nodes/accessors/TextureBicubicNode.js +0 -0
  270. /package/{examples/jsm → src}/nodes/accessors/TextureSizeNode.js +0 -0
  271. /package/{examples/jsm → src}/nodes/accessors/UVNode.js +0 -0
  272. /package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +0 -0
  273. /package/{examples/jsm → src}/nodes/code/CodeNode.js +0 -0
  274. /package/{examples/jsm → src}/nodes/code/ExpressionNode.js +0 -0
  275. /package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +0 -0
  276. /package/{examples/jsm → src}/nodes/code/FunctionNode.js +0 -0
  277. /package/{examples/jsm → src}/nodes/core/AssignNode.js +0 -0
  278. /package/{examples/jsm → src}/nodes/core/BypassNode.js +0 -0
  279. /package/{examples/jsm → src}/nodes/core/ConstNode.js +0 -0
  280. /package/{examples/jsm → src}/nodes/core/ContextNode.js +0 -0
  281. /package/{examples/jsm → src}/nodes/core/InputNode.js +0 -0
  282. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  283. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  284. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  285. /package/{examples/jsm → src}/nodes/core/NodeKeywords.js +0 -0
  286. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  287. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  288. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  289. /package/{examples/jsm → src}/nodes/core/OutputStructNode.js +0 -0
  290. /package/{examples/jsm → src}/nodes/core/ParameterNode.js +0 -0
  291. /package/{examples/jsm → src}/nodes/core/StackNode.js +0 -0
  292. /package/{examples/jsm → src}/nodes/core/StructTypeNode.js +0 -0
  293. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  294. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  295. /package/{examples/jsm → src}/nodes/display/BlendModeNode.js +0 -0
  296. /package/{examples/jsm → src}/nodes/display/BumpMapNode.js +0 -0
  297. /package/{examples/jsm → src}/nodes/display/PosterizeNode.js +0 -0
  298. /package/{examples/jsm → src}/nodes/fog/FogExp2Node.js +0 -0
  299. /package/{examples/jsm → src}/nodes/fog/FogNode.js +0 -0
  300. /package/{examples/jsm → src}/nodes/fog/FogRangeNode.js +0 -0
  301. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_GGX.js +0 -0
  302. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +0 -0
  303. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +0 -0
  304. /package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +0 -0
  305. /package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +0 -0
  306. /package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX_Anisotropic.js +0 -0
  307. /package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +0 -0
  308. /package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +0 -0
  309. /package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +0 -0
  310. /package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +0 -0
  311. /package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +0 -0
  312. /package/{examples/jsm → src}/nodes/functions/ShadowMaskModel.js +0 -0
  313. /package/{examples/jsm → src}/nodes/functions/material/getGeometryRoughness.js +0 -0
  314. /package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +0 -0
  315. /package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +0 -0
  316. /package/{examples/jsm → src}/nodes/lighting/IrradianceNode.js +0 -0
  317. /package/{examples/jsm → src}/nodes/lighting/LightNode.js +0 -0
  318. /package/{examples/jsm → src}/nodes/lighting/LightUtils.js +0 -0
  319. /package/{examples/jsm → src}/nodes/lighting/LightingContextNode.js +0 -0
  320. /package/{examples/jsm → src}/nodes/materials/Materials.js +0 -0
  321. /package/{examples/jsm → src}/nodes/materials/MeshSSSNodeMaterial.js +0 -0
  322. /package/{examples/jsm → src}/nodes/materials/VolumeNodeMaterial.js +0 -0
  323. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  324. /package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +0 -0
  325. /package/{examples/jsm → src}/nodes/math/HashNode.js +0 -0
  326. /package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -0
  327. /package/{examples/jsm → src}/nodes/math/TriNoise3D.js +0 -0
  328. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  329. /package/{examples/jsm → src}/nodes/pmrem/PMREMUtils.js +0 -0
  330. /package/{examples/jsm → src}/nodes/procedural/CheckerNode.js +0 -0
  331. /package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +0 -0
  332. /package/{examples/jsm → src}/nodes/utils/ConvertNode.js +0 -0
  333. /package/{examples/jsm → src}/nodes/utils/EquirectUVNode.js +0 -0
  334. /package/{examples/jsm → src}/nodes/utils/JoinNode.js +0 -0
  335. /package/{examples/jsm → src}/nodes/utils/MatcapUVNode.js +0 -0
  336. /package/{examples/jsm → src}/nodes/utils/OscNode.js +0 -0
  337. /package/{examples/jsm → src}/nodes/utils/PackingNode.js +0 -0
  338. /package/{examples/jsm → src}/nodes/utils/RemapNode.js +0 -0
  339. /package/{examples/jsm → src}/nodes/utils/RotateNode.js +0 -0
  340. /package/{examples/jsm → src}/nodes/utils/RotateUVNode.js +0 -0
  341. /package/{examples/jsm → src}/nodes/utils/SetNode.js +0 -0
  342. /package/{examples/jsm → src}/nodes/utils/SplitNode.js +0 -0
  343. /package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +0 -0
  344. /package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +0 -0
  345. /package/{examples/jsm → src}/nodes/utils/TimerNode.js +0 -0
  346. /package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +0 -0
  347. /package/{examples/jsm → src}/renderers/common/Animation.js +0 -0
  348. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  349. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  350. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  351. /package/{examples/jsm → src}/renderers/common/ChainMap.js +0 -0
  352. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  353. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  354. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  355. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  356. /package/{examples/jsm → src}/renderers/common/Pipelines.js +0 -0
  357. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  358. /package/{examples/jsm → src}/renderers/common/RenderBundle.js +0 -0
  359. /package/{examples/jsm → src}/renderers/common/RenderBundles.js +0 -0
  360. /package/{examples/jsm → src}/renderers/common/RenderList.js +0 -0
  361. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  362. /package/{examples/jsm → src}/renderers/common/RenderObjects.js +0 -0
  363. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  364. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  365. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  366. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  367. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBufferRenderer.js +0 -0
  368. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  369. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
  370. /package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +0 -0
@@ -1,11 +1,12 @@
1
- import { MathNode, GLSLNodeParser, NodeBuilder, UniformNode, vectorComponents } from '../../../nodes/Nodes.js';
1
+ import { MathNode, GLSLNodeParser, NodeBuilder, TextureNode, vectorComponents } from '../../../nodes/Nodes.js';
2
2
 
3
3
  import NodeUniformBuffer from '../../common/nodes/NodeUniformBuffer.js';
4
4
  import NodeUniformsGroup from '../../common/nodes/NodeUniformsGroup.js';
5
5
 
6
6
  import { NodeSampledTexture, NodeSampledCubeTexture, NodeSampledTexture3D } from '../../common/nodes/NodeSampledTexture.js';
7
7
 
8
- import { RedFormat, RGFormat, IntType, DataTexture, RGBFormat, RGBAFormat, FloatType } from 'three';
8
+ import { ByteType, ShortType, RGBAIntegerFormat, RGBIntegerFormat, RedIntegerFormat, RGIntegerFormat, UnsignedByteType, UnsignedIntType, UnsignedShortType, RedFormat, RGFormat, IntType, RGBFormat, RGBAFormat, FloatType } from '../../../constants.js';
9
+ import { DataTexture } from '../../../textures/DataTexture.js';
9
10
 
10
11
  const glslMethods = {
11
12
  [ MathNode.ATAN2 ]: 'atan',
@@ -20,27 +21,42 @@ const precisionLib = {
20
21
  };
21
22
 
22
23
  const supports = {
23
- instance: true,
24
- swizzleAssign: true
24
+ swizzleAssign: true,
25
+ storageBuffer: false
25
26
  };
26
27
 
27
28
  const defaultPrecisions = `
28
29
  precision highp float;
29
30
  precision highp int;
31
+ precision highp sampler2D;
30
32
  precision highp sampler3D;
31
- precision mediump sampler2DArray;
33
+ precision highp samplerCube;
34
+ precision highp sampler2DArray;
35
+
36
+ precision highp usampler2D;
37
+ precision highp usampler3D;
38
+ precision highp usamplerCube;
39
+ precision highp usampler2DArray;
40
+
41
+ precision highp isampler2D;
42
+ precision highp isampler3D;
43
+ precision highp isamplerCube;
44
+ precision highp isampler2DArray;
45
+
32
46
  precision lowp sampler2DShadow;
33
47
  `;
34
48
 
35
49
  class GLSLNodeBuilder extends NodeBuilder {
36
50
 
37
- constructor( object, renderer, scene = null ) {
51
+ constructor( object, renderer ) {
38
52
 
39
- super( object, renderer, new GLSLNodeParser(), scene );
53
+ super( object, renderer, new GLSLNodeParser() );
40
54
 
41
55
  this.uniformGroups = {};
42
56
  this.transforms = [];
43
57
 
58
+ this.instanceBindGroups = false;
59
+
44
60
  }
45
61
 
46
62
  getMethod( method ) {
@@ -49,12 +65,6 @@ class GLSLNodeBuilder extends NodeBuilder {
49
65
 
50
66
  }
51
67
 
52
- getPropertyName( node, shaderStage ) {
53
-
54
- return super.getPropertyName( node, shaderStage );
55
-
56
- }
57
-
58
68
  getOutputStructName() {
59
69
 
60
70
  return '';
@@ -101,39 +111,54 @@ ${ flowData.code }
101
111
  const numElements = attribute.count * attribute.itemSize;
102
112
 
103
113
  const { itemSize } = attribute;
104
- let format = RedFormat;
114
+
115
+ const isInteger = attribute.array.constructor.name.toLowerCase().includes( 'int' );
116
+
117
+ let format = isInteger ? RedIntegerFormat : RedFormat;
118
+
105
119
 
106
120
  if ( itemSize === 2 ) {
107
121
 
108
- format = RGFormat;
122
+ format = isInteger ? RGIntegerFormat : RGFormat;
109
123
 
110
124
  } else if ( itemSize === 3 ) {
111
125
 
112
- format = RGBFormat;
126
+ format = isInteger ? RGBIntegerFormat : RGBFormat;
113
127
 
114
128
  } else if ( itemSize === 4 ) {
115
129
 
116
- format = RGBAFormat;
130
+ format = isInteger ? RGBAIntegerFormat : RGBAFormat;
117
131
 
118
132
  }
119
133
 
134
+ const typeMap = {
135
+ Float32Array: FloatType,
136
+ Uint8Array: UnsignedByteType,
137
+ Uint16Array: UnsignedShortType,
138
+ Uint32Array: UnsignedIntType,
139
+ Int8Array: ByteType,
140
+ Int16Array: ShortType,
141
+ Int32Array: IntType,
142
+ Uint8ClampedArray: UnsignedByteType,
143
+ };
144
+
120
145
  const width = Math.pow( 2, Math.ceil( Math.log2( Math.sqrt( numElements / itemSize ) ) ) );
121
146
  let height = Math.ceil( ( numElements / itemSize ) / width );
122
147
  if ( width * height * itemSize < numElements ) height ++; // Ensure enough space
123
148
 
124
149
  const newSize = width * height * itemSize;
125
150
 
126
- const newArray = new Float32Array( newSize );
151
+ const newArray = new originalArray.constructor( newSize );
127
152
 
128
153
  newArray.set( originalArray, 0 );
129
154
 
130
155
  attribute.array = newArray;
131
156
 
132
- const pboTexture = new DataTexture( attribute.array, width, height, format, FloatType );
157
+ const pboTexture = new DataTexture( attribute.array, width, height, format, typeMap[ attribute.array.constructor.name ] || FloatType );
133
158
  pboTexture.needsUpdate = true;
134
159
  pboTexture.isPBOTexture = true;
135
160
 
136
- const pbo = new UniformNode( pboTexture );
161
+ const pbo = new TextureNode( pboTexture, null, null );
137
162
  pbo.setPrecision( 'high' );
138
163
 
139
164
  attribute.pboNode = pbo;
@@ -145,6 +170,18 @@ ${ flowData.code }
145
170
 
146
171
  }
147
172
 
173
+ getPropertyName( node, shaderStage = this.shaderStage ) {
174
+
175
+ if ( node.isNodeUniform && node.node.isTextureNode !== true && node.node.isBufferNode !== true ) {
176
+
177
+ return shaderStage.charAt( 0 ) + '_' + node.name;
178
+
179
+ }
180
+
181
+ return super.getPropertyName( node, shaderStage );
182
+
183
+ }
184
+
148
185
  generatePBO( storageArrayElementNode ) {
149
186
 
150
187
  const { node, indexNode } = storageArrayElementNode;
@@ -205,7 +242,20 @@ ${ flowData.code }
205
242
 
206
243
  //
207
244
 
208
- this.addLineFlowCode( `${ propertyName } = ${ snippet + channel }` );
245
+
246
+ let prefix = 'vec4';
247
+
248
+ if ( attribute.pbo.type === UnsignedIntType ) {
249
+
250
+ prefix = 'uvec4';
251
+
252
+ } else if ( attribute.pbo.type === IntType ) {
253
+
254
+ prefix = 'ivec4';
255
+
256
+ }
257
+
258
+ this.addLineFlowCode( `${ propertyName } = ${prefix}(${ snippet })${channel}` );
209
259
 
210
260
  elementNodeData.propertyName = propertyName;
211
261
 
@@ -251,6 +301,12 @@ ${ flowData.code }
251
301
 
252
302
  }
253
303
 
304
+ generateTextureBias( texture, textureProperty, uvSnippet, biasSnippet ) {
305
+
306
+ return `texture( ${ textureProperty }, ${ uvSnippet }, ${ biasSnippet } )`;
307
+
308
+ }
309
+
254
310
  generateTextureGrad( texture, textureProperty, uvSnippet, gradSnippet ) {
255
311
 
256
312
  return `textureGrad( ${ textureProperty }, ${ uvSnippet }, ${ gradSnippet[ 0 ] }, ${ gradSnippet[ 1 ] } )`;
@@ -307,17 +363,34 @@ ${ flowData.code }
307
363
 
308
364
  const texture = uniform.node.value;
309
365
 
366
+ let typePrefix = '';
367
+
368
+ if ( texture.isDataTexture === true ) {
369
+
370
+
371
+ if ( texture.type === UnsignedIntType ) {
372
+
373
+ typePrefix = 'u';
374
+
375
+ } else if ( texture.type === IntType ) {
376
+
377
+ typePrefix = 'i';
378
+
379
+ }
380
+
381
+ }
382
+
310
383
  if ( texture.compareFunction ) {
311
384
 
312
385
  snippet = `sampler2DShadow ${ uniform.name };`;
313
386
 
314
387
  } else if ( texture.isDataArrayTexture === true ) {
315
388
 
316
- snippet = `sampler2DArray ${ uniform.name };`;
389
+ snippet = `${typePrefix}sampler2DArray ${ uniform.name };`;
317
390
 
318
391
  } else {
319
392
 
320
- snippet = `sampler2D ${ uniform.name };`;
393
+ snippet = `${typePrefix}sampler2D ${ uniform.name };`;
321
394
 
322
395
  }
323
396
 
@@ -342,7 +415,7 @@ ${ flowData.code }
342
415
 
343
416
  const vectorType = this.getVectorType( uniform.type );
344
417
 
345
- snippet = `${vectorType} ${uniform.name};`;
418
+ snippet = `${ vectorType } ${ this.getPropertyName( uniform, shaderStage ) };`;
346
419
 
347
420
  group = true;
348
421
 
@@ -403,7 +476,7 @@ ${ flowData.code }
403
476
 
404
477
  const array = dataAttribute.array;
405
478
 
406
- if ( ( array instanceof Uint32Array || array instanceof Int32Array || array instanceof Uint16Array || array instanceof Int16Array ) === false ) {
479
+ if ( ( array instanceof Uint32Array || array instanceof Int32Array ) === false ) {
407
480
 
408
481
  nodeType = nodeType.slice( 1 );
409
482
 
@@ -492,7 +565,7 @@ ${ flowData.code }
492
565
 
493
566
  if ( shaderStage === 'compute' ) varying.needsInterpolation = true;
494
567
  const type = varying.type;
495
- const flat = type === 'int' || type === 'uint' ? 'flat ' : '';
568
+ const flat = type.includes( 'int' ) || type.includes( 'uv' ) || type.includes( 'iv' ) ? 'flat ' : '';
496
569
 
497
570
  snippet += `${flat}${varying.needsInterpolation ? 'out' : '/*out*/'} ${type} ${varying.name};\n`;
498
571
 
@@ -505,7 +578,7 @@ ${ flowData.code }
505
578
  if ( varying.needsInterpolation ) {
506
579
 
507
580
  const type = varying.type;
508
- const flat = type === 'int' || type === 'uint' ? 'flat ' : '';
581
+ const flat = type.includes( 'int' ) || type.includes( 'uv' ) || type.includes( 'iv' ) ? 'flat ' : '';
509
582
 
510
583
  snippet += `${flat}in ${type} ${varying.name};\n`;
511
584
 
@@ -531,6 +604,20 @@ ${ flowData.code }
531
604
 
532
605
  }
533
606
 
607
+ getDrawIndex() {
608
+
609
+ const extensions = this.renderer.backend.extensions;
610
+
611
+ if ( extensions.has( 'WEBGL_multi_draw' ) ) {
612
+
613
+ return 'uint( gl_DrawID )';
614
+
615
+ }
616
+
617
+ return null;
618
+
619
+ }
620
+
534
621
  getFrontFacing() {
535
622
 
536
623
  return 'gl_FrontFacing';
@@ -549,9 +636,55 @@ ${ flowData.code }
549
636
 
550
637
  }
551
638
 
639
+ getExtensions( shaderStage ) {
640
+
641
+ let extensions = '';
642
+
643
+ if ( shaderStage === 'vertex' ) {
644
+
645
+ const ext = this.renderer.backend.extensions;
646
+ const isBatchedMesh = this.object.isBatchedMesh;
647
+
648
+ if ( isBatchedMesh && ext.has( 'WEBGL_multi_draw' ) ) {
649
+
650
+ extensions += '#extension GL_ANGLE_multi_draw : require\n';
651
+
652
+ }
653
+
654
+ }
655
+
656
+ return extensions;
657
+
658
+ }
659
+
552
660
  isAvailable( name ) {
553
661
 
554
- return supports[ name ] === true;
662
+ let result = supports[ name ];
663
+
664
+ if ( result === undefined ) {
665
+
666
+ if ( name === 'float32Filterable' ) {
667
+
668
+ const extensions = this.renderer.backend.extensions;
669
+
670
+ if ( extensions.has( 'OES_texture_float_linear' ) ) {
671
+
672
+ extensions.get( 'OES_texture_float_linear' );
673
+ result = true;
674
+
675
+ } else {
676
+
677
+ result = false;
678
+
679
+ }
680
+
681
+ }
682
+
683
+ supports[ name ] = result;
684
+
685
+ }
686
+
687
+ return result;
555
688
 
556
689
  }
557
690
 
@@ -600,7 +733,8 @@ ${vars}
600
733
 
601
734
  return `#version 300 es
602
735
 
603
- ${ this.getSignature() }
736
+ // extensions
737
+ ${shaderData.extensions}
604
738
 
605
739
  // precision
606
740
  ${ defaultPrecisions }
@@ -721,6 +855,7 @@ void main() {
721
855
 
722
856
  const stageData = shadersData[ shaderStage ];
723
857
 
858
+ stageData.extensions = this.getExtensions( shaderStage );
724
859
  stageData.uniforms = this.getUniforms( shaderStage );
725
860
  stageData.attributes = this.getAttributes( shaderStage );
726
861
  stageData.varyings = this.getVaryings( shaderStage );
@@ -754,40 +889,40 @@ void main() {
754
889
 
755
890
  if ( uniformGPU === undefined ) {
756
891
 
757
- if ( type === 'texture' ) {
892
+ const group = node.groupNode;
893
+ const groupName = group.name;
758
894
 
759
- uniformGPU = new NodeSampledTexture( uniformNode.name, uniformNode.node );
895
+ const bindings = this.getBindGroupArray( groupName, shaderStage );
760
896
 
761
- this.bindings[ shaderStage ].push( uniformGPU );
897
+ if ( type === 'texture' ) {
762
898
 
763
- } else if ( type === 'cubeTexture' ) {
899
+ uniformGPU = new NodeSampledTexture( uniformNode.name, uniformNode.node, group );
900
+ bindings.push( uniformGPU );
764
901
 
765
- uniformGPU = new NodeSampledCubeTexture( uniformNode.name, uniformNode.node );
902
+ } else if ( type === 'cubeTexture' ) {
766
903
 
767
- this.bindings[ shaderStage ].push( uniformGPU );
904
+ uniformGPU = new NodeSampledCubeTexture( uniformNode.name, uniformNode.node, group );
905
+ bindings.push( uniformGPU );
768
906
 
769
907
  } else if ( type === 'texture3D' ) {
770
908
 
771
- uniformGPU = new NodeSampledTexture3D( uniformNode.name, uniformNode.node );
772
- this.bindings[ shaderStage ].push( uniformGPU );
909
+ uniformGPU = new NodeSampledTexture3D( uniformNode.name, uniformNode.node, group );
910
+ bindings.push( uniformGPU );
773
911
 
774
912
  } else if ( type === 'buffer' ) {
775
913
 
776
914
  node.name = `NodeBuffer_${ node.id }`;
777
915
  uniformNode.name = `buffer${ node.id }`;
778
916
 
779
- const buffer = new NodeUniformBuffer( node );
917
+ const buffer = new NodeUniformBuffer( node, group );
780
918
  buffer.name = node.name;
781
919
 
782
- this.bindings[ shaderStage ].push( buffer );
920
+ bindings.push( buffer );
783
921
 
784
922
  uniformGPU = buffer;
785
923
 
786
924
  } else {
787
925
 
788
- const group = node.groupNode;
789
- const groupName = group.name;
790
-
791
926
  const uniformsStage = this.uniformGroups[ shaderStage ] || ( this.uniformGroups[ shaderStage ] = {} );
792
927
 
793
928
  let uniformsGroup = uniformsStage[ groupName ];
@@ -799,7 +934,7 @@ void main() {
799
934
 
800
935
  uniformsStage[ groupName ] = uniformsGroup;
801
936
 
802
- this.bindings[ shaderStage ].push( uniformsGroup );
937
+ bindings.push( uniformsGroup );
803
938
 
804
939
  }
805
940
 
@@ -1,4 +1,4 @@
1
- import { IntType } from 'three';
1
+ import { IntType } from '../../../constants.js';
2
2
 
3
3
  let _id = 0;
4
4
 
@@ -135,7 +135,7 @@ class WebGLAttributeUtils {
135
135
  bytesPerElement: array.BYTES_PER_ELEMENT,
136
136
  version: attribute.version,
137
137
  pbo: attribute.pbo,
138
- isInteger: type === gl.INT || type === gl.UNSIGNED_INT || type === gl.UNSIGNED_SHORT || attribute.gpuType === IntType,
138
+ isInteger: type === gl.INT || type === gl.UNSIGNED_INT || attribute.gpuType === IntType,
139
139
  id: _id ++
140
140
  };
141
141
 
@@ -1,5 +1,6 @@
1
1
  export const GLFeatureName = {
2
2
 
3
+ 'WEBGL_multi_draw': 'WEBGL_multi_draw',
3
4
  'WEBGL_compressed_texture_astc': 'texture-compression-astc',
4
5
  'WEBGL_compressed_texture_etc': 'texture-compression-etc2',
5
6
  'WEBGL_compressed_texture_etc1': 'texture-compression-etc1',
@@ -19,6 +19,8 @@ class WebGLExtensions {
19
19
 
20
20
  extension = this.gl.getExtension( name );
21
21
 
22
+ this.extensions[ name ] = extension;
23
+
22
24
  }
23
25
 
24
26
  return extension;
@@ -5,7 +5,7 @@ import {
5
5
  ZeroFactor, OneFactor, SrcColorFactor, SrcAlphaFactor, SrcAlphaSaturateFactor, DstColorFactor, DstAlphaFactor,
6
6
  OneMinusSrcColorFactor, OneMinusSrcAlphaFactor, OneMinusDstColorFactor, OneMinusDstAlphaFactor,
7
7
  NeverDepth, AlwaysDepth, LessDepth, LessEqualDepth, EqualDepth, GreaterEqualDepth, GreaterDepth, NotEqualDepth
8
- } from 'three';
8
+ } from '../../../constants.js';
9
9
 
10
10
  let initialized = false, equationToGL, factorToGL;
11
11
 
@@ -1,4 +1,4 @@
1
- import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, FloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, SRGBColorSpace, NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare } from 'three';
1
+ import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, FloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, SRGBColorSpace, NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare } from '../../../constants.js';
2
2
 
3
3
  let initialized = false, wrappingToGL, filterToGL, compareToGL;
4
4
 
@@ -147,6 +147,16 @@ class WebGLTextureUtils {
147
147
  if ( glType === gl.SHORT ) internalFormat = gl.RG16I;
148
148
  if ( glType === gl.INT ) internalFormat = gl.RG32I;
149
149
 
150
+ }
151
+
152
+ if ( glFormat === gl.RG_INTEGER ) {
153
+
154
+ if ( glType === gl.UNSIGNED_BYTE ) internalFormat = gl.RG8UI;
155
+ if ( glType === gl.UNSIGNED_SHORT ) internalFormat = gl.RG16UI;
156
+ if ( glType === gl.UNSIGNED_INT ) internalFormat = gl.RG32UI;
157
+ if ( glType === gl.BYTE ) internalFormat = gl.RG8I;
158
+ if ( glType === gl.SHORT ) internalFormat = gl.RG16I;
159
+ if ( glType === gl.INT ) internalFormat = gl.RG32I;
150
160
 
151
161
  }
152
162
 
@@ -168,6 +178,17 @@ class WebGLTextureUtils {
168
178
 
169
179
  }
170
180
 
181
+ if ( glFormat === gl.RGB_INTEGER ) {
182
+
183
+ if ( glType === gl.UNSIGNED_BYTE ) internalFormat = gl.RGB8UI;
184
+ if ( glType === gl.UNSIGNED_SHORT ) internalFormat = gl.RGB16UI;
185
+ if ( glType === gl.UNSIGNED_INT ) internalFormat = gl.RGB32UI;
186
+ if ( glType === gl.BYTE ) internalFormat = gl.RGB8I;
187
+ if ( glType === gl.SHORT ) internalFormat = gl.RGB16I;
188
+ if ( glType === gl.INT ) internalFormat = gl.RGB32I;
189
+
190
+ }
191
+
171
192
  if ( glFormat === gl.RGBA ) {
172
193
 
173
194
  if ( glType === gl.FLOAT ) internalFormat = gl.RGBA32F;
@@ -184,6 +205,17 @@ class WebGLTextureUtils {
184
205
 
185
206
  }
186
207
 
208
+ if ( glFormat === gl.RGBA_INTEGER ) {
209
+
210
+ if ( glType === gl.UNSIGNED_BYTE ) internalFormat = gl.RGBA8UI;
211
+ if ( glType === gl.UNSIGNED_SHORT ) internalFormat = gl.RGBA16UI;
212
+ if ( glType === gl.UNSIGNED_INT ) internalFormat = gl.RGBA32UI;
213
+ if ( glType === gl.BYTE ) internalFormat = gl.RGBA8I;
214
+ if ( glType === gl.SHORT ) internalFormat = gl.RGBA16I;
215
+ if ( glType === gl.INT ) internalFormat = gl.RGBA32I;
216
+
217
+ }
218
+
187
219
  if ( glFormat === gl.DEPTH_COMPONENT ) {
188
220
 
189
221
  if ( glType === gl.UNSIGNED_INT ) internalFormat = gl.DEPTH24_STENCIL8;
@@ -634,7 +666,7 @@ class WebGLTextureUtils {
634
666
 
635
667
  } else {
636
668
 
637
- gl.texSubImage2D( gl.TEXTURE_2D, level, dstX, dstY, glFormat, glType, image );
669
+ gl.texSubImage2D( gl.TEXTURE_2D, level, dstX, dstY, width, height, glFormat, glType, image );
638
670
 
639
671
  }
640
672
 
@@ -1,4 +1,4 @@
1
- import { RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT5_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT1_Format, RGB_S3TC_DXT1_Format, DepthFormat, DepthStencilFormat, LuminanceAlphaFormat, LuminanceFormat, RedFormat, RGBFormat, RGBAFormat, AlphaFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBAIntegerFormat, HalfFloatType, FloatType, UnsignedIntType, IntType, UnsignedShortType, ShortType, ByteType, UnsignedInt248Type, UnsignedInt5999Type, UnsignedShort5551Type, UnsignedShort4444Type, UnsignedByteType, RGBA_BPTC_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, SRGBColorSpace, NoColorSpace } from 'three';
1
+ import { RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT5_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT1_Format, RGB_S3TC_DXT1_Format, DepthFormat, DepthStencilFormat, LuminanceAlphaFormat, LuminanceFormat, RedFormat, RGBFormat, RGBAFormat, AlphaFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBAIntegerFormat, HalfFloatType, FloatType, UnsignedIntType, IntType, UnsignedShortType, ShortType, ByteType, UnsignedInt248Type, UnsignedInt5999Type, UnsignedShort5551Type, UnsignedShort4444Type, UnsignedByteType, RGBA_BPTC_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, SRGBColorSpace, NoColorSpace } from '../../../constants.js';
2
2
 
3
3
  class WebGLUtils {
4
4