@meimu/mutracer 0.1.4 → 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 (529) 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 +10421 -8363
  6. package/docs/api.md +202 -11
  7. package/docs/denoising.md +30 -15
  8. package/docs/materials.md +18 -27
  9. package/docs/performance.md +5 -2
  10. package/docs/progressive-rendering.md +32 -1
  11. package/docs/threejs.md +19 -10
  12. package/docs/updates.md +44 -2
  13. package/docs/viewer.md +41 -3
  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 -548
  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 +83 -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 +437 -435
  206. package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
  207. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +146 -145
  208. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
  209. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +821 -821
  210. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js.map +1 -1
  211. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  212. package/lib/renderer/glsl/chunks/random.glsl.js +6 -6
  213. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +51 -51
  214. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
  215. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +80 -80
  216. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +108 -108
  217. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js.map +1 -1
  218. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +20 -17
  219. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js.map +1 -1
  220. package/lib/renderer/glsl/chunks/sampling.glsl.js +93 -93
  221. package/lib/renderer/glsl/chunks/sobol.glsl.js +79 -79
  222. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  223. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +12 -12
  224. package/lib/renderer/glsl/chunks/uvProjection.glsl.js.map +1 -1
  225. package/lib/renderer/glsl/depthQuery.frag.js +7 -7
  226. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +17 -9
  227. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js.map +1 -1
  228. package/lib/renderer/glsl/rayTrace.frag.js +191 -191
  229. package/lib/renderer/glsl/shadowCatcher.frag.js +25 -20
  230. package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
  231. package/lib/renderer/glsl/webglPipeline.frag.js +65 -60
  232. package/lib/renderer/glsl/webglPipeline.frag.js.map +1 -1
  233. package/lib/renderer/lightConstants.d.ts +10 -0
  234. package/lib/renderer/lightConstants.js +11 -0
  235. package/lib/renderer/lightConstants.js.map +1 -0
  236. package/lib/renderer/lightCore.d.ts +12 -0
  237. package/lib/renderer/lightCore.js +13 -0
  238. package/lib/renderer/lightCore.js.map +1 -0
  239. package/lib/renderer/lightSampling.d.ts +20 -17
  240. package/lib/renderer/lightSampling.js +123 -56
  241. package/lib/renderer/lightSampling.js.map +1 -1
  242. package/lib/renderer/lightsData.d.ts +21 -0
  243. package/lib/renderer/lightsData.js +192 -0
  244. package/lib/renderer/lightsData.js.map +1 -0
  245. package/lib/renderer/lightsUtil.d.ts +3 -26
  246. package/lib/renderer/lightsUtil.js +3 -153
  247. package/lib/renderer/lightsUtil.js.map +1 -1
  248. package/lib/renderer/materialBufferData.d.ts +70 -0
  249. package/lib/renderer/materialBufferData.js +2 -0
  250. package/lib/renderer/materialBufferData.js.map +1 -0
  251. package/lib/renderer/materialConstants.d.ts +11 -0
  252. package/lib/renderer/materialConstants.js +11 -0
  253. package/lib/renderer/materialConstants.js.map +1 -1
  254. package/lib/renderer/materialCore.d.ts +8 -0
  255. package/lib/renderer/materialCore.js +9 -0
  256. package/lib/renderer/materialCore.js.map +1 -0
  257. package/lib/renderer/materialEmission.d.ts +2 -2
  258. package/lib/renderer/materialEmission.js +3 -3
  259. package/lib/renderer/materialEmission.js.map +1 -1
  260. package/lib/renderer/materialLayout.d.ts +2 -101
  261. package/lib/renderer/materialLayout.js +110 -172
  262. package/lib/renderer/materialLayout.js.map +1 -1
  263. package/lib/renderer/materialLayoutSchema.d.ts +26 -0
  264. package/lib/renderer/materialLayoutSchema.js +172 -0
  265. package/lib/renderer/materialLayoutSchema.js.map +1 -0
  266. package/lib/renderer/materialParams.d.ts +69 -0
  267. package/lib/renderer/materialParams.js +272 -0
  268. package/lib/renderer/materialParams.js.map +1 -0
  269. package/lib/renderer/materialTextureSlots.d.ts +14 -324
  270. package/lib/renderer/materialTextureSlots.js +21 -8
  271. package/lib/renderer/materialTextureSlots.js.map +1 -1
  272. package/lib/renderer/materialTextures.d.ts +6 -0
  273. package/lib/renderer/{texturesFromMaterials.js → materialTextures.js} +1 -2
  274. package/lib/renderer/materialTextures.js.map +1 -0
  275. package/lib/renderer/mergeMeshesToGeometry.js +6 -147
  276. package/lib/renderer/mergeMeshesToGeometry.js.map +1 -1
  277. package/lib/renderer/meshInstances.d.ts +4 -21
  278. package/lib/renderer/meshInstances.js +10 -56
  279. package/lib/renderer/meshInstances.js.map +1 -1
  280. package/lib/renderer/oidnNetwork.d.ts +2 -2
  281. package/lib/renderer/oidnNetwork.js +1 -1
  282. package/lib/renderer/oidnNetwork.js.map +1 -1
  283. package/lib/renderer/openPbrEnergyLut.js +850 -846
  284. package/lib/renderer/openPbrEnergyLut.js.map +1 -1
  285. package/lib/renderer/ownedDenoiser.d.ts +9 -0
  286. package/lib/renderer/ownedDenoiser.js +2 -0
  287. package/lib/renderer/ownedDenoiser.js.map +1 -0
  288. package/lib/renderer/packedMeshInstances.d.ts +23 -0
  289. package/lib/renderer/packedMeshInstances.js +80 -0
  290. package/lib/renderer/packedMeshInstances.js.map +1 -0
  291. package/lib/renderer/prepareMeshBVH.d.ts +12 -47
  292. package/lib/renderer/prepareMeshBVH.js +21 -642
  293. package/lib/renderer/prepareMeshBVH.js.map +1 -1
  294. package/lib/renderer/proceduralEnvironmentPower.d.ts +3 -0
  295. package/lib/renderer/proceduralEnvironmentPower.js +8 -0
  296. package/lib/renderer/proceduralEnvironmentPower.js.map +1 -0
  297. package/lib/renderer/progressiveScheduler.d.ts +1 -0
  298. package/lib/renderer/progressiveScheduler.js +3 -0
  299. package/lib/renderer/progressiveScheduler.js.map +1 -1
  300. package/lib/renderer/renderPipeline.d.ts +3 -1
  301. package/lib/renderer/renderPipeline.js.map +1 -1
  302. package/lib/renderer/renderingLimits.d.ts +9 -0
  303. package/lib/renderer/renderingLimits.js +18 -0
  304. package/lib/renderer/renderingLimits.js.map +1 -0
  305. package/lib/renderer/sceneAssembly.d.ts +73 -0
  306. package/lib/renderer/sceneAssembly.js +109 -0
  307. package/lib/renderer/sceneAssembly.js.map +1 -0
  308. package/lib/renderer/sceneChangeCore.d.ts +39 -0
  309. package/lib/renderer/sceneChangeCore.js +307 -0
  310. package/lib/renderer/sceneChangeCore.js.map +1 -0
  311. package/lib/renderer/sceneChangeDetector.d.ts +3 -6
  312. package/lib/renderer/sceneChangeDetector.js +24 -150
  313. package/lib/renderer/sceneChangeDetector.js.map +1 -1
  314. package/lib/renderer/sceneLayoutSchema.d.ts +118 -0
  315. package/lib/renderer/sceneLayoutSchema.js +111 -0
  316. package/lib/renderer/sceneLayoutSchema.js.map +1 -0
  317. package/lib/renderer/sceneLightChanges.d.ts +3 -3
  318. package/lib/renderer/sceneLightChanges.js.map +1 -1
  319. package/lib/renderer/scenePreparation.d.ts +55 -0
  320. package/lib/renderer/scenePreparation.js +360 -0
  321. package/lib/renderer/scenePreparation.js.map +1 -0
  322. package/lib/renderer/scratchSampling.js +18 -18
  323. package/lib/renderer/scratchSampling.js.map +1 -1
  324. package/lib/renderer/shader.d.ts +2 -0
  325. package/lib/renderer/shader.js +2 -0
  326. package/lib/renderer/shader.js.map +1 -1
  327. package/lib/renderer/shaderCapabilities.d.ts +23 -0
  328. package/lib/renderer/shaderCapabilities.js +55 -0
  329. package/lib/renderer/shaderCapabilities.js.map +1 -0
  330. package/lib/renderer/shaderCapacity.d.ts +2 -0
  331. package/lib/renderer/shaderCapacity.js +5 -0
  332. package/lib/renderer/shaderCapacity.js.map +1 -0
  333. package/lib/renderer/skyModel.d.ts +9 -0
  334. package/lib/renderer/skyModel.js +10 -0
  335. package/lib/renderer/skyModel.js.map +1 -0
  336. package/lib/renderer/textureAtlas.d.ts +60 -0
  337. package/lib/renderer/textureAtlas.js +145 -0
  338. package/lib/renderer/textureAtlas.js.map +1 -0
  339. package/lib/renderer/textureAtlasPixels.d.ts +7 -0
  340. package/lib/renderer/textureAtlasPixels.js +68 -0
  341. package/lib/renderer/textureAtlasPixels.js.map +1 -0
  342. package/lib/renderer/util.d.ts +1 -1
  343. package/lib/renderer/util.js.map +1 -1
  344. package/lib/renderer/webgl.d.ts +9 -2
  345. package/lib/renderer/webgl.js +54 -9
  346. package/lib/renderer/webgl.js.map +1 -1
  347. package/lib/renderer/wgpuBindless.d.ts +26 -0
  348. package/lib/renderer/wgpuBindless.js +95 -0
  349. package/lib/renderer/wgpuBindless.js.map +1 -0
  350. package/lib/renderer/wgpuBindlessSource.d.ts +2 -0
  351. package/lib/renderer/wgpuBindlessSource.js +51 -0
  352. package/lib/renderer/wgpuBindlessSource.js.map +1 -0
  353. package/lib/renderer/wgpuMaterialConstants.d.ts +4 -0
  354. package/lib/renderer/wgpuMaterialConstants.js +52 -0
  355. package/lib/renderer/wgpuMaterialConstants.js.map +1 -0
  356. package/lib/renderer/wgpuSceneUniform.d.ts +42 -0
  357. package/lib/renderer/wgpuSceneUniform.js +125 -0
  358. package/lib/renderer/wgpuSceneUniform.js.map +1 -0
  359. package/lib/renderer/wgpuShaderSource.d.ts +15 -0
  360. package/lib/renderer/wgpuShaderSource.js +31 -0
  361. package/lib/renderer/wgpuShaderSource.js.map +1 -0
  362. package/lib/renderer/wgsl/aovDisplay.wgsl.d.ts +1 -0
  363. package/lib/renderer/wgsl/aovDisplay.wgsl.js +70 -0
  364. package/lib/renderer/wgsl/aovDisplay.wgsl.js.map +1 -0
  365. package/lib/renderer/wgsl/aovReflectance.wgsl.d.ts +2 -0
  366. package/lib/renderer/wgsl/aovReflectance.wgsl.js +98 -0
  367. package/lib/renderer/wgsl/aovReflectance.wgsl.js.map +1 -0
  368. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.d.ts +2 -0
  369. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.js +135 -0
  370. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.js.map +1 -0
  371. package/lib/renderer/wgsl/aovResolve.wgsl.d.ts +5 -0
  372. package/lib/renderer/wgsl/aovResolve.wgsl.js +38 -0
  373. package/lib/renderer/wgsl/aovResolve.wgsl.js.map +1 -0
  374. package/lib/renderer/wgsl/aovSnapshot.wgsl.d.ts +4 -0
  375. package/lib/renderer/wgsl/aovSnapshot.wgsl.js +21 -0
  376. package/lib/renderer/wgsl/aovSnapshot.wgsl.js.map +1 -0
  377. package/lib/renderer/wgsl/aovTrace.wgsl.d.ts +2 -0
  378. package/lib/renderer/wgsl/aovTrace.wgsl.js +115 -0
  379. package/lib/renderer/wgsl/aovTrace.wgsl.js.map +1 -0
  380. package/lib/renderer/wgsl/bloom.wgsl.d.ts +13 -0
  381. package/lib/renderer/wgsl/bloom.wgsl.js +92 -0
  382. package/lib/renderer/wgsl/bloom.wgsl.js.map +1 -0
  383. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  384. package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +1 -1
  385. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +43 -37
  386. package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -1
  387. package/lib/renderer/wgsl/chunks/intersect.wgsl.d.ts +13 -1
  388. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +743 -706
  389. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  390. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +16 -16
  391. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js.map +1 -1
  392. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.d.ts +3 -1
  393. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +86 -83
  394. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
  395. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +855 -857
  396. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js.map +1 -1
  397. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +139 -139
  398. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  399. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.d.ts +2 -1
  400. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +42 -32
  401. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
  402. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.d.ts +1 -1
  403. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +152 -148
  404. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js.map +1 -1
  405. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +239 -232
  406. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js.map +1 -1
  407. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.d.ts +1 -1
  408. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +26 -13
  409. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js.map +1 -1
  410. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +91 -91
  411. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +1 -1
  412. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +1 -0
  413. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
  414. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +83 -83
  415. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +12 -12
  416. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js.map +1 -1
  417. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +8 -3
  418. package/lib/renderer/wgsl/compose.frag.wgsl.js +143 -118
  419. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
  420. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  421. package/lib/renderer/wgsl/depthQuery.wgsl.js +7 -7
  422. package/lib/renderer/wgsl/jnlm.compute.d.ts +25 -0
  423. package/lib/renderer/wgsl/jnlm.compute.js +315 -0
  424. package/lib/renderer/wgsl/jnlm.compute.js.map +1 -0
  425. package/lib/renderer/wgsl/offlineAdaptive.compute.js +28 -28
  426. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.d.ts +1 -0
  427. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.js +17 -0
  428. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.js.map +1 -0
  429. package/lib/renderer/wgsl/proceduralSky.compute.d.ts +1 -0
  430. package/lib/renderer/wgsl/proceduralSky.compute.js +198 -0
  431. package/lib/renderer/wgsl/proceduralSky.compute.js.map +1 -0
  432. package/lib/renderer/wgsl/rayTrace.compute.d.ts +17 -1
  433. package/lib/renderer/wgsl/rayTrace.compute.js +612 -393
  434. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  435. package/lib/scene/Camera.js +7 -3
  436. package/lib/scene/Camera.js.map +1 -1
  437. package/lib/scene/EnvironmentLight.d.ts +5 -9
  438. package/lib/scene/EnvironmentLight.js +4 -14
  439. package/lib/scene/EnvironmentLight.js.map +1 -1
  440. package/lib/scene/EnvironmentLightState.d.ts +18 -0
  441. package/lib/scene/EnvironmentLightState.js +19 -0
  442. package/lib/scene/EnvironmentLightState.js.map +1 -0
  443. package/lib/scene/Geometry.d.ts +12 -6
  444. package/lib/scene/Geometry.js +37 -13
  445. package/lib/scene/Geometry.js.map +1 -1
  446. package/lib/scene/InstanceState.d.ts +39 -0
  447. package/lib/scene/InstanceState.js +77 -0
  448. package/lib/scene/InstanceState.js.map +1 -0
  449. package/lib/scene/InstancedMesh.d.ts +1 -1
  450. package/lib/scene/InstancedMesh.js +3 -0
  451. package/lib/scene/InstancedMesh.js.map +1 -1
  452. package/lib/scene/MaterialState.d.ts +209 -0
  453. package/lib/scene/MaterialState.js +231 -0
  454. package/lib/scene/MaterialState.js.map +1 -0
  455. package/lib/scene/Mesh.d.ts +4 -6
  456. package/lib/scene/Mesh.js +3 -11
  457. package/lib/scene/Mesh.js.map +1 -1
  458. package/lib/scene/MeshState.d.ts +20 -0
  459. package/lib/scene/MeshState.js +35 -0
  460. package/lib/scene/MeshState.js.map +1 -0
  461. package/lib/scene/OpenPBRMaterial.d.ts +7 -169
  462. package/lib/scene/OpenPBRMaterial.js +5 -223
  463. package/lib/scene/OpenPBRMaterial.js.map +1 -1
  464. package/lib/scene/PixelTexture.d.ts +6 -0
  465. package/lib/scene/PixelTexture.js +10 -0
  466. package/lib/scene/PixelTexture.js.map +1 -0
  467. package/lib/scene/ProceduralSky.d.ts +24 -0
  468. package/lib/scene/ProceduralSky.js +40 -0
  469. package/lib/scene/ProceduralSky.js.map +1 -0
  470. package/lib/scene/RectLight.d.ts +2 -13
  471. package/lib/scene/RectLight.js +3 -21
  472. package/lib/scene/RectLight.js.map +1 -1
  473. package/lib/scene/RectLightState.d.ts +31 -0
  474. package/lib/scene/RectLightState.js +26 -0
  475. package/lib/scene/RectLightState.js.map +1 -0
  476. package/lib/scene/Scene.d.ts +15 -4
  477. package/lib/scene/Scene.js.map +1 -1
  478. package/lib/scene/SceneNode.js +7 -6
  479. package/lib/scene/SceneNode.js.map +1 -1
  480. package/lib/scene/Texture.d.ts +10 -41
  481. package/lib/scene/Texture.js +4 -33
  482. package/lib/scene/Texture.js.map +1 -1
  483. package/lib/scene/TextureState.d.ts +35 -0
  484. package/lib/scene/TextureState.js +35 -0
  485. package/lib/scene/TextureState.js.map +1 -0
  486. package/lib/scene/attributeData.d.ts +4 -0
  487. package/lib/scene/attributeData.js +10 -0
  488. package/lib/scene/attributeData.js.map +1 -0
  489. package/lib/scene/lightState.d.ts +8 -0
  490. package/lib/scene/lightState.js +2 -0
  491. package/lib/scene/lightState.js.map +1 -0
  492. package/lib/scene/openPbrSchema.d.ts +7 -12
  493. package/lib/scene/openPbrSchema.js +273 -28
  494. package/lib/scene/openPbrSchema.js.map +1 -1
  495. package/lib/scene/skyParameters.d.ts +20 -0
  496. package/lib/scene/skyParameters.js +28 -0
  497. package/lib/scene/skyParameters.js.map +1 -0
  498. package/lib/scene/textureData.d.ts +9 -0
  499. package/lib/scene/textureData.js +2 -0
  500. package/lib/scene/textureData.js.map +1 -0
  501. package/lib/scene/texturePixels.d.ts +6 -0
  502. package/lib/scene/texturePixels.js +10 -0
  503. package/lib/scene/texturePixels.js.map +1 -0
  504. package/lib/settings/display.d.ts +33 -0
  505. package/lib/settings/display.js +7 -0
  506. package/lib/settings/display.js.map +1 -1
  507. package/lib/settings/render.d.ts +25 -3
  508. package/lib/settings/render.js +3 -1
  509. package/lib/settings/render.js.map +1 -1
  510. package/lib/tinybvh/tinybvh.wasm +0 -0
  511. package/lib/util/commonGeometry.js +7 -7
  512. package/lib/util/commonGeometry.js.map +1 -1
  513. package/lib/util/fromTHREE.d.ts +4 -1
  514. package/lib/util/fromTHREE.js +18 -5
  515. package/lib/util/fromTHREE.js.map +1 -1
  516. package/lib/util/geometry.js +42 -29
  517. package/lib/util/geometry.js.map +1 -1
  518. package/lib/util/loadRGBE.js +3 -4
  519. package/lib/util/loadRGBE.js.map +1 -1
  520. package/lib/util/studioLighting.d.ts +18 -0
  521. package/lib/util/studioLighting.js +36 -0
  522. package/lib/util/studioLighting.js.map +1 -0
  523. package/lib/version.d.ts +1 -1
  524. package/lib/version.js +1 -1
  525. package/lib/version.js.map +1 -1
  526. package/llms.txt +4 -0
  527. package/package.json +31 -5
  528. package/lib/renderer/texturesFromMaterials.d.ts +0 -6
  529. 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