@meimu/mutracer 0.1.5 → 0.2.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 (526) hide show
  1. package/LICENSES/Classroom-CC0.txt +121 -0
  2. package/README.md +7 -7
  3. package/THIRD_PARTY_NOTICES.md +13 -8
  4. package/dist/assets/bvh.worker.js +1 -1
  5. package/dist/mutracer.umd.js +10407 -8353
  6. package/docs/api.md +200 -10
  7. package/docs/denoising.md +30 -15
  8. package/docs/materials.md +1 -1
  9. package/docs/performance.md +5 -2
  10. package/docs/progressive-rendering.md +32 -1
  11. package/docs/threejs.md +14 -5
  12. package/docs/updates.md +44 -2
  13. package/docs/viewer.md +11 -6
  14. package/lib/Display.d.ts +13 -2
  15. package/lib/Display.js +27 -6
  16. package/lib/Display.js.map +1 -1
  17. package/lib/Engine.d.ts +2 -0
  18. package/lib/Engine.js +52 -25
  19. package/lib/Engine.js.map +1 -1
  20. package/lib/Render.d.ts +44 -9
  21. package/lib/Render.js +115 -17
  22. package/lib/Render.js.map +1 -1
  23. package/lib/RenderLoop.d.ts +7 -1
  24. package/lib/RenderLoop.js +94 -13
  25. package/lib/RenderLoop.js.map +1 -1
  26. package/lib/main.d.ts +6 -3
  27. package/lib/main.js +1 -0
  28. package/lib/main.js.map +1 -1
  29. package/lib/math/access.d.ts +4 -0
  30. package/lib/math/access.js +10 -0
  31. package/lib/math/access.js.map +1 -0
  32. package/lib/math/mat3.d.ts +4 -0
  33. package/lib/math/mat3.js +54 -0
  34. package/lib/math/mat3.js.map +1 -0
  35. package/lib/math/mat4.d.ts +19 -0
  36. package/lib/math/mat4.js +413 -0
  37. package/lib/math/mat4.js.map +1 -0
  38. package/lib/math/storage.d.ts +6 -0
  39. package/lib/math/storage.js +22 -0
  40. package/lib/math/storage.js.map +1 -0
  41. package/lib/math/types.d.ts +3 -0
  42. package/lib/math/types.js +2 -0
  43. package/lib/math/types.js.map +1 -0
  44. package/lib/math/vec2.d.ts +13 -0
  45. package/lib/math/vec2.js +52 -0
  46. package/lib/math/vec2.js.map +1 -0
  47. package/lib/math/vec3.d.ts +23 -0
  48. package/lib/math/vec3.js +139 -0
  49. package/lib/math/vec3.js.map +1 -0
  50. package/lib/math.d.ts +5 -17
  51. package/lib/math.js +5 -55
  52. package/lib/math.js.map +1 -1
  53. package/lib/oidn.d.ts +1 -1
  54. package/lib/oidn.js +4 -2
  55. package/lib/oidn.js.map +1 -1
  56. package/lib/oidnBundledWeights.cdn.d.ts +2 -2
  57. package/lib/renderer/AovPrimitiveCache.d.ts +10 -0
  58. package/lib/renderer/AovPrimitiveCache.js +48 -0
  59. package/lib/renderer/AovPrimitiveCache.js.map +1 -0
  60. package/lib/renderer/Box3.d.ts +5 -0
  61. package/lib/renderer/Box3.js +9 -0
  62. package/lib/renderer/Box3.js.map +1 -0
  63. package/lib/renderer/GPUTraceQueue.d.ts +10 -0
  64. package/lib/renderer/GPUTraceQueue.js +31 -0
  65. package/lib/renderer/GPUTraceQueue.js.map +1 -0
  66. package/lib/renderer/MaterialData.d.ts +15 -0
  67. package/lib/renderer/MaterialData.js +61 -0
  68. package/lib/renderer/MaterialData.js.map +1 -0
  69. package/lib/renderer/MaterialTable.d.ts +11 -98
  70. package/lib/renderer/MaterialTable.js +34 -412
  71. package/lib/renderer/MaterialTable.js.map +1 -1
  72. package/lib/renderer/RenderingPipeline.d.ts +32 -13
  73. package/lib/renderer/RenderingPipeline.js +1 -17
  74. package/lib/renderer/RenderingPipeline.js.map +1 -1
  75. package/lib/renderer/TileRender.d.ts +0 -1
  76. package/lib/renderer/TileRender.js +14 -1
  77. package/lib/renderer/TileRender.js.map +1 -1
  78. package/lib/renderer/WGPUAov.d.ts +39 -0
  79. package/lib/renderer/WGPUAov.js +239 -0
  80. package/lib/renderer/WGPUAov.js.map +1 -0
  81. package/lib/renderer/WGPUBindlessMaterialData.d.ts +17 -0
  82. package/lib/renderer/WGPUBindlessMaterialData.js +48 -0
  83. package/lib/renderer/WGPUBindlessMaterialData.js.map +1 -0
  84. package/lib/renderer/WGPUBindlessTextures.d.ts +47 -0
  85. package/lib/renderer/WGPUBindlessTextures.js +180 -0
  86. package/lib/renderer/WGPUBindlessTextures.js.map +1 -0
  87. package/lib/renderer/WGPUBloomPass.js +17 -97
  88. package/lib/renderer/WGPUBloomPass.js.map +1 -1
  89. package/lib/renderer/WGPUComputePass.d.ts +1 -1
  90. package/lib/renderer/WGPUComputePass.js.map +1 -1
  91. package/lib/renderer/WGPUEnvMapDistribution.d.ts +12 -0
  92. package/lib/renderer/WGPUEnvMapDistribution.js +150 -0
  93. package/lib/renderer/WGPUEnvMapDistribution.js.map +1 -0
  94. package/lib/renderer/WGPUFullQuadPass.js +10 -9
  95. package/lib/renderer/WGPUFullQuadPass.js.map +1 -1
  96. package/lib/renderer/WGPUJNLMDenoiser.d.ts +1 -20
  97. package/lib/renderer/WGPUJNLMDenoiser.js +4 -267
  98. package/lib/renderer/WGPUJNLMDenoiser.js.map +1 -1
  99. package/lib/renderer/WGPURayTraceOutput.js +26 -17
  100. package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
  101. package/lib/renderer/WGPURayTracePass.d.ts +36 -40
  102. package/lib/renderer/WGPURayTracePass.js +399 -550
  103. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  104. package/lib/renderer/WGPURenderingPipeline.d.ts +5 -3
  105. package/lib/renderer/WGPURenderingPipeline.js +239 -60
  106. package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
  107. package/lib/renderer/WGPUShaderCache.d.ts +2 -2
  108. package/lib/renderer/WGPUShaderCache.js +10 -5
  109. package/lib/renderer/WGPUShaderCache.js.map +1 -1
  110. package/lib/renderer/WGPUShaderCapabilities.d.ts +10 -0
  111. package/lib/renderer/WGPUShaderCapabilities.js +54 -0
  112. package/lib/renderer/WGPUShaderCapabilities.js.map +1 -0
  113. package/lib/renderer/WGPUSkyBaker.d.ts +13 -0
  114. package/lib/renderer/WGPUSkyBaker.js +85 -0
  115. package/lib/renderer/WGPUSkyBaker.js.map +1 -0
  116. package/lib/renderer/WebGLAov.d.ts +41 -0
  117. package/lib/renderer/WebGLAov.js +106 -0
  118. package/lib/renderer/WebGLAov.js.map +1 -0
  119. package/lib/renderer/WebGLFullQuadPass.d.ts +5 -3
  120. package/lib/renderer/WebGLFullQuadPass.js +18 -2
  121. package/lib/renderer/WebGLFullQuadPass.js.map +1 -1
  122. package/lib/renderer/WebGLJNLMDenoiser.d.ts +1 -1
  123. package/lib/renderer/WebGLJNLMDenoiser.js +83 -74
  124. package/lib/renderer/WebGLJNLMDenoiser.js.map +1 -1
  125. package/lib/renderer/WebGLRayTraceOutputPass.js +7 -4
  126. package/lib/renderer/WebGLRayTraceOutputPass.js.map +1 -1
  127. package/lib/renderer/WebGLRayTracePass.d.ts +12 -2
  128. package/lib/renderer/WebGLRayTracePass.js +82 -7
  129. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  130. package/lib/renderer/WebGLRenderingPipeline.js +116 -8
  131. package/lib/renderer/WebGLRenderingPipeline.js.map +1 -1
  132. package/lib/renderer/WebGLSkyBaker.d.ts +39 -0
  133. package/lib/renderer/WebGLSkyBaker.js +422 -0
  134. package/lib/renderer/WebGLSkyBaker.js.map +1 -0
  135. package/lib/renderer/WebGLSkySource.d.ts +9 -0
  136. package/lib/renderer/WebGLSkySource.js +28 -0
  137. package/lib/renderer/WebGLSkySource.js.map +1 -0
  138. package/lib/renderer/accumulationTarget.d.ts +5 -0
  139. package/lib/renderer/accumulationTarget.js.map +1 -1
  140. package/lib/renderer/aov.d.ts +42 -0
  141. package/lib/renderer/aov.js +50 -0
  142. package/lib/renderer/aov.js.map +1 -0
  143. package/lib/renderer/aovDisplay.d.ts +14 -0
  144. package/lib/renderer/aovDisplay.js +32 -0
  145. package/lib/renderer/aovDisplay.js.map +1 -0
  146. package/lib/renderer/aovScene.d.ts +21 -0
  147. package/lib/renderer/aovScene.js +139 -0
  148. package/lib/renderer/aovScene.js.map +1 -0
  149. package/lib/renderer/binnedSahBvh.js +2 -1
  150. package/lib/renderer/binnedSahBvh.js.map +1 -1
  151. package/lib/renderer/bvhAccel.d.ts +20 -10
  152. package/lib/renderer/bvhAccel.js +168 -58
  153. package/lib/renderer/bvhAccel.js.map +1 -1
  154. package/lib/renderer/bvhWorkerBuild.d.ts +1 -0
  155. package/lib/renderer/cameraSnapshot.js +2 -1
  156. package/lib/renderer/cameraSnapshot.js.map +1 -1
  157. package/lib/renderer/cameraUniform.d.ts +2 -0
  158. package/lib/renderer/cameraUniform.js +12 -0
  159. package/lib/renderer/cameraUniform.js.map +1 -0
  160. package/lib/renderer/committedScene.js +4 -0
  161. package/lib/renderer/committedScene.js.map +1 -1
  162. package/lib/renderer/denoiser.d.ts +3 -11
  163. package/lib/renderer/denoiser.js.map +1 -1
  164. package/lib/renderer/depthQuery.js +4 -1
  165. package/lib/renderer/depthQuery.js.map +1 -1
  166. package/lib/renderer/displacementPreparation.d.ts +11 -0
  167. package/lib/renderer/displacementPreparation.js +351 -0
  168. package/lib/renderer/displacementPreparation.js.map +1 -0
  169. package/lib/renderer/displacementRange.d.ts +1 -0
  170. package/lib/renderer/displacementRange.js +9 -0
  171. package/lib/renderer/displacementRange.js.map +1 -0
  172. package/lib/renderer/displayParityDiagnostics.d.ts +11 -0
  173. package/lib/renderer/displayParityDiagnostics.js +2 -0
  174. package/lib/renderer/displayParityDiagnostics.js.map +1 -0
  175. package/lib/renderer/envMapCreation.d.ts +9 -8
  176. package/lib/renderer/envMapCreation.js +36 -12
  177. package/lib/renderer/envMapCreation.js.map +1 -1
  178. package/lib/renderer/envMapDistribution.d.ts +12 -2
  179. package/lib/renderer/envMapDistribution.js +43 -34
  180. package/lib/renderer/envMapDistribution.js.map +1 -1
  181. package/lib/renderer/geometryBvhBounds.d.ts +4 -0
  182. package/lib/renderer/geometryBvhBounds.js +82 -0
  183. package/lib/renderer/geometryBvhBounds.js.map +1 -0
  184. package/lib/renderer/geometryUpdateState.d.ts +32 -0
  185. package/lib/renderer/geometryUpdateState.js +2 -0
  186. package/lib/renderer/geometryUpdateState.js.map +1 -0
  187. package/lib/renderer/geometryUpdates.d.ts +17 -9
  188. package/lib/renderer/geometryUpdates.js +92 -33
  189. package/lib/renderer/geometryUpdates.js.map +1 -1
  190. package/lib/renderer/glsl/aovDisplay.frag.d.ts +3 -0
  191. package/lib/renderer/glsl/aovDisplay.frag.js +54 -0
  192. package/lib/renderer/glsl/aovDisplay.frag.js.map +1 -0
  193. package/lib/renderer/glsl/aovReflectance.glsl.d.ts +2 -0
  194. package/lib/renderer/glsl/aovReflectance.glsl.js +87 -0
  195. package/lib/renderer/glsl/aovReflectance.glsl.js.map +1 -0
  196. package/lib/renderer/glsl/aovReflectanceSamples.glsl.d.ts +2 -0
  197. package/lib/renderer/glsl/aovReflectanceSamples.glsl.js +135 -0
  198. package/lib/renderer/glsl/aovReflectanceSamples.glsl.js.map +1 -0
  199. package/lib/renderer/glsl/aovTrace.frag.d.ts +2 -0
  200. package/lib/renderer/glsl/aovTrace.frag.js +121 -0
  201. package/lib/renderer/glsl/aovTrace.frag.js.map +1 -0
  202. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +12 -12
  203. package/lib/renderer/glsl/chunks/envMap.glsl.js +80 -74
  204. package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -1
  205. package/lib/renderer/glsl/chunks/intersect.glsl.js +429 -429
  206. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +144 -144
  207. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
  208. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +801 -801
  209. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  210. package/lib/renderer/glsl/chunks/random.glsl.js +6 -6
  211. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +49 -49
  212. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
  213. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +80 -80
  214. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +102 -102
  215. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +20 -17
  216. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js.map +1 -1
  217. package/lib/renderer/glsl/chunks/sampling.glsl.js +93 -93
  218. package/lib/renderer/glsl/chunks/sobol.glsl.js +79 -79
  219. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  220. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +12 -12
  221. package/lib/renderer/glsl/chunks/uvProjection.glsl.js.map +1 -1
  222. package/lib/renderer/glsl/depthQuery.frag.js +7 -7
  223. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +17 -9
  224. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js.map +1 -1
  225. package/lib/renderer/glsl/rayTrace.frag.js +191 -191
  226. package/lib/renderer/glsl/shadowCatcher.frag.js +25 -20
  227. package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
  228. package/lib/renderer/glsl/webglPipeline.frag.js +65 -60
  229. package/lib/renderer/glsl/webglPipeline.frag.js.map +1 -1
  230. package/lib/renderer/lightConstants.d.ts +10 -0
  231. package/lib/renderer/lightConstants.js +11 -0
  232. package/lib/renderer/lightConstants.js.map +1 -0
  233. package/lib/renderer/lightCore.d.ts +12 -0
  234. package/lib/renderer/lightCore.js +13 -0
  235. package/lib/renderer/lightCore.js.map +1 -0
  236. package/lib/renderer/lightSampling.d.ts +20 -17
  237. package/lib/renderer/lightSampling.js +123 -56
  238. package/lib/renderer/lightSampling.js.map +1 -1
  239. package/lib/renderer/lightsData.d.ts +21 -0
  240. package/lib/renderer/lightsData.js +192 -0
  241. package/lib/renderer/lightsData.js.map +1 -0
  242. package/lib/renderer/lightsUtil.d.ts +3 -26
  243. package/lib/renderer/lightsUtil.js +3 -153
  244. package/lib/renderer/lightsUtil.js.map +1 -1
  245. package/lib/renderer/materialBufferData.d.ts +70 -0
  246. package/lib/renderer/materialBufferData.js +2 -0
  247. package/lib/renderer/materialBufferData.js.map +1 -0
  248. package/lib/renderer/materialConstants.d.ts +11 -0
  249. package/lib/renderer/materialConstants.js +11 -0
  250. package/lib/renderer/materialConstants.js.map +1 -1
  251. package/lib/renderer/materialCore.d.ts +8 -0
  252. package/lib/renderer/materialCore.js +9 -0
  253. package/lib/renderer/materialCore.js.map +1 -0
  254. package/lib/renderer/materialEmission.d.ts +2 -2
  255. package/lib/renderer/materialEmission.js +3 -3
  256. package/lib/renderer/materialEmission.js.map +1 -1
  257. package/lib/renderer/materialLayout.d.ts +2 -101
  258. package/lib/renderer/materialLayout.js +110 -172
  259. package/lib/renderer/materialLayout.js.map +1 -1
  260. package/lib/renderer/materialLayoutSchema.d.ts +26 -0
  261. package/lib/renderer/materialLayoutSchema.js +172 -0
  262. package/lib/renderer/materialLayoutSchema.js.map +1 -0
  263. package/lib/renderer/materialParams.d.ts +69 -0
  264. package/lib/renderer/materialParams.js +272 -0
  265. package/lib/renderer/materialParams.js.map +1 -0
  266. package/lib/renderer/materialTextureSlots.d.ts +14 -324
  267. package/lib/renderer/materialTextureSlots.js +21 -8
  268. package/lib/renderer/materialTextureSlots.js.map +1 -1
  269. package/lib/renderer/materialTextures.d.ts +6 -0
  270. package/lib/renderer/{texturesFromMaterials.js → materialTextures.js} +1 -2
  271. package/lib/renderer/materialTextures.js.map +1 -0
  272. package/lib/renderer/mergeMeshesToGeometry.js +6 -147
  273. package/lib/renderer/mergeMeshesToGeometry.js.map +1 -1
  274. package/lib/renderer/meshInstances.d.ts +4 -21
  275. package/lib/renderer/meshInstances.js +10 -56
  276. package/lib/renderer/meshInstances.js.map +1 -1
  277. package/lib/renderer/oidnNetwork.d.ts +2 -2
  278. package/lib/renderer/oidnNetwork.js +1 -1
  279. package/lib/renderer/oidnNetwork.js.map +1 -1
  280. package/lib/renderer/openPbrEnergyLut.js +850 -846
  281. package/lib/renderer/openPbrEnergyLut.js.map +1 -1
  282. package/lib/renderer/ownedDenoiser.d.ts +9 -0
  283. package/lib/renderer/ownedDenoiser.js +2 -0
  284. package/lib/renderer/ownedDenoiser.js.map +1 -0
  285. package/lib/renderer/packedMeshInstances.d.ts +23 -0
  286. package/lib/renderer/packedMeshInstances.js +80 -0
  287. package/lib/renderer/packedMeshInstances.js.map +1 -0
  288. package/lib/renderer/prepareMeshBVH.d.ts +12 -47
  289. package/lib/renderer/prepareMeshBVH.js +21 -642
  290. package/lib/renderer/prepareMeshBVH.js.map +1 -1
  291. package/lib/renderer/proceduralEnvironmentPower.d.ts +3 -0
  292. package/lib/renderer/proceduralEnvironmentPower.js +8 -0
  293. package/lib/renderer/proceduralEnvironmentPower.js.map +1 -0
  294. package/lib/renderer/progressiveScheduler.d.ts +1 -0
  295. package/lib/renderer/progressiveScheduler.js +3 -0
  296. package/lib/renderer/progressiveScheduler.js.map +1 -1
  297. package/lib/renderer/renderPipeline.d.ts +3 -1
  298. package/lib/renderer/renderPipeline.js.map +1 -1
  299. package/lib/renderer/renderingLimits.d.ts +9 -0
  300. package/lib/renderer/renderingLimits.js +18 -0
  301. package/lib/renderer/renderingLimits.js.map +1 -0
  302. package/lib/renderer/sceneAssembly.d.ts +73 -0
  303. package/lib/renderer/sceneAssembly.js +109 -0
  304. package/lib/renderer/sceneAssembly.js.map +1 -0
  305. package/lib/renderer/sceneChangeCore.d.ts +39 -0
  306. package/lib/renderer/sceneChangeCore.js +307 -0
  307. package/lib/renderer/sceneChangeCore.js.map +1 -0
  308. package/lib/renderer/sceneChangeDetector.d.ts +3 -6
  309. package/lib/renderer/sceneChangeDetector.js +24 -150
  310. package/lib/renderer/sceneChangeDetector.js.map +1 -1
  311. package/lib/renderer/sceneLayoutSchema.d.ts +118 -0
  312. package/lib/renderer/sceneLayoutSchema.js +111 -0
  313. package/lib/renderer/sceneLayoutSchema.js.map +1 -0
  314. package/lib/renderer/sceneLightChanges.d.ts +3 -3
  315. package/lib/renderer/sceneLightChanges.js.map +1 -1
  316. package/lib/renderer/scenePreparation.d.ts +55 -0
  317. package/lib/renderer/scenePreparation.js +360 -0
  318. package/lib/renderer/scenePreparation.js.map +1 -0
  319. package/lib/renderer/scratchSampling.js +18 -18
  320. package/lib/renderer/scratchSampling.js.map +1 -1
  321. package/lib/renderer/shader.d.ts +2 -0
  322. package/lib/renderer/shader.js +2 -0
  323. package/lib/renderer/shader.js.map +1 -1
  324. package/lib/renderer/shaderCapabilities.d.ts +23 -0
  325. package/lib/renderer/shaderCapabilities.js +55 -0
  326. package/lib/renderer/shaderCapabilities.js.map +1 -0
  327. package/lib/renderer/shaderCapacity.d.ts +2 -0
  328. package/lib/renderer/shaderCapacity.js +5 -0
  329. package/lib/renderer/shaderCapacity.js.map +1 -0
  330. package/lib/renderer/skyModel.d.ts +9 -0
  331. package/lib/renderer/skyModel.js +10 -0
  332. package/lib/renderer/skyModel.js.map +1 -0
  333. package/lib/renderer/textureAtlas.d.ts +60 -0
  334. package/lib/renderer/textureAtlas.js +145 -0
  335. package/lib/renderer/textureAtlas.js.map +1 -0
  336. package/lib/renderer/textureAtlasPixels.d.ts +7 -0
  337. package/lib/renderer/textureAtlasPixels.js +68 -0
  338. package/lib/renderer/textureAtlasPixels.js.map +1 -0
  339. package/lib/renderer/util.d.ts +1 -1
  340. package/lib/renderer/util.js.map +1 -1
  341. package/lib/renderer/webgl.d.ts +9 -2
  342. package/lib/renderer/webgl.js +54 -9
  343. package/lib/renderer/webgl.js.map +1 -1
  344. package/lib/renderer/wgpuBindless.d.ts +26 -0
  345. package/lib/renderer/wgpuBindless.js +95 -0
  346. package/lib/renderer/wgpuBindless.js.map +1 -0
  347. package/lib/renderer/wgpuBindlessSource.d.ts +2 -0
  348. package/lib/renderer/wgpuBindlessSource.js +51 -0
  349. package/lib/renderer/wgpuBindlessSource.js.map +1 -0
  350. package/lib/renderer/wgpuMaterialConstants.d.ts +4 -0
  351. package/lib/renderer/wgpuMaterialConstants.js +52 -0
  352. package/lib/renderer/wgpuMaterialConstants.js.map +1 -0
  353. package/lib/renderer/wgpuSceneUniform.d.ts +42 -0
  354. package/lib/renderer/wgpuSceneUniform.js +125 -0
  355. package/lib/renderer/wgpuSceneUniform.js.map +1 -0
  356. package/lib/renderer/wgpuShaderSource.d.ts +15 -0
  357. package/lib/renderer/wgpuShaderSource.js +31 -0
  358. package/lib/renderer/wgpuShaderSource.js.map +1 -0
  359. package/lib/renderer/wgsl/aovDisplay.wgsl.d.ts +1 -0
  360. package/lib/renderer/wgsl/aovDisplay.wgsl.js +70 -0
  361. package/lib/renderer/wgsl/aovDisplay.wgsl.js.map +1 -0
  362. package/lib/renderer/wgsl/aovReflectance.wgsl.d.ts +2 -0
  363. package/lib/renderer/wgsl/aovReflectance.wgsl.js +98 -0
  364. package/lib/renderer/wgsl/aovReflectance.wgsl.js.map +1 -0
  365. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.d.ts +2 -0
  366. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.js +135 -0
  367. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.js.map +1 -0
  368. package/lib/renderer/wgsl/aovResolve.wgsl.d.ts +5 -0
  369. package/lib/renderer/wgsl/aovResolve.wgsl.js +38 -0
  370. package/lib/renderer/wgsl/aovResolve.wgsl.js.map +1 -0
  371. package/lib/renderer/wgsl/aovSnapshot.wgsl.d.ts +4 -0
  372. package/lib/renderer/wgsl/aovSnapshot.wgsl.js +21 -0
  373. package/lib/renderer/wgsl/aovSnapshot.wgsl.js.map +1 -0
  374. package/lib/renderer/wgsl/aovTrace.wgsl.d.ts +2 -0
  375. package/lib/renderer/wgsl/aovTrace.wgsl.js +115 -0
  376. package/lib/renderer/wgsl/aovTrace.wgsl.js.map +1 -0
  377. package/lib/renderer/wgsl/bloom.wgsl.d.ts +13 -0
  378. package/lib/renderer/wgsl/bloom.wgsl.js +92 -0
  379. package/lib/renderer/wgsl/bloom.wgsl.js.map +1 -0
  380. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  381. package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +1 -1
  382. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +43 -37
  383. package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -1
  384. package/lib/renderer/wgsl/chunks/intersect.wgsl.d.ts +13 -1
  385. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +742 -705
  386. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  387. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +16 -16
  388. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js.map +1 -1
  389. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.d.ts +3 -1
  390. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +84 -82
  391. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
  392. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +855 -857
  393. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js.map +1 -1
  394. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +139 -139
  395. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  396. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.d.ts +2 -1
  397. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +42 -32
  398. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
  399. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.d.ts +1 -1
  400. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +152 -148
  401. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js.map +1 -1
  402. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +239 -232
  403. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js.map +1 -1
  404. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.d.ts +1 -1
  405. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +26 -13
  406. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js.map +1 -1
  407. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +91 -91
  408. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +1 -1
  409. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +1 -0
  410. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
  411. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +83 -83
  412. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +12 -12
  413. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js.map +1 -1
  414. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +8 -3
  415. package/lib/renderer/wgsl/compose.frag.wgsl.js +143 -118
  416. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
  417. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  418. package/lib/renderer/wgsl/depthQuery.wgsl.js +7 -7
  419. package/lib/renderer/wgsl/jnlm.compute.d.ts +25 -0
  420. package/lib/renderer/wgsl/jnlm.compute.js +315 -0
  421. package/lib/renderer/wgsl/jnlm.compute.js.map +1 -0
  422. package/lib/renderer/wgsl/offlineAdaptive.compute.js +28 -28
  423. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.d.ts +1 -0
  424. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.js +17 -0
  425. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.js.map +1 -0
  426. package/lib/renderer/wgsl/proceduralSky.compute.d.ts +1 -0
  427. package/lib/renderer/wgsl/proceduralSky.compute.js +198 -0
  428. package/lib/renderer/wgsl/proceduralSky.compute.js.map +1 -0
  429. package/lib/renderer/wgsl/rayTrace.compute.d.ts +17 -1
  430. package/lib/renderer/wgsl/rayTrace.compute.js +612 -393
  431. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  432. package/lib/scene/Camera.js +7 -3
  433. package/lib/scene/Camera.js.map +1 -1
  434. package/lib/scene/EnvironmentLight.d.ts +5 -9
  435. package/lib/scene/EnvironmentLight.js +4 -14
  436. package/lib/scene/EnvironmentLight.js.map +1 -1
  437. package/lib/scene/EnvironmentLightState.d.ts +18 -0
  438. package/lib/scene/EnvironmentLightState.js +19 -0
  439. package/lib/scene/EnvironmentLightState.js.map +1 -0
  440. package/lib/scene/Geometry.d.ts +12 -6
  441. package/lib/scene/Geometry.js +37 -13
  442. package/lib/scene/Geometry.js.map +1 -1
  443. package/lib/scene/InstanceState.d.ts +39 -0
  444. package/lib/scene/InstanceState.js +77 -0
  445. package/lib/scene/InstanceState.js.map +1 -0
  446. package/lib/scene/InstancedMesh.d.ts +1 -1
  447. package/lib/scene/InstancedMesh.js +3 -0
  448. package/lib/scene/InstancedMesh.js.map +1 -1
  449. package/lib/scene/MaterialState.d.ts +209 -0
  450. package/lib/scene/MaterialState.js +231 -0
  451. package/lib/scene/MaterialState.js.map +1 -0
  452. package/lib/scene/Mesh.d.ts +4 -6
  453. package/lib/scene/Mesh.js +3 -11
  454. package/lib/scene/Mesh.js.map +1 -1
  455. package/lib/scene/MeshState.d.ts +20 -0
  456. package/lib/scene/MeshState.js +35 -0
  457. package/lib/scene/MeshState.js.map +1 -0
  458. package/lib/scene/OpenPBRMaterial.d.ts +6 -168
  459. package/lib/scene/OpenPBRMaterial.js +5 -223
  460. package/lib/scene/OpenPBRMaterial.js.map +1 -1
  461. package/lib/scene/PixelTexture.d.ts +6 -0
  462. package/lib/scene/PixelTexture.js +10 -0
  463. package/lib/scene/PixelTexture.js.map +1 -0
  464. package/lib/scene/ProceduralSky.d.ts +24 -0
  465. package/lib/scene/ProceduralSky.js +40 -0
  466. package/lib/scene/ProceduralSky.js.map +1 -0
  467. package/lib/scene/RectLight.d.ts +2 -13
  468. package/lib/scene/RectLight.js +3 -21
  469. package/lib/scene/RectLight.js.map +1 -1
  470. package/lib/scene/RectLightState.d.ts +31 -0
  471. package/lib/scene/RectLightState.js +26 -0
  472. package/lib/scene/RectLightState.js.map +1 -0
  473. package/lib/scene/Scene.d.ts +15 -4
  474. package/lib/scene/Scene.js.map +1 -1
  475. package/lib/scene/SceneNode.js +7 -6
  476. package/lib/scene/SceneNode.js.map +1 -1
  477. package/lib/scene/Texture.d.ts +10 -41
  478. package/lib/scene/Texture.js +4 -33
  479. package/lib/scene/Texture.js.map +1 -1
  480. package/lib/scene/TextureState.d.ts +35 -0
  481. package/lib/scene/TextureState.js +35 -0
  482. package/lib/scene/TextureState.js.map +1 -0
  483. package/lib/scene/attributeData.d.ts +4 -0
  484. package/lib/scene/attributeData.js +10 -0
  485. package/lib/scene/attributeData.js.map +1 -0
  486. package/lib/scene/lightState.d.ts +8 -0
  487. package/lib/scene/lightState.js +2 -0
  488. package/lib/scene/lightState.js.map +1 -0
  489. package/lib/scene/openPbrSchema.d.ts +7 -12
  490. package/lib/scene/openPbrSchema.js +273 -28
  491. package/lib/scene/openPbrSchema.js.map +1 -1
  492. package/lib/scene/skyParameters.d.ts +20 -0
  493. package/lib/scene/skyParameters.js +28 -0
  494. package/lib/scene/skyParameters.js.map +1 -0
  495. package/lib/scene/textureData.d.ts +9 -0
  496. package/lib/scene/textureData.js +2 -0
  497. package/lib/scene/textureData.js.map +1 -0
  498. package/lib/scene/texturePixels.d.ts +6 -0
  499. package/lib/scene/texturePixels.js +10 -0
  500. package/lib/scene/texturePixels.js.map +1 -0
  501. package/lib/settings/display.d.ts +33 -0
  502. package/lib/settings/display.js +7 -0
  503. package/lib/settings/display.js.map +1 -1
  504. package/lib/settings/render.d.ts +25 -3
  505. package/lib/settings/render.js +3 -1
  506. package/lib/settings/render.js.map +1 -1
  507. package/lib/tinybvh/tinybvh.wasm +0 -0
  508. package/lib/util/commonGeometry.js +7 -7
  509. package/lib/util/commonGeometry.js.map +1 -1
  510. package/lib/util/fromTHREE.d.ts +4 -1
  511. package/lib/util/fromTHREE.js +18 -5
  512. package/lib/util/fromTHREE.js.map +1 -1
  513. package/lib/util/geometry.js +42 -29
  514. package/lib/util/geometry.js.map +1 -1
  515. package/lib/util/loadRGBE.js +3 -4
  516. package/lib/util/loadRGBE.js.map +1 -1
  517. package/lib/util/studioLighting.d.ts +18 -0
  518. package/lib/util/studioLighting.js +36 -0
  519. package/lib/util/studioLighting.js.map +1 -0
  520. package/lib/version.d.ts +1 -1
  521. package/lib/version.js +1 -1
  522. package/lib/version.js.map +1 -1
  523. package/llms.txt +4 -0
  524. package/package.json +31 -5
  525. package/lib/renderer/texturesFromMaterials.d.ts +0 -6
  526. package/lib/renderer/texturesFromMaterials.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ export function textureWrapIndex(mode) {
2
+ return mode === 'clamp-to-edge' ? 1 : mode === 'mirrored-repeat' ? 2 : 0;
3
+ }
4
+ // Pixel/image storage belongs to the platform adapter. Shared code only needs
5
+ // dimensions, identity and sampling metadata; it never owns a browser image.
6
+ export default class TextureState {
7
+ image;
8
+ version = 0;
9
+ /** Flip the image vertically when uploading. Default `false`. */
10
+ flipY = false;
11
+ /** UV repeat applied before sampling this texture. Default `[1, 1]`. */
12
+ uvScale = [1, 1];
13
+ /** UV translation applied after repeat and before wrapping. Default `[0, 0]`. */
14
+ uvOffset = [0, 0];
15
+ /** Horizontal material-texture addressing after UV scale/offset. Default `'repeat'`. */
16
+ wrapS = 'repeat';
17
+ /** Vertical material-texture addressing after UV scale/offset. Default `'repeat'`. */
18
+ wrapT = 'repeat';
19
+ /** Material color encoding. Default undefined: sRGB for images/bytes, linear for float/integer HDR data. Data-map channels ignore this option. */
20
+ colorSpace;
21
+ /** Geometry UV set used by this texture (Three.js Texture.channel). Default `0`. */
22
+ uvChannel = 0;
23
+ constructor(image) { this.image = image; }
24
+ /**
25
+ * Call after editing image pixels or UV array elements in place. Increments
26
+ * version so the next render refreshes all materials, lights and backgrounds
27
+ * using this texture. Assigning a new image, UV array, flipY, wrapS, wrapT, colorSpace or
28
+ * uvChannel is detected automatically.
29
+ */
30
+ markUpdated() {
31
+ this.version++;
32
+ return this;
33
+ }
34
+ }
35
+ //# sourceMappingURL=TextureState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextureState.js","sourceRoot":"","sources":["../../src/scene/TextureState.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,gBAAgB,CAAC,IAAqB;IACpD,OAAO,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAID,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,KAAK,CAAmB;IACxB,OAAO,GAAG,CAAC,CAAC;IACZ,iEAAiE;IACjE,KAAK,GAAY,KAAK,CAAC;IACvB,wEAAwE;IACxE,OAAO,GAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,iFAAiF;IACjF,QAAQ,GAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,wFAAwF;IACxF,KAAK,GAAoB,QAAQ,CAAC;IAClC,sFAAsF;IACtF,KAAK,GAAoB,QAAQ,CAAC;IAClC,kJAAkJ;IAClJ,UAAU,CAAqB;IAC/B,oFAAoF;IACpF,SAAS,GAAU,CAAC,CAAC;IACrB,YAAY,KAAuB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAE5D;;;;;OAKG;IACH,WAAW;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["/** Transfer function for material color slots; data-map channels remain linear. */\nexport type TextureColorSpace = 'srgb' | 'linear';\n\n/** Addressing of coordinates outside a material texture's [0, 1] range. */\nexport type TextureWrapMode = 'repeat' | 'clamp-to-edge' | 'mirrored-repeat';\n\nexport function textureWrapIndex(mode: TextureWrapMode): number {\n return mode === 'clamp-to-edge' ? 1 : mode === 'mirrored-repeat' ? 2 : 0;\n}\n\nexport interface TextureImageSize { width: number; height: number; }\n\n// Pixel/image storage belongs to the platform adapter. Shared code only needs\n// dimensions, identity and sampling metadata; it never owns a browser image.\nexport default class TextureState {\n image: TextureImageSize;\n version = 0;\n /** Flip the image vertically when uploading. Default `false`. */\n flipY: boolean = false;\n /** UV repeat applied before sampling this texture. Default `[1, 1]`. */\n uvScale: [number, number] = [1, 1];\n /** UV translation applied after repeat and before wrapping. Default `[0, 0]`. */\n uvOffset: [number, number] = [0, 0];\n /** Horizontal material-texture addressing after UV scale/offset. Default `'repeat'`. */\n wrapS: TextureWrapMode = 'repeat';\n /** Vertical material-texture addressing after UV scale/offset. Default `'repeat'`. */\n wrapT: TextureWrapMode = 'repeat';\n /** Material color encoding. Default undefined: sRGB for images/bytes, linear for float/integer HDR data. Data-map channels ignore this option. */\n colorSpace?: TextureColorSpace;\n /** Geometry UV set used by this texture (Three.js Texture.channel). Default `0`. */\n uvChannel: 0 | 1 = 0;\n constructor(image: TextureImageSize) { this.image = image; }\n\n /**\n * Call after editing image pixels or UV array elements in place. Increments\n * version so the next render refreshes all materials, lights and backgrounds\n * using this texture. Assigning a new image, UV array, flipY, wrapS, wrapT, colorSpace or\n * uvChannel is detected automatically.\n */\n markUpdated() {\n this.version++;\n return this;\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export type AttributeData = Float32Array | Uint16Array | Uint32Array | Int32Array;
2
+ export declare function indexStorage(array: Uint16Array | Uint32Array): Uint32Array;
3
+ export declare function attributeValue(array: AttributeData, index: number): number;
4
+ export declare function attributeLength(array: AttributeData): number;
@@ -0,0 +1,10 @@
1
+ export function indexStorage(array) {
2
+ return array instanceof Uint32Array ? array : new Uint32Array(array);
3
+ }
4
+ export function attributeValue(array, index) {
5
+ return array[index];
6
+ }
7
+ export function attributeLength(array) {
8
+ return array.length;
9
+ }
10
+ //# sourceMappingURL=attributeData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributeData.js","sourceRoot":"","sources":["../../src/scene/attributeData.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,KAAgC;IAC3D,OAAO,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAoB,EAAE,KAAa;IAChE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,KAAoB;IAClD,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC","sourcesContent":["export type AttributeData = Float32Array | Uint16Array | Uint32Array | Int32Array;\n\nexport function indexStorage(array: Uint16Array | Uint32Array): Uint32Array {\n return array instanceof Uint32Array ? array : new Uint32Array(array);\n}\n\nexport function attributeValue(array: AttributeData, index: number): number {\n return array[index];\n}\nexport function attributeLength(array: AttributeData): number {\n return array.length;\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type AmbientLight from './AmbientLight.js';
2
+ import type DirectionalLight from './DirectionalLight.js';
3
+ import type EnvironmentLightState from './EnvironmentLightState.js';
4
+ import type RectLightState from './RectLightState.js';
5
+ import type SphereLight from './SphereLight.js';
6
+ import type SpotLight from './SpotLight.js';
7
+ export type AnalyticLightState = RectLightState | SphereLight | SpotLight | DirectionalLight;
8
+ export type SceneLightState = AmbientLight | EnvironmentLightState | AnalyticLightState;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lightState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightState.js","sourceRoot":"","sources":["../../src/scene/lightState.ts"],"names":[],"mappings":"","sourcesContent":["import type AmbientLight from './AmbientLight.js';\nimport type DirectionalLight from './DirectionalLight.js';\nimport type EnvironmentLightState from './EnvironmentLightState.js';\nimport type RectLightState from './RectLightState.js';\nimport type SphereLight from './SphereLight.js';\nimport type SpotLight from './SpotLight.js';\nexport type AnalyticLightState = RectLightState | SphereLight | SpotLight | DirectionalLight;\nexport type SceneLightState = AmbientLight | EnvironmentLightState | AnalyticLightState;\n"]}
@@ -1,4 +1,4 @@
1
- import type { default as OpenPBRMaterial, OpenPBRMaterialParams } from './OpenPBRMaterial.js';
1
+ import type { default as MaterialState, MaterialStateParams } from './MaterialState.js';
2
2
  export declare const materialAliases: {
3
3
  readonly specularRoughnessAnisotropy: "specularAnisotropy";
4
4
  readonly coatRoughnessAnisotropy: "coatAnisotropy";
@@ -6,8 +6,8 @@ export declare const materialAliases: {
6
6
  readonly geometryOpacity: "opacity";
7
7
  readonly geometryThinWalled: "thinWalled";
8
8
  };
9
- type MaterialKey = Exclude<keyof OpenPBRMaterial, keyof typeof materialAliases>;
10
- export declare function normalizeMaterialParams(params: OpenPBRMaterialParams | Record<string, unknown>): Record<string, unknown>;
9
+ type MaterialKey = Exclude<keyof MaterialState, keyof typeof materialAliases>;
10
+ export declare function normalizeMaterialParams(params: MaterialStateParams | Record<string, unknown>): Record<string, unknown>;
11
11
  export declare const openPbrSchema: readonly [{
12
12
  readonly key: "baseWeight";
13
13
  readonly type: "float";
@@ -389,17 +389,12 @@ export declare const openPbrSchema: readonly [{
389
389
  readonly default: 0;
390
390
  readonly category: "geometry";
391
391
  }];
392
- type Keys<T extends readonly {
393
- key: PropertyKey;
394
- }[]> = {
395
- readonly [I in keyof T]: T[I]['key'];
396
- };
397
- export declare const materialKeys: Keys<typeof openPbrSchema>;
392
+ export declare const materialKeys: readonly ["baseWeight", "baseColor", "baseDiffuseRoughness", "baseMetalness", "specularWeight", "specularColor", "specularRoughness", "specularIor", "specularAnisotropy", "transmissionWeight", "transmissionColor", "transmissionDepth", "transmissionScatter", "transmissionScatterAnisotropy", "transmissionDispersionScale", "transmissionDispersionAbbeNumber", "subsurfaceWeight", "subsurfaceColor", "subsurfaceRadius", "subsurfaceRadiusScale", "subsurfaceAnisotropy", "fuzzWeight", "fuzzColor", "fuzzRoughness", "coatWeight", "coatColor", "coatRoughness", "coatAnisotropy", "coatIor", "coatDarkening", "thinFilmWeight", "thinFilmThickness", "thinFilmIor", "emissionColor", "emissionLuminance", "opacity", "thinWalled", "doubleSided", "map", "alphaMap", "alphaMode", "alphaCutoff", "emissiveMap", "normalMap", "normalScale", "metallicRoughnessMap", "roughnessMap", "metalnessMap", "transmissionMap", "thinFilmMap", "shadowCatcher", "unlit", "bevelSize", "mapAlphaUsage", "uvProjection", "uvProjectionScale", "displacementUvProjection", "displacementUvProjectionScale", "displacementMap", "displacementScale", "displacementStepSize", "thinFilmThicknessMinimum", "thinFilmMapChannel", "coatWeightMap", "coatRoughnessMap", "fuzzColorMap", "fuzzRoughnessMap", "specularWeightMap", "specularColorMap", "anisotropyMap", "specularAnisotropyRotation", "coatAnisotropyRotation", "specularAnisotropyModel", "coatNormalMap", "coatNormalScale", "displacementBias"];
398
393
  export declare const materialTextureKeys: readonly ["map", "alphaMap", "emissiveMap", "normalMap", "metallicRoughnessMap", "roughnessMap", "metalnessMap", "transmissionMap", "thinFilmMap", "displacementMap", "coatWeightMap", "coatRoughnessMap", "fuzzColorMap", "fuzzRoughnessMap", "specularWeightMap", "specularColorMap", "anisotropyMap", "coatNormalMap"];
399
394
  export declare const materialGeometryKeys: readonly ["displacementUvProjection", "displacementUvProjectionScale", "displacementScale", "displacementStepSize", "displacementBias"];
400
395
  export declare const materialParamKeys: readonly ["baseWeight", "baseColor", "baseDiffuseRoughness", "baseMetalness", "specularWeight", "specularColor", "specularRoughness", "specularIor", "specularAnisotropy", "transmissionWeight", "transmissionColor", "transmissionDepth", "transmissionScatter", "transmissionScatterAnisotropy", "transmissionDispersionScale", "transmissionDispersionAbbeNumber", "subsurfaceWeight", "subsurfaceColor", "subsurfaceRadius", "subsurfaceRadiusScale", "subsurfaceAnisotropy", "fuzzWeight", "fuzzColor", "fuzzRoughness", "coatWeight", "coatColor", "coatRoughness", "coatAnisotropy", "coatIor", "coatDarkening", "thinFilmWeight", "thinFilmThickness", "thinFilmIor", "emissionColor", "emissionLuminance", "opacity", "thinWalled", "doubleSided", "alphaMode", "alphaCutoff", "normalScale", "shadowCatcher", "unlit", "bevelSize", "mapAlphaUsage", "uvProjection", "uvProjectionScale", "thinFilmThicknessMinimum", "thinFilmMapChannel", "specularAnisotropyRotation", "coatAnisotropyRotation", "specularAnisotropyModel", "coatNormalScale"];
401
- export declare function materialDefault<K extends MaterialKey>(key: K): OpenPBRMaterial[K];
402
- export declare function applyMaterialParams(material: OpenPBRMaterial, input: OpenPBRMaterialParams): void;
396
+ export declare function materialDefault<K extends MaterialKey>(key: K): MaterialState[K];
397
+ export declare function applyMaterialParams(material: MaterialState, input: MaterialStateParams): void;
403
398
  export declare function resetMaterialTextureId(): void;
404
- export declare function getMaterialHashKey(material: OpenPBRMaterial): string;
399
+ export declare function getMaterialHashKey(material: MaterialState): string;
405
400
  export {};
@@ -1,4 +1,3 @@
1
- import Texture from './Texture.js';
2
1
  import { specularAnisotropyModelIndex } from './anisotropyParameters.js';
3
2
  import { thinFilmMapChannelIndex } from './thinFilmParameters.js';
4
3
  export const materialAliases = {
@@ -104,14 +103,23 @@ export const openPbrSchema = [
104
103
  ];
105
104
  const textureNamesMatch = true;
106
105
  void textureNamesMatch;
107
- export const materialKeys = openPbrSchema.map(field => field.key);
108
- function categoryKeys(category) {
109
- return openPbrSchema.filter(field => field.category === category).map(field => field.key);
110
- }
111
- export const materialTextureKeys = categoryKeys('texture');
112
- export const materialGeometryKeys = categoryKeys('geometry');
113
- export const materialParamKeys = categoryKeys('param');
114
- const defaults = new Map(openPbrSchema.map(field => [field.key, field.default]));
106
+ // Fixed tuple literals preserve the typed key-order contract in native builds;
107
+ // satisfies checks every position against the schema at compile time.
108
+ export const materialKeys = [
109
+ 'baseWeight', 'baseColor', 'baseDiffuseRoughness', 'baseMetalness', 'specularWeight', 'specularColor', 'specularRoughness', 'specularIor', 'specularAnisotropy', 'transmissionWeight', 'transmissionColor', 'transmissionDepth', 'transmissionScatter', 'transmissionScatterAnisotropy', 'transmissionDispersionScale', 'transmissionDispersionAbbeNumber', 'subsurfaceWeight', 'subsurfaceColor', 'subsurfaceRadius', 'subsurfaceRadiusScale', 'subsurfaceAnisotropy', 'fuzzWeight', 'fuzzColor', 'fuzzRoughness', 'coatWeight', 'coatColor', 'coatRoughness', 'coatAnisotropy', 'coatIor', 'coatDarkening', 'thinFilmWeight', 'thinFilmThickness', 'thinFilmIor', 'emissionColor', 'emissionLuminance', 'opacity', 'thinWalled', 'doubleSided', 'map', 'alphaMap', 'alphaMode', 'alphaCutoff', 'emissiveMap', 'normalMap', 'normalScale', 'metallicRoughnessMap', 'roughnessMap', 'metalnessMap', 'transmissionMap', 'thinFilmMap', 'shadowCatcher', 'unlit', 'bevelSize', 'mapAlphaUsage', 'uvProjection', 'uvProjectionScale', 'displacementUvProjection', 'displacementUvProjectionScale', 'displacementMap', 'displacementScale', 'displacementStepSize', 'thinFilmThicknessMinimum', 'thinFilmMapChannel', 'coatWeightMap', 'coatRoughnessMap', 'fuzzColorMap', 'fuzzRoughnessMap', 'specularWeightMap', 'specularColorMap', 'anisotropyMap', 'specularAnisotropyRotation', 'coatAnisotropyRotation', 'specularAnisotropyModel', 'coatNormalMap', 'coatNormalScale', 'displacementBias'
110
+ ];
111
+ export const materialTextureKeys = [
112
+ 'map', 'alphaMap', 'emissiveMap', 'normalMap', 'metallicRoughnessMap', 'roughnessMap', 'metalnessMap', 'transmissionMap', 'thinFilmMap', 'displacementMap', 'coatWeightMap', 'coatRoughnessMap', 'fuzzColorMap', 'fuzzRoughnessMap', 'specularWeightMap', 'specularColorMap', 'anisotropyMap', 'coatNormalMap'
113
+ ];
114
+ export const materialGeometryKeys = [
115
+ 'displacementUvProjection', 'displacementUvProjectionScale', 'displacementScale', 'displacementStepSize', 'displacementBias'
116
+ ];
117
+ export const materialParamKeys = [
118
+ 'baseWeight', 'baseColor', 'baseDiffuseRoughness', 'baseMetalness', 'specularWeight', 'specularColor', 'specularRoughness', 'specularIor', 'specularAnisotropy', 'transmissionWeight', 'transmissionColor', 'transmissionDepth', 'transmissionScatter', 'transmissionScatterAnisotropy', 'transmissionDispersionScale', 'transmissionDispersionAbbeNumber', 'subsurfaceWeight', 'subsurfaceColor', 'subsurfaceRadius', 'subsurfaceRadiusScale', 'subsurfaceAnisotropy', 'fuzzWeight', 'fuzzColor', 'fuzzRoughness', 'coatWeight', 'coatColor', 'coatRoughness', 'coatAnisotropy', 'coatIor', 'coatDarkening', 'thinFilmWeight', 'thinFilmThickness', 'thinFilmIor', 'emissionColor', 'emissionLuminance', 'opacity', 'thinWalled', 'doubleSided', 'alphaMode', 'alphaCutoff', 'normalScale', 'shadowCatcher', 'unlit', 'bevelSize', 'mapAlphaUsage', 'uvProjection', 'uvProjectionScale', 'thinFilmThicknessMinimum', 'thinFilmMapChannel', 'specularAnisotropyRotation', 'coatAnisotropyRotation', 'specularAnisotropyModel', 'coatNormalScale'
119
+ ];
120
+ const defaults = new Map();
121
+ for (const field of openPbrSchema)
122
+ defaults.set(field.key, field.default);
115
123
  export function materialDefault(key) {
116
124
  const value = defaults.get(key);
117
125
  return (Array.isArray(value) ? value.slice() : value);
@@ -122,29 +130,266 @@ export function applyMaterialParams(material, input) {
122
130
  thinFilmMapChannelIndex(params.thinFilmMapChannel);
123
131
  if (params.specularAnisotropyModel !== undefined)
124
132
  specularAnisotropyModelIndex(params.specularAnisotropyModel);
125
- for (const { key } of openPbrSchema) {
126
- if (params[key] !== undefined)
127
- Object.assign(material, { [key]: params[key] });
128
- }
133
+ // Literal fields preserve assignment order without native class reflection.
134
+ if (params.baseWeight !== undefined)
135
+ material.baseWeight = params.baseWeight;
136
+ if (params.baseColor !== undefined)
137
+ material.baseColor = params.baseColor;
138
+ if (params.baseDiffuseRoughness !== undefined)
139
+ material.baseDiffuseRoughness = params.baseDiffuseRoughness;
140
+ if (params.baseMetalness !== undefined)
141
+ material.baseMetalness = params.baseMetalness;
142
+ if (params.specularWeight !== undefined)
143
+ material.specularWeight = params.specularWeight;
144
+ if (params.specularColor !== undefined)
145
+ material.specularColor = params.specularColor;
146
+ if (params.specularRoughness !== undefined)
147
+ material.specularRoughness = params.specularRoughness;
148
+ if (params.specularIor !== undefined)
149
+ material.specularIor = params.specularIor;
150
+ if (params.specularAnisotropy !== undefined)
151
+ material.specularAnisotropy = params.specularAnisotropy;
152
+ if (params.transmissionWeight !== undefined)
153
+ material.transmissionWeight = params.transmissionWeight;
154
+ if (params.transmissionColor !== undefined)
155
+ material.transmissionColor = params.transmissionColor;
156
+ if (params.transmissionDepth !== undefined)
157
+ material.transmissionDepth = params.transmissionDepth;
158
+ if (params.transmissionScatter !== undefined)
159
+ material.transmissionScatter = params.transmissionScatter;
160
+ if (params.transmissionScatterAnisotropy !== undefined)
161
+ material.transmissionScatterAnisotropy = params.transmissionScatterAnisotropy;
162
+ if (params.transmissionDispersionScale !== undefined)
163
+ material.transmissionDispersionScale = params.transmissionDispersionScale;
164
+ if (params.transmissionDispersionAbbeNumber !== undefined)
165
+ material.transmissionDispersionAbbeNumber = params.transmissionDispersionAbbeNumber;
166
+ if (params.subsurfaceWeight !== undefined)
167
+ material.subsurfaceWeight = params.subsurfaceWeight;
168
+ if (params.subsurfaceColor !== undefined)
169
+ material.subsurfaceColor = params.subsurfaceColor;
170
+ if (params.subsurfaceRadius !== undefined)
171
+ material.subsurfaceRadius = params.subsurfaceRadius;
172
+ if (params.subsurfaceRadiusScale !== undefined)
173
+ material.subsurfaceRadiusScale = params.subsurfaceRadiusScale;
174
+ if (params.subsurfaceAnisotropy !== undefined)
175
+ material.subsurfaceAnisotropy = params.subsurfaceAnisotropy;
176
+ if (params.fuzzWeight !== undefined)
177
+ material.fuzzWeight = params.fuzzWeight;
178
+ if (params.fuzzColor !== undefined)
179
+ material.fuzzColor = params.fuzzColor;
180
+ if (params.fuzzRoughness !== undefined)
181
+ material.fuzzRoughness = params.fuzzRoughness;
182
+ if (params.coatWeight !== undefined)
183
+ material.coatWeight = params.coatWeight;
184
+ if (params.coatColor !== undefined)
185
+ material.coatColor = params.coatColor;
186
+ if (params.coatRoughness !== undefined)
187
+ material.coatRoughness = params.coatRoughness;
188
+ if (params.coatAnisotropy !== undefined)
189
+ material.coatAnisotropy = params.coatAnisotropy;
190
+ if (params.coatIor !== undefined)
191
+ material.coatIor = params.coatIor;
192
+ if (params.coatDarkening !== undefined)
193
+ material.coatDarkening = params.coatDarkening;
194
+ if (params.thinFilmWeight !== undefined)
195
+ material.thinFilmWeight = params.thinFilmWeight;
196
+ if (params.thinFilmThickness !== undefined)
197
+ material.thinFilmThickness = params.thinFilmThickness;
198
+ if (params.thinFilmIor !== undefined)
199
+ material.thinFilmIor = params.thinFilmIor;
200
+ if (params.emissionColor !== undefined)
201
+ material.emissionColor = params.emissionColor;
202
+ if (params.emissionLuminance !== undefined)
203
+ material.emissionLuminance = params.emissionLuminance;
204
+ if (params.opacity !== undefined)
205
+ material.opacity = params.opacity;
206
+ if (params.thinWalled !== undefined)
207
+ material.thinWalled = params.thinWalled;
208
+ if (params.doubleSided !== undefined)
209
+ material.doubleSided = params.doubleSided;
210
+ if (params.map !== undefined)
211
+ material.map = params.map;
212
+ if (params.alphaMap !== undefined)
213
+ material.alphaMap = params.alphaMap;
214
+ if (params.alphaMode !== undefined)
215
+ material.alphaMode = params.alphaMode;
216
+ if (params.alphaCutoff !== undefined)
217
+ material.alphaCutoff = params.alphaCutoff;
218
+ if (params.emissiveMap !== undefined)
219
+ material.emissiveMap = params.emissiveMap;
220
+ if (params.normalMap !== undefined)
221
+ material.normalMap = params.normalMap;
222
+ if (params.normalScale !== undefined)
223
+ material.normalScale = params.normalScale;
224
+ if (params.metallicRoughnessMap !== undefined)
225
+ material.metallicRoughnessMap = params.metallicRoughnessMap;
226
+ if (params.roughnessMap !== undefined)
227
+ material.roughnessMap = params.roughnessMap;
228
+ if (params.metalnessMap !== undefined)
229
+ material.metalnessMap = params.metalnessMap;
230
+ if (params.transmissionMap !== undefined)
231
+ material.transmissionMap = params.transmissionMap;
232
+ if (params.thinFilmMap !== undefined)
233
+ material.thinFilmMap = params.thinFilmMap;
234
+ if (params.shadowCatcher !== undefined)
235
+ material.shadowCatcher = params.shadowCatcher;
236
+ if (params.unlit !== undefined)
237
+ material.unlit = params.unlit;
238
+ if (params.bevelSize !== undefined)
239
+ material.bevelSize = params.bevelSize;
240
+ if (params.mapAlphaUsage !== undefined)
241
+ material.mapAlphaUsage = params.mapAlphaUsage;
242
+ if (params.uvProjection !== undefined)
243
+ material.uvProjection = params.uvProjection;
244
+ if (params.uvProjectionScale !== undefined)
245
+ material.uvProjectionScale = params.uvProjectionScale;
246
+ if (params.displacementUvProjection !== undefined)
247
+ material.displacementUvProjection = params.displacementUvProjection;
248
+ if (params.displacementUvProjectionScale !== undefined)
249
+ material.displacementUvProjectionScale = params.displacementUvProjectionScale;
250
+ if (params.displacementMap !== undefined)
251
+ material.displacementMap = params.displacementMap;
252
+ if (params.displacementScale !== undefined)
253
+ material.displacementScale = params.displacementScale;
254
+ if (params.displacementBias !== undefined)
255
+ material.displacementBias = params.displacementBias;
256
+ if (params.displacementStepSize !== undefined)
257
+ material.displacementStepSize = params.displacementStepSize;
258
+ if (params.thinFilmThicknessMinimum !== undefined)
259
+ material.thinFilmThicknessMinimum = params.thinFilmThicknessMinimum;
260
+ if (params.thinFilmMapChannel !== undefined)
261
+ material.thinFilmMapChannel = params.thinFilmMapChannel;
262
+ if (params.coatWeightMap !== undefined)
263
+ material.coatWeightMap = params.coatWeightMap;
264
+ if (params.coatRoughnessMap !== undefined)
265
+ material.coatRoughnessMap = params.coatRoughnessMap;
266
+ if (params.fuzzColorMap !== undefined)
267
+ material.fuzzColorMap = params.fuzzColorMap;
268
+ if (params.fuzzRoughnessMap !== undefined)
269
+ material.fuzzRoughnessMap = params.fuzzRoughnessMap;
270
+ if (params.specularWeightMap !== undefined)
271
+ material.specularWeightMap = params.specularWeightMap;
272
+ if (params.specularColorMap !== undefined)
273
+ material.specularColorMap = params.specularColorMap;
274
+ if (params.anisotropyMap !== undefined)
275
+ material.anisotropyMap = params.anisotropyMap;
276
+ if (params.specularAnisotropyRotation !== undefined)
277
+ material.specularAnisotropyRotation = params.specularAnisotropyRotation;
278
+ if (params.coatAnisotropyRotation !== undefined)
279
+ material.coatAnisotropyRotation = params.coatAnisotropyRotation;
280
+ if (params.specularAnisotropyModel !== undefined)
281
+ material.specularAnisotropyModel = params.specularAnisotropyModel;
282
+ if (params.coatNormalMap !== undefined)
283
+ material.coatNormalMap = params.coatNormalMap;
284
+ if (params.coatNormalScale !== undefined)
285
+ material.coatNormalScale = params.coatNormalScale;
129
286
  }
130
287
  let textureId = 1;
131
288
  const textureWeakMap = new WeakMap();
132
289
  export function resetMaterialTextureId() { textureId = 1; }
290
+ function hashScalar(value) {
291
+ return value == null ? '$' : String(value);
292
+ }
293
+ function hashColor(value) {
294
+ return value == null ? '$' : [value[0], value[1], value[2]].join('_');
295
+ }
296
+ function hashVec2(value) {
297
+ if (value == null)
298
+ return '$';
299
+ if (value instanceof Float32Array) {
300
+ const values = [];
301
+ for (let i = 0; i < value.length; i++)
302
+ values.push(value[i]);
303
+ return values.join('_');
304
+ }
305
+ return [value[0], value[1]].join('_');
306
+ }
307
+ function hashTexture(value) {
308
+ if (!value)
309
+ return '$';
310
+ if (!textureWeakMap.has(value))
311
+ textureWeakMap.set(value, textureId++);
312
+ return `${textureWeakMap.get(value)}@${value.version}`;
313
+ }
133
314
  export function getMaterialHashKey(material) {
134
- return openPbrSchema.map(({ key }) => {
135
- const value = material[key];
136
- if (value == null)
137
- return '$';
138
- if (value instanceof Texture) {
139
- if (!textureWeakMap.has(value))
140
- textureWeakMap.set(value, textureId++);
141
- return `${textureWeakMap.get(value)}@${value.version}`;
142
- }
143
- if (typeof value === 'string')
144
- return value;
145
- if (typeof value === 'object' && 'length' in value)
146
- return Array.from(value).join('_');
147
- return value;
148
- }).join('_');
315
+ // Match schema order without constructing a heterogeneous native value union.
316
+ return [
317
+ hashScalar(material.baseWeight),
318
+ hashColor(material.baseColor),
319
+ hashScalar(material.baseDiffuseRoughness),
320
+ hashScalar(material.baseMetalness),
321
+ hashScalar(material.specularWeight),
322
+ hashColor(material.specularColor),
323
+ hashScalar(material.specularRoughness),
324
+ hashScalar(material.specularIor),
325
+ hashScalar(material.specularAnisotropy),
326
+ hashScalar(material.transmissionWeight),
327
+ hashColor(material.transmissionColor),
328
+ hashScalar(material.transmissionDepth),
329
+ hashColor(material.transmissionScatter),
330
+ hashScalar(material.transmissionScatterAnisotropy),
331
+ hashScalar(material.transmissionDispersionScale),
332
+ hashScalar(material.transmissionDispersionAbbeNumber),
333
+ hashScalar(material.subsurfaceWeight),
334
+ hashColor(material.subsurfaceColor),
335
+ hashScalar(material.subsurfaceRadius),
336
+ hashColor(material.subsurfaceRadiusScale),
337
+ hashScalar(material.subsurfaceAnisotropy),
338
+ hashScalar(material.fuzzWeight),
339
+ hashColor(material.fuzzColor),
340
+ hashScalar(material.fuzzRoughness),
341
+ hashScalar(material.coatWeight),
342
+ hashColor(material.coatColor),
343
+ hashScalar(material.coatRoughness),
344
+ hashScalar(material.coatAnisotropy),
345
+ hashScalar(material.coatIor),
346
+ hashScalar(material.coatDarkening),
347
+ hashScalar(material.thinFilmWeight),
348
+ hashScalar(material.thinFilmThickness),
349
+ hashScalar(material.thinFilmIor),
350
+ hashColor(material.emissionColor),
351
+ hashScalar(material.emissionLuminance),
352
+ hashScalar(material.opacity),
353
+ hashScalar(material.thinWalled),
354
+ hashScalar(material.doubleSided),
355
+ hashTexture(material.map),
356
+ hashTexture(material.alphaMap),
357
+ hashScalar(material.alphaMode),
358
+ hashScalar(material.alphaCutoff),
359
+ hashTexture(material.emissiveMap),
360
+ hashTexture(material.normalMap),
361
+ hashVec2(material.normalScale),
362
+ hashTexture(material.metallicRoughnessMap),
363
+ hashTexture(material.roughnessMap),
364
+ hashTexture(material.metalnessMap),
365
+ hashTexture(material.transmissionMap),
366
+ hashTexture(material.thinFilmMap),
367
+ hashScalar(material.shadowCatcher),
368
+ hashScalar(material.unlit),
369
+ hashScalar(material.bevelSize),
370
+ hashScalar(material.mapAlphaUsage),
371
+ hashScalar(material.uvProjection),
372
+ hashVec2(material.uvProjectionScale),
373
+ hashScalar(material.displacementUvProjection),
374
+ hashScalar(material.displacementUvProjectionScale),
375
+ hashTexture(material.displacementMap),
376
+ hashScalar(material.displacementScale),
377
+ hashScalar(material.displacementStepSize),
378
+ hashScalar(material.thinFilmThicknessMinimum),
379
+ hashScalar(material.thinFilmMapChannel),
380
+ hashTexture(material.coatWeightMap),
381
+ hashTexture(material.coatRoughnessMap),
382
+ hashTexture(material.fuzzColorMap),
383
+ hashTexture(material.fuzzRoughnessMap),
384
+ hashTexture(material.specularWeightMap),
385
+ hashTexture(material.specularColorMap),
386
+ hashTexture(material.anisotropyMap),
387
+ hashScalar(material.specularAnisotropyRotation),
388
+ hashScalar(material.coatAnisotropyRotation),
389
+ hashScalar(material.specularAnisotropyModel),
390
+ hashTexture(material.coatNormalMap),
391
+ hashVec2(material.coatNormalScale),
392
+ hashScalar(material.displacementBias),
393
+ ].join('_');
149
394
  }
150
395
  //# sourceMappingURL=openPbrSchema.js.map