@meimu/mutracer 0.0.0-stage → 0.1.1

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 (536) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSES/Apache-2.0.txt +202 -0
  3. package/LICENSES/GLSL-PathTracer-MIT.txt +21 -0
  4. package/LICENSES/GlMatrix-MIT.txt +19 -0
  5. package/LICENSES/KinoBloom-MIT.txt +21 -0
  6. package/LICENSES/OIDNWeb-MIT.txt +21 -0
  7. package/LICENSES/Octicons-MIT.txt +21 -0
  8. package/LICENSES/RayTracingRenderer-MIT.txt +21 -0
  9. package/LICENSES/TinyBVH-MIT.txt +21 -0
  10. package/LICENSES/WebGPUUtils-MIT.txt +21 -0
  11. package/LICENSES/ZetaRay-MIT.txt +21 -0
  12. package/README.md +240 -2
  13. package/THIRD_PARTY_NOTICES.md +160 -0
  14. package/dist/assets/bvh.worker.js +1 -0
  15. package/dist/mutracer.umd.js +14360 -0
  16. package/docs/api.md +394 -0
  17. package/docs/bvh.md +141 -0
  18. package/docs/denoising.md +301 -0
  19. package/docs/getting-started.md +308 -0
  20. package/docs/materials.md +281 -0
  21. package/docs/performance.md +85 -0
  22. package/docs/post-processing.md +87 -0
  23. package/docs/progressive-rendering.md +160 -0
  24. package/docs/sampling.md +40 -0
  25. package/docs/threejs.md +274 -0
  26. package/docs/todo.md +61 -0
  27. package/docs/updates.md +208 -0
  28. package/lib/Display.d.ts +72 -0
  29. package/lib/Display.js +123 -0
  30. package/lib/Display.js.map +1 -0
  31. package/lib/Engine.d.ts +161 -0
  32. package/lib/Engine.js +681 -0
  33. package/lib/Engine.js.map +1 -0
  34. package/lib/Render.d.ts +265 -0
  35. package/lib/Render.js +742 -0
  36. package/lib/Render.js.map +1 -0
  37. package/lib/RenderLoop.d.ts +79 -0
  38. package/lib/RenderLoop.js +236 -0
  39. package/lib/RenderLoop.js.map +1 -0
  40. package/lib/Sync.d.ts +19 -0
  41. package/lib/Sync.js +19 -0
  42. package/lib/Sync.js.map +1 -0
  43. package/lib/constants.d.ts +2 -0
  44. package/lib/constants.js +3 -0
  45. package/lib/constants.js.map +1 -0
  46. package/lib/main.d.ts +56 -0
  47. package/lib/main.js +43 -0
  48. package/lib/main.js.map +1 -0
  49. package/lib/math.d.ts +23 -0
  50. package/lib/math.js +56 -0
  51. package/lib/math.js.map +1 -0
  52. package/lib/oidn.d.ts +45 -0
  53. package/lib/oidn.js +42 -0
  54. package/lib/oidn.js.map +1 -0
  55. package/lib/oidnBundledWeights.cdn.d.ts +2 -0
  56. package/lib/oidnBundledWeights.cdn.js +5 -0
  57. package/lib/oidnBundledWeights.cdn.js.map +1 -0
  58. package/lib/oidnBundledWeights.d.ts +2 -0
  59. package/lib/oidnBundledWeights.js +4 -0
  60. package/lib/oidnBundledWeights.js.map +1 -0
  61. package/lib/renderer/DisplayPostProcess.d.ts +14 -0
  62. package/lib/renderer/DisplayPostProcess.js +41 -0
  63. package/lib/renderer/DisplayPostProcess.js.map +1 -0
  64. package/lib/renderer/MaterialTable.d.ts +119 -0
  65. package/lib/renderer/MaterialTable.js +550 -0
  66. package/lib/renderer/MaterialTable.js.map +1 -0
  67. package/lib/renderer/OfflineAdaptiveSampling.d.ts +47 -0
  68. package/lib/renderer/OfflineAdaptiveSampling.js +36 -0
  69. package/lib/renderer/OfflineAdaptiveSampling.js.map +1 -0
  70. package/lib/renderer/RenderingPipeline.d.ts +232 -0
  71. package/lib/renderer/RenderingPipeline.js +18 -0
  72. package/lib/renderer/RenderingPipeline.js.map +1 -0
  73. package/lib/renderer/ScratchPool.d.ts +13 -0
  74. package/lib/renderer/ScratchPool.js +21 -0
  75. package/lib/renderer/ScratchPool.js.map +1 -0
  76. package/lib/renderer/TileRender.d.ts +44 -0
  77. package/lib/renderer/TileRender.js +283 -0
  78. package/lib/renderer/TileRender.js.map +1 -0
  79. package/lib/renderer/WGPUBloomPass.d.ts +17 -0
  80. package/lib/renderer/WGPUBloomPass.js +243 -0
  81. package/lib/renderer/WGPUBloomPass.js.map +1 -0
  82. package/lib/renderer/WGPUCanvasSurface.d.ts +21 -0
  83. package/lib/renderer/WGPUCanvasSurface.js +48 -0
  84. package/lib/renderer/WGPUCanvasSurface.js.map +1 -0
  85. package/lib/renderer/WGPUComputePass.d.ts +73 -0
  86. package/lib/renderer/WGPUComputePass.js +317 -0
  87. package/lib/renderer/WGPUComputePass.js.map +1 -0
  88. package/lib/renderer/WGPUFullQuadPass.d.ts +73 -0
  89. package/lib/renderer/WGPUFullQuadPass.js +389 -0
  90. package/lib/renderer/WGPUFullQuadPass.js.map +1 -0
  91. package/lib/renderer/WGPUHDRPeakMeter.d.ts +19 -0
  92. package/lib/renderer/WGPUHDRPeakMeter.js +112 -0
  93. package/lib/renderer/WGPUHDRPeakMeter.js.map +1 -0
  94. package/lib/renderer/WGPUJNLMDenoiser.d.ts +61 -0
  95. package/lib/renderer/WGPUJNLMDenoiser.js +412 -0
  96. package/lib/renderer/WGPUJNLMDenoiser.js.map +1 -0
  97. package/lib/renderer/WGPURayTraceOutput.d.ts +44 -0
  98. package/lib/renderer/WGPURayTraceOutput.js +368 -0
  99. package/lib/renderer/WGPURayTraceOutput.js.map +1 -0
  100. package/lib/renderer/WGPURayTracePass.d.ts +284 -0
  101. package/lib/renderer/WGPURayTracePass.js +2323 -0
  102. package/lib/renderer/WGPURayTracePass.js.map +1 -0
  103. package/lib/renderer/WGPURenderingPipeline.d.ts +9 -0
  104. package/lib/renderer/WGPURenderingPipeline.js +1448 -0
  105. package/lib/renderer/WGPURenderingPipeline.js.map +1 -0
  106. package/lib/renderer/WGPUSceneFeatures.d.ts +3 -0
  107. package/lib/renderer/WGPUSceneFeatures.js +20 -0
  108. package/lib/renderer/WGPUSceneFeatures.js.map +1 -0
  109. package/lib/renderer/WGPUScratchBuffer.d.ts +9 -0
  110. package/lib/renderer/WGPUScratchBuffer.js +21 -0
  111. package/lib/renderer/WGPUScratchBuffer.js.map +1 -0
  112. package/lib/renderer/WGPUScratchTexture.d.ts +10 -0
  113. package/lib/renderer/WGPUScratchTexture.js +27 -0
  114. package/lib/renderer/WGPUScratchTexture.js.map +1 -0
  115. package/lib/renderer/WGPUShaderCache.d.ts +26 -0
  116. package/lib/renderer/WGPUShaderCache.js +103 -0
  117. package/lib/renderer/WGPUShaderCache.js.map +1 -0
  118. package/lib/renderer/WebGLBloomPass.d.ts +18 -0
  119. package/lib/renderer/WebGLBloomPass.js +113 -0
  120. package/lib/renderer/WebGLBloomPass.js.map +1 -0
  121. package/lib/renderer/WebGLFullQuadPass.d.ts +65 -0
  122. package/lib/renderer/WebGLFullQuadPass.js +208 -0
  123. package/lib/renderer/WebGLFullQuadPass.js.map +1 -0
  124. package/lib/renderer/WebGLJNLMDenoiser.d.ts +32 -0
  125. package/lib/renderer/WebGLJNLMDenoiser.js +328 -0
  126. package/lib/renderer/WebGLJNLMDenoiser.js.map +1 -0
  127. package/lib/renderer/WebGLRayTraceOutputPass.d.ts +20 -0
  128. package/lib/renderer/WebGLRayTraceOutputPass.js +106 -0
  129. package/lib/renderer/WebGLRayTraceOutputPass.js.map +1 -0
  130. package/lib/renderer/WebGLRayTracePass.d.ts +142 -0
  131. package/lib/renderer/WebGLRayTracePass.js +845 -0
  132. package/lib/renderer/WebGLRayTracePass.js.map +1 -0
  133. package/lib/renderer/WebGLReadback.d.ts +4 -0
  134. package/lib/renderer/WebGLReadback.js +75 -0
  135. package/lib/renderer/WebGLReadback.js.map +1 -0
  136. package/lib/renderer/WebGLRenderingPipeline.d.ts +4 -0
  137. package/lib/renderer/WebGLRenderingPipeline.js +510 -0
  138. package/lib/renderer/WebGLRenderingPipeline.js.map +1 -0
  139. package/lib/renderer/WebGLScratchCopy.d.ts +10 -0
  140. package/lib/renderer/WebGLScratchCopy.js +27 -0
  141. package/lib/renderer/WebGLScratchCopy.js.map +1 -0
  142. package/lib/renderer/accumulationTarget.d.ts +26 -0
  143. package/lib/renderer/accumulationTarget.js +2 -0
  144. package/lib/renderer/accumulationTarget.js.map +1 -0
  145. package/lib/renderer/binnedSahBvh.d.ts +31 -0
  146. package/lib/renderer/binnedSahBvh.js +263 -0
  147. package/lib/renderer/binnedSahBvh.js.map +1 -0
  148. package/lib/renderer/bvh.worker.d.ts +1 -0
  149. package/lib/renderer/bvh.worker.js +16 -0
  150. package/lib/renderer/bvh.worker.js.map +1 -0
  151. package/lib/renderer/bvhAccel.d.ts +81 -0
  152. package/lib/renderer/bvhAccel.js +621 -0
  153. package/lib/renderer/bvhAccel.js.map +1 -0
  154. package/lib/renderer/bvhWorkerBuild.d.ts +12 -0
  155. package/lib/renderer/bvhWorkerBuild.js +17 -0
  156. package/lib/renderer/bvhWorkerBuild.js.map +1 -0
  157. package/lib/renderer/bvhWorkerClient.d.ts +57 -0
  158. package/lib/renderer/bvhWorkerClient.js +166 -0
  159. package/lib/renderer/bvhWorkerClient.js.map +1 -0
  160. package/lib/renderer/cameraLens.d.ts +5 -0
  161. package/lib/renderer/cameraLens.js +15 -0
  162. package/lib/renderer/cameraLens.js.map +1 -0
  163. package/lib/renderer/cameraSnapshot.d.ts +3 -0
  164. package/lib/renderer/cameraSnapshot.js +7 -0
  165. package/lib/renderer/cameraSnapshot.js.map +1 -0
  166. package/lib/renderer/committedScene.d.ts +13 -0
  167. package/lib/renderer/committedScene.js +126 -0
  168. package/lib/renderer/committedScene.js.map +1 -0
  169. package/lib/renderer/dataTextureUtil.d.ts +32 -0
  170. package/lib/renderer/dataTextureUtil.js +46 -0
  171. package/lib/renderer/dataTextureUtil.js.map +1 -0
  172. package/lib/renderer/denoiser.d.ts +65 -0
  173. package/lib/renderer/denoiser.js +2 -0
  174. package/lib/renderer/denoiser.js.map +1 -0
  175. package/lib/renderer/depthQuery.d.ts +14 -0
  176. package/lib/renderer/depthQuery.js +14 -0
  177. package/lib/renderer/depthQuery.js.map +1 -0
  178. package/lib/renderer/deviceRequirements.d.ts +23 -0
  179. package/lib/renderer/deviceRequirements.js +50 -0
  180. package/lib/renderer/deviceRequirements.js.map +1 -0
  181. package/lib/renderer/envMapCreation.d.ts +10 -0
  182. package/lib/renderer/envMapCreation.js +96 -0
  183. package/lib/renderer/envMapCreation.js.map +1 -0
  184. package/lib/renderer/envMapDistribution.d.ts +9 -0
  185. package/lib/renderer/envMapDistribution.js +107 -0
  186. package/lib/renderer/envMapDistribution.js.map +1 -0
  187. package/lib/renderer/float16.d.ts +1 -0
  188. package/lib/renderer/float16.js +19 -0
  189. package/lib/renderer/float16.js.map +1 -0
  190. package/lib/renderer/geometryBvh.d.ts +11 -0
  191. package/lib/renderer/geometryBvh.js +24 -0
  192. package/lib/renderer/geometryBvh.js.map +1 -0
  193. package/lib/renderer/geometryUpdates.d.ts +28 -0
  194. package/lib/renderer/geometryUpdates.js +131 -0
  195. package/lib/renderer/geometryUpdates.js.map +1 -0
  196. package/lib/renderer/glsl/chunks/cameraRay.glsl.d.ts +2 -0
  197. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +37 -0
  198. package/lib/renderer/glsl/chunks/cameraRay.glsl.js.map +1 -0
  199. package/lib/renderer/glsl/chunks/common.glsl.d.ts +2 -0
  200. package/lib/renderer/glsl/chunks/common.glsl.js +17 -0
  201. package/lib/renderer/glsl/chunks/common.glsl.js.map +1 -0
  202. package/lib/renderer/glsl/chunks/envMap.glsl.d.ts +2 -0
  203. package/lib/renderer/glsl/chunks/envMap.glsl.js +192 -0
  204. package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -0
  205. package/lib/renderer/glsl/chunks/intersect.glsl.d.ts +2 -0
  206. package/lib/renderer/glsl/chunks/intersect.glsl.js +1091 -0
  207. package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -0
  208. package/lib/renderer/glsl/chunks/materialBuffer.glsl.d.ts +2 -0
  209. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +371 -0
  210. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -0
  211. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.d.ts +2 -0
  212. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +1767 -0
  213. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js.map +1 -0
  214. package/lib/renderer/glsl/chunks/rand.glsl.d.ts +2 -0
  215. package/lib/renderer/glsl/chunks/rand.glsl.js +26 -0
  216. package/lib/renderer/glsl/chunks/rand.glsl.js.map +1 -0
  217. package/lib/renderer/glsl/chunks/random.glsl.d.ts +2 -0
  218. package/lib/renderer/glsl/chunks/random.glsl.js +27 -0
  219. package/lib/renderer/glsl/chunks/random.glsl.js.map +1 -0
  220. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.d.ts +2 -0
  221. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +287 -0
  222. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -0
  223. package/lib/renderer/glsl/chunks/sampleLight.glsl.d.ts +2 -0
  224. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +254 -0
  225. package/lib/renderer/glsl/chunks/sampleLight.glsl.js.map +1 -0
  226. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.d.ts +2 -0
  227. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +279 -0
  228. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js.map +1 -0
  229. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.d.ts +2 -0
  230. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +48 -0
  231. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js.map +1 -0
  232. package/lib/renderer/glsl/chunks/sampling.glsl.d.ts +2 -0
  233. package/lib/renderer/glsl/chunks/sampling.glsl.js +194 -0
  234. package/lib/renderer/glsl/chunks/sampling.glsl.js.map +1 -0
  235. package/lib/renderer/glsl/chunks/sobol.glsl.d.ts +2 -0
  236. package/lib/renderer/glsl/chunks/sobol.glsl.js +170 -0
  237. package/lib/renderer/glsl/chunks/sobol.glsl.js.map +1 -0
  238. package/lib/renderer/glsl/chunks/textureLinear.glsl.d.ts +2 -0
  239. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +27 -0
  240. package/lib/renderer/glsl/chunks/textureLinear.glsl.js.map +1 -0
  241. package/lib/renderer/glsl/chunks/uvProjection.glsl.d.ts +2 -0
  242. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +72 -0
  243. package/lib/renderer/glsl/chunks/uvProjection.glsl.js.map +1 -0
  244. package/lib/renderer/glsl/depthQuery.frag.d.ts +3 -0
  245. package/lib/renderer/glsl/depthQuery.frag.js +55 -0
  246. package/lib/renderer/glsl/depthQuery.frag.js.map +1 -0
  247. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.d.ts +6 -0
  248. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +46 -0
  249. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js.map +1 -0
  250. package/lib/renderer/glsl/rayTrace.frag.d.ts +2 -0
  251. package/lib/renderer/glsl/rayTrace.frag.js +623 -0
  252. package/lib/renderer/glsl/rayTrace.frag.js.map +1 -0
  253. package/lib/renderer/glsl/shadowCatcher.frag.d.ts +3 -0
  254. package/lib/renderer/glsl/shadowCatcher.frag.js +119 -0
  255. package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -0
  256. package/lib/renderer/glsl/webglPipeline.frag.d.ts +4 -0
  257. package/lib/renderer/glsl/webglPipeline.frag.js +208 -0
  258. package/lib/renderer/glsl/webglPipeline.frag.js.map +1 -0
  259. package/lib/renderer/gpuMemory.d.ts +2 -0
  260. package/lib/renderer/gpuMemory.js +10 -0
  261. package/lib/renderer/gpuMemory.js.map +1 -0
  262. package/lib/renderer/halton.d.ts +1 -0
  263. package/lib/renderer/halton.js +15 -0
  264. package/lib/renderer/halton.js.map +1 -0
  265. package/lib/renderer/jnlm.d.ts +85 -0
  266. package/lib/renderer/jnlm.js +87 -0
  267. package/lib/renderer/jnlm.js.map +1 -0
  268. package/lib/renderer/lightSampling.d.ts +75 -0
  269. package/lib/renderer/lightSampling.js +305 -0
  270. package/lib/renderer/lightSampling.js.map +1 -0
  271. package/lib/renderer/lightsUtil.d.ts +26 -0
  272. package/lib/renderer/lightsUtil.js +154 -0
  273. package/lib/renderer/lightsUtil.js.map +1 -0
  274. package/lib/renderer/materialChanges.d.ts +13 -0
  275. package/lib/renderer/materialChanges.js +59 -0
  276. package/lib/renderer/materialChanges.js.map +1 -0
  277. package/lib/renderer/materialComparison.generated.d.ts +5 -0
  278. package/lib/renderer/materialComparison.generated.js +655 -0
  279. package/lib/renderer/materialComparison.generated.js.map +1 -0
  280. package/lib/renderer/materialConstants.d.ts +6 -0
  281. package/lib/renderer/materialConstants.js +3 -0
  282. package/lib/renderer/materialConstants.js.map +1 -0
  283. package/lib/renderer/materialEmission.d.ts +9 -0
  284. package/lib/renderer/materialEmission.js +21 -0
  285. package/lib/renderer/materialEmission.js.map +1 -0
  286. package/lib/renderer/materialIndices.d.ts +7 -0
  287. package/lib/renderer/materialIndices.js +34 -0
  288. package/lib/renderer/materialIndices.js.map +1 -0
  289. package/lib/renderer/materialLayout.d.ts +102 -0
  290. package/lib/renderer/materialLayout.js +189 -0
  291. package/lib/renderer/materialLayout.js.map +1 -0
  292. package/lib/renderer/materialTextureSlots.d.ts +537 -0
  293. package/lib/renderer/materialTextureSlots.js +219 -0
  294. package/lib/renderer/materialTextureSlots.js.map +1 -0
  295. package/lib/renderer/mergeMeshesToGeometry.d.ts +8 -0
  296. package/lib/renderer/mergeMeshesToGeometry.js +236 -0
  297. package/lib/renderer/mergeMeshesToGeometry.js.map +1 -0
  298. package/lib/renderer/meshInstances.d.ts +23 -0
  299. package/lib/renderer/meshInstances.js +66 -0
  300. package/lib/renderer/meshInstances.js.map +1 -0
  301. package/lib/renderer/meshMembership.d.ts +10 -0
  302. package/lib/renderer/meshMembership.js +72 -0
  303. package/lib/renderer/meshMembership.js.map +1 -0
  304. package/lib/renderer/oidnNetwork.d.ts +20 -0
  305. package/lib/renderer/oidnNetwork.js +123 -0
  306. package/lib/renderer/oidnNetwork.js.map +1 -0
  307. package/lib/renderer/openPbrEnergyLut.d.ts +32 -0
  308. package/lib/renderer/openPbrEnergyLut.js +965 -0
  309. package/lib/renderer/openPbrEnergyLut.js.map +1 -0
  310. package/lib/renderer/pathLimits.d.ts +4 -0
  311. package/lib/renderer/pathLimits.js +7 -0
  312. package/lib/renderer/pathLimits.js.map +1 -0
  313. package/lib/renderer/prepareMeshBVH.d.ts +110 -0
  314. package/lib/renderer/prepareMeshBVH.js +857 -0
  315. package/lib/renderer/prepareMeshBVH.js.map +1 -0
  316. package/lib/renderer/progressiveScheduler.d.ts +11 -0
  317. package/lib/renderer/progressiveScheduler.js +19 -0
  318. package/lib/renderer/progressiveScheduler.js.map +1 -0
  319. package/lib/renderer/renderPipeline.d.ts +57 -0
  320. package/lib/renderer/renderPipeline.js +49 -0
  321. package/lib/renderer/renderPipeline.js.map +1 -0
  322. package/lib/renderer/sampling.d.ts +10 -0
  323. package/lib/renderer/sampling.js +28 -0
  324. package/lib/renderer/sampling.js.map +1 -0
  325. package/lib/renderer/sceneChangeDetector.d.ts +29 -0
  326. package/lib/renderer/sceneChangeDetector.js +232 -0
  327. package/lib/renderer/sceneChangeDetector.js.map +1 -0
  328. package/lib/renderer/sceneLightChanges.d.ts +14 -0
  329. package/lib/renderer/sceneLightChanges.js +34 -0
  330. package/lib/renderer/sceneLightChanges.js.map +1 -0
  331. package/lib/renderer/scratchSampling.d.ts +3 -0
  332. package/lib/renderer/scratchSampling.js +39 -0
  333. package/lib/renderer/scratchSampling.js.map +1 -0
  334. package/lib/renderer/shader.d.ts +37 -0
  335. package/lib/renderer/shader.js +41 -0
  336. package/lib/renderer/shader.js.map +1 -0
  337. package/lib/renderer/staticBvhPreparation.d.ts +24 -0
  338. package/lib/renderer/staticBvhPreparation.js +116 -0
  339. package/lib/renderer/staticBvhPreparation.js.map +1 -0
  340. package/lib/renderer/textureRegion.d.ts +8 -0
  341. package/lib/renderer/textureRegion.js +9 -0
  342. package/lib/renderer/textureRegion.js.map +1 -0
  343. package/lib/renderer/texturesFromMaterials.d.ts +6 -0
  344. package/lib/renderer/texturesFromMaterials.js +37 -0
  345. package/lib/renderer/texturesFromMaterials.js.map +1 -0
  346. package/lib/renderer/util.d.ts +17 -0
  347. package/lib/renderer/util.js +56 -0
  348. package/lib/renderer/util.js.map +1 -0
  349. package/lib/renderer/webgl.d.ts +131 -0
  350. package/lib/renderer/webgl.js +586 -0
  351. package/lib/renderer/webgl.js.map +1 -0
  352. package/lib/renderer/webglShaders.d.ts +4 -0
  353. package/lib/renderer/webglShaders.js +41 -0
  354. package/lib/renderer/webglShaders.js.map +1 -0
  355. package/lib/renderer/wgsl/chunks/common.wgsl.d.ts +2 -0
  356. package/lib/renderer/wgsl/chunks/common.wgsl.js +23 -0
  357. package/lib/renderer/wgsl/chunks/common.wgsl.js.map +1 -0
  358. package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +2 -0
  359. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +128 -0
  360. package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -0
  361. package/lib/renderer/wgsl/chunks/intersect.wgsl.d.ts +6 -0
  362. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +1441 -0
  363. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -0
  364. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.d.ts +8 -0
  365. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +85 -0
  366. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js.map +1 -0
  367. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.d.ts +7 -0
  368. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +315 -0
  369. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -0
  370. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.d.ts +3 -0
  371. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +1737 -0
  372. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js.map +1 -0
  373. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +4 -0
  374. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +352 -0
  375. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js.map +1 -0
  376. package/lib/renderer/wgsl/chunks/rand.wgsl.d.ts +2 -0
  377. package/lib/renderer/wgsl/chunks/rand.wgsl.js +25 -0
  378. package/lib/renderer/wgsl/chunks/rand.wgsl.js.map +1 -0
  379. package/lib/renderer/wgsl/chunks/random.wgsl.d.ts +1 -0
  380. package/lib/renderer/wgsl/chunks/random.wgsl.js +2 -0
  381. package/lib/renderer/wgsl/chunks/random.wgsl.js.map +1 -0
  382. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.d.ts +5 -0
  383. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +328 -0
  384. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -0
  385. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.d.ts +2 -0
  386. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +400 -0
  387. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js.map +1 -0
  388. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.d.ts +3 -0
  389. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +439 -0
  390. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js.map +1 -0
  391. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.d.ts +2 -0
  392. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +40 -0
  393. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js.map +1 -0
  394. package/lib/renderer/wgsl/chunks/sampling.wgsl.d.ts +2 -0
  395. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +198 -0
  396. package/lib/renderer/wgsl/chunks/sampling.wgsl.js.map +1 -0
  397. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +8 -0
  398. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +16 -0
  399. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -0
  400. package/lib/renderer/wgsl/chunks/sobol.wgsl.d.ts +2 -0
  401. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +170 -0
  402. package/lib/renderer/wgsl/chunks/sobol.wgsl.js.map +1 -0
  403. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.d.ts +2 -0
  404. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +42 -0
  405. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js.map +1 -0
  406. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +5 -0
  407. package/lib/renderer/wgsl/compose.frag.wgsl.js +218 -0
  408. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -0
  409. package/lib/renderer/wgsl/customDenoise.wgsl.d.ts +4 -0
  410. package/lib/renderer/wgsl/customDenoise.wgsl.js +28 -0
  411. package/lib/renderer/wgsl/customDenoise.wgsl.js.map +1 -0
  412. package/lib/renderer/wgsl/depthQuery.wgsl.d.ts +3 -0
  413. package/lib/renderer/wgsl/depthQuery.wgsl.js +34 -0
  414. package/lib/renderer/wgsl/depthQuery.wgsl.js.map +1 -0
  415. package/lib/renderer/wgsl/offlineAdaptive.compute.d.ts +2 -0
  416. package/lib/renderer/wgsl/offlineAdaptive.compute.js +108 -0
  417. package/lib/renderer/wgsl/offlineAdaptive.compute.js.map +1 -0
  418. package/lib/renderer/wgsl/rayTrace.compute.d.ts +16 -0
  419. package/lib/renderer/wgsl/rayTrace.compute.js +927 -0
  420. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -0
  421. package/lib/scene/AmbientLight.d.ts +17 -0
  422. package/lib/scene/AmbientLight.js +15 -0
  423. package/lib/scene/AmbientLight.js.map +1 -0
  424. package/lib/scene/Camera.d.ts +78 -0
  425. package/lib/scene/Camera.js +111 -0
  426. package/lib/scene/Camera.js.map +1 -0
  427. package/lib/scene/DirectionalLight.d.ts +18 -0
  428. package/lib/scene/DirectionalLight.js +17 -0
  429. package/lib/scene/DirectionalLight.js.map +1 -0
  430. package/lib/scene/EnvironmentLight.d.ts +14 -0
  431. package/lib/scene/EnvironmentLight.js +14 -0
  432. package/lib/scene/EnvironmentLight.js.map +1 -0
  433. package/lib/scene/Geometry.d.ts +87 -0
  434. package/lib/scene/Geometry.js +108 -0
  435. package/lib/scene/Geometry.js.map +1 -0
  436. package/lib/scene/IESProfile.d.ts +19 -0
  437. package/lib/scene/IESProfile.js +165 -0
  438. package/lib/scene/IESProfile.js.map +1 -0
  439. package/lib/scene/InstancedMesh.d.ts +43 -0
  440. package/lib/scene/InstancedMesh.js +79 -0
  441. package/lib/scene/InstancedMesh.js.map +1 -0
  442. package/lib/scene/Mesh.d.ts +14 -0
  443. package/lib/scene/Mesh.js +17 -0
  444. package/lib/scene/Mesh.js.map +1 -0
  445. package/lib/scene/OpenPBRMaterial.d.ts +224 -0
  446. package/lib/scene/OpenPBRMaterial.js +240 -0
  447. package/lib/scene/OpenPBRMaterial.js.map +1 -0
  448. package/lib/scene/RectLight.d.ts +31 -0
  449. package/lib/scene/RectLight.js +26 -0
  450. package/lib/scene/RectLight.js.map +1 -0
  451. package/lib/scene/Scene.d.ts +55 -0
  452. package/lib/scene/Scene.js +2 -0
  453. package/lib/scene/Scene.js.map +1 -0
  454. package/lib/scene/SceneNode.d.ts +16 -0
  455. package/lib/scene/SceneNode.js +33 -0
  456. package/lib/scene/SceneNode.js.map +1 -0
  457. package/lib/scene/SphereLight.d.ts +22 -0
  458. package/lib/scene/SphereLight.js +20 -0
  459. package/lib/scene/SphereLight.js.map +1 -0
  460. package/lib/scene/SpotLight.d.ts +35 -0
  461. package/lib/scene/SpotLight.js +29 -0
  462. package/lib/scene/SpotLight.js.map +1 -0
  463. package/lib/scene/Texture.d.ts +38 -0
  464. package/lib/scene/Texture.js +37 -0
  465. package/lib/scene/Texture.js.map +1 -0
  466. package/lib/scene/anisotropyParameters.d.ts +1 -0
  467. package/lib/scene/anisotropyParameters.js +13 -0
  468. package/lib/scene/anisotropyParameters.js.map +1 -0
  469. package/lib/scene/geometryChanges.d.ts +5 -0
  470. package/lib/scene/geometryChanges.js +18 -0
  471. package/lib/scene/geometryChanges.js.map +1 -0
  472. package/lib/scene/materialTextureNames.d.ts +2 -0
  473. package/lib/scene/materialTextureNames.js +9 -0
  474. package/lib/scene/materialTextureNames.js.map +1 -0
  475. package/lib/scene/openPbrSchema.d.ts +400 -0
  476. package/lib/scene/openPbrSchema.js +149 -0
  477. package/lib/scene/openPbrSchema.js.map +1 -0
  478. package/lib/scene/thinFilmParameters.d.ts +4 -0
  479. package/lib/scene/thinFilmParameters.js +12 -0
  480. package/lib/scene/thinFilmParameters.js.map +1 -0
  481. package/lib/settings/display.d.ts +118 -0
  482. package/lib/settings/display.js +34 -0
  483. package/lib/settings/display.js.map +1 -0
  484. package/lib/settings/engine.d.ts +37 -0
  485. package/lib/settings/engine.js +26 -0
  486. package/lib/settings/engine.js.map +1 -0
  487. package/lib/settings/render.d.ts +178 -0
  488. package/lib/settings/render.js +36 -0
  489. package/lib/settings/render.js.map +1 -0
  490. package/lib/tinybvh/LICENSE +21 -0
  491. package/lib/tinybvh/TinyBvhBuilder.d.ts +17 -0
  492. package/lib/tinybvh/TinyBvhBuilder.js +211 -0
  493. package/lib/tinybvh/TinyBvhBuilder.js.map +1 -0
  494. package/lib/tinybvh/tinybvh.wasm +0 -0
  495. package/lib/types.d.ts +13 -0
  496. package/lib/types.js +2 -0
  497. package/lib/types.js.map +1 -0
  498. package/lib/util/canvas.d.ts +2 -0
  499. package/lib/util/canvas.js +13 -0
  500. package/lib/util/canvas.js.map +1 -0
  501. package/lib/util/commonGeometry.d.ts +15 -0
  502. package/lib/util/commonGeometry.js +240 -0
  503. package/lib/util/commonGeometry.js.map +1 -0
  504. package/lib/util/events.d.ts +7 -0
  505. package/lib/util/events.js +23 -0
  506. package/lib/util/events.js.map +1 -0
  507. package/lib/util/frame.d.ts +2 -0
  508. package/lib/util/frame.js +10 -0
  509. package/lib/util/frame.js.map +1 -0
  510. package/lib/util/fromTHREE.d.ts +105 -0
  511. package/lib/util/fromTHREE.js +1111 -0
  512. package/lib/util/fromTHREE.js.map +1 -0
  513. package/lib/util/geometry.d.ts +13 -0
  514. package/lib/util/geometry.js +292 -0
  515. package/lib/util/geometry.js.map +1 -0
  516. package/lib/util/loadRGBE.d.ts +7 -0
  517. package/lib/util/loadRGBE.js +168 -0
  518. package/lib/util/loadRGBE.js.map +1 -0
  519. package/lib/util/math.d.ts +8 -0
  520. package/lib/util/math.js +64 -0
  521. package/lib/util/math.js.map +1 -0
  522. package/lib/util/mesh.d.ts +7 -0
  523. package/lib/util/mesh.js +20 -0
  524. package/lib/util/mesh.js.map +1 -0
  525. package/lib/util/threeDeformation.d.ts +20 -0
  526. package/lib/util/threeDeformation.js +218 -0
  527. package/lib/util/threeDeformation.js.map +1 -0
  528. package/lib/version.d.ts +2 -0
  529. package/lib/version.js +3 -0
  530. package/lib/version.js.map +1 -0
  531. package/llms.txt +62 -0
  532. package/oidn/weights/LICENSE.txt +202 -0
  533. package/oidn/weights/README.md +43 -0
  534. package/oidn/weights/rt_hdr_alb_nrm.tza +0 -0
  535. package/oidn/weights/rt_hdr_alb_nrm_small.tza +0 -0
  536. package/package.json +124 -4
@@ -0,0 +1,3 @@
1
+ export const ShadowCatcherMaterial = 3;
2
+ export const UnlitMaterial = 2;
3
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC","sourcesContent":["export const ShadowCatcherMaterial = 3;\nexport const UnlitMaterial = 2;\n"]}
package/lib/main.d.ts ADDED
@@ -0,0 +1,56 @@
1
+ /// <reference types="@webgpu/types" preserve="true" />
2
+ /**
3
+ * MuTracer: a physically based WebGPU path tracer with a
4
+ * WebGL 2 fallback.
5
+ *
6
+ * Build a {@link Scene} from {@link Mesh}es and lights (or convert a Three.js
7
+ * scene with {@link fromTHREEScene}), then call {@link Engine.update} and {@link Render.refine} once
8
+ * per animation frame.
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ export { VERSION } from './version.js';
13
+ export type { AlphaBlendStrategy, ShaderCompilationDiagnostics, ToneMapping } from './renderer/RenderingPipeline.js';
14
+ export type { OfflineAdaptiveSamplingOptions, OfflineVarianceHistory } from './renderer/OfflineAdaptiveSampling.js';
15
+ export type { OIDNModel, OIDNEngine, OIDNPrecision, OIDNHDRTransfer, OIDNDynamicTileOptions, OIDNDynamicTileSetting, OIDNAuxiliaryModelUrls } from './oidn.js';
16
+ export { DEFAULT_JNLM_OPTIONS } from './renderer/jnlm.js';
17
+ export type { JNLMOptions } from './renderer/jnlm.js';
18
+ export type { AnalyticLight, GroundedSkyboxBackground, Scene, SceneBackground, SceneLight } from './scene/Scene.js';
19
+ export { default as Camera } from './scene/Camera.js';
20
+ export { default as Mesh } from './scene/Mesh.js';
21
+ export { default as InstancedMesh } from './scene/InstancedMesh.js';
22
+ export type { InstancedMeshOptions } from './scene/InstancedMesh.js';
23
+ export { default as SceneNode } from './scene/SceneNode.js';
24
+ export { default as Geometry, Attribute as GeometryAttribute } from './scene/Geometry.js';
25
+ export type { GeometryInit } from './scene/Geometry.js';
26
+ export type { OpenPBRMaterialParams } from './scene/OpenPBRMaterial.js';
27
+ export { default as OpenPBRMaterial } from './scene/OpenPBRMaterial.js';
28
+ export type { MaterialAlphaMode, UVProjection } from './scene/OpenPBRMaterial.js';
29
+ export { default as Texture } from './scene/Texture.js';
30
+ export type { TextureDataSource } from './scene/Texture.js';
31
+ export type { ColorRGB, ColorRGBA, Vec2, Vec3, Mat4 } from './types.js';
32
+ export { default as AmbientLight } from './scene/AmbientLight.js';
33
+ export { default as DirectionalLight } from './scene/DirectionalLight.js';
34
+ export { default as RectLight } from './scene/RectLight.js';
35
+ export { default as SphereLight } from './scene/SphereLight.js';
36
+ export { default as SpotLight } from './scene/SpotLight.js';
37
+ export { default as EnvironmentLight } from './scene/EnvironmentLight.js';
38
+ export { default as IESProfile, IESParseError, parseIESProfile } from './scene/IESProfile.js';
39
+ export { loadRGBE, parseRGBE } from './util/loadRGBE.js';
40
+ export { fromTHREECamera, fromTHREEScene, THREESync } from './util/fromTHREE.js';
41
+ export type { FromTHREESceneOptions, THREESyncOptions, THREEControls, FromTHREECameraOptions } from './util/fromTHREE.js';
42
+ export { createCubeGeometry, createCurvePlaneGeometry, createPlaneGeometry, createSphereGeometry } from './util/commonGeometry.js';
43
+ export { generateVertexNormals, generateVertexTangents } from './util/geometry.js';
44
+ export { computeMeshesBoundingBox } from './util/mesh.js';
45
+ export type { TinyBvhLayout } from './tinybvh/TinyBvhBuilder.js';
46
+ export type { SamplingPattern } from './renderer/sampling.js';
47
+ export { default as Engine } from './Engine.js';
48
+ export type { EngineParams, EngineInfo, EngineDiagnostics, PrepareOptions, BVHBuilder, DepthSampleArea, TextureAtlasLimits } from './Engine.js';
49
+ export { default as Display } from './Display.js';
50
+ export type { BlobOptions, DisplayChannel, DisplaySettings, PostProcess, PostProcessContext } from './Display.js';
51
+ export { default as Render } from './Render.js';
52
+ export type { RenderOptions, RenderSettings, ConvergeOptions, ConvergeResult, DenoiserOptions, Denoiser, DenoiseInput, CustomDenoiserOptions, DenoiseSchedule, JNLMDenoiserOptions, OIDNDenoiserOptions, RenderStatus, SampleEvent } from './Render.js';
53
+ export { default as Sync } from './Sync.js';
54
+ export { default as RenderLoop } from './RenderLoop.js';
55
+ export type { RenderLoopOptions, RenderLoopStatus } from './RenderLoop.js';
56
+ export { getRecommendedDeviceDescriptor } from './renderer/deviceRequirements.js';
package/lib/main.js ADDED
@@ -0,0 +1,43 @@
1
+ /// <reference types="@webgpu/types" preserve="true" />
2
+ /**
3
+ * MuTracer: a physically based WebGPU path tracer with a
4
+ * WebGL 2 fallback.
5
+ *
6
+ * Build a {@link Scene} from {@link Mesh}es and lights (or convert a Three.js
7
+ * scene with {@link fromTHREEScene}), then call {@link Engine.update} and {@link Render.refine} once
8
+ * per animation frame.
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ export { VERSION } from './version.js';
13
+ export { DEFAULT_JNLM_OPTIONS } from './renderer/jnlm.js';
14
+ export { default as Camera } from './scene/Camera.js';
15
+ export { default as Mesh } from './scene/Mesh.js';
16
+ export { default as InstancedMesh } from './scene/InstancedMesh.js';
17
+ export { default as SceneNode } from './scene/SceneNode.js';
18
+ export { default as Geometry, Attribute as GeometryAttribute } from './scene/Geometry.js';
19
+ export { default as OpenPBRMaterial } from './scene/OpenPBRMaterial.js';
20
+ export { default as Texture } from './scene/Texture.js';
21
+ // Lights
22
+ export { default as AmbientLight } from './scene/AmbientLight.js';
23
+ export { default as DirectionalLight } from './scene/DirectionalLight.js';
24
+ export { default as RectLight } from './scene/RectLight.js';
25
+ export { default as SphereLight } from './scene/SphereLight.js';
26
+ export { default as SpotLight } from './scene/SpotLight.js';
27
+ export { default as EnvironmentLight } from './scene/EnvironmentLight.js';
28
+ export { default as IESProfile, IESParseError, parseIESProfile } from './scene/IESProfile.js';
29
+ // Loaders and integrations
30
+ export { loadRGBE, parseRGBE } from './util/loadRGBE.js';
31
+ export { fromTHREECamera, fromTHREEScene, THREESync } from './util/fromTHREE.js';
32
+ // Geometry helpers
33
+ export { createCubeGeometry, createCurvePlaneGeometry, createPlaneGeometry, createSphereGeometry } from './util/commonGeometry.js';
34
+ export { generateVertexNormals, generateVertexTangents } from './util/geometry.js';
35
+ export { computeMeshesBoundingBox } from './util/mesh.js';
36
+ // Independent rendering mechanisms.
37
+ export { default as Engine } from './Engine.js';
38
+ export { default as Display } from './Display.js';
39
+ export { default as Render } from './Render.js';
40
+ export { default as Sync } from './Sync.js';
41
+ export { default as RenderLoop } from './RenderLoop.js';
42
+ export { getRecommendedDeviceDescriptor } from './renderer/deviceRequirements.js';
43
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD;;;;;;;;;GASG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAYvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAW1D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,SAAS,IAAI,iBAAiB,EAC/B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAKxE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIxD,SAAS;AACT,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,aAAa,EACb,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,2BAA2B;AAC3B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOjF,mBAAmB;AACnB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAO1D,oCAAoC;AACpC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAC,8BAA8B,EAAC,MAAM,kCAAkC,CAAC","sourcesContent":["/// <reference types=\"@webgpu/types\" preserve=\"true\" />\n\n/**\n * MuTracer: a physically based WebGPU path tracer with a\n * WebGL 2 fallback.\n *\n * Build a {@link Scene} from {@link Mesh}es and lights (or convert a Three.js\n * scene with {@link fromTHREEScene}), then call {@link Engine.update} and {@link Render.refine} once\n * per animation frame.\n *\n * @packageDocumentation\n */\nexport { VERSION } from './version.js';\n\nexport type {\n AlphaBlendStrategy,\n ShaderCompilationDiagnostics,\n ToneMapping\n} from './renderer/RenderingPipeline.js';\nexport type {\n OfflineAdaptiveSamplingOptions,\n OfflineVarianceHistory\n} from './renderer/OfflineAdaptiveSampling.js';\nexport type { OIDNModel, OIDNEngine, OIDNPrecision, OIDNHDRTransfer, OIDNDynamicTileOptions, OIDNDynamicTileSetting, OIDNAuxiliaryModelUrls } from './oidn.js';\nexport { DEFAULT_JNLM_OPTIONS } from './renderer/jnlm.js';\nexport type { JNLMOptions } from './renderer/jnlm.js';\n\n// Scene description\nexport type {\n AnalyticLight,\n GroundedSkyboxBackground,\n Scene,\n SceneBackground,\n SceneLight\n} from './scene/Scene.js';\nexport { default as Camera } from './scene/Camera.js';\nexport { default as Mesh } from './scene/Mesh.js';\nexport { default as InstancedMesh } from './scene/InstancedMesh.js';\nexport type { InstancedMeshOptions } from './scene/InstancedMesh.js';\nexport { default as SceneNode } from './scene/SceneNode.js';\nexport {\n default as Geometry,\n Attribute as GeometryAttribute\n} from './scene/Geometry.js';\nexport type { GeometryInit } from './scene/Geometry.js';\nexport type { OpenPBRMaterialParams } from './scene/OpenPBRMaterial.js';\nexport { default as OpenPBRMaterial } from './scene/OpenPBRMaterial.js';\nexport type {\n MaterialAlphaMode,\n UVProjection\n} from './scene/OpenPBRMaterial.js';\nexport { default as Texture } from './scene/Texture.js';\nexport type { TextureDataSource } from './scene/Texture.js';\nexport type { ColorRGB, ColorRGBA, Vec2, Vec3, Mat4 } from './types.js';\n\n// Lights\nexport { default as AmbientLight } from './scene/AmbientLight.js';\nexport { default as DirectionalLight } from './scene/DirectionalLight.js';\nexport { default as RectLight } from './scene/RectLight.js';\nexport { default as SphereLight } from './scene/SphereLight.js';\nexport { default as SpotLight } from './scene/SpotLight.js';\nexport { default as EnvironmentLight } from './scene/EnvironmentLight.js';\nexport {\n default as IESProfile,\n IESParseError,\n parseIESProfile\n} from './scene/IESProfile.js';\n\n// Loaders and integrations\nexport { loadRGBE, parseRGBE } from './util/loadRGBE.js';\nexport { fromTHREECamera, fromTHREEScene, THREESync } from './util/fromTHREE.js';\nexport type {\n FromTHREESceneOptions,\n THREESyncOptions, THREEControls,\n FromTHREECameraOptions\n} from './util/fromTHREE.js';\n\n// Geometry helpers\nexport {\n createCubeGeometry,\n createCurvePlaneGeometry,\n createPlaneGeometry,\n createSphereGeometry\n} from './util/commonGeometry.js';\nexport {\n generateVertexNormals,\n generateVertexTangents\n} from './util/geometry.js';\nexport { computeMeshesBoundingBox } from './util/mesh.js';\n\n// BVH\nexport type { TinyBvhLayout } from './tinybvh/TinyBvhBuilder.js';\n\nexport type { SamplingPattern } from './renderer/sampling.js';\n\n// Independent rendering mechanisms.\nexport { default as Engine } from './Engine.js';\nexport type { EngineParams, EngineInfo, EngineDiagnostics, PrepareOptions, BVHBuilder, DepthSampleArea, TextureAtlasLimits } from './Engine.js';\nexport { default as Display } from './Display.js';\nexport type { BlobOptions, DisplayChannel, DisplaySettings, PostProcess, PostProcessContext } from './Display.js';\nexport { default as Render } from './Render.js';\nexport type { RenderOptions, RenderSettings, ConvergeOptions, ConvergeResult, DenoiserOptions, Denoiser, DenoiseInput, CustomDenoiserOptions, DenoiseSchedule, JNLMDenoiserOptions, OIDNDenoiserOptions, RenderStatus, SampleEvent } from './Render.js';\n\nexport { default as Sync } from './Sync.js';\nexport { default as RenderLoop } from './RenderLoop.js';\nexport type { RenderLoopOptions, RenderLoopStatus } from './RenderLoop.js';\n\nexport {getRecommendedDeviceDescriptor} from './renderer/deviceRequirements.js';\n"]}
package/lib/math.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ export declare const mat3: any;
2
+ export declare namespace mat3 {
3
+ type Mat3Array = Float32Array | number[];
4
+ }
5
+ export declare const mat4: any;
6
+ export declare namespace mat4 {
7
+ type Mat4Array = Float32Array | number[];
8
+ }
9
+ export declare const vec2: any;
10
+ export declare namespace vec2 {
11
+ type Vec2Array = Float32Array | number[];
12
+ }
13
+ export declare const vec3: any;
14
+ export declare namespace vec3 {
15
+ type Vec3Array = Float32Array | number[];
16
+ }
17
+ export type Mat4Array = Float32Array | number[];
18
+ export type TextureImageSource = any;
19
+ export interface TexturePixelSource {
20
+ data: Float32Array | Int32Array | Uint8Array | Uint8ClampedArray;
21
+ width: number;
22
+ height: number;
23
+ }
package/lib/math.js ADDED
@@ -0,0 +1,56 @@
1
+ import { mat3 as glMat3, mat4 as glMat4, vec2 as glVec2, vec3 as glVec3 } from 'gl-matrix';
2
+ // Keep the namespace-shaped type API used by the public scene classes while
3
+ // selecting individual functions so bundles can discard unused gl-matrix code.
4
+ export const mat3 = {
5
+ create: glMat3.create,
6
+ fromMat4: glMat3.fromMat4,
7
+ normalFromMat4: glMat3.normalFromMat4
8
+ };
9
+ export const mat4 = {
10
+ copy: glMat4.copy,
11
+ create: glMat4.create,
12
+ invert: glMat4.invert,
13
+ lookAt: glMat4.lookAt,
14
+ targetTo: glMat4.targetTo,
15
+ getScaling: glMat4.getScaling,
16
+ mul: glMat4.mul,
17
+ multiply: glMat4.multiply,
18
+ ortho: glMat4.ortho,
19
+ perspective: glMat4.perspective,
20
+ scale: glMat4.scale,
21
+ rotateZ: glMat4.rotateZ,
22
+ fromScaling: glMat4.fromScaling,
23
+ translate: glMat4.translate
24
+ };
25
+ export const vec2 = {
26
+ copy: glVec2.copy,
27
+ create: glVec2.create,
28
+ len: glVec2.len,
29
+ max: glVec2.max,
30
+ min: glVec2.min,
31
+ normalize: glVec2.normalize,
32
+ scale: glVec2.scale,
33
+ set: glVec2.set,
34
+ sub: glVec2.sub
35
+ };
36
+ export const vec3 = {
37
+ clone: glVec3.clone,
38
+ copy: glVec3.copy,
39
+ create: glVec3.create,
40
+ cross: glVec3.cross,
41
+ dist: glVec3.dist,
42
+ forEach: glVec3.forEach,
43
+ fromValues: glVec3.fromValues,
44
+ length: glVec3.length,
45
+ lerp: glVec3.lerp,
46
+ max: glVec3.max,
47
+ min: glVec3.min,
48
+ normalize: glVec3.normalize,
49
+ scale: glVec3.scale,
50
+ scaleAndAdd: glVec3.scaleAndAdd,
51
+ set: glVec3.set,
52
+ sub: glVec3.sub,
53
+ transformMat3: glVec3.transformMat3,
54
+ transformMat4: glVec3.transformMat4
55
+ };
56
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,IAAI,MAAM,EACd,IAAI,IAAI,MAAM,EACd,IAAI,IAAI,MAAM,EACd,IAAI,IAAI,MAAM,EACf,MAAM,WAAW,CAAC;AACnB,4EAA4E;AAC5E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,IAAI,GAAQ;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,cAAc,EAAE,MAAM,CAAC,cAAc;CACtC,CAAC;AAKF,MAAM,CAAC,MAAM,IAAI,GAAQ;IACvB,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;CAC5B,CAAC;AAKF,MAAM,CAAC,MAAM,IAAI,GAAQ;IACvB,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,GAAG,EAAE,MAAM,CAAC,GAAG;CAChB,CAAC;AAKF,MAAM,CAAC,MAAM,IAAI,GAAQ;IACvB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,aAAa,EAAE,MAAM,CAAC,aAAa;CACpC,CAAC","sourcesContent":["import {\n mat3 as glMat3,\n mat4 as glMat4,\n vec2 as glVec2,\n vec3 as glVec3\n} from 'gl-matrix';\n// Keep the namespace-shaped type API used by the public scene classes while\n// selecting individual functions so bundles can discard unused gl-matrix code.\nexport const mat3: any = {\n create: glMat3.create,\n fromMat4: glMat3.fromMat4,\n normalFromMat4: glMat3.normalFromMat4\n};\nexport namespace mat3 {\n export type Mat3Array = Float32Array | number[];\n}\n\nexport const mat4: any = {\n copy: glMat4.copy,\n create: glMat4.create,\n invert: glMat4.invert,\n lookAt: glMat4.lookAt,\n targetTo: glMat4.targetTo,\n getScaling: glMat4.getScaling,\n mul: glMat4.mul,\n multiply: glMat4.multiply,\n ortho: glMat4.ortho,\n perspective: glMat4.perspective,\n scale: glMat4.scale,\n rotateZ: glMat4.rotateZ,\n fromScaling: glMat4.fromScaling,\n translate: glMat4.translate\n};\nexport namespace mat4 {\n export type Mat4Array = Float32Array | number[];\n}\n\nexport const vec2: any = {\n copy: glVec2.copy,\n create: glVec2.create,\n len: glVec2.len,\n max: glVec2.max,\n min: glVec2.min,\n normalize: glVec2.normalize,\n scale: glVec2.scale,\n set: glVec2.set,\n sub: glVec2.sub\n};\nexport namespace vec2 {\n export type Vec2Array = Float32Array | number[];\n}\n\nexport const vec3: any = {\n clone: glVec3.clone,\n copy: glVec3.copy,\n create: glVec3.create,\n cross: glVec3.cross,\n dist: glVec3.dist,\n forEach: glVec3.forEach,\n fromValues: glVec3.fromValues,\n length: glVec3.length,\n lerp: glVec3.lerp,\n max: glVec3.max,\n min: glVec3.min,\n normalize: glVec3.normalize,\n scale: glVec3.scale,\n scaleAndAdd: glVec3.scaleAndAdd,\n set: glVec3.set,\n sub: glVec3.sub,\n transformMat3: glVec3.transformMat3,\n transformMat4: glVec3.transformMat4\n};\nexport namespace vec3 {\n export type Vec3Array = Float32Array | number[];\n}\n\nexport type Mat4Array = Float32Array | number[];\nexport type TextureImageSource = any;\nexport interface TexturePixelSource {\n data: Float32Array | Int32Array | Uint8Array | Uint8ClampedArray;\n width: number;\n height: number;\n}\n"]}
package/lib/oidn.d.ts ADDED
@@ -0,0 +1,45 @@
1
+ /// <reference types="@webgpu/types" preserve="true" />
2
+ export type OIDNEngine = 'auto' | 'wgsl' | 'webnn';
3
+ export type OIDNPrecision = 'auto' | 'fp32' | 'fp16';
4
+ export type OIDNHDRTransfer = 'pu' | 'log';
5
+ export interface OIDNDynamicTileOptions {
6
+ /** Smallest output tile edge in pixels. Default `256`, clamped to maxTileSize. */
7
+ minTileSize?: number;
8
+ /** Initial output tile edge in pixels. Default `432`, clamped to tile limits. */
9
+ initialTileSize?: number;
10
+ /** Target upper bound for one tile GPU latency in milliseconds. Default `16`. */
11
+ targetTileTimeMs?: number;
12
+ /** Tile edge adjustment in pixels per completed execution. Default `16`. */
13
+ adjustmentStep?: number;
14
+ }
15
+ /** Adaptive tiles. Default true; false selects fixed tiles. */
16
+ export type OIDNDynamicTileSetting = boolean | OIDNDynamicTileOptions;
17
+ export declare const OIDN_MODEL_FILENAMES: {
18
+ readonly small: "rt_hdr_alb_nrm_small.tza";
19
+ readonly standard: "rt_hdr_alb_nrm.tza";
20
+ readonly cleanAuxLarge: "rt_hdr_calb_cnrm_large.tza";
21
+ };
22
+ export declare const OIDN_AUXILIARY_MODEL_FILENAMES: {
23
+ readonly albedo: "rt_alb_large.tza";
24
+ readonly normal: "rt_nrm_large.tza";
25
+ };
26
+ export type OIDNModel = keyof typeof OIDN_MODEL_FILENAMES;
27
+ export interface OIDNAuxiliaryModelUrls {
28
+ /** Required when overriding auxiliary networks. Default packaged cleanAuxLarge albedo weights. */
29
+ albedo: string | URL;
30
+ /** Required when overriding auxiliary networks. Default packaged cleanAuxLarge normal weights. */
31
+ normal: string | URL;
32
+ }
33
+ /** Package containing all OIDN RT networks. Default: `oidn-weights`. */
34
+ export declare const OIDN_WEIGHTS_PACKAGE = "oidn-weights";
35
+ /** Weights package version for OIDN 2.3.0, independent of MuTracer. Default: `2.3.0-1`. */
36
+ export declare const OIDN_WEIGHTS_PACKAGE_VERSION = "2.3.0-1";
37
+ /** Default large-network directory: jsDelivr's `oidn-weights@2.3.0-1/`. */
38
+ export declare const DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL = "https://cdn.jsdelivr.net/npm/oidn-weights@2.3.0-1/";
39
+ /**
40
+ * Fallback for bundled standard/small weights when application assets fail.
41
+ * Defaults to jsDelivr's `@meimu/mutracer@VERSION/oidn/weights/` directory.
42
+ */
43
+ export declare const DEFAULT_OIDN_WEIGHTS_BASE_URL = "https://cdn.jsdelivr.net/npm/@meimu/mutracer@0.1.1/oidn/weights/";
44
+ export declare function resolveOIDNModelUrl(model: OIDNModel, weightsBaseUrl?: string | URL): string;
45
+ export declare function resolveOIDNAuxiliaryModelUrls(weightsBaseUrl?: string | URL): OIDNAuxiliaryModelUrls;
package/lib/oidn.js ADDED
@@ -0,0 +1,42 @@
1
+ /// <reference types="@webgpu/types" preserve="true" />
2
+ import { VERSION } from './version.js';
3
+ import { standardWeightsUrl, smallWeightsUrl } from './oidnBundledWeights.js';
4
+ export const OIDN_MODEL_FILENAMES = {
5
+ small: 'rt_hdr_alb_nrm_small.tza',
6
+ standard: 'rt_hdr_alb_nrm.tza',
7
+ cleanAuxLarge: 'rt_hdr_calb_cnrm_large.tza'
8
+ };
9
+ export const OIDN_AUXILIARY_MODEL_FILENAMES = {
10
+ albedo: 'rt_alb_large.tza',
11
+ normal: 'rt_nrm_large.tza'
12
+ };
13
+ /** Package containing all OIDN RT networks. Default: `oidn-weights`. */
14
+ export const OIDN_WEIGHTS_PACKAGE = 'oidn-weights';
15
+ /** Weights package version for OIDN 2.3.0, independent of MuTracer. Default: `2.3.0-1`. */
16
+ export const OIDN_WEIGHTS_PACKAGE_VERSION = '2.3.0-1';
17
+ /** Default large-network directory: jsDelivr's `oidn-weights@2.3.0-1/`. */
18
+ export const DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL = `https://cdn.jsdelivr.net/npm/${OIDN_WEIGHTS_PACKAGE}@${OIDN_WEIGHTS_PACKAGE_VERSION}/`;
19
+ /**
20
+ * Fallback for bundled standard/small weights when application assets fail.
21
+ * Defaults to jsDelivr's `@meimu/mutracer@VERSION/oidn/weights/` directory.
22
+ */
23
+ export const DEFAULT_OIDN_WEIGHTS_BASE_URL = `https://cdn.jsdelivr.net/npm/@meimu/mutracer@${VERSION}/oidn/weights/`;
24
+ export function resolveOIDNModelUrl(model, weightsBaseUrl) {
25
+ if (weightsBaseUrl === undefined) {
26
+ if (model === 'standard')
27
+ return String(standardWeightsUrl);
28
+ if (model === 'small')
29
+ return String(smallWeightsUrl);
30
+ }
31
+ const baseUrl = String(weightsBaseUrl ?? DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL);
32
+ return `${baseUrl}${baseUrl.endsWith('/') ? '' : '/'}${OIDN_MODEL_FILENAMES[model]}`;
33
+ }
34
+ export function resolveOIDNAuxiliaryModelUrls(weightsBaseUrl = DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL) {
35
+ const baseUrl = String(weightsBaseUrl);
36
+ const prefix = `${baseUrl}${baseUrl.endsWith('/') ? '' : '/'}`;
37
+ return {
38
+ albedo: `${prefix}${OIDN_AUXILIARY_MODEL_FILENAMES.albedo}`,
39
+ normal: `${prefix}${OIDN_AUXILIARY_MODEL_FILENAMES.normal}`
40
+ };
41
+ }
42
+ //# sourceMappingURL=oidn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidn.js","sourceRoot":"","sources":["../src/oidn.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAkB9E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,0BAA0B;IACjC,QAAQ,EAAE,oBAAoB;IAC9B,aAAa,EAAE,4BAA4B;CACnC,CAAC;AACX,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,kBAAkB;CAClB,CAAC;AASX,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AACnD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAC;AACtD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qCAAqC,GAChD,gCAAgC,oBAAoB,IAAI,4BAA4B,GAAG,CAAC;AAC1F;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,gDAAgD,OAAO,gBAAgB,CAAC;AAE1E,MAAM,UAAU,mBAAmB,CACjC,KAAgB,EAChB,cAA6B;IAE7B,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,KAAK,KAAK,UAAU;YAAE,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC5D,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,IAAI,qCAAqC,CAAC,CAAC;IAChF,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,iBAA+B,qCAAqC;IAEpE,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/D,OAAO;QACL,MAAM,EAAE,GAAG,MAAM,GAAG,8BAA8B,CAAC,MAAM,EAAE;QAC3D,MAAM,EAAE,GAAG,MAAM,GAAG,8BAA8B,CAAC,MAAM,EAAE;KAC5D,CAAC;AACJ,CAAC","sourcesContent":["/// <reference types=\"@webgpu/types\" preserve=\"true\" />\n\nimport { VERSION } from './version.js';\nimport { standardWeightsUrl, smallWeightsUrl } from './oidnBundledWeights.js';\n\nexport type OIDNEngine = 'auto' | 'wgsl' | 'webnn';\nexport type OIDNPrecision = 'auto' | 'fp32' | 'fp16';\nexport type OIDNHDRTransfer = 'pu' | 'log';\nexport interface OIDNDynamicTileOptions {\n /** Smallest output tile edge in pixels. Default `256`, clamped to maxTileSize. */\n minTileSize?: number;\n /** Initial output tile edge in pixels. Default `432`, clamped to tile limits. */\n initialTileSize?: number;\n /** Target upper bound for one tile GPU latency in milliseconds. Default `16`. */\n targetTileTimeMs?: number;\n /** Tile edge adjustment in pixels per completed execution. Default `16`. */\n adjustmentStep?: number;\n}\n/** Adaptive tiles. Default true; false selects fixed tiles. */\nexport type OIDNDynamicTileSetting = boolean | OIDNDynamicTileOptions;\n\nexport const OIDN_MODEL_FILENAMES = {\n small: 'rt_hdr_alb_nrm_small.tza',\n standard: 'rt_hdr_alb_nrm.tza',\n cleanAuxLarge: 'rt_hdr_calb_cnrm_large.tza'\n} as const;\nexport const OIDN_AUXILIARY_MODEL_FILENAMES = {\n albedo: 'rt_alb_large.tza',\n normal: 'rt_nrm_large.tza'\n} as const;\n\nexport type OIDNModel = keyof typeof OIDN_MODEL_FILENAMES;\nexport interface OIDNAuxiliaryModelUrls {\n /** Required when overriding auxiliary networks. Default packaged cleanAuxLarge albedo weights. */\n albedo: string | URL;\n /** Required when overriding auxiliary networks. Default packaged cleanAuxLarge normal weights. */\n normal: string | URL;\n}\n/** Package containing all OIDN RT networks. Default: `oidn-weights`. */\nexport const OIDN_WEIGHTS_PACKAGE = 'oidn-weights';\n/** Weights package version for OIDN 2.3.0, independent of MuTracer. Default: `2.3.0-1`. */\nexport const OIDN_WEIGHTS_PACKAGE_VERSION = '2.3.0-1';\n/** Default large-network directory: jsDelivr's `oidn-weights@2.3.0-1/`. */\nexport const DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL =\n `https://cdn.jsdelivr.net/npm/${OIDN_WEIGHTS_PACKAGE}@${OIDN_WEIGHTS_PACKAGE_VERSION}/`;\n/**\n * Fallback for bundled standard/small weights when application assets fail.\n * Defaults to jsDelivr's `@meimu/mutracer@VERSION/oidn/weights/` directory.\n */\nexport const DEFAULT_OIDN_WEIGHTS_BASE_URL =\n `https://cdn.jsdelivr.net/npm/@meimu/mutracer@${VERSION}/oidn/weights/`;\n\nexport function resolveOIDNModelUrl(\n model: OIDNModel,\n weightsBaseUrl?: string | URL\n) {\n if (weightsBaseUrl === undefined) {\n if (model === 'standard') return String(standardWeightsUrl);\n if (model === 'small') return String(smallWeightsUrl);\n }\n const baseUrl = String(weightsBaseUrl ?? DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL);\n return `${baseUrl}${baseUrl.endsWith('/') ? '' : '/'}${OIDN_MODEL_FILENAMES[model]}`;\n}\n\nexport function resolveOIDNAuxiliaryModelUrls(\n weightsBaseUrl: string | URL = DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL\n): OIDNAuxiliaryModelUrls {\n const baseUrl = String(weightsBaseUrl);\n const prefix = `${baseUrl}${baseUrl.endsWith('/') ? '' : '/'}`;\n return {\n albedo: `${prefix}${OIDN_AUXILIARY_MODEL_FILENAMES.albedo}`,\n normal: `${prefix}${OIDN_AUXILIARY_MODEL_FILENAMES.normal}`\n };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const standardWeightsUrl = "https://cdn.jsdelivr.net/npm/@meimu/mutracer@0.1.1/oidn/weights/rt_hdr_alb_nrm.tza";
2
+ export declare const smallWeightsUrl = "https://cdn.jsdelivr.net/npm/@meimu/mutracer@0.1.1/oidn/weights/rt_hdr_alb_nrm_small.tza";
@@ -0,0 +1,5 @@
1
+ import { VERSION } from './version.js';
2
+ // Library bundles cannot carry package-relative assets; use the published copy.
3
+ export const standardWeightsUrl = `https://cdn.jsdelivr.net/npm/@meimu/mutracer@${VERSION}/oidn/weights/rt_hdr_alb_nrm.tza`;
4
+ export const smallWeightsUrl = `https://cdn.jsdelivr.net/npm/@meimu/mutracer@${VERSION}/oidn/weights/rt_hdr_alb_nrm_small.tza`;
5
+ //# sourceMappingURL=oidnBundledWeights.cdn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidnBundledWeights.cdn.js","sourceRoot":"","sources":["../src/oidnBundledWeights.cdn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAG,gDAAgD,OAAO,kCAAkC,CAAC;AAC5H,MAAM,CAAC,MAAM,eAAe,GAAG,gDAAgD,OAAO,wCAAwC,CAAC","sourcesContent":["import { VERSION } from './version.js';\n\n// Library bundles cannot carry package-relative assets; use the published copy.\nexport const standardWeightsUrl = `https://cdn.jsdelivr.net/npm/@meimu/mutracer@${VERSION}/oidn/weights/rt_hdr_alb_nrm.tza`;\nexport const smallWeightsUrl = `https://cdn.jsdelivr.net/npm/@meimu/mutracer@${VERSION}/oidn/weights/rt_hdr_alb_nrm_small.tza`;\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const standardWeightsUrl: URL;
2
+ export declare const smallWeightsUrl: URL;
@@ -0,0 +1,4 @@
1
+ // Static URLs let application bundlers copy the two bundled networks.
2
+ export const standardWeightsUrl = new URL('../oidn/weights/rt_hdr_alb_nrm.tza', import.meta.url);
3
+ export const smallWeightsUrl = new URL('../oidn/weights/rt_hdr_alb_nrm_small.tza', import.meta.url);
4
+ //# sourceMappingURL=oidnBundledWeights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidnBundledWeights.js","sourceRoot":"","sources":["../src/oidnBundledWeights.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjG,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC","sourcesContent":["// Static URLs let application bundlers copy the two bundled networks.\nexport const standardWeightsUrl = new URL('../oidn/weights/rt_hdr_alb_nrm.tza', import.meta.url);\nexport const smallWeightsUrl = new URL('../oidn/weights/rt_hdr_alb_nrm_small.tza', import.meta.url);\n"]}
@@ -0,0 +1,14 @@
1
+ import type { PostProcess, PostProcessContext } from '../Display.js';
2
+ /** Target-owned ping-pong images. A failed chain never replaces the composed image. */
3
+ export declare class DisplayPostProcess {
4
+ private readonly device;
5
+ private textures;
6
+ private image?;
7
+ constructor(device: GPUDevice);
8
+ get output(): GPUTexture | undefined;
9
+ reset(): void;
10
+ getMemoryBytes(): number;
11
+ private retire;
12
+ dispose(): void;
13
+ run(input: GPUTexture, passes: readonly PostProcess[], render: PostProcessContext['render']): void;
14
+ }
@@ -0,0 +1,41 @@
1
+ import { textureBytes } from './gpuMemory.js';
2
+ /** Target-owned ping-pong images. A failed chain never replaces the composed image. */
3
+ export class DisplayPostProcess {
4
+ device;
5
+ textures = [];
6
+ image;
7
+ constructor(device) {
8
+ this.device = device;
9
+ }
10
+ get output() { return this.image; }
11
+ reset() { this.image = undefined; }
12
+ getMemoryBytes() { return this.textures.reduce((sum, texture) => sum + textureBytes(texture), 0); }
13
+ retire(textures) {
14
+ if (!textures.length)
15
+ return;
16
+ void this.device.queue.onSubmittedWorkDone().catch(() => { }).then(() => textures.forEach(texture => texture.destroy()));
17
+ }
18
+ dispose() { this.reset(); this.retire(this.textures); this.textures = []; }
19
+ run(input, passes, render) {
20
+ this.reset();
21
+ if (!passes.length)
22
+ return;
23
+ if (this.textures.length === 0 || this.textures[0].width !== input.width || this.textures[0].height !== input.height || this.textures[0].format !== input.format) {
24
+ this.retire(this.textures);
25
+ this.textures = Array.from({ length: 2 }, (_, index) => this.device.createTexture({
26
+ label: `Display post-process ${index}`, size: { width: input.width, height: input.height }, format: input.format,
27
+ usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST
28
+ }));
29
+ }
30
+ const encoder = this.device.createCommandEncoder();
31
+ let previous = input;
32
+ for (let index = 0; index < passes.length; index++) {
33
+ const output = this.textures[index % 2];
34
+ passes[index]({ device: this.device, encoder, input: previous, output, width: input.width, height: input.height, render });
35
+ previous = output;
36
+ }
37
+ this.device.queue.submit([encoder.finish()]);
38
+ this.image = previous;
39
+ }
40
+ }
41
+ //# sourceMappingURL=DisplayPostProcess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DisplayPostProcess.js","sourceRoot":"","sources":["../../src/renderer/DisplayPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,uFAAuF;AACvF,MAAM,OAAO,kBAAkB;IAGA;IAFrB,QAAQ,GAAiB,EAAE,CAAC;IAC5B,KAAK,CAAc;IAC3B,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAClD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;IACnC,cAAc,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,CAAC,QAAsB;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO;QAC7B,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1H,CAAC;IACD,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3E,GAAG,CAAC,KAAiB,EAAE,MAA8B,EAAE,MAAoC;QACzF,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YACjK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC9E,KAAK,EAAE,wBAAwB,KAAK,EAAE,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM;gBAC9G,KAAK,EAAE,eAAe,CAAC,eAAe,GAAG,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,eAAe,GAAG,eAAe,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ;aACnK,CAAC,CAAC,CAAC;QACN,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACnD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;YACzH,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;CACF","sourcesContent":["import type { PostProcess, PostProcessContext } from '../Display.js';\nimport {textureBytes} from './gpuMemory.js';\n\n/** Target-owned ping-pong images. A failed chain never replaces the composed image. */\nexport class DisplayPostProcess {\n private textures: GPUTexture[] = [];\n private image?: GPUTexture;\n constructor(private readonly device: GPUDevice) {}\n get output() { return this.image; }\n reset() { this.image = undefined; }\n getMemoryBytes() { return this.textures.reduce((sum, texture) => sum + textureBytes(texture), 0); }\n private retire(textures: GPUTexture[]) {\n if (!textures.length) return;\n void this.device.queue.onSubmittedWorkDone().catch(() => {}).then(() => textures.forEach(texture => texture.destroy()));\n }\n dispose() { this.reset(); this.retire(this.textures); this.textures = []; }\n run(input: GPUTexture, passes: readonly PostProcess[], render: PostProcessContext['render']) {\n this.reset();\n if (!passes.length) return;\n if (this.textures.length === 0 || this.textures[0].width !== input.width || this.textures[0].height !== input.height || this.textures[0].format !== input.format) {\n this.retire(this.textures);\n this.textures = Array.from({length: 2}, (_, index) => this.device.createTexture({\n label: `Display post-process ${index}`, size: {width: input.width, height: input.height}, format: input.format,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST\n }));\n }\n const encoder = this.device.createCommandEncoder();\n let previous = input;\n for (let index = 0; index < passes.length; index++) {\n const output = this.textures[index % 2];\n passes[index]({device: this.device, encoder, input: previous, output, width: input.width, height: input.height, render});\n previous = output;\n }\n this.device.queue.submit([encoder.finish()]);\n this.image = previous;\n }\n}\n"]}
@@ -0,0 +1,119 @@
1
+ import { type MaterialTextureIndex } from './materialTextureSlots.js';
2
+ import { ShadowCatcherMaterial, UnlitMaterial } from '../constants.js';
3
+ import { vec2 } from '../math.js';
4
+ import { Texture2DArray as WebGLTexture2DArray } from './webgl.js';
5
+ import OpenPBRMaterial from '../scene/OpenPBRMaterial.js';
6
+ import { ColorRGB } from '../types.js';
7
+ import Texture from '../scene/Texture.js';
8
+ import { SceneLight } from '../scene/Scene.js';
9
+ export declare const DEFAULT_MAX_TEXTURE_ARRAY_BYTES: number;
10
+ export interface MaterialTableOptions {
11
+ maxTextureArrayBytes?: number;
12
+ maxTextureArrayLayers?: number;
13
+ maxTextureDimension2D?: number;
14
+ }
15
+ export interface TextureAtlasStats {
16
+ estimatedBytes: number;
17
+ height: number;
18
+ layers: number;
19
+ packTimeMs: number;
20
+ scale: number;
21
+ sourcePixels: number;
22
+ textureCount: number;
23
+ width: number;
24
+ }
25
+ export declare function materialUsesMedium(material: OpenPBRMaterial): boolean;
26
+ export declare const uvProjectionConstants: {
27
+ none: number;
28
+ spherical: number;
29
+ cylindrical: number;
30
+ triplanar: number;
31
+ };
32
+ export interface BufferData extends Record<MaterialTextureIndex, number[]> {
33
+ color: ColorRGB[];
34
+ roughness: number[];
35
+ metallic: number[];
36
+ emission: ColorRGB[];
37
+ ior: number[];
38
+ transmission: number[];
39
+ dispersion: number[];
40
+ thinFilmThickness: number[];
41
+ thinFilmThicknessMinimum: number[];
42
+ thinFilmMapChannel: number[];
43
+ thinFilmIor: number[];
44
+ anisotropy: number[];
45
+ thin: number[];
46
+ doubleSided: number[];
47
+ bevelSize: number[];
48
+ mapAlphaUsage: number[];
49
+ normalScale: vec2.Vec2Array[];
50
+ type: (typeof ShadowCatcherMaterial | typeof UnlitMaterial | 0)[];
51
+ mapInfo: number[];
52
+ mapTransform: number[];
53
+ mapUvChannel: number[];
54
+ mapColorLinear: number[];
55
+ mediumType: number[];
56
+ specularAnisotropyModel: number[];
57
+ specularAnisotropyRotation: number[];
58
+ coatAnisotropyRotation: number[];
59
+ coatNormalScale: vec2.Vec2Array[];
60
+ uvProjection: number[];
61
+ uvScale: vec2.Vec2Array[];
62
+ displacementUvProjection: number[];
63
+ displacementUvProjectionScale: number[];
64
+ displacementStepSize: number[];
65
+ alpha: number[];
66
+ alphaMode: number[];
67
+ alphaCutoff: number[];
68
+ baseWeight: number[];
69
+ baseDiffuseRoughness: number[];
70
+ specularWeight: number[];
71
+ specularColor: ColorRGB[];
72
+ transmissionColor: ColorRGB[];
73
+ transmissionDepth: number[];
74
+ transmissionScatter: ColorRGB[];
75
+ transmissionScatterAnisotropy: number[];
76
+ subsurfaceWeight: number[];
77
+ subsurfaceColor: ColorRGB[];
78
+ subsurfaceRadius: number[];
79
+ subsurfaceRadiusScale: ColorRGB[];
80
+ subsurfaceScatterAnisotropy: number[];
81
+ fuzzWeight: number[];
82
+ fuzzColor: ColorRGB[];
83
+ fuzzRoughness: number[];
84
+ coatWeight: number[];
85
+ coatColor: ColorRGB[];
86
+ coatRoughness: number[];
87
+ coatAnisotropy: number[];
88
+ coatIor: number[];
89
+ coatDarkening: number[];
90
+ thinFilmWeight: number[];
91
+ dispersionAbbeNumber: number[];
92
+ mediumExtinction: ColorRGB[];
93
+ mediumScattering: ColorRGB[];
94
+ mediumAnisotropy: number[];
95
+ }
96
+ declare class MaterialTable {
97
+ texture: WebGLTexture2DArray | undefined;
98
+ textureAtlasStats: TextureAtlasStats;
99
+ defines: Record<string, string | number>;
100
+ bufferData: BufferData;
101
+ private _matBufferTex;
102
+ private _materialBufferColumnsLog;
103
+ private _displacementMaps;
104
+ private _lightTexturesIndices;
105
+ constructor(materials: OpenPBRMaterial[], lights: SceneLight[], options?: MaterialTableOptions);
106
+ private _packParams;
107
+ /** Repack parameters with the same material slots and unchanged texture metadata. */
108
+ repackParams(materials: OpenPBRMaterial[]): void;
109
+ getBufferArray(): Float32Array<ArrayBufferLike>;
110
+ getDisplacementMaps(): Texture[];
111
+ getLightTexturesIndices(): number[];
112
+ private _updateBuffer;
113
+ setToPass(pass: {
114
+ setUniform(label: string, value: unknown): unknown;
115
+ setUniforms(values: Record<string, unknown>): void;
116
+ }): void;
117
+ dispose(gl: WebGL2RenderingContext): void;
118
+ }
119
+ export default MaterialTable;