@onerjs/loaders 8.53.5 → 8.53.7

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 (517) hide show
  1. package/BVH/bvhFileLoader.d.ts +4 -67
  2. package/BVH/bvhFileLoader.js +6 -130
  3. package/BVH/bvhFileLoader.js.map +1 -1
  4. package/BVH/bvhFileLoader.pure.d.ts +75 -0
  5. package/BVH/bvhFileLoader.pure.js +154 -0
  6. package/BVH/bvhFileLoader.pure.js.map +1 -0
  7. package/BVH/bvhFileLoader.types.d.ts +11 -0
  8. package/BVH/bvhFileLoader.types.js +2 -0
  9. package/BVH/bvhFileLoader.types.js.map +1 -0
  10. package/BVH/pure.d.ts +3 -0
  11. package/BVH/pure.js +5 -0
  12. package/BVH/pure.js.map +1 -0
  13. package/FBX/fbxFileLoader.d.ts +4 -192
  14. package/FBX/fbxFileLoader.js +6 -2437
  15. package/FBX/fbxFileLoader.js.map +1 -1
  16. package/FBX/fbxFileLoader.pure.d.ts +190 -0
  17. package/FBX/fbxFileLoader.pure.js +2451 -0
  18. package/FBX/fbxFileLoader.pure.js.map +1 -0
  19. package/FBX/fbxFileLoader.types.d.ts +11 -0
  20. package/FBX/fbxFileLoader.types.js +2 -0
  21. package/FBX/fbxFileLoader.types.js.map +1 -0
  22. package/FBX/pure.d.ts +3 -0
  23. package/FBX/pure.js +4 -0
  24. package/FBX/pure.js.map +1 -0
  25. package/OBJ/objFileLoader.d.ts +4 -134
  26. package/OBJ/objFileLoader.js +6 -315
  27. package/OBJ/objFileLoader.js.map +1 -1
  28. package/OBJ/objFileLoader.pure.d.ts +132 -0
  29. package/OBJ/objFileLoader.pure.js +329 -0
  30. package/OBJ/objFileLoader.pure.js.map +1 -0
  31. package/OBJ/objFileLoader.types.d.ts +11 -0
  32. package/OBJ/objFileLoader.types.js +2 -0
  33. package/OBJ/objFileLoader.types.js.map +1 -0
  34. package/OBJ/pure.d.ts +5 -0
  35. package/OBJ/pure.js +6 -0
  36. package/OBJ/pure.js.map +1 -0
  37. package/OBJ/solidParser.js +4 -3
  38. package/OBJ/solidParser.js.map +1 -1
  39. package/SPLAT/gaussianSplattingBlockAllocator.d.ts +137 -0
  40. package/SPLAT/gaussianSplattingBlockAllocator.js +555 -0
  41. package/SPLAT/gaussianSplattingBlockAllocator.js.map +1 -0
  42. package/SPLAT/gaussianSplattingDownloadManager.d.ts +109 -0
  43. package/SPLAT/gaussianSplattingDownloadManager.js +241 -0
  44. package/SPLAT/gaussianSplattingDownloadManager.js.map +1 -0
  45. package/SPLAT/gaussianSplattingResidencyController.d.ts +133 -0
  46. package/SPLAT/gaussianSplattingResidencyController.js +222 -0
  47. package/SPLAT/gaussianSplattingResidencyController.js.map +1 -0
  48. package/SPLAT/gaussianSplattingStream.d.ts +522 -0
  49. package/SPLAT/gaussianSplattingStream.js +1530 -0
  50. package/SPLAT/gaussianSplattingStream.js.map +1 -0
  51. package/SPLAT/gaussianSplattingWorkBuffer.d.ts +107 -0
  52. package/SPLAT/gaussianSplattingWorkBuffer.js +361 -0
  53. package/SPLAT/gaussianSplattingWorkBuffer.js.map +1 -0
  54. package/SPLAT/gaussianSplattingWorkBufferShaders.d.ts +40 -0
  55. package/SPLAT/gaussianSplattingWorkBufferShaders.js +337 -0
  56. package/SPLAT/gaussianSplattingWorkBufferShaders.js.map +1 -0
  57. package/SPLAT/index.d.ts +1 -0
  58. package/SPLAT/index.js +1 -0
  59. package/SPLAT/index.js.map +1 -1
  60. package/SPLAT/pure.d.ts +5 -0
  61. package/SPLAT/pure.js +7 -0
  62. package/SPLAT/pure.js.map +1 -0
  63. package/SPLAT/sog.d.ts +2 -93
  64. package/SPLAT/sog.js +4 -418
  65. package/SPLAT/sog.js.map +1 -1
  66. package/SPLAT/sog.pure.d.ts +102 -0
  67. package/SPLAT/sog.pure.js +514 -0
  68. package/SPLAT/sog.pure.js.map +1 -0
  69. package/SPLAT/splatFileLoader.d.ts +5 -98
  70. package/SPLAT/splatFileLoader.js +9 -587
  71. package/SPLAT/splatFileLoader.js.map +1 -1
  72. package/SPLAT/splatFileLoader.pure.d.ts +104 -0
  73. package/SPLAT/splatFileLoader.pure.js +650 -0
  74. package/SPLAT/splatFileLoader.pure.js.map +1 -0
  75. package/SPLAT/splatFileLoader.types.d.ts +11 -0
  76. package/SPLAT/splatFileLoader.types.js +2 -0
  77. package/SPLAT/splatFileLoader.types.js.map +1 -0
  78. package/STL/pure.d.ts +2 -0
  79. package/STL/pure.js +3 -0
  80. package/STL/pure.js.map +1 -0
  81. package/STL/stlFileLoader.d.ts +5 -76
  82. package/STL/stlFileLoader.js +7 -236
  83. package/STL/stlFileLoader.js.map +1 -1
  84. package/STL/stlFileLoader.pure.d.ts +73 -0
  85. package/STL/stlFileLoader.pure.js +249 -0
  86. package/STL/stlFileLoader.pure.js.map +1 -0
  87. package/STL/stlFileLoader.types.d.ts +10 -0
  88. package/STL/stlFileLoader.types.js +2 -0
  89. package/STL/stlFileLoader.types.js.map +1 -0
  90. package/glTF/1.0/pure.d.ts +3 -0
  91. package/glTF/1.0/pure.js +4 -0
  92. package/glTF/1.0/pure.js.map +1 -0
  93. package/glTF/2.0/Extensions/EXT_lights_area.d.ts +4 -39
  94. package/glTF/2.0/Extensions/EXT_lights_area.js +6 -91
  95. package/glTF/2.0/Extensions/EXT_lights_area.js.map +1 -1
  96. package/glTF/2.0/Extensions/EXT_lights_area.pure.d.ts +38 -0
  97. package/glTF/2.0/Extensions/EXT_lights_area.pure.js +106 -0
  98. package/glTF/2.0/Extensions/EXT_lights_area.pure.js.map +1 -0
  99. package/glTF/2.0/Extensions/EXT_lights_area.types.d.ts +9 -0
  100. package/glTF/2.0/Extensions/EXT_lights_area.types.js +2 -0
  101. package/glTF/2.0/Extensions/EXT_lights_area.types.js.map +1 -0
  102. package/glTF/2.0/Extensions/EXT_lights_ies.d.ts +4 -39
  103. package/glTF/2.0/Extensions/EXT_lights_ies.js +6 -81
  104. package/glTF/2.0/Extensions/EXT_lights_ies.js.map +1 -1
  105. package/glTF/2.0/Extensions/EXT_lights_ies.pure.d.ts +38 -0
  106. package/glTF/2.0/Extensions/EXT_lights_ies.pure.js +96 -0
  107. package/glTF/2.0/Extensions/EXT_lights_ies.pure.js.map +1 -0
  108. package/glTF/2.0/Extensions/EXT_lights_ies.types.d.ts +9 -0
  109. package/glTF/2.0/Extensions/EXT_lights_ies.types.js +2 -0
  110. package/glTF/2.0/Extensions/EXT_lights_ies.types.js.map +1 -0
  111. package/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +4 -46
  112. package/glTF/2.0/Extensions/EXT_lights_image_based.js +6 -113
  113. package/glTF/2.0/Extensions/EXT_lights_image_based.js.map +1 -1
  114. package/glTF/2.0/Extensions/EXT_lights_image_based.pure.d.ts +37 -0
  115. package/glTF/2.0/Extensions/EXT_lights_image_based.pure.js +128 -0
  116. package/glTF/2.0/Extensions/EXT_lights_image_based.pure.js.map +1 -0
  117. package/glTF/2.0/Extensions/EXT_lights_image_based.types.d.ts +17 -0
  118. package/glTF/2.0/Extensions/EXT_lights_image_based.types.js +2 -0
  119. package/glTF/2.0/Extensions/EXT_lights_image_based.types.js.map +1 -0
  120. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +5 -37
  121. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +7 -92
  122. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js.map +1 -1
  123. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.d.ts +35 -0
  124. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.js +106 -0
  125. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.js.map +1 -0
  126. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.types.d.ts +9 -0
  127. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.types.js +2 -0
  128. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.types.js.map +1 -0
  129. package/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +4 -37
  130. package/glTF/2.0/Extensions/EXT_meshopt_compression.js +6 -48
  131. package/glTF/2.0/Extensions/EXT_meshopt_compression.js.map +1 -1
  132. package/glTF/2.0/Extensions/EXT_meshopt_compression.pure.d.ts +36 -0
  133. package/glTF/2.0/Extensions/EXT_meshopt_compression.pure.js +63 -0
  134. package/glTF/2.0/Extensions/EXT_meshopt_compression.pure.js.map +1 -0
  135. package/glTF/2.0/Extensions/EXT_meshopt_compression.types.d.ts +9 -0
  136. package/glTF/2.0/Extensions/EXT_meshopt_compression.types.js +2 -0
  137. package/glTF/2.0/Extensions/EXT_meshopt_compression.types.js.map +1 -0
  138. package/glTF/2.0/Extensions/EXT_texture_avif.d.ts +4 -32
  139. package/glTF/2.0/Extensions/EXT_texture_avif.js +6 -36
  140. package/glTF/2.0/Extensions/EXT_texture_avif.js.map +1 -1
  141. package/glTF/2.0/Extensions/EXT_texture_avif.pure.d.ts +31 -0
  142. package/glTF/2.0/Extensions/EXT_texture_avif.pure.js +51 -0
  143. package/glTF/2.0/Extensions/EXT_texture_avif.pure.js.map +1 -0
  144. package/glTF/2.0/Extensions/EXT_texture_avif.types.d.ts +9 -0
  145. package/glTF/2.0/Extensions/EXT_texture_avif.types.js +2 -0
  146. package/glTF/2.0/Extensions/EXT_texture_avif.types.js.map +1 -0
  147. package/glTF/2.0/Extensions/EXT_texture_webp.d.ts +4 -31
  148. package/glTF/2.0/Extensions/EXT_texture_webp.js +6 -35
  149. package/glTF/2.0/Extensions/EXT_texture_webp.js.map +1 -1
  150. package/glTF/2.0/Extensions/EXT_texture_webp.pure.d.ts +30 -0
  151. package/glTF/2.0/Extensions/EXT_texture_webp.pure.js +50 -0
  152. package/glTF/2.0/Extensions/EXT_texture_webp.pure.js.map +1 -0
  153. package/glTF/2.0/Extensions/EXT_texture_webp.types.d.ts +9 -0
  154. package/glTF/2.0/Extensions/EXT_texture_webp.types.js +2 -0
  155. package/glTF/2.0/Extensions/EXT_texture_webp.types.js.map +1 -0
  156. package/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +4 -51
  157. package/glTF/2.0/Extensions/ExtrasAsMetadata.js +6 -71
  158. package/glTF/2.0/Extensions/ExtrasAsMetadata.js.map +1 -1
  159. package/glTF/2.0/Extensions/ExtrasAsMetadata.pure.d.ts +50 -0
  160. package/glTF/2.0/Extensions/ExtrasAsMetadata.pure.js +85 -0
  161. package/glTF/2.0/Extensions/ExtrasAsMetadata.pure.js.map +1 -0
  162. package/glTF/2.0/Extensions/ExtrasAsMetadata.types.d.ts +9 -0
  163. package/glTF/2.0/Extensions/ExtrasAsMetadata.types.js +2 -0
  164. package/glTF/2.0/Extensions/ExtrasAsMetadata.types.js.map +1 -0
  165. package/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +5 -45
  166. package/glTF/2.0/Extensions/KHR_animation_pointer.js +7 -75
  167. package/glTF/2.0/Extensions/KHR_animation_pointer.js.map +1 -1
  168. package/glTF/2.0/Extensions/KHR_animation_pointer.pure.d.ts +43 -0
  169. package/glTF/2.0/Extensions/KHR_animation_pointer.pure.js +89 -0
  170. package/glTF/2.0/Extensions/KHR_animation_pointer.pure.js.map +1 -0
  171. package/glTF/2.0/Extensions/KHR_animation_pointer.types.d.ts +9 -0
  172. package/glTF/2.0/Extensions/KHR_animation_pointer.types.js +2 -0
  173. package/glTF/2.0/Extensions/KHR_animation_pointer.types.js.map +1 -0
  174. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +4 -45
  175. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +6 -90
  176. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js.map +1 -1
  177. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.d.ts +44 -0
  178. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.js +105 -0
  179. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.js.map +1 -0
  180. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.types.d.ts +9 -0
  181. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.types.js +2 -0
  182. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.types.js.map +1 -0
  183. package/glTF/2.0/Extensions/KHR_gaussian_splatting.d.ts +6 -0
  184. package/glTF/2.0/Extensions/KHR_gaussian_splatting.js +9 -0
  185. package/glTF/2.0/Extensions/KHR_gaussian_splatting.js.map +1 -0
  186. package/glTF/2.0/Extensions/KHR_gaussian_splatting.pure.d.ts +35 -0
  187. package/glTF/2.0/Extensions/KHR_gaussian_splatting.pure.js +195 -0
  188. package/glTF/2.0/Extensions/KHR_gaussian_splatting.pure.js.map +1 -0
  189. package/glTF/2.0/Extensions/KHR_gaussian_splatting.types.d.ts +9 -0
  190. package/glTF/2.0/Extensions/KHR_gaussian_splatting.types.js +2 -0
  191. package/glTF/2.0/Extensions/KHR_gaussian_splatting.types.js.map +1 -0
  192. package/glTF/2.0/Extensions/KHR_interactivity/pure.d.ts +4 -0
  193. package/glTF/2.0/Extensions/KHR_interactivity/pure.js +5 -0
  194. package/glTF/2.0/Extensions/KHR_interactivity/pure.js.map +1 -0
  195. package/glTF/2.0/Extensions/KHR_interactivity.d.ts +4 -36
  196. package/glTF/2.0/Extensions/KHR_interactivity.js +6 -148
  197. package/glTF/2.0/Extensions/KHR_interactivity.js.map +1 -1
  198. package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +35 -0
  199. package/glTF/2.0/Extensions/KHR_interactivity.pure.js +163 -0
  200. package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -0
  201. package/glTF/2.0/Extensions/KHR_interactivity.types.d.ts +9 -0
  202. package/glTF/2.0/Extensions/KHR_interactivity.types.js +2 -0
  203. package/glTF/2.0/Extensions/KHR_interactivity.types.js.map +1 -0
  204. package/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +4 -39
  205. package/glTF/2.0/Extensions/KHR_lights_punctual.js +6 -89
  206. package/glTF/2.0/Extensions/KHR_lights_punctual.js.map +1 -1
  207. package/glTF/2.0/Extensions/KHR_lights_punctual.pure.d.ts +38 -0
  208. package/glTF/2.0/Extensions/KHR_lights_punctual.pure.js +104 -0
  209. package/glTF/2.0/Extensions/KHR_lights_punctual.pure.js.map +1 -0
  210. package/glTF/2.0/Extensions/KHR_lights_punctual.types.d.ts +9 -0
  211. package/glTF/2.0/Extensions/KHR_lights_punctual.types.js +2 -0
  212. package/glTF/2.0/Extensions/KHR_lights_punctual.types.js.map +1 -0
  213. package/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +4 -40
  214. package/glTF/2.0/Extensions/KHR_materials_anisotropy.js +6 -63
  215. package/glTF/2.0/Extensions/KHR_materials_anisotropy.js.map +1 -1
  216. package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.d.ts +39 -0
  217. package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.js +78 -0
  218. package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.js.map +1 -0
  219. package/glTF/2.0/Extensions/KHR_materials_anisotropy.types.d.ts +9 -0
  220. package/glTF/2.0/Extensions/KHR_materials_anisotropy.types.js +2 -0
  221. package/glTF/2.0/Extensions/KHR_materials_anisotropy.types.js.map +1 -0
  222. package/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +4 -41
  223. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +6 -77
  224. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js.map +1 -1
  225. package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.d.ts +40 -0
  226. package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.js +92 -0
  227. package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.js.map +1 -0
  228. package/glTF/2.0/Extensions/KHR_materials_clearcoat.types.d.ts +9 -0
  229. package/glTF/2.0/Extensions/KHR_materials_clearcoat.types.js +2 -0
  230. package/glTF/2.0/Extensions/KHR_materials_clearcoat.types.js.map +1 -0
  231. package/glTF/2.0/Extensions/KHR_materials_coat.d.ts +4 -47
  232. package/glTF/2.0/Extensions/KHR_materials_coat.js +6 -117
  233. package/glTF/2.0/Extensions/KHR_materials_coat.js.map +1 -1
  234. package/glTF/2.0/Extensions/KHR_materials_coat.pure.d.ts +46 -0
  235. package/glTF/2.0/Extensions/KHR_materials_coat.pure.js +132 -0
  236. package/glTF/2.0/Extensions/KHR_materials_coat.pure.js.map +1 -0
  237. package/glTF/2.0/Extensions/KHR_materials_coat.types.d.ts +9 -0
  238. package/glTF/2.0/Extensions/KHR_materials_coat.types.js +2 -0
  239. package/glTF/2.0/Extensions/KHR_materials_coat.types.js.map +1 -0
  240. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +4 -41
  241. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +6 -56
  242. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js.map +1 -1
  243. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.d.ts +40 -0
  244. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.js +71 -0
  245. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.js.map +1 -0
  246. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.types.d.ts +9 -0
  247. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.types.js +2 -0
  248. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.types.js.map +1 -0
  249. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +4 -41
  250. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +6 -71
  251. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js.map +1 -1
  252. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.d.ts +40 -0
  253. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.js +86 -0
  254. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.js.map +1 -0
  255. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.types.d.ts +9 -0
  256. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.types.js +2 -0
  257. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.types.js.map +1 -0
  258. package/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +4 -41
  259. package/glTF/2.0/Extensions/KHR_materials_dispersion.js +6 -54
  260. package/glTF/2.0/Extensions/KHR_materials_dispersion.js.map +1 -1
  261. package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.d.ts +40 -0
  262. package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.js +69 -0
  263. package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.js.map +1 -0
  264. package/glTF/2.0/Extensions/KHR_materials_dispersion.types.d.ts +9 -0
  265. package/glTF/2.0/Extensions/KHR_materials_dispersion.types.js +2 -0
  266. package/glTF/2.0/Extensions/KHR_materials_dispersion.types.js.map +1 -0
  267. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +4 -40
  268. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +6 -45
  269. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js.map +1 -1
  270. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.d.ts +39 -0
  271. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.js +60 -0
  272. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.js.map +1 -0
  273. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.types.d.ts +9 -0
  274. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.types.js +2 -0
  275. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.types.js.map +1 -0
  276. package/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +4 -41
  277. package/glTF/2.0/Extensions/KHR_materials_fuzz.js +6 -75
  278. package/glTF/2.0/Extensions/KHR_materials_fuzz.js.map +1 -1
  279. package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.d.ts +40 -0
  280. package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.js +90 -0
  281. package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.js.map +1 -0
  282. package/glTF/2.0/Extensions/KHR_materials_fuzz.types.d.ts +9 -0
  283. package/glTF/2.0/Extensions/KHR_materials_fuzz.types.js +2 -0
  284. package/glTF/2.0/Extensions/KHR_materials_fuzz.types.js.map +1 -0
  285. package/glTF/2.0/Extensions/KHR_materials_ior.d.ts +4 -44
  286. package/glTF/2.0/Extensions/KHR_materials_ior.js +6 -52
  287. package/glTF/2.0/Extensions/KHR_materials_ior.js.map +1 -1
  288. package/glTF/2.0/Extensions/KHR_materials_ior.pure.d.ts +43 -0
  289. package/glTF/2.0/Extensions/KHR_materials_ior.pure.js +67 -0
  290. package/glTF/2.0/Extensions/KHR_materials_ior.pure.js.map +1 -0
  291. package/glTF/2.0/Extensions/KHR_materials_ior.types.d.ts +9 -0
  292. package/glTF/2.0/Extensions/KHR_materials_ior.types.js +2 -0
  293. package/glTF/2.0/Extensions/KHR_materials_ior.types.js.map +1 -0
  294. package/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +4 -40
  295. package/glTF/2.0/Extensions/KHR_materials_iridescence.js +6 -66
  296. package/glTF/2.0/Extensions/KHR_materials_iridescence.js.map +1 -1
  297. package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.d.ts +39 -0
  298. package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.js +81 -0
  299. package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.js.map +1 -0
  300. package/glTF/2.0/Extensions/KHR_materials_iridescence.types.d.ts +9 -0
  301. package/glTF/2.0/Extensions/KHR_materials_iridescence.types.js +2 -0
  302. package/glTF/2.0/Extensions/KHR_materials_iridescence.types.js.map +1 -0
  303. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +4 -40
  304. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +6 -72
  305. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js.map +1 -1
  306. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.pure.d.ts +39 -0
  307. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.pure.js +87 -0
  308. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.pure.js.map +1 -0
  309. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.types.d.ts +9 -0
  310. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.types.js +2 -0
  311. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.types.js.map +1 -0
  312. package/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +4 -41
  313. package/glTF/2.0/Extensions/KHR_materials_sheen.js +6 -71
  314. package/glTF/2.0/Extensions/KHR_materials_sheen.js.map +1 -1
  315. package/glTF/2.0/Extensions/KHR_materials_sheen.pure.d.ts +40 -0
  316. package/glTF/2.0/Extensions/KHR_materials_sheen.pure.js +86 -0
  317. package/glTF/2.0/Extensions/KHR_materials_sheen.pure.js.map +1 -0
  318. package/glTF/2.0/Extensions/KHR_materials_sheen.types.d.ts +9 -0
  319. package/glTF/2.0/Extensions/KHR_materials_sheen.types.js +2 -0
  320. package/glTF/2.0/Extensions/KHR_materials_sheen.types.js.map +1 -0
  321. package/glTF/2.0/Extensions/KHR_materials_specular.d.ts +4 -40
  322. package/glTF/2.0/Extensions/KHR_materials_specular.js +6 -74
  323. package/glTF/2.0/Extensions/KHR_materials_specular.js.map +1 -1
  324. package/glTF/2.0/Extensions/KHR_materials_specular.pure.d.ts +39 -0
  325. package/glTF/2.0/Extensions/KHR_materials_specular.pure.js +89 -0
  326. package/glTF/2.0/Extensions/KHR_materials_specular.pure.js.map +1 -0
  327. package/glTF/2.0/Extensions/KHR_materials_specular.types.d.ts +9 -0
  328. package/glTF/2.0/Extensions/KHR_materials_specular.types.js +2 -0
  329. package/glTF/2.0/Extensions/KHR_materials_specular.types.js.map +1 -0
  330. package/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +4 -40
  331. package/glTF/2.0/Extensions/KHR_materials_transmission.js +6 -70
  332. package/glTF/2.0/Extensions/KHR_materials_transmission.js.map +1 -1
  333. package/glTF/2.0/Extensions/KHR_materials_transmission.pure.d.ts +39 -0
  334. package/glTF/2.0/Extensions/KHR_materials_transmission.pure.js +85 -0
  335. package/glTF/2.0/Extensions/KHR_materials_transmission.pure.js.map +1 -0
  336. package/glTF/2.0/Extensions/KHR_materials_transmission.types.d.ts +9 -0
  337. package/glTF/2.0/Extensions/KHR_materials_transmission.types.js +2 -0
  338. package/glTF/2.0/Extensions/KHR_materials_transmission.types.js.map +1 -0
  339. package/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +4 -40
  340. package/glTF/2.0/Extensions/KHR_materials_unlit.js +6 -64
  341. package/glTF/2.0/Extensions/KHR_materials_unlit.js.map +1 -1
  342. package/glTF/2.0/Extensions/KHR_materials_unlit.pure.d.ts +39 -0
  343. package/glTF/2.0/Extensions/KHR_materials_unlit.pure.js +79 -0
  344. package/glTF/2.0/Extensions/KHR_materials_unlit.pure.js.map +1 -0
  345. package/glTF/2.0/Extensions/KHR_materials_unlit.types.d.ts +9 -0
  346. package/glTF/2.0/Extensions/KHR_materials_unlit.types.js +2 -0
  347. package/glTF/2.0/Extensions/KHR_materials_unlit.types.js.map +1 -0
  348. package/glTF/2.0/Extensions/KHR_materials_variants.d.ts +4 -110
  349. package/glTF/2.0/Extensions/KHR_materials_variants.js +6 -260
  350. package/glTF/2.0/Extensions/KHR_materials_variants.js.map +1 -1
  351. package/glTF/2.0/Extensions/KHR_materials_variants.pure.d.ts +97 -0
  352. package/glTF/2.0/Extensions/KHR_materials_variants.pure.js +275 -0
  353. package/glTF/2.0/Extensions/KHR_materials_variants.pure.js.map +1 -0
  354. package/glTF/2.0/Extensions/KHR_materials_variants.types.d.ts +29 -0
  355. package/glTF/2.0/Extensions/KHR_materials_variants.types.js +2 -0
  356. package/glTF/2.0/Extensions/KHR_materials_variants.types.js.map +1 -0
  357. package/glTF/2.0/Extensions/KHR_materials_volume.d.ts +4 -41
  358. package/glTF/2.0/Extensions/KHR_materials_volume.js +6 -77
  359. package/glTF/2.0/Extensions/KHR_materials_volume.js.map +1 -1
  360. package/glTF/2.0/Extensions/KHR_materials_volume.pure.d.ts +40 -0
  361. package/glTF/2.0/Extensions/KHR_materials_volume.pure.js +92 -0
  362. package/glTF/2.0/Extensions/KHR_materials_volume.pure.js.map +1 -0
  363. package/glTF/2.0/Extensions/KHR_materials_volume.types.d.ts +9 -0
  364. package/glTF/2.0/Extensions/KHR_materials_volume.types.js +2 -0
  365. package/glTF/2.0/Extensions/KHR_materials_volume.types.js.map +1 -0
  366. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +4 -43
  367. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +6 -113
  368. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.js.map +1 -1
  369. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.d.ts +42 -0
  370. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.js +128 -0
  371. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.js.map +1 -0
  372. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.types.d.ts +9 -0
  373. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.types.js +2 -0
  374. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.types.js.map +1 -0
  375. package/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +4 -27
  376. package/glTF/2.0/Extensions/KHR_mesh_quantization.js +6 -20
  377. package/glTF/2.0/Extensions/KHR_mesh_quantization.js.map +1 -1
  378. package/glTF/2.0/Extensions/KHR_mesh_quantization.pure.d.ts +26 -0
  379. package/glTF/2.0/Extensions/KHR_mesh_quantization.pure.js +35 -0
  380. package/glTF/2.0/Extensions/KHR_mesh_quantization.pure.js.map +1 -0
  381. package/glTF/2.0/Extensions/KHR_mesh_quantization.types.d.ts +9 -0
  382. package/glTF/2.0/Extensions/KHR_mesh_quantization.types.js +2 -0
  383. package/glTF/2.0/Extensions/KHR_mesh_quantization.types.js.map +1 -0
  384. package/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +4 -29
  385. package/glTF/2.0/Extensions/KHR_node_hoverability.js +6 -187
  386. package/glTF/2.0/Extensions/KHR_node_hoverability.js.map +1 -1
  387. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.d.ts +28 -0
  388. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js +202 -0
  389. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js.map +1 -0
  390. package/glTF/2.0/Extensions/KHR_node_hoverability.types.d.ts +9 -0
  391. package/glTF/2.0/Extensions/KHR_node_hoverability.types.js +2 -0
  392. package/glTF/2.0/Extensions/KHR_node_hoverability.types.js.map +1 -0
  393. package/glTF/2.0/Extensions/KHR_node_selectability.d.ts +4 -28
  394. package/glTF/2.0/Extensions/KHR_node_selectability.js +6 -121
  395. package/glTF/2.0/Extensions/KHR_node_selectability.js.map +1 -1
  396. package/glTF/2.0/Extensions/KHR_node_selectability.pure.d.ts +27 -0
  397. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js +136 -0
  398. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js.map +1 -0
  399. package/glTF/2.0/Extensions/KHR_node_selectability.types.d.ts +9 -0
  400. package/glTF/2.0/Extensions/KHR_node_selectability.types.js +2 -0
  401. package/glTF/2.0/Extensions/KHR_node_selectability.types.js.map +1 -0
  402. package/glTF/2.0/Extensions/KHR_node_visibility.d.ts +4 -28
  403. package/glTF/2.0/Extensions/KHR_node_visibility.js +6 -64
  404. package/glTF/2.0/Extensions/KHR_node_visibility.js.map +1 -1
  405. package/glTF/2.0/Extensions/KHR_node_visibility.pure.d.ts +27 -0
  406. package/glTF/2.0/Extensions/KHR_node_visibility.pure.js +79 -0
  407. package/glTF/2.0/Extensions/KHR_node_visibility.pure.js.map +1 -0
  408. package/glTF/2.0/Extensions/KHR_node_visibility.types.d.ts +9 -0
  409. package/glTF/2.0/Extensions/KHR_node_visibility.types.js +2 -0
  410. package/glTF/2.0/Extensions/KHR_node_visibility.types.js.map +1 -0
  411. package/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +4 -31
  412. package/glTF/2.0/Extensions/KHR_texture_basisu.js +6 -35
  413. package/glTF/2.0/Extensions/KHR_texture_basisu.js.map +1 -1
  414. package/glTF/2.0/Extensions/KHR_texture_basisu.pure.d.ts +30 -0
  415. package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js +50 -0
  416. package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js.map +1 -0
  417. package/glTF/2.0/Extensions/KHR_texture_basisu.types.d.ts +9 -0
  418. package/glTF/2.0/Extensions/KHR_texture_basisu.types.js +2 -0
  419. package/glTF/2.0/Extensions/KHR_texture_basisu.types.js.map +1 -0
  420. package/glTF/2.0/Extensions/KHR_texture_transform.d.ts +4 -35
  421. package/glTF/2.0/Extensions/KHR_texture_transform.js +6 -56
  422. package/glTF/2.0/Extensions/KHR_texture_transform.js.map +1 -1
  423. package/glTF/2.0/Extensions/KHR_texture_transform.pure.d.ts +34 -0
  424. package/glTF/2.0/Extensions/KHR_texture_transform.pure.js +71 -0
  425. package/glTF/2.0/Extensions/KHR_texture_transform.pure.js.map +1 -0
  426. package/glTF/2.0/Extensions/KHR_texture_transform.types.d.ts +9 -0
  427. package/glTF/2.0/Extensions/KHR_texture_transform.types.js +2 -0
  428. package/glTF/2.0/Extensions/KHR_texture_transform.types.js.map +1 -0
  429. package/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +4 -37
  430. package/glTF/2.0/Extensions/KHR_xmp_json_ld.js +6 -45
  431. package/glTF/2.0/Extensions/KHR_xmp_json_ld.js.map +1 -1
  432. package/glTF/2.0/Extensions/KHR_xmp_json_ld.pure.d.ts +36 -0
  433. package/glTF/2.0/Extensions/KHR_xmp_json_ld.pure.js +60 -0
  434. package/glTF/2.0/Extensions/KHR_xmp_json_ld.pure.js.map +1 -0
  435. package/glTF/2.0/Extensions/KHR_xmp_json_ld.types.d.ts +9 -0
  436. package/glTF/2.0/Extensions/KHR_xmp_json_ld.types.js +2 -0
  437. package/glTF/2.0/Extensions/KHR_xmp_json_ld.types.js.map +1 -0
  438. package/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +5 -54
  439. package/glTF/2.0/Extensions/MSFT_audio_emitter.js +7 -226
  440. package/glTF/2.0/Extensions/MSFT_audio_emitter.js.map +1 -1
  441. package/glTF/2.0/Extensions/MSFT_audio_emitter.pure.d.ts +52 -0
  442. package/glTF/2.0/Extensions/MSFT_audio_emitter.pure.js +240 -0
  443. package/glTF/2.0/Extensions/MSFT_audio_emitter.pure.js.map +1 -0
  444. package/glTF/2.0/Extensions/MSFT_audio_emitter.types.d.ts +9 -0
  445. package/glTF/2.0/Extensions/MSFT_audio_emitter.types.js +2 -0
  446. package/glTF/2.0/Extensions/MSFT_audio_emitter.types.js.map +1 -0
  447. package/glTF/2.0/Extensions/MSFT_lod.d.ts +4 -102
  448. package/glTF/2.0/Extensions/MSFT_lod.js +6 -335
  449. package/glTF/2.0/Extensions/MSFT_lod.js.map +1 -1
  450. package/glTF/2.0/Extensions/MSFT_lod.pure.d.ts +96 -0
  451. package/glTF/2.0/Extensions/MSFT_lod.pure.js +350 -0
  452. package/glTF/2.0/Extensions/MSFT_lod.pure.js.map +1 -0
  453. package/glTF/2.0/Extensions/MSFT_lod.types.d.ts +14 -0
  454. package/glTF/2.0/Extensions/MSFT_lod.types.js +2 -0
  455. package/glTF/2.0/Extensions/MSFT_lod.types.js.map +1 -0
  456. package/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +6 -27
  457. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js +8 -40
  458. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js.map +1 -1
  459. package/glTF/2.0/Extensions/MSFT_minecraftMesh.pure.d.ts +24 -0
  460. package/glTF/2.0/Extensions/MSFT_minecraftMesh.pure.js +53 -0
  461. package/glTF/2.0/Extensions/MSFT_minecraftMesh.pure.js.map +1 -0
  462. package/glTF/2.0/Extensions/MSFT_minecraftMesh.types.d.ts +9 -0
  463. package/glTF/2.0/Extensions/MSFT_minecraftMesh.types.js +2 -0
  464. package/glTF/2.0/Extensions/MSFT_minecraftMesh.types.js.map +1 -0
  465. package/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +6 -27
  466. package/glTF/2.0/Extensions/MSFT_sRGBFactors.js +8 -38
  467. package/glTF/2.0/Extensions/MSFT_sRGBFactors.js.map +1 -1
  468. package/glTF/2.0/Extensions/MSFT_sRGBFactors.pure.d.ts +24 -0
  469. package/glTF/2.0/Extensions/MSFT_sRGBFactors.pure.js +51 -0
  470. package/glTF/2.0/Extensions/MSFT_sRGBFactors.pure.js.map +1 -0
  471. package/glTF/2.0/Extensions/MSFT_sRGBFactors.types.d.ts +9 -0
  472. package/glTF/2.0/Extensions/MSFT_sRGBFactors.types.js +2 -0
  473. package/glTF/2.0/Extensions/MSFT_sRGBFactors.types.js.map +1 -0
  474. package/glTF/2.0/Extensions/dynamic.js +5 -0
  475. package/glTF/2.0/Extensions/dynamic.js.map +1 -1
  476. package/glTF/2.0/Extensions/index.d.ts +1 -0
  477. package/glTF/2.0/Extensions/index.js +1 -0
  478. package/glTF/2.0/Extensions/index.js.map +1 -1
  479. package/glTF/2.0/Extensions/objectModelMapping.d.ts +31 -2
  480. package/glTF/2.0/Extensions/objectModelMapping.js +3 -3
  481. package/glTF/2.0/Extensions/objectModelMapping.js.map +1 -1
  482. package/glTF/2.0/Extensions/pure.d.ts +46 -0
  483. package/glTF/2.0/Extensions/pure.js +48 -0
  484. package/glTF/2.0/Extensions/pure.js.map +1 -0
  485. package/glTF/2.0/glTFLoader.d.ts +1 -471
  486. package/glTF/2.0/glTFLoader.js +9 -2570
  487. package/glTF/2.0/glTFLoader.js.map +1 -1
  488. package/glTF/2.0/glTFLoader.pure.d.ts +476 -0
  489. package/glTF/2.0/glTFLoader.pure.js +2606 -0
  490. package/glTF/2.0/glTFLoader.pure.js.map +1 -0
  491. package/glTF/2.0/glTFLoaderAnimation.d.ts +2 -2
  492. package/glTF/2.0/glTFLoaderAnimation.js +2 -2
  493. package/glTF/2.0/glTFLoaderAnimation.js.map +1 -1
  494. package/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +1 -1
  495. package/glTF/2.0/pbrMaterialLoadingAdapter.js +2 -2
  496. package/glTF/2.0/pbrMaterialLoadingAdapter.js.map +1 -1
  497. package/glTF/2.0/pure.d.ts +8 -0
  498. package/glTF/2.0/pure.js +10 -0
  499. package/glTF/2.0/pure.js.map +1 -0
  500. package/glTF/glTFFileLoader.d.ts +5 -571
  501. package/glTF/glTFFileLoader.js +6 -1016
  502. package/glTF/glTFFileLoader.js.map +1 -1
  503. package/glTF/glTFFileLoader.pure.d.ts +582 -0
  504. package/glTF/glTFFileLoader.pure.js +1044 -0
  505. package/glTF/glTFFileLoader.pure.js.map +1 -0
  506. package/glTF/glTFFileLoader.types.d.ts +11 -0
  507. package/glTF/glTFFileLoader.types.js +2 -0
  508. package/glTF/glTFFileLoader.types.js.map +1 -0
  509. package/glTF/glTFValidation.js +1 -1
  510. package/glTF/glTFValidation.js.map +1 -1
  511. package/glTF/pure.d.ts +6 -0
  512. package/glTF/pure.js +8 -0
  513. package/glTF/pure.js.map +1 -0
  514. package/package.json +3 -3
  515. package/pure.d.ts +8 -0
  516. package/pure.js +10 -0
  517. package/pure.js.map +1 -0
@@ -0,0 +1,337 @@
1
+ /** This file must only contain pure code and pure imports */
2
+ /**
3
+ * Shared shader names for the SOG -> decoded work-buffer copy pass.
4
+ */
5
+ export const GaussianSplattingWorkBufferShaderName = "gsSogDecodeToWorkBuffer";
6
+ /**
7
+ * Pass-through vertex shader (GLSL): the geometry is a fullscreen triangle already in NDC.
8
+ */
9
+ export const GaussianSplattingWorkBufferVertexShaderGLSL = `precision highp float;
10
+ attribute vec3 position;
11
+ void main() {
12
+ gl_Position = vec4(position.xy, 0.0, 1.0);
13
+ }
14
+ `;
15
+ /**
16
+ * Fragment shader (GLSL/WebGL2): decodes one SOG source file into the decoded GS work-buffer layout,
17
+ * writing each splat into its allocated pixel. Mirrors the USE_SOG decode in ShadersInclude/gaussianSplatting.fx
18
+ * but outputs the decoded MRT (center, covA, covB, color) consumed by the standard (non-SOG) draw path.
19
+ *
20
+ * MRT layout: 0 = center (x,y,z,1), 1 = covA (Sigma00,01,02,11), 2 = covB (Sigma12,22,0,0), 3 = color (rgba).
21
+ */
22
+ export const GaussianSplattingWorkBufferFragmentShaderGLSL = `precision highp float;
23
+ precision highp int;
24
+
25
+ uniform sampler2D sogMeansLTex;
26
+ uniform sampler2D sogMeansUTex;
27
+ uniform sampler2D sogScalesTex;
28
+ uniform sampler2D sogQuatsTex;
29
+ uniform sampler2D sogSh0Tex;
30
+ uniform sampler2D sogCodebookTex;
31
+
32
+ uniform vec3 sogMeansMin;
33
+ uniform vec3 sogMeansMax;
34
+ uniform vec3 sogScalesMin;
35
+ uniform vec3 sogScalesMax;
36
+ uniform vec4 sogSh0Min;
37
+ uniform vec4 sogSh0Max;
38
+ uniform int uVersion;
39
+ uniform int uOffset;
40
+ uniform int uCount;
41
+ uniform int uDestWidth;
42
+ uniform int uSrcWidth;
43
+
44
+ layout(location = 0) out vec4 glFragData[4];
45
+
46
+ mat3 transposeM(mat3 m) {
47
+ return mat3(m[0][0], m[1][0], m[2][0], m[0][1], m[1][1], m[2][1], m[0][2], m[1][2], m[2][2]);
48
+ }
49
+
50
+ void main() {
51
+ ivec2 p = ivec2(gl_FragCoord.xy);
52
+ int global = p.y * uDestWidth + p.x;
53
+ if (global < uOffset || global >= uOffset + uCount) {
54
+ discard;
55
+ }
56
+ int k = global - uOffset;
57
+ ivec2 src = ivec2(k - (k / uSrcWidth) * uSrcWidth, k / uSrcWidth);
58
+
59
+ vec3 mL = texelFetch(sogMeansLTex, src, 0).xyz;
60
+ vec3 mU = texelFetch(sogMeansUTex, src, 0).xyz;
61
+ vec3 sRaw = texelFetch(sogScalesTex, src, 0).xyz;
62
+ vec4 qRaw = texelFetch(sogQuatsTex, src, 0);
63
+ vec4 c0 = texelFetch(sogSh0Tex, src, 0);
64
+
65
+ // Position: q16 = (u<<8)|l normalized; n = lerp(min,max,q16); pos = sign(n)*(exp(|n|)-1)
66
+ vec3 q16 = (mU * 256.0 + mL) * (255.0 / 65535.0);
67
+ vec3 nPos = mix(sogMeansMin, sogMeansMax, q16);
68
+ vec3 center = sign(nPos) * (exp(abs(nPos)) - vec3(1.0));
69
+
70
+ // Scale (v1: lerp+exp ; v2: codebook lookup)
71
+ vec3 splatScale;
72
+ if (uVersion == 2) {
73
+ vec3 sIdx = floor(sRaw * 255.0 + 0.5);
74
+ splatScale.x = exp(texelFetch(sogCodebookTex, ivec2(int(sIdx.x), 0), 0).r);
75
+ splatScale.y = exp(texelFetch(sogCodebookTex, ivec2(int(sIdx.y), 0), 0).r);
76
+ splatScale.z = exp(texelFetch(sogCodebookTex, ivec2(int(sIdx.z), 0), 0).r);
77
+ } else {
78
+ splatScale = exp(mix(sogScalesMin, sogScalesMax, sRaw));
79
+ }
80
+
81
+ // Quaternion (largest-omitted, mode in alpha as 252 + omitted-index)
82
+ const float invSqrt2 = 0.70710678118;
83
+ vec3 qabc = (qRaw.xyz - vec3(0.5)) * 2.0 * invSqrt2;
84
+ int qMode = int(qRaw.w * 255.0 + 0.5) - 252;
85
+ float qd = sqrt(max(0.0, 1.0 - dot(qabc, qabc)));
86
+ vec4 quat;
87
+ if (qMode == 0) {
88
+ quat = vec4(qd, qabc.x, qabc.y, qabc.z);
89
+ } else if (qMode == 1) {
90
+ quat = vec4(qabc.x, qd, qabc.y, qabc.z);
91
+ } else if (qMode == 2) {
92
+ quat = vec4(qabc.x, qabc.y, qd, qabc.z);
93
+ } else {
94
+ quat = vec4(qabc.x, qabc.y, qabc.z, qd);
95
+ }
96
+
97
+ float qw = quat.x, qx = quat.y, qy = quat.z, qz = quat.w;
98
+ mat3 R = mat3(
99
+ 1.0 - 2.0 * (qy * qy + qz * qz), 2.0 * (qx * qy + qw * qz), 2.0 * (qx * qz - qw * qy),
100
+ 2.0 * (qx * qy - qw * qz), 1.0 - 2.0 * (qx * qx + qz * qz), 2.0 * (qy * qz + qw * qx),
101
+ 2.0 * (qx * qz + qw * qy), 2.0 * (qy * qz - qw * qx), 1.0 - 2.0 * (qx * qx + qy * qy)
102
+ );
103
+ mat3 S2 = mat3(
104
+ 4.0 * splatScale.x * splatScale.x, 0.0, 0.0,
105
+ 0.0, 4.0 * splatScale.y * splatScale.y, 0.0,
106
+ 0.0, 0.0, 4.0 * splatScale.z * splatScale.z
107
+ );
108
+ mat3 Sigma = R * S2 * transposeM(R);
109
+
110
+ // Color (sh0)
111
+ const float SH_C0 = 0.28209479177387814;
112
+ vec3 colRgb;
113
+ float colA;
114
+ if (uVersion == 2) {
115
+ vec3 c3;
116
+ c3.x = texelFetch(sogCodebookTex, ivec2(256 + int(c0.x * 255.0 + 0.5), 0), 0).r;
117
+ c3.y = texelFetch(sogCodebookTex, ivec2(256 + int(c0.y * 255.0 + 0.5), 0), 0).r;
118
+ c3.z = texelFetch(sogCodebookTex, ivec2(256 + int(c0.z * 255.0 + 0.5), 0), 0).r;
119
+ colRgb = vec3(0.5) + c3 * SH_C0;
120
+ colA = c0.w;
121
+ } else {
122
+ vec4 cLerp = mix(sogSh0Min, sogSh0Max, c0);
123
+ colRgb = vec3(0.5) + cLerp.xyz * SH_C0;
124
+ colA = 1.0 / (1.0 + exp(-cLerp.w));
125
+ }
126
+
127
+ glFragData[0] = vec4(center, 1.0);
128
+ glFragData[1] = vec4(Sigma[0][0], Sigma[0][1], Sigma[0][2], Sigma[1][1]);
129
+ glFragData[2] = vec4(Sigma[1][2], Sigma[2][2], 0.0, 0.0);
130
+ glFragData[3] = vec4(colRgb, colA);
131
+ }
132
+ `;
133
+ /**
134
+ * Pass-through vertex shader (WGSL).
135
+ */
136
+ export const GaussianSplattingWorkBufferVertexShaderWGSL = `
137
+ attribute position : vec3<f32>;
138
+ @vertex
139
+ fn main(input : VertexInputs) -> FragmentInputs {
140
+ vertexOutputs.position = vec4<f32>(input.position.xy, 0.0, 1.0);
141
+ }
142
+ `;
143
+ /**
144
+ * Fragment shader (WGSL/WebGPU) — same decode as the GLSL variant, writing 4 MRT attachments.
145
+ */
146
+ export const GaussianSplattingWorkBufferFragmentShaderWGSL = `
147
+ var sogMeansLTexSampler : sampler;
148
+ var sogMeansLTex : texture_2d<f32>;
149
+ var sogMeansUTexSampler : sampler;
150
+ var sogMeansUTex : texture_2d<f32>;
151
+ var sogScalesTexSampler : sampler;
152
+ var sogScalesTex : texture_2d<f32>;
153
+ var sogQuatsTexSampler : sampler;
154
+ var sogQuatsTex : texture_2d<f32>;
155
+ var sogSh0TexSampler : sampler;
156
+ var sogSh0Tex : texture_2d<f32>;
157
+ var sogCodebookTexSampler : sampler;
158
+ var sogCodebookTex : texture_2d<f32>;
159
+
160
+ uniform sogMeansMin : vec3<f32>;
161
+ uniform sogMeansMax : vec3<f32>;
162
+ uniform sogScalesMin : vec3<f32>;
163
+ uniform sogScalesMax : vec3<f32>;
164
+ uniform sogSh0Min : vec4<f32>;
165
+ uniform sogSh0Max : vec4<f32>;
166
+ uniform uVersion : i32;
167
+ uniform uOffset : i32;
168
+ uniform uCount : i32;
169
+ uniform uDestWidth : i32;
170
+ uniform uSrcWidth : i32;
171
+
172
+ @fragment
173
+ fn main(input : FragmentInputs) -> FragmentOutputs {
174
+ let p : vec2<i32> = vec2<i32>(i32(fragmentInputs.position.x), i32(fragmentInputs.position.y));
175
+ let global : i32 = p.y * uniforms.uDestWidth + p.x;
176
+ if (global < uniforms.uOffset || global >= uniforms.uOffset + uniforms.uCount) {
177
+ discard;
178
+ }
179
+ let k : i32 = global - uniforms.uOffset;
180
+ let src : vec2<i32> = vec2<i32>(k - (k / uniforms.uSrcWidth) * uniforms.uSrcWidth, k / uniforms.uSrcWidth);
181
+
182
+ let mL : vec3<f32> = textureLoad(sogMeansLTex, src, 0).xyz;
183
+ let mU : vec3<f32> = textureLoad(sogMeansUTex, src, 0).xyz;
184
+ let sRaw : vec3<f32> = textureLoad(sogScalesTex, src, 0).xyz;
185
+ let qRaw : vec4<f32> = textureLoad(sogQuatsTex, src, 0);
186
+ let c0 : vec4<f32> = textureLoad(sogSh0Tex, src, 0);
187
+
188
+ let q16 : vec3<f32> = (mU * 256.0 + mL) * (255.0 / 65535.0);
189
+ let nPos : vec3<f32> = mix(uniforms.sogMeansMin, uniforms.sogMeansMax, q16);
190
+ let center : vec3<f32> = sign(nPos) * (exp(abs(nPos)) - vec3<f32>(1.0));
191
+
192
+ var splatScale : vec3<f32>;
193
+ if (uniforms.uVersion == 2) {
194
+ let sIdx : vec3<f32> = floor(sRaw * 255.0 + 0.5);
195
+ splatScale.x = exp(textureLoad(sogCodebookTex, vec2<i32>(i32(sIdx.x), 0), 0).r);
196
+ splatScale.y = exp(textureLoad(sogCodebookTex, vec2<i32>(i32(sIdx.y), 0), 0).r);
197
+ splatScale.z = exp(textureLoad(sogCodebookTex, vec2<i32>(i32(sIdx.z), 0), 0).r);
198
+ } else {
199
+ splatScale = exp(mix(uniforms.sogScalesMin, uniforms.sogScalesMax, sRaw));
200
+ }
201
+
202
+ let invSqrt2 : f32 = 0.70710678118;
203
+ let qabc : vec3<f32> = (qRaw.xyz - vec3<f32>(0.5)) * 2.0 * invSqrt2;
204
+ let qMode : i32 = i32(qRaw.w * 255.0 + 0.5) - 252;
205
+ let qd : f32 = sqrt(max(0.0, 1.0 - dot(qabc, qabc)));
206
+ var quat : vec4<f32>;
207
+ if (qMode == 0) {
208
+ quat = vec4<f32>(qd, qabc.x, qabc.y, qabc.z);
209
+ } else if (qMode == 1) {
210
+ quat = vec4<f32>(qabc.x, qd, qabc.y, qabc.z);
211
+ } else if (qMode == 2) {
212
+ quat = vec4<f32>(qabc.x, qabc.y, qd, qabc.z);
213
+ } else {
214
+ quat = vec4<f32>(qabc.x, qabc.y, qabc.z, qd);
215
+ }
216
+
217
+ let qw : f32 = quat.x;
218
+ let qx : f32 = quat.y;
219
+ let qy : f32 = quat.z;
220
+ let qz : f32 = quat.w;
221
+ let R : mat3x3<f32> = mat3x3<f32>(
222
+ 1.0 - 2.0 * (qy * qy + qz * qz), 2.0 * (qx * qy + qw * qz), 2.0 * (qx * qz - qw * qy),
223
+ 2.0 * (qx * qy - qw * qz), 1.0 - 2.0 * (qx * qx + qz * qz), 2.0 * (qy * qz + qw * qx),
224
+ 2.0 * (qx * qz + qw * qy), 2.0 * (qy * qz - qw * qx), 1.0 - 2.0 * (qx * qx + qy * qy)
225
+ );
226
+ let S2 : mat3x3<f32> = mat3x3<f32>(
227
+ 4.0 * splatScale.x * splatScale.x, 0.0, 0.0,
228
+ 0.0, 4.0 * splatScale.y * splatScale.y, 0.0,
229
+ 0.0, 0.0, 4.0 * splatScale.z * splatScale.z
230
+ );
231
+ let Sigma : mat3x3<f32> = R * S2 * transpose(R);
232
+
233
+ let SH_C0 : f32 = 0.28209479177387814;
234
+ var colRgb : vec3<f32>;
235
+ var colA : f32;
236
+ if (uniforms.uVersion == 2) {
237
+ var c3 : vec3<f32>;
238
+ c3.x = textureLoad(sogCodebookTex, vec2<i32>(256 + i32(c0.x * 255.0 + 0.5), 0), 0).r;
239
+ c3.y = textureLoad(sogCodebookTex, vec2<i32>(256 + i32(c0.y * 255.0 + 0.5), 0), 0).r;
240
+ c3.z = textureLoad(sogCodebookTex, vec2<i32>(256 + i32(c0.z * 255.0 + 0.5), 0), 0).r;
241
+ colRgb = vec3<f32>(0.5) + c3 * SH_C0;
242
+ colA = c0.w;
243
+ } else {
244
+ let cLerp : vec4<f32> = mix(uniforms.sogSh0Min, uniforms.sogSh0Max, c0);
245
+ colRgb = vec3<f32>(0.5) + cLerp.xyz * SH_C0;
246
+ colA = 1.0 / (1.0 + exp(-cLerp.w));
247
+ }
248
+
249
+ fragmentOutputs.fragData0 = vec4<f32>(center, 1.0);
250
+ fragmentOutputs.fragData1 = vec4<f32>(Sigma[0][0], Sigma[0][1], Sigma[0][2], Sigma[1][1]);
251
+ fragmentOutputs.fragData2 = vec4<f32>(Sigma[1][2], Sigma[2][2], 0.0, 0.0);
252
+ fragmentOutputs.fragData3 = vec4<f32>(colRgb, colA);
253
+ }
254
+ `;
255
+ /**
256
+ * Shader name for the work-buffer relayout (defrag/compaction) copy pass.
257
+ */
258
+ export const GaussianSplattingWorkBufferRelayoutShaderName = "gsWorkBufferRelayout";
259
+ /**
260
+ * Relayout copy fragment shader (GLSL/WebGL2). Copies the four decoded work-buffer textures from a source
261
+ * layout to a destination layout, one output texel per draw. In map mode (`uUseMap == 1`) each destination
262
+ * texel reads its source splat index from `uMapTex` (R32F; a negative value marks a gap and is discarded so
263
+ * the cleared destination stays zero). In identity mode the source texel equals the destination texel.
264
+ */
265
+ export const GaussianSplattingWorkBufferRelayoutFragmentShaderGLSL = `precision highp float;
266
+ precision highp int;
267
+
268
+ uniform sampler2D uMapTex;
269
+ uniform sampler2D uSrc0;
270
+ uniform sampler2D uSrc1;
271
+ uniform sampler2D uSrc2;
272
+ uniform sampler2D uSrc3;
273
+ uniform int uDstWidth;
274
+ uniform int uSrcWidth;
275
+ uniform int uUseMap;
276
+
277
+ layout(location = 0) out vec4 glFragData[4];
278
+
279
+ void main() {
280
+ ivec2 p = ivec2(gl_FragCoord.xy);
281
+ int srcIdx;
282
+ if (uUseMap == 1) {
283
+ float m = texelFetch(uMapTex, p, 0).r;
284
+ if (m < 0.0) {
285
+ discard;
286
+ }
287
+ srcIdx = int(m + 0.5);
288
+ } else {
289
+ srcIdx = p.y * uDstWidth + p.x;
290
+ }
291
+ ivec2 s = ivec2(srcIdx - (srcIdx / uSrcWidth) * uSrcWidth, srcIdx / uSrcWidth);
292
+ glFragData[0] = texelFetch(uSrc0, s, 0);
293
+ glFragData[1] = texelFetch(uSrc1, s, 0);
294
+ glFragData[2] = texelFetch(uSrc2, s, 0);
295
+ glFragData[3] = texelFetch(uSrc3, s, 0);
296
+ }
297
+ `;
298
+ /**
299
+ * Relayout copy fragment shader (WGSL/WebGPU) — same copy as the GLSL variant.
300
+ */
301
+ export const GaussianSplattingWorkBufferRelayoutFragmentShaderWGSL = `
302
+ var uMapTexSampler : sampler;
303
+ var uMapTex : texture_2d<f32>;
304
+ var uSrc0Sampler : sampler;
305
+ var uSrc0 : texture_2d<f32>;
306
+ var uSrc1Sampler : sampler;
307
+ var uSrc1 : texture_2d<f32>;
308
+ var uSrc2Sampler : sampler;
309
+ var uSrc2 : texture_2d<f32>;
310
+ var uSrc3Sampler : sampler;
311
+ var uSrc3 : texture_2d<f32>;
312
+
313
+ uniform uDstWidth : i32;
314
+ uniform uSrcWidth : i32;
315
+ uniform uUseMap : i32;
316
+
317
+ @fragment
318
+ fn main(input : FragmentInputs) -> FragmentOutputs {
319
+ let p : vec2<i32> = vec2<i32>(i32(fragmentInputs.position.x), i32(fragmentInputs.position.y));
320
+ var srcIdx : i32;
321
+ if (uniforms.uUseMap == 1) {
322
+ let m : f32 = textureLoad(uMapTex, p, 0).r;
323
+ if (m < 0.0) {
324
+ discard;
325
+ }
326
+ srcIdx = i32(m + 0.5);
327
+ } else {
328
+ srcIdx = p.y * uniforms.uDstWidth + p.x;
329
+ }
330
+ let s : vec2<i32> = vec2<i32>(srcIdx - (srcIdx / uniforms.uSrcWidth) * uniforms.uSrcWidth, srcIdx / uniforms.uSrcWidth);
331
+ fragmentOutputs.fragData0 = textureLoad(uSrc0, s, 0);
332
+ fragmentOutputs.fragData1 = textureLoad(uSrc1, s, 0);
333
+ fragmentOutputs.fragData2 = textureLoad(uSrc2, s, 0);
334
+ fragmentOutputs.fragData3 = textureLoad(uSrc3, s, 0);
335
+ }
336
+ `;
337
+ //# sourceMappingURL=gaussianSplattingWorkBufferShaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaussianSplattingWorkBufferShaders.js","sourceRoot":"","sources":["../../../../dev/loaders/src/SPLAT/gaussianSplattingWorkBufferShaders.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,yBAAyB,CAAC;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG;;;;;CAK1D,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8G5D,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG;;;;;;CAM1D,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4G5D,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,6CAA6C,GAAG,sBAAsB,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCpE,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qDAAqD,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCpE,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\n/**\r\n * Shared shader names for the SOG -> decoded work-buffer copy pass.\r\n */\r\nexport const GaussianSplattingWorkBufferShaderName = \"gsSogDecodeToWorkBuffer\";\r\n\r\n/**\r\n * Pass-through vertex shader (GLSL): the geometry is a fullscreen triangle already in NDC.\r\n */\r\nexport const GaussianSplattingWorkBufferVertexShaderGLSL = `precision highp float;\r\nattribute vec3 position;\r\nvoid main() {\r\n gl_Position = vec4(position.xy, 0.0, 1.0);\r\n}\r\n`;\r\n\r\n/**\r\n * Fragment shader (GLSL/WebGL2): decodes one SOG source file into the decoded GS work-buffer layout,\r\n * writing each splat into its allocated pixel. Mirrors the USE_SOG decode in ShadersInclude/gaussianSplatting.fx\r\n * but outputs the decoded MRT (center, covA, covB, color) consumed by the standard (non-SOG) draw path.\r\n *\r\n * MRT layout: 0 = center (x,y,z,1), 1 = covA (Sigma00,01,02,11), 2 = covB (Sigma12,22,0,0), 3 = color (rgba).\r\n */\r\nexport const GaussianSplattingWorkBufferFragmentShaderGLSL = `precision highp float;\r\nprecision highp int;\r\n\r\nuniform sampler2D sogMeansLTex;\r\nuniform sampler2D sogMeansUTex;\r\nuniform sampler2D sogScalesTex;\r\nuniform sampler2D sogQuatsTex;\r\nuniform sampler2D sogSh0Tex;\r\nuniform sampler2D sogCodebookTex;\r\n\r\nuniform vec3 sogMeansMin;\r\nuniform vec3 sogMeansMax;\r\nuniform vec3 sogScalesMin;\r\nuniform vec3 sogScalesMax;\r\nuniform vec4 sogSh0Min;\r\nuniform vec4 sogSh0Max;\r\nuniform int uVersion;\r\nuniform int uOffset;\r\nuniform int uCount;\r\nuniform int uDestWidth;\r\nuniform int uSrcWidth;\r\n\r\nlayout(location = 0) out vec4 glFragData[4];\r\n\r\nmat3 transposeM(mat3 m) {\r\n return mat3(m[0][0], m[1][0], m[2][0], m[0][1], m[1][1], m[2][1], m[0][2], m[1][2], m[2][2]);\r\n}\r\n\r\nvoid main() {\r\n ivec2 p = ivec2(gl_FragCoord.xy);\r\n int global = p.y * uDestWidth + p.x;\r\n if (global < uOffset || global >= uOffset + uCount) {\r\n discard;\r\n }\r\n int k = global - uOffset;\r\n ivec2 src = ivec2(k - (k / uSrcWidth) * uSrcWidth, k / uSrcWidth);\r\n\r\n vec3 mL = texelFetch(sogMeansLTex, src, 0).xyz;\r\n vec3 mU = texelFetch(sogMeansUTex, src, 0).xyz;\r\n vec3 sRaw = texelFetch(sogScalesTex, src, 0).xyz;\r\n vec4 qRaw = texelFetch(sogQuatsTex, src, 0);\r\n vec4 c0 = texelFetch(sogSh0Tex, src, 0);\r\n\r\n // Position: q16 = (u<<8)|l normalized; n = lerp(min,max,q16); pos = sign(n)*(exp(|n|)-1)\r\n vec3 q16 = (mU * 256.0 + mL) * (255.0 / 65535.0);\r\n vec3 nPos = mix(sogMeansMin, sogMeansMax, q16);\r\n vec3 center = sign(nPos) * (exp(abs(nPos)) - vec3(1.0));\r\n\r\n // Scale (v1: lerp+exp ; v2: codebook lookup)\r\n vec3 splatScale;\r\n if (uVersion == 2) {\r\n vec3 sIdx = floor(sRaw * 255.0 + 0.5);\r\n splatScale.x = exp(texelFetch(sogCodebookTex, ivec2(int(sIdx.x), 0), 0).r);\r\n splatScale.y = exp(texelFetch(sogCodebookTex, ivec2(int(sIdx.y), 0), 0).r);\r\n splatScale.z = exp(texelFetch(sogCodebookTex, ivec2(int(sIdx.z), 0), 0).r);\r\n } else {\r\n splatScale = exp(mix(sogScalesMin, sogScalesMax, sRaw));\r\n }\r\n\r\n // Quaternion (largest-omitted, mode in alpha as 252 + omitted-index)\r\n const float invSqrt2 = 0.70710678118;\r\n vec3 qabc = (qRaw.xyz - vec3(0.5)) * 2.0 * invSqrt2;\r\n int qMode = int(qRaw.w * 255.0 + 0.5) - 252;\r\n float qd = sqrt(max(0.0, 1.0 - dot(qabc, qabc)));\r\n vec4 quat;\r\n if (qMode == 0) {\r\n quat = vec4(qd, qabc.x, qabc.y, qabc.z);\r\n } else if (qMode == 1) {\r\n quat = vec4(qabc.x, qd, qabc.y, qabc.z);\r\n } else if (qMode == 2) {\r\n quat = vec4(qabc.x, qabc.y, qd, qabc.z);\r\n } else {\r\n quat = vec4(qabc.x, qabc.y, qabc.z, qd);\r\n }\r\n\r\n float qw = quat.x, qx = quat.y, qy = quat.z, qz = quat.w;\r\n mat3 R = mat3(\r\n 1.0 - 2.0 * (qy * qy + qz * qz), 2.0 * (qx * qy + qw * qz), 2.0 * (qx * qz - qw * qy),\r\n 2.0 * (qx * qy - qw * qz), 1.0 - 2.0 * (qx * qx + qz * qz), 2.0 * (qy * qz + qw * qx),\r\n 2.0 * (qx * qz + qw * qy), 2.0 * (qy * qz - qw * qx), 1.0 - 2.0 * (qx * qx + qy * qy)\r\n );\r\n mat3 S2 = mat3(\r\n 4.0 * splatScale.x * splatScale.x, 0.0, 0.0,\r\n 0.0, 4.0 * splatScale.y * splatScale.y, 0.0,\r\n 0.0, 0.0, 4.0 * splatScale.z * splatScale.z\r\n );\r\n mat3 Sigma = R * S2 * transposeM(R);\r\n\r\n // Color (sh0)\r\n const float SH_C0 = 0.28209479177387814;\r\n vec3 colRgb;\r\n float colA;\r\n if (uVersion == 2) {\r\n vec3 c3;\r\n c3.x = texelFetch(sogCodebookTex, ivec2(256 + int(c0.x * 255.0 + 0.5), 0), 0).r;\r\n c3.y = texelFetch(sogCodebookTex, ivec2(256 + int(c0.y * 255.0 + 0.5), 0), 0).r;\r\n c3.z = texelFetch(sogCodebookTex, ivec2(256 + int(c0.z * 255.0 + 0.5), 0), 0).r;\r\n colRgb = vec3(0.5) + c3 * SH_C0;\r\n colA = c0.w;\r\n } else {\r\n vec4 cLerp = mix(sogSh0Min, sogSh0Max, c0);\r\n colRgb = vec3(0.5) + cLerp.xyz * SH_C0;\r\n colA = 1.0 / (1.0 + exp(-cLerp.w));\r\n }\r\n\r\n glFragData[0] = vec4(center, 1.0);\r\n glFragData[1] = vec4(Sigma[0][0], Sigma[0][1], Sigma[0][2], Sigma[1][1]);\r\n glFragData[2] = vec4(Sigma[1][2], Sigma[2][2], 0.0, 0.0);\r\n glFragData[3] = vec4(colRgb, colA);\r\n}\r\n`;\r\n\r\n/**\r\n * Pass-through vertex shader (WGSL).\r\n */\r\nexport const GaussianSplattingWorkBufferVertexShaderWGSL = `\r\nattribute position : vec3<f32>;\r\n@vertex\r\nfn main(input : VertexInputs) -> FragmentInputs {\r\n vertexOutputs.position = vec4<f32>(input.position.xy, 0.0, 1.0);\r\n}\r\n`;\r\n\r\n/**\r\n * Fragment shader (WGSL/WebGPU) — same decode as the GLSL variant, writing 4 MRT attachments.\r\n */\r\nexport const GaussianSplattingWorkBufferFragmentShaderWGSL = `\r\nvar sogMeansLTexSampler : sampler;\r\nvar sogMeansLTex : texture_2d<f32>;\r\nvar sogMeansUTexSampler : sampler;\r\nvar sogMeansUTex : texture_2d<f32>;\r\nvar sogScalesTexSampler : sampler;\r\nvar sogScalesTex : texture_2d<f32>;\r\nvar sogQuatsTexSampler : sampler;\r\nvar sogQuatsTex : texture_2d<f32>;\r\nvar sogSh0TexSampler : sampler;\r\nvar sogSh0Tex : texture_2d<f32>;\r\nvar sogCodebookTexSampler : sampler;\r\nvar sogCodebookTex : texture_2d<f32>;\r\n\r\nuniform sogMeansMin : vec3<f32>;\r\nuniform sogMeansMax : vec3<f32>;\r\nuniform sogScalesMin : vec3<f32>;\r\nuniform sogScalesMax : vec3<f32>;\r\nuniform sogSh0Min : vec4<f32>;\r\nuniform sogSh0Max : vec4<f32>;\r\nuniform uVersion : i32;\r\nuniform uOffset : i32;\r\nuniform uCount : i32;\r\nuniform uDestWidth : i32;\r\nuniform uSrcWidth : i32;\r\n\r\n@fragment\r\nfn main(input : FragmentInputs) -> FragmentOutputs {\r\n let p : vec2<i32> = vec2<i32>(i32(fragmentInputs.position.x), i32(fragmentInputs.position.y));\r\n let global : i32 = p.y * uniforms.uDestWidth + p.x;\r\n if (global < uniforms.uOffset || global >= uniforms.uOffset + uniforms.uCount) {\r\n discard;\r\n }\r\n let k : i32 = global - uniforms.uOffset;\r\n let src : vec2<i32> = vec2<i32>(k - (k / uniforms.uSrcWidth) * uniforms.uSrcWidth, k / uniforms.uSrcWidth);\r\n\r\n let mL : vec3<f32> = textureLoad(sogMeansLTex, src, 0).xyz;\r\n let mU : vec3<f32> = textureLoad(sogMeansUTex, src, 0).xyz;\r\n let sRaw : vec3<f32> = textureLoad(sogScalesTex, src, 0).xyz;\r\n let qRaw : vec4<f32> = textureLoad(sogQuatsTex, src, 0);\r\n let c0 : vec4<f32> = textureLoad(sogSh0Tex, src, 0);\r\n\r\n let q16 : vec3<f32> = (mU * 256.0 + mL) * (255.0 / 65535.0);\r\n let nPos : vec3<f32> = mix(uniforms.sogMeansMin, uniforms.sogMeansMax, q16);\r\n let center : vec3<f32> = sign(nPos) * (exp(abs(nPos)) - vec3<f32>(1.0));\r\n\r\n var splatScale : vec3<f32>;\r\n if (uniforms.uVersion == 2) {\r\n let sIdx : vec3<f32> = floor(sRaw * 255.0 + 0.5);\r\n splatScale.x = exp(textureLoad(sogCodebookTex, vec2<i32>(i32(sIdx.x), 0), 0).r);\r\n splatScale.y = exp(textureLoad(sogCodebookTex, vec2<i32>(i32(sIdx.y), 0), 0).r);\r\n splatScale.z = exp(textureLoad(sogCodebookTex, vec2<i32>(i32(sIdx.z), 0), 0).r);\r\n } else {\r\n splatScale = exp(mix(uniforms.sogScalesMin, uniforms.sogScalesMax, sRaw));\r\n }\r\n\r\n let invSqrt2 : f32 = 0.70710678118;\r\n let qabc : vec3<f32> = (qRaw.xyz - vec3<f32>(0.5)) * 2.0 * invSqrt2;\r\n let qMode : i32 = i32(qRaw.w * 255.0 + 0.5) - 252;\r\n let qd : f32 = sqrt(max(0.0, 1.0 - dot(qabc, qabc)));\r\n var quat : vec4<f32>;\r\n if (qMode == 0) {\r\n quat = vec4<f32>(qd, qabc.x, qabc.y, qabc.z);\r\n } else if (qMode == 1) {\r\n quat = vec4<f32>(qabc.x, qd, qabc.y, qabc.z);\r\n } else if (qMode == 2) {\r\n quat = vec4<f32>(qabc.x, qabc.y, qd, qabc.z);\r\n } else {\r\n quat = vec4<f32>(qabc.x, qabc.y, qabc.z, qd);\r\n }\r\n\r\n let qw : f32 = quat.x;\r\n let qx : f32 = quat.y;\r\n let qy : f32 = quat.z;\r\n let qz : f32 = quat.w;\r\n let R : mat3x3<f32> = mat3x3<f32>(\r\n 1.0 - 2.0 * (qy * qy + qz * qz), 2.0 * (qx * qy + qw * qz), 2.0 * (qx * qz - qw * qy),\r\n 2.0 * (qx * qy - qw * qz), 1.0 - 2.0 * (qx * qx + qz * qz), 2.0 * (qy * qz + qw * qx),\r\n 2.0 * (qx * qz + qw * qy), 2.0 * (qy * qz - qw * qx), 1.0 - 2.0 * (qx * qx + qy * qy)\r\n );\r\n let S2 : mat3x3<f32> = mat3x3<f32>(\r\n 4.0 * splatScale.x * splatScale.x, 0.0, 0.0,\r\n 0.0, 4.0 * splatScale.y * splatScale.y, 0.0,\r\n 0.0, 0.0, 4.0 * splatScale.z * splatScale.z\r\n );\r\n let Sigma : mat3x3<f32> = R * S2 * transpose(R);\r\n\r\n let SH_C0 : f32 = 0.28209479177387814;\r\n var colRgb : vec3<f32>;\r\n var colA : f32;\r\n if (uniforms.uVersion == 2) {\r\n var c3 : vec3<f32>;\r\n c3.x = textureLoad(sogCodebookTex, vec2<i32>(256 + i32(c0.x * 255.0 + 0.5), 0), 0).r;\r\n c3.y = textureLoad(sogCodebookTex, vec2<i32>(256 + i32(c0.y * 255.0 + 0.5), 0), 0).r;\r\n c3.z = textureLoad(sogCodebookTex, vec2<i32>(256 + i32(c0.z * 255.0 + 0.5), 0), 0).r;\r\n colRgb = vec3<f32>(0.5) + c3 * SH_C0;\r\n colA = c0.w;\r\n } else {\r\n let cLerp : vec4<f32> = mix(uniforms.sogSh0Min, uniforms.sogSh0Max, c0);\r\n colRgb = vec3<f32>(0.5) + cLerp.xyz * SH_C0;\r\n colA = 1.0 / (1.0 + exp(-cLerp.w));\r\n }\r\n\r\n fragmentOutputs.fragData0 = vec4<f32>(center, 1.0);\r\n fragmentOutputs.fragData1 = vec4<f32>(Sigma[0][0], Sigma[0][1], Sigma[0][2], Sigma[1][1]);\r\n fragmentOutputs.fragData2 = vec4<f32>(Sigma[1][2], Sigma[2][2], 0.0, 0.0);\r\n fragmentOutputs.fragData3 = vec4<f32>(colRgb, colA);\r\n}\r\n`;\r\n\r\n/**\r\n * Shader name for the work-buffer relayout (defrag/compaction) copy pass.\r\n */\r\nexport const GaussianSplattingWorkBufferRelayoutShaderName = \"gsWorkBufferRelayout\";\r\n\r\n/**\r\n * Relayout copy fragment shader (GLSL/WebGL2). Copies the four decoded work-buffer textures from a source\r\n * layout to a destination layout, one output texel per draw. In map mode (`uUseMap == 1`) each destination\r\n * texel reads its source splat index from `uMapTex` (R32F; a negative value marks a gap and is discarded so\r\n * the cleared destination stays zero). In identity mode the source texel equals the destination texel.\r\n */\r\nexport const GaussianSplattingWorkBufferRelayoutFragmentShaderGLSL = `precision highp float;\r\nprecision highp int;\r\n\r\nuniform sampler2D uMapTex;\r\nuniform sampler2D uSrc0;\r\nuniform sampler2D uSrc1;\r\nuniform sampler2D uSrc2;\r\nuniform sampler2D uSrc3;\r\nuniform int uDstWidth;\r\nuniform int uSrcWidth;\r\nuniform int uUseMap;\r\n\r\nlayout(location = 0) out vec4 glFragData[4];\r\n\r\nvoid main() {\r\n ivec2 p = ivec2(gl_FragCoord.xy);\r\n int srcIdx;\r\n if (uUseMap == 1) {\r\n float m = texelFetch(uMapTex, p, 0).r;\r\n if (m < 0.0) {\r\n discard;\r\n }\r\n srcIdx = int(m + 0.5);\r\n } else {\r\n srcIdx = p.y * uDstWidth + p.x;\r\n }\r\n ivec2 s = ivec2(srcIdx - (srcIdx / uSrcWidth) * uSrcWidth, srcIdx / uSrcWidth);\r\n glFragData[0] = texelFetch(uSrc0, s, 0);\r\n glFragData[1] = texelFetch(uSrc1, s, 0);\r\n glFragData[2] = texelFetch(uSrc2, s, 0);\r\n glFragData[3] = texelFetch(uSrc3, s, 0);\r\n}\r\n`;\r\n\r\n/**\r\n * Relayout copy fragment shader (WGSL/WebGPU) — same copy as the GLSL variant.\r\n */\r\nexport const GaussianSplattingWorkBufferRelayoutFragmentShaderWGSL = `\r\nvar uMapTexSampler : sampler;\r\nvar uMapTex : texture_2d<f32>;\r\nvar uSrc0Sampler : sampler;\r\nvar uSrc0 : texture_2d<f32>;\r\nvar uSrc1Sampler : sampler;\r\nvar uSrc1 : texture_2d<f32>;\r\nvar uSrc2Sampler : sampler;\r\nvar uSrc2 : texture_2d<f32>;\r\nvar uSrc3Sampler : sampler;\r\nvar uSrc3 : texture_2d<f32>;\r\n\r\nuniform uDstWidth : i32;\r\nuniform uSrcWidth : i32;\r\nuniform uUseMap : i32;\r\n\r\n@fragment\r\nfn main(input : FragmentInputs) -> FragmentOutputs {\r\n let p : vec2<i32> = vec2<i32>(i32(fragmentInputs.position.x), i32(fragmentInputs.position.y));\r\n var srcIdx : i32;\r\n if (uniforms.uUseMap == 1) {\r\n let m : f32 = textureLoad(uMapTex, p, 0).r;\r\n if (m < 0.0) {\r\n discard;\r\n }\r\n srcIdx = i32(m + 0.5);\r\n } else {\r\n srcIdx = p.y * uniforms.uDstWidth + p.x;\r\n }\r\n let s : vec2<i32> = vec2<i32>(srcIdx - (srcIdx / uniforms.uSrcWidth) * uniforms.uSrcWidth, srcIdx / uniforms.uSrcWidth);\r\n fragmentOutputs.fragData0 = textureLoad(uSrc0, s, 0);\r\n fragmentOutputs.fragData1 = textureLoad(uSrc1, s, 0);\r\n fragmentOutputs.fragData2 = textureLoad(uSrc2, s, 0);\r\n fragmentOutputs.fragData3 = textureLoad(uSrc3, s, 0);\r\n}\r\n`;\r\n"]}
package/SPLAT/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from "./splatLoadingOptions.js";
2
2
  export * from "./splatFileLoader.js";
3
+ export * from "./gaussianSplattingStream.js";
package/SPLAT/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-restricted-imports */
2
2
  export * from "./splatLoadingOptions.js";
3
3
  export * from "./splatFileLoader.js";
4
+ export * from "./gaussianSplattingStream.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/loaders/src/SPLAT/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./splatLoadingOptions\";\r\nexport * from \"./splatFileLoader\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/loaders/src/SPLAT/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./splatLoadingOptions\";\r\nexport * from \"./splatFileLoader\";\r\nexport * from \"./gaussianSplattingStream\";\r\n"]}
@@ -0,0 +1,5 @@
1
+ /** Pure barrel — re-exports only side-effect-free modules */
2
+ export * from "./splatLoadingOptions.js";
3
+ export * from "./splatFileLoader.pure.js";
4
+ export * from "./gaussianSplattingStream.js";
5
+ export * from "./sog.pure.js";
package/SPLAT/pure.js ADDED
@@ -0,0 +1,7 @@
1
+ /** Pure barrel — re-exports only side-effect-free modules */
2
+ /* eslint-disable @typescript-eslint/no-restricted-imports */
3
+ export * from "./splatLoadingOptions.js";
4
+ export * from "./splatFileLoader.pure.js";
5
+ export * from "./gaussianSplattingStream.js";
6
+ export * from "./sog.pure.js";
7
+ //# sourceMappingURL=pure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/loaders/src/SPLAT/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./splatLoadingOptions\";\nexport * from \"./splatFileLoader.pure\";\nexport * from \"./gaussianSplattingStream\";\nexport * from \"./sog.pure\";\n"]}
package/SPLAT/sog.d.ts CHANGED
@@ -1,93 +1,2 @@
1
- import { type Scene } from "@onerjs/core/scene.js";
2
- import { type IParsedSplat } from "./splatDefs.js";
3
- /**
4
- * Definition of a SOG data file
5
- */
6
- export interface SOGDataFile {
7
- /**
8
- * index 0 is number of splats index 1 is number of components per splat (3 for vec3, 4 for vec4, etc.)
9
- */
10
- shape: number[];
11
- /**
12
- * type of components
13
- */
14
- dtype: string;
15
- /**
16
- * min range of data
17
- */
18
- mins?: number | number[];
19
- /**
20
- * max range of data
21
- */
22
- maxs?: number | number[];
23
- /**
24
- * palette for indexed data (quantized)
25
- */
26
- codebook?: number[];
27
- /**
28
- * type of encoding
29
- */
30
- encoding?: string;
31
- /**
32
- * number of bits for quantization (if any)
33
- */
34
- quantization?: number;
35
- /**
36
- * webp file names
37
- */
38
- files: string[];
39
- /**
40
- * SH band count (if applicable)
41
- */
42
- bands?: number;
43
- }
44
- /**
45
- * Definition of the root SOG data file
46
- */
47
- export interface SOGRootData {
48
- /**
49
- * version of the SOG format
50
- */
51
- version?: number;
52
- /**
53
- * mean positions of the splats
54
- */
55
- means: SOGDataFile;
56
- /**
57
- * scales of the splats
58
- */
59
- scales: SOGDataFile;
60
- /**
61
- * quaternions of the splats
62
- */
63
- quats: SOGDataFile;
64
- /**
65
- * SH0 coefficients of the splats (base color)
66
- */
67
- sh0: SOGDataFile;
68
- /**
69
- * Optional higher order SH coefficients of the splats (lighting information)
70
- */
71
- shN?: SOGDataFile;
72
- /**
73
- * number of splats (optional, can be inferred from means.shape[0])
74
- */
75
- count?: number;
76
- }
77
- /**
78
- * Parse SOG data from either a SOGRootData object (with webp files loaded from rootUrl) or from a Map of filenames to Uint8Array file data (including meta.json)
79
- * @param dataOrFiles Either the SOGRootData or a Map of filenames to Uint8Array file data (including meta.json)
80
- * @param rootUrl Base URL to load webp files from (if dataOrFiles is SOGRootData)
81
- * @param scene The Babylon.js scene
82
- * @returns Parsed data
83
- */
84
- export declare function ParseSogMeta(dataOrFiles: SOGRootData | Map<string, Uint8Array>, rootUrl: string, scene: Scene): Promise<IParsedSplat>;
85
- /**
86
- * Parse SOG data and produce a set of GPU textures + dequantization parameters.
87
- * The shader will sample these raw RGBA8 textures and reconstruct positions/scales/rotations/colors/SH on the GPU.
88
- * @param dataOrFiles Either the SOGRootData or a Map of filenames to Uint8Array file data (including meta.json)
89
- * @param rootUrl Base URL to load webp files from (if dataOrFiles is SOGRootData)
90
- * @param scene The Babylon.js scene
91
- * @returns Parsed splat info with `sogTextures` populated.
92
- */
93
- export declare function ParseSogMetaAsTextures(dataOrFiles: SOGRootData | Map<string, Uint8Array>, rootUrl: string, scene: Scene): Promise<IParsedSplat>;
1
+ export * from "./sog.pure.js";
2
+ import "@onerjs/core/Engines/Extensions/engine.dynamicTexture.js";