@meimu/mutracer 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/LICENSES/Classroom-CC0.txt +121 -0
  2. package/README.md +7 -7
  3. package/THIRD_PARTY_NOTICES.md +13 -8
  4. package/dist/assets/bvh.worker.js +1 -1
  5. package/dist/mutracer.umd.js +10407 -8353
  6. package/docs/api.md +200 -10
  7. package/docs/denoising.md +30 -15
  8. package/docs/materials.md +1 -1
  9. package/docs/performance.md +5 -2
  10. package/docs/progressive-rendering.md +32 -1
  11. package/docs/threejs.md +14 -5
  12. package/docs/updates.md +44 -2
  13. package/docs/viewer.md +11 -6
  14. package/lib/Display.d.ts +13 -2
  15. package/lib/Display.js +27 -6
  16. package/lib/Display.js.map +1 -1
  17. package/lib/Engine.d.ts +2 -0
  18. package/lib/Engine.js +52 -25
  19. package/lib/Engine.js.map +1 -1
  20. package/lib/Render.d.ts +44 -9
  21. package/lib/Render.js +115 -17
  22. package/lib/Render.js.map +1 -1
  23. package/lib/RenderLoop.d.ts +7 -1
  24. package/lib/RenderLoop.js +94 -13
  25. package/lib/RenderLoop.js.map +1 -1
  26. package/lib/main.d.ts +6 -3
  27. package/lib/main.js +1 -0
  28. package/lib/main.js.map +1 -1
  29. package/lib/math/access.d.ts +4 -0
  30. package/lib/math/access.js +10 -0
  31. package/lib/math/access.js.map +1 -0
  32. package/lib/math/mat3.d.ts +4 -0
  33. package/lib/math/mat3.js +54 -0
  34. package/lib/math/mat3.js.map +1 -0
  35. package/lib/math/mat4.d.ts +19 -0
  36. package/lib/math/mat4.js +413 -0
  37. package/lib/math/mat4.js.map +1 -0
  38. package/lib/math/storage.d.ts +6 -0
  39. package/lib/math/storage.js +22 -0
  40. package/lib/math/storage.js.map +1 -0
  41. package/lib/math/types.d.ts +3 -0
  42. package/lib/math/types.js +2 -0
  43. package/lib/math/types.js.map +1 -0
  44. package/lib/math/vec2.d.ts +13 -0
  45. package/lib/math/vec2.js +52 -0
  46. package/lib/math/vec2.js.map +1 -0
  47. package/lib/math/vec3.d.ts +23 -0
  48. package/lib/math/vec3.js +139 -0
  49. package/lib/math/vec3.js.map +1 -0
  50. package/lib/math.d.ts +5 -17
  51. package/lib/math.js +5 -55
  52. package/lib/math.js.map +1 -1
  53. package/lib/oidn.d.ts +1 -1
  54. package/lib/oidn.js +4 -2
  55. package/lib/oidn.js.map +1 -1
  56. package/lib/oidnBundledWeights.cdn.d.ts +2 -2
  57. package/lib/renderer/AovPrimitiveCache.d.ts +10 -0
  58. package/lib/renderer/AovPrimitiveCache.js +48 -0
  59. package/lib/renderer/AovPrimitiveCache.js.map +1 -0
  60. package/lib/renderer/Box3.d.ts +5 -0
  61. package/lib/renderer/Box3.js +9 -0
  62. package/lib/renderer/Box3.js.map +1 -0
  63. package/lib/renderer/GPUTraceQueue.d.ts +10 -0
  64. package/lib/renderer/GPUTraceQueue.js +31 -0
  65. package/lib/renderer/GPUTraceQueue.js.map +1 -0
  66. package/lib/renderer/MaterialData.d.ts +15 -0
  67. package/lib/renderer/MaterialData.js +61 -0
  68. package/lib/renderer/MaterialData.js.map +1 -0
  69. package/lib/renderer/MaterialTable.d.ts +11 -98
  70. package/lib/renderer/MaterialTable.js +34 -412
  71. package/lib/renderer/MaterialTable.js.map +1 -1
  72. package/lib/renderer/RenderingPipeline.d.ts +32 -13
  73. package/lib/renderer/RenderingPipeline.js +1 -17
  74. package/lib/renderer/RenderingPipeline.js.map +1 -1
  75. package/lib/renderer/TileRender.d.ts +0 -1
  76. package/lib/renderer/TileRender.js +14 -1
  77. package/lib/renderer/TileRender.js.map +1 -1
  78. package/lib/renderer/WGPUAov.d.ts +39 -0
  79. package/lib/renderer/WGPUAov.js +239 -0
  80. package/lib/renderer/WGPUAov.js.map +1 -0
  81. package/lib/renderer/WGPUBindlessMaterialData.d.ts +17 -0
  82. package/lib/renderer/WGPUBindlessMaterialData.js +48 -0
  83. package/lib/renderer/WGPUBindlessMaterialData.js.map +1 -0
  84. package/lib/renderer/WGPUBindlessTextures.d.ts +47 -0
  85. package/lib/renderer/WGPUBindlessTextures.js +180 -0
  86. package/lib/renderer/WGPUBindlessTextures.js.map +1 -0
  87. package/lib/renderer/WGPUBloomPass.js +17 -97
  88. package/lib/renderer/WGPUBloomPass.js.map +1 -1
  89. package/lib/renderer/WGPUComputePass.d.ts +1 -1
  90. package/lib/renderer/WGPUComputePass.js.map +1 -1
  91. package/lib/renderer/WGPUEnvMapDistribution.d.ts +12 -0
  92. package/lib/renderer/WGPUEnvMapDistribution.js +150 -0
  93. package/lib/renderer/WGPUEnvMapDistribution.js.map +1 -0
  94. package/lib/renderer/WGPUFullQuadPass.js +10 -9
  95. package/lib/renderer/WGPUFullQuadPass.js.map +1 -1
  96. package/lib/renderer/WGPUJNLMDenoiser.d.ts +1 -20
  97. package/lib/renderer/WGPUJNLMDenoiser.js +4 -267
  98. package/lib/renderer/WGPUJNLMDenoiser.js.map +1 -1
  99. package/lib/renderer/WGPURayTraceOutput.js +26 -17
  100. package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
  101. package/lib/renderer/WGPURayTracePass.d.ts +36 -40
  102. package/lib/renderer/WGPURayTracePass.js +399 -550
  103. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  104. package/lib/renderer/WGPURenderingPipeline.d.ts +5 -3
  105. package/lib/renderer/WGPURenderingPipeline.js +239 -60
  106. package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
  107. package/lib/renderer/WGPUShaderCache.d.ts +2 -2
  108. package/lib/renderer/WGPUShaderCache.js +10 -5
  109. package/lib/renderer/WGPUShaderCache.js.map +1 -1
  110. package/lib/renderer/WGPUShaderCapabilities.d.ts +10 -0
  111. package/lib/renderer/WGPUShaderCapabilities.js +54 -0
  112. package/lib/renderer/WGPUShaderCapabilities.js.map +1 -0
  113. package/lib/renderer/WGPUSkyBaker.d.ts +13 -0
  114. package/lib/renderer/WGPUSkyBaker.js +85 -0
  115. package/lib/renderer/WGPUSkyBaker.js.map +1 -0
  116. package/lib/renderer/WebGLAov.d.ts +41 -0
  117. package/lib/renderer/WebGLAov.js +106 -0
  118. package/lib/renderer/WebGLAov.js.map +1 -0
  119. package/lib/renderer/WebGLFullQuadPass.d.ts +5 -3
  120. package/lib/renderer/WebGLFullQuadPass.js +18 -2
  121. package/lib/renderer/WebGLFullQuadPass.js.map +1 -1
  122. package/lib/renderer/WebGLJNLMDenoiser.d.ts +1 -1
  123. package/lib/renderer/WebGLJNLMDenoiser.js +83 -74
  124. package/lib/renderer/WebGLJNLMDenoiser.js.map +1 -1
  125. package/lib/renderer/WebGLRayTraceOutputPass.js +7 -4
  126. package/lib/renderer/WebGLRayTraceOutputPass.js.map +1 -1
  127. package/lib/renderer/WebGLRayTracePass.d.ts +12 -2
  128. package/lib/renderer/WebGLRayTracePass.js +82 -7
  129. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  130. package/lib/renderer/WebGLRenderingPipeline.js +116 -8
  131. package/lib/renderer/WebGLRenderingPipeline.js.map +1 -1
  132. package/lib/renderer/WebGLSkyBaker.d.ts +39 -0
  133. package/lib/renderer/WebGLSkyBaker.js +422 -0
  134. package/lib/renderer/WebGLSkyBaker.js.map +1 -0
  135. package/lib/renderer/WebGLSkySource.d.ts +9 -0
  136. package/lib/renderer/WebGLSkySource.js +28 -0
  137. package/lib/renderer/WebGLSkySource.js.map +1 -0
  138. package/lib/renderer/accumulationTarget.d.ts +5 -0
  139. package/lib/renderer/accumulationTarget.js.map +1 -1
  140. package/lib/renderer/aov.d.ts +42 -0
  141. package/lib/renderer/aov.js +50 -0
  142. package/lib/renderer/aov.js.map +1 -0
  143. package/lib/renderer/aovDisplay.d.ts +14 -0
  144. package/lib/renderer/aovDisplay.js +32 -0
  145. package/lib/renderer/aovDisplay.js.map +1 -0
  146. package/lib/renderer/aovScene.d.ts +21 -0
  147. package/lib/renderer/aovScene.js +139 -0
  148. package/lib/renderer/aovScene.js.map +1 -0
  149. package/lib/renderer/binnedSahBvh.js +2 -1
  150. package/lib/renderer/binnedSahBvh.js.map +1 -1
  151. package/lib/renderer/bvhAccel.d.ts +20 -10
  152. package/lib/renderer/bvhAccel.js +168 -58
  153. package/lib/renderer/bvhAccel.js.map +1 -1
  154. package/lib/renderer/bvhWorkerBuild.d.ts +1 -0
  155. package/lib/renderer/cameraSnapshot.js +2 -1
  156. package/lib/renderer/cameraSnapshot.js.map +1 -1
  157. package/lib/renderer/cameraUniform.d.ts +2 -0
  158. package/lib/renderer/cameraUniform.js +12 -0
  159. package/lib/renderer/cameraUniform.js.map +1 -0
  160. package/lib/renderer/committedScene.js +4 -0
  161. package/lib/renderer/committedScene.js.map +1 -1
  162. package/lib/renderer/denoiser.d.ts +3 -11
  163. package/lib/renderer/denoiser.js.map +1 -1
  164. package/lib/renderer/depthQuery.js +4 -1
  165. package/lib/renderer/depthQuery.js.map +1 -1
  166. package/lib/renderer/displacementPreparation.d.ts +11 -0
  167. package/lib/renderer/displacementPreparation.js +351 -0
  168. package/lib/renderer/displacementPreparation.js.map +1 -0
  169. package/lib/renderer/displacementRange.d.ts +1 -0
  170. package/lib/renderer/displacementRange.js +9 -0
  171. package/lib/renderer/displacementRange.js.map +1 -0
  172. package/lib/renderer/displayParityDiagnostics.d.ts +11 -0
  173. package/lib/renderer/displayParityDiagnostics.js +2 -0
  174. package/lib/renderer/displayParityDiagnostics.js.map +1 -0
  175. package/lib/renderer/envMapCreation.d.ts +9 -8
  176. package/lib/renderer/envMapCreation.js +36 -12
  177. package/lib/renderer/envMapCreation.js.map +1 -1
  178. package/lib/renderer/envMapDistribution.d.ts +12 -2
  179. package/lib/renderer/envMapDistribution.js +43 -34
  180. package/lib/renderer/envMapDistribution.js.map +1 -1
  181. package/lib/renderer/geometryBvhBounds.d.ts +4 -0
  182. package/lib/renderer/geometryBvhBounds.js +82 -0
  183. package/lib/renderer/geometryBvhBounds.js.map +1 -0
  184. package/lib/renderer/geometryUpdateState.d.ts +32 -0
  185. package/lib/renderer/geometryUpdateState.js +2 -0
  186. package/lib/renderer/geometryUpdateState.js.map +1 -0
  187. package/lib/renderer/geometryUpdates.d.ts +17 -9
  188. package/lib/renderer/geometryUpdates.js +92 -33
  189. package/lib/renderer/geometryUpdates.js.map +1 -1
  190. package/lib/renderer/glsl/aovDisplay.frag.d.ts +3 -0
  191. package/lib/renderer/glsl/aovDisplay.frag.js +54 -0
  192. package/lib/renderer/glsl/aovDisplay.frag.js.map +1 -0
  193. package/lib/renderer/glsl/aovReflectance.glsl.d.ts +2 -0
  194. package/lib/renderer/glsl/aovReflectance.glsl.js +87 -0
  195. package/lib/renderer/glsl/aovReflectance.glsl.js.map +1 -0
  196. package/lib/renderer/glsl/aovReflectanceSamples.glsl.d.ts +2 -0
  197. package/lib/renderer/glsl/aovReflectanceSamples.glsl.js +135 -0
  198. package/lib/renderer/glsl/aovReflectanceSamples.glsl.js.map +1 -0
  199. package/lib/renderer/glsl/aovTrace.frag.d.ts +2 -0
  200. package/lib/renderer/glsl/aovTrace.frag.js +121 -0
  201. package/lib/renderer/glsl/aovTrace.frag.js.map +1 -0
  202. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +12 -12
  203. package/lib/renderer/glsl/chunks/envMap.glsl.js +80 -74
  204. package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -1
  205. package/lib/renderer/glsl/chunks/intersect.glsl.js +429 -429
  206. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +144 -144
  207. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
  208. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +801 -801
  209. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  210. package/lib/renderer/glsl/chunks/random.glsl.js +6 -6
  211. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +49 -49
  212. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
  213. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +80 -80
  214. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +102 -102
  215. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +20 -17
  216. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js.map +1 -1
  217. package/lib/renderer/glsl/chunks/sampling.glsl.js +93 -93
  218. package/lib/renderer/glsl/chunks/sobol.glsl.js +79 -79
  219. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  220. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +12 -12
  221. package/lib/renderer/glsl/chunks/uvProjection.glsl.js.map +1 -1
  222. package/lib/renderer/glsl/depthQuery.frag.js +7 -7
  223. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +17 -9
  224. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js.map +1 -1
  225. package/lib/renderer/glsl/rayTrace.frag.js +191 -191
  226. package/lib/renderer/glsl/shadowCatcher.frag.js +25 -20
  227. package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
  228. package/lib/renderer/glsl/webglPipeline.frag.js +65 -60
  229. package/lib/renderer/glsl/webglPipeline.frag.js.map +1 -1
  230. package/lib/renderer/lightConstants.d.ts +10 -0
  231. package/lib/renderer/lightConstants.js +11 -0
  232. package/lib/renderer/lightConstants.js.map +1 -0
  233. package/lib/renderer/lightCore.d.ts +12 -0
  234. package/lib/renderer/lightCore.js +13 -0
  235. package/lib/renderer/lightCore.js.map +1 -0
  236. package/lib/renderer/lightSampling.d.ts +20 -17
  237. package/lib/renderer/lightSampling.js +123 -56
  238. package/lib/renderer/lightSampling.js.map +1 -1
  239. package/lib/renderer/lightsData.d.ts +21 -0
  240. package/lib/renderer/lightsData.js +192 -0
  241. package/lib/renderer/lightsData.js.map +1 -0
  242. package/lib/renderer/lightsUtil.d.ts +3 -26
  243. package/lib/renderer/lightsUtil.js +3 -153
  244. package/lib/renderer/lightsUtil.js.map +1 -1
  245. package/lib/renderer/materialBufferData.d.ts +70 -0
  246. package/lib/renderer/materialBufferData.js +2 -0
  247. package/lib/renderer/materialBufferData.js.map +1 -0
  248. package/lib/renderer/materialConstants.d.ts +11 -0
  249. package/lib/renderer/materialConstants.js +11 -0
  250. package/lib/renderer/materialConstants.js.map +1 -1
  251. package/lib/renderer/materialCore.d.ts +8 -0
  252. package/lib/renderer/materialCore.js +9 -0
  253. package/lib/renderer/materialCore.js.map +1 -0
  254. package/lib/renderer/materialEmission.d.ts +2 -2
  255. package/lib/renderer/materialEmission.js +3 -3
  256. package/lib/renderer/materialEmission.js.map +1 -1
  257. package/lib/renderer/materialLayout.d.ts +2 -101
  258. package/lib/renderer/materialLayout.js +110 -172
  259. package/lib/renderer/materialLayout.js.map +1 -1
  260. package/lib/renderer/materialLayoutSchema.d.ts +26 -0
  261. package/lib/renderer/materialLayoutSchema.js +172 -0
  262. package/lib/renderer/materialLayoutSchema.js.map +1 -0
  263. package/lib/renderer/materialParams.d.ts +69 -0
  264. package/lib/renderer/materialParams.js +272 -0
  265. package/lib/renderer/materialParams.js.map +1 -0
  266. package/lib/renderer/materialTextureSlots.d.ts +14 -324
  267. package/lib/renderer/materialTextureSlots.js +21 -8
  268. package/lib/renderer/materialTextureSlots.js.map +1 -1
  269. package/lib/renderer/materialTextures.d.ts +6 -0
  270. package/lib/renderer/{texturesFromMaterials.js → materialTextures.js} +1 -2
  271. package/lib/renderer/materialTextures.js.map +1 -0
  272. package/lib/renderer/mergeMeshesToGeometry.js +6 -147
  273. package/lib/renderer/mergeMeshesToGeometry.js.map +1 -1
  274. package/lib/renderer/meshInstances.d.ts +4 -21
  275. package/lib/renderer/meshInstances.js +10 -56
  276. package/lib/renderer/meshInstances.js.map +1 -1
  277. package/lib/renderer/oidnNetwork.d.ts +2 -2
  278. package/lib/renderer/oidnNetwork.js +1 -1
  279. package/lib/renderer/oidnNetwork.js.map +1 -1
  280. package/lib/renderer/openPbrEnergyLut.js +850 -846
  281. package/lib/renderer/openPbrEnergyLut.js.map +1 -1
  282. package/lib/renderer/ownedDenoiser.d.ts +9 -0
  283. package/lib/renderer/ownedDenoiser.js +2 -0
  284. package/lib/renderer/ownedDenoiser.js.map +1 -0
  285. package/lib/renderer/packedMeshInstances.d.ts +23 -0
  286. package/lib/renderer/packedMeshInstances.js +80 -0
  287. package/lib/renderer/packedMeshInstances.js.map +1 -0
  288. package/lib/renderer/prepareMeshBVH.d.ts +12 -47
  289. package/lib/renderer/prepareMeshBVH.js +21 -642
  290. package/lib/renderer/prepareMeshBVH.js.map +1 -1
  291. package/lib/renderer/proceduralEnvironmentPower.d.ts +3 -0
  292. package/lib/renderer/proceduralEnvironmentPower.js +8 -0
  293. package/lib/renderer/proceduralEnvironmentPower.js.map +1 -0
  294. package/lib/renderer/progressiveScheduler.d.ts +1 -0
  295. package/lib/renderer/progressiveScheduler.js +3 -0
  296. package/lib/renderer/progressiveScheduler.js.map +1 -1
  297. package/lib/renderer/renderPipeline.d.ts +3 -1
  298. package/lib/renderer/renderPipeline.js.map +1 -1
  299. package/lib/renderer/renderingLimits.d.ts +9 -0
  300. package/lib/renderer/renderingLimits.js +18 -0
  301. package/lib/renderer/renderingLimits.js.map +1 -0
  302. package/lib/renderer/sceneAssembly.d.ts +73 -0
  303. package/lib/renderer/sceneAssembly.js +109 -0
  304. package/lib/renderer/sceneAssembly.js.map +1 -0
  305. package/lib/renderer/sceneChangeCore.d.ts +39 -0
  306. package/lib/renderer/sceneChangeCore.js +307 -0
  307. package/lib/renderer/sceneChangeCore.js.map +1 -0
  308. package/lib/renderer/sceneChangeDetector.d.ts +3 -6
  309. package/lib/renderer/sceneChangeDetector.js +24 -150
  310. package/lib/renderer/sceneChangeDetector.js.map +1 -1
  311. package/lib/renderer/sceneLayoutSchema.d.ts +118 -0
  312. package/lib/renderer/sceneLayoutSchema.js +111 -0
  313. package/lib/renderer/sceneLayoutSchema.js.map +1 -0
  314. package/lib/renderer/sceneLightChanges.d.ts +3 -3
  315. package/lib/renderer/sceneLightChanges.js.map +1 -1
  316. package/lib/renderer/scenePreparation.d.ts +55 -0
  317. package/lib/renderer/scenePreparation.js +360 -0
  318. package/lib/renderer/scenePreparation.js.map +1 -0
  319. package/lib/renderer/scratchSampling.js +18 -18
  320. package/lib/renderer/scratchSampling.js.map +1 -1
  321. package/lib/renderer/shader.d.ts +2 -0
  322. package/lib/renderer/shader.js +2 -0
  323. package/lib/renderer/shader.js.map +1 -1
  324. package/lib/renderer/shaderCapabilities.d.ts +23 -0
  325. package/lib/renderer/shaderCapabilities.js +55 -0
  326. package/lib/renderer/shaderCapabilities.js.map +1 -0
  327. package/lib/renderer/shaderCapacity.d.ts +2 -0
  328. package/lib/renderer/shaderCapacity.js +5 -0
  329. package/lib/renderer/shaderCapacity.js.map +1 -0
  330. package/lib/renderer/skyModel.d.ts +9 -0
  331. package/lib/renderer/skyModel.js +10 -0
  332. package/lib/renderer/skyModel.js.map +1 -0
  333. package/lib/renderer/textureAtlas.d.ts +60 -0
  334. package/lib/renderer/textureAtlas.js +145 -0
  335. package/lib/renderer/textureAtlas.js.map +1 -0
  336. package/lib/renderer/textureAtlasPixels.d.ts +7 -0
  337. package/lib/renderer/textureAtlasPixels.js +68 -0
  338. package/lib/renderer/textureAtlasPixels.js.map +1 -0
  339. package/lib/renderer/util.d.ts +1 -1
  340. package/lib/renderer/util.js.map +1 -1
  341. package/lib/renderer/webgl.d.ts +9 -2
  342. package/lib/renderer/webgl.js +54 -9
  343. package/lib/renderer/webgl.js.map +1 -1
  344. package/lib/renderer/wgpuBindless.d.ts +26 -0
  345. package/lib/renderer/wgpuBindless.js +95 -0
  346. package/lib/renderer/wgpuBindless.js.map +1 -0
  347. package/lib/renderer/wgpuBindlessSource.d.ts +2 -0
  348. package/lib/renderer/wgpuBindlessSource.js +51 -0
  349. package/lib/renderer/wgpuBindlessSource.js.map +1 -0
  350. package/lib/renderer/wgpuMaterialConstants.d.ts +4 -0
  351. package/lib/renderer/wgpuMaterialConstants.js +52 -0
  352. package/lib/renderer/wgpuMaterialConstants.js.map +1 -0
  353. package/lib/renderer/wgpuSceneUniform.d.ts +42 -0
  354. package/lib/renderer/wgpuSceneUniform.js +125 -0
  355. package/lib/renderer/wgpuSceneUniform.js.map +1 -0
  356. package/lib/renderer/wgpuShaderSource.d.ts +15 -0
  357. package/lib/renderer/wgpuShaderSource.js +31 -0
  358. package/lib/renderer/wgpuShaderSource.js.map +1 -0
  359. package/lib/renderer/wgsl/aovDisplay.wgsl.d.ts +1 -0
  360. package/lib/renderer/wgsl/aovDisplay.wgsl.js +70 -0
  361. package/lib/renderer/wgsl/aovDisplay.wgsl.js.map +1 -0
  362. package/lib/renderer/wgsl/aovReflectance.wgsl.d.ts +2 -0
  363. package/lib/renderer/wgsl/aovReflectance.wgsl.js +98 -0
  364. package/lib/renderer/wgsl/aovReflectance.wgsl.js.map +1 -0
  365. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.d.ts +2 -0
  366. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.js +135 -0
  367. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.js.map +1 -0
  368. package/lib/renderer/wgsl/aovResolve.wgsl.d.ts +5 -0
  369. package/lib/renderer/wgsl/aovResolve.wgsl.js +38 -0
  370. package/lib/renderer/wgsl/aovResolve.wgsl.js.map +1 -0
  371. package/lib/renderer/wgsl/aovSnapshot.wgsl.d.ts +4 -0
  372. package/lib/renderer/wgsl/aovSnapshot.wgsl.js +21 -0
  373. package/lib/renderer/wgsl/aovSnapshot.wgsl.js.map +1 -0
  374. package/lib/renderer/wgsl/aovTrace.wgsl.d.ts +2 -0
  375. package/lib/renderer/wgsl/aovTrace.wgsl.js +115 -0
  376. package/lib/renderer/wgsl/aovTrace.wgsl.js.map +1 -0
  377. package/lib/renderer/wgsl/bloom.wgsl.d.ts +13 -0
  378. package/lib/renderer/wgsl/bloom.wgsl.js +92 -0
  379. package/lib/renderer/wgsl/bloom.wgsl.js.map +1 -0
  380. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  381. package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +1 -1
  382. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +43 -37
  383. package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -1
  384. package/lib/renderer/wgsl/chunks/intersect.wgsl.d.ts +13 -1
  385. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +742 -705
  386. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  387. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +16 -16
  388. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js.map +1 -1
  389. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.d.ts +3 -1
  390. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +84 -82
  391. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
  392. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +855 -857
  393. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js.map +1 -1
  394. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +139 -139
  395. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  396. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.d.ts +2 -1
  397. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +42 -32
  398. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
  399. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.d.ts +1 -1
  400. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +152 -148
  401. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js.map +1 -1
  402. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +239 -232
  403. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js.map +1 -1
  404. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.d.ts +1 -1
  405. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +26 -13
  406. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js.map +1 -1
  407. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +91 -91
  408. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +1 -1
  409. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +1 -0
  410. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
  411. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +83 -83
  412. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +12 -12
  413. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js.map +1 -1
  414. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +8 -3
  415. package/lib/renderer/wgsl/compose.frag.wgsl.js +143 -118
  416. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
  417. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  418. package/lib/renderer/wgsl/depthQuery.wgsl.js +7 -7
  419. package/lib/renderer/wgsl/jnlm.compute.d.ts +25 -0
  420. package/lib/renderer/wgsl/jnlm.compute.js +315 -0
  421. package/lib/renderer/wgsl/jnlm.compute.js.map +1 -0
  422. package/lib/renderer/wgsl/offlineAdaptive.compute.js +28 -28
  423. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.d.ts +1 -0
  424. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.js +17 -0
  425. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.js.map +1 -0
  426. package/lib/renderer/wgsl/proceduralSky.compute.d.ts +1 -0
  427. package/lib/renderer/wgsl/proceduralSky.compute.js +198 -0
  428. package/lib/renderer/wgsl/proceduralSky.compute.js.map +1 -0
  429. package/lib/renderer/wgsl/rayTrace.compute.d.ts +17 -1
  430. package/lib/renderer/wgsl/rayTrace.compute.js +612 -393
  431. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  432. package/lib/scene/Camera.js +7 -3
  433. package/lib/scene/Camera.js.map +1 -1
  434. package/lib/scene/EnvironmentLight.d.ts +5 -9
  435. package/lib/scene/EnvironmentLight.js +4 -14
  436. package/lib/scene/EnvironmentLight.js.map +1 -1
  437. package/lib/scene/EnvironmentLightState.d.ts +18 -0
  438. package/lib/scene/EnvironmentLightState.js +19 -0
  439. package/lib/scene/EnvironmentLightState.js.map +1 -0
  440. package/lib/scene/Geometry.d.ts +12 -6
  441. package/lib/scene/Geometry.js +37 -13
  442. package/lib/scene/Geometry.js.map +1 -1
  443. package/lib/scene/InstanceState.d.ts +39 -0
  444. package/lib/scene/InstanceState.js +77 -0
  445. package/lib/scene/InstanceState.js.map +1 -0
  446. package/lib/scene/InstancedMesh.d.ts +1 -1
  447. package/lib/scene/InstancedMesh.js +3 -0
  448. package/lib/scene/InstancedMesh.js.map +1 -1
  449. package/lib/scene/MaterialState.d.ts +209 -0
  450. package/lib/scene/MaterialState.js +231 -0
  451. package/lib/scene/MaterialState.js.map +1 -0
  452. package/lib/scene/Mesh.d.ts +4 -6
  453. package/lib/scene/Mesh.js +3 -11
  454. package/lib/scene/Mesh.js.map +1 -1
  455. package/lib/scene/MeshState.d.ts +20 -0
  456. package/lib/scene/MeshState.js +35 -0
  457. package/lib/scene/MeshState.js.map +1 -0
  458. package/lib/scene/OpenPBRMaterial.d.ts +6 -168
  459. package/lib/scene/OpenPBRMaterial.js +5 -223
  460. package/lib/scene/OpenPBRMaterial.js.map +1 -1
  461. package/lib/scene/PixelTexture.d.ts +6 -0
  462. package/lib/scene/PixelTexture.js +10 -0
  463. package/lib/scene/PixelTexture.js.map +1 -0
  464. package/lib/scene/ProceduralSky.d.ts +24 -0
  465. package/lib/scene/ProceduralSky.js +40 -0
  466. package/lib/scene/ProceduralSky.js.map +1 -0
  467. package/lib/scene/RectLight.d.ts +2 -13
  468. package/lib/scene/RectLight.js +3 -21
  469. package/lib/scene/RectLight.js.map +1 -1
  470. package/lib/scene/RectLightState.d.ts +31 -0
  471. package/lib/scene/RectLightState.js +26 -0
  472. package/lib/scene/RectLightState.js.map +1 -0
  473. package/lib/scene/Scene.d.ts +15 -4
  474. package/lib/scene/Scene.js.map +1 -1
  475. package/lib/scene/SceneNode.js +7 -6
  476. package/lib/scene/SceneNode.js.map +1 -1
  477. package/lib/scene/Texture.d.ts +10 -41
  478. package/lib/scene/Texture.js +4 -33
  479. package/lib/scene/Texture.js.map +1 -1
  480. package/lib/scene/TextureState.d.ts +35 -0
  481. package/lib/scene/TextureState.js +35 -0
  482. package/lib/scene/TextureState.js.map +1 -0
  483. package/lib/scene/attributeData.d.ts +4 -0
  484. package/lib/scene/attributeData.js +10 -0
  485. package/lib/scene/attributeData.js.map +1 -0
  486. package/lib/scene/lightState.d.ts +8 -0
  487. package/lib/scene/lightState.js +2 -0
  488. package/lib/scene/lightState.js.map +1 -0
  489. package/lib/scene/openPbrSchema.d.ts +7 -12
  490. package/lib/scene/openPbrSchema.js +273 -28
  491. package/lib/scene/openPbrSchema.js.map +1 -1
  492. package/lib/scene/skyParameters.d.ts +20 -0
  493. package/lib/scene/skyParameters.js +28 -0
  494. package/lib/scene/skyParameters.js.map +1 -0
  495. package/lib/scene/textureData.d.ts +9 -0
  496. package/lib/scene/textureData.js +2 -0
  497. package/lib/scene/textureData.js.map +1 -0
  498. package/lib/scene/texturePixels.d.ts +6 -0
  499. package/lib/scene/texturePixels.js +10 -0
  500. package/lib/scene/texturePixels.js.map +1 -0
  501. package/lib/settings/display.d.ts +33 -0
  502. package/lib/settings/display.js +7 -0
  503. package/lib/settings/display.js.map +1 -1
  504. package/lib/settings/render.d.ts +25 -3
  505. package/lib/settings/render.js +3 -1
  506. package/lib/settings/render.js.map +1 -1
  507. package/lib/tinybvh/tinybvh.wasm +0 -0
  508. package/lib/util/commonGeometry.js +7 -7
  509. package/lib/util/commonGeometry.js.map +1 -1
  510. package/lib/util/fromTHREE.d.ts +4 -1
  511. package/lib/util/fromTHREE.js +18 -5
  512. package/lib/util/fromTHREE.js.map +1 -1
  513. package/lib/util/geometry.js +42 -29
  514. package/lib/util/geometry.js.map +1 -1
  515. package/lib/util/loadRGBE.js +3 -4
  516. package/lib/util/loadRGBE.js.map +1 -1
  517. package/lib/util/studioLighting.d.ts +18 -0
  518. package/lib/util/studioLighting.js +36 -0
  519. package/lib/util/studioLighting.js.map +1 -0
  520. package/lib/version.d.ts +1 -1
  521. package/lib/version.js +1 -1
  522. package/lib/version.js.map +1 -1
  523. package/llms.txt +4 -0
  524. package/package.json +31 -5
  525. package/lib/renderer/texturesFromMaterials.d.ts +0 -6
  526. package/lib/renderer/texturesFromMaterials.js.map +0 -1
@@ -4,71 +4,71 @@ export default glsl `
4
4
 
5
5
 
6
6
 
7
- vec3 aQ(vec3 view, vec2 alpha, vec2 samplePoint) {
8
- vec3 rm = vec3(alpha, 1.0);
9
- vec3 gk = normalize(rm * view);
10
- float uh = min(gk.z, 1.0);
11
- float qQ = 1.0 + uh;
12
- float rh = (1.0 - samplePoint.y) * qQ;
13
- float rR = samplePoint.y * qQ;
14
- float sI = rh + (1.0 - uh);
15
- float fl = sqrt(max(0.0, sI * rR));
16
- float br = TWOPI * samplePoint.x;
17
- vec3 lI = vec3(
18
- gk.x + fl * cos(br),
19
- gk.y + fl * sin(br),
20
- rh
7
+ vec3 aD(vec3 view, vec2 alpha, vec2 samplePoint) {
8
+ vec3 sv = vec3(alpha, 1.0);
9
+ vec3 cr = normalize(sv * view);
10
+ float qP = min(cr.z, 1.0);
11
+ float kh = 1.0 + qP;
12
+ float kC = (1.0 - samplePoint.y) * kh;
13
+ float sU = samplePoint.y * kh;
14
+ float tY = kC + (1.0 - qP);
15
+ float ex = sqrt(max(0.0, tY * sU));
16
+ float azimuth = TWOPI * samplePoint.x;
17
+ vec3 mr = vec3(
18
+ cr.x + ex * cos(azimuth),
19
+ cr.y + ex * sin(azimuth),
20
+ kC
21
21
  );
22
- return normalize(rm * lI);
22
+ return normalize(sv * mr);
23
23
  }
24
24
 
25
- float gL(vec3 oo, vec2 alpha) {
26
- vec3 hr = vec3(
27
- oo.x / alpha.x,
28
- oo.y / alpha.y,
29
- oo.z
25
+ float cW(vec3 pf, vec2 alpha) {
26
+ vec3 hF = vec3(
27
+ pf.x / alpha.x,
28
+ pf.y / alpha.y,
29
+ pf.z
30
30
  );
31
- float ap = dot(hr, hr);
31
+ float aq = dot(hF, hF);
32
32
  return 1.0 / (
33
- PI * alpha.x * alpha.y * ap * ap
33
+ PI * alpha.x * alpha.y * aq * aq
34
34
  );
35
35
  }
36
36
 
37
- float bk(vec3 direction, vec2 alpha) {
38
- float eF = abs(direction.z);
39
- if (eF <= 1e-8) {
37
+ float aF(vec3 direction, vec2 alpha) {
38
+ float eQ = abs(direction.z);
39
+ if (eQ <= 1e-8) {
40
40
  return 0.0;
41
41
  }
42
- vec2 ic = alpha * direction.xy;
43
- float lJ = dot(ic, ic)
44
- / (eF * eF);
45
- return 2.0 / (1.0 + sqrt(1.0 + lJ));
42
+ vec2 iE = alpha * direction.xy;
43
+ float mt = dot(iE, iE)
44
+ / (eQ * eQ);
45
+ return 2.0 / (1.0 + sqrt(1.0 + mt));
46
46
  }
47
47
 
48
- float aE(float au) {
49
- float di = clamp(1.0 - au, 0.0, 1.0);
50
- return pow(di, 5.0);
48
+ float aI(float cosine) {
49
+ float dw = clamp(1.0 - cosine, 0.0, 1.0);
50
+ return pow(dw, 5.0);
51
51
  }
52
52
 
53
- float cu(float L, float cJ) {
54
- float iA = clamp(abs(L), 0.0, 1.0);
55
- float kl = cJ * cJ
56
- * max(0.0, 1.0 - iA * iA);
57
- if (kl >= 1.0) {
53
+ float cC(float J, float cR) {
54
+ float iS = clamp(abs(J), 0.0, 1.0);
55
+ float kQ = cR * cR
56
+ * max(0.0, 1.0 - iS * iS);
57
+ if (kQ >= 1.0) {
58
58
  return 1.0;
59
59
  }
60
60
 
61
- float lT = sqrt(max(0.0, 1.0 - kl));
62
- float ba = (iA - cJ * lT)
63
- / max(iA + cJ * lT, 1e-8);
64
- float pN = (cJ * iA - lT)
65
- / max(cJ * iA + lT, 1e-8);
61
+ float mD = sqrt(max(0.0, 1.0 - kQ));
62
+ float bk = (iS - cR * mD)
63
+ / max(iS + cR * mD, 1e-8);
64
+ float qC = (cR * iS - mD)
65
+ / max(cR * iS + mD, 1e-8);
66
66
  return 0.5 * (
67
- ba * ba + pN * pN
67
+ bk * bk + qC * qC
68
68
  );
69
69
  }
70
70
 
71
- vec2 gi(vec2 samplePoint) {
71
+ vec2 gy(vec2 samplePoint) {
72
72
  vec2 offset = 2.0 * samplePoint - vec2(1.0);
73
73
  if (offset.x == 0.0 && offset.y == 0.0) {
74
74
  return vec2(0.0);
@@ -87,108 +87,108 @@ angle = 0.5 * PI - 0.25 * PI * (offset.x / offset.y);
87
87
  return radius * vec2(cos(angle), sin(angle));
88
88
  }
89
89
 
90
- vec3 bi(vec2 samplePoint) {
91
- vec2 kF = gi(samplePoint);
90
+ vec3 aO(vec2 samplePoint) {
91
+ vec2 lk = gy(samplePoint);
92
92
  return vec3(
93
- kF,
94
- sqrt(max(0.0, 1.0 - dot(kF, kF)))
93
+ lk,
94
+ sqrt(max(0.0, 1.0 - dot(lk, lk)))
95
95
  );
96
96
  }
97
97
 
98
- float aG(float pr, float nN) {
99
- float scale = max(pr, nN);
98
+ float aK(float qo, float oJ) {
99
+ float scale = max(qo, oJ);
100
100
  if (scale <= 0.0) {
101
101
  return 0.0;
102
102
  }
103
- vec2 normalized = vec2(pr, nN) / scale;
104
- vec2 oO = normalized * normalized;
105
- return oO.x / (oO.x + oO.y);
103
+ vec2 normalized = vec2(qo, oJ) / scale;
104
+ vec2 pL = normalized * normalized;
105
+ return pL.x / (pL.x + pL.y);
106
106
  }
107
107
 
108
- void aL(in vec3 normal, out vec3 tangent, out vec3 bitangent) {
109
- float ik = normal.z >= 0.0 ? 1.0 : -1.0;
110
- float dW = -1.0 / (ik + normal.z);
111
- float xy = normal.x * normal.y * dW;
108
+ void aP(in vec3 normal, out vec3 tangent, out vec3 bitangent) {
109
+ float iI = normal.z >= 0.0 ? 1.0 : -1.0;
110
+ float cL = -1.0 / (iI + normal.z);
111
+ float xy = normal.x * normal.y * cL;
112
112
  tangent = vec3(
113
- 1.0 + ik * normal.x * normal.x * dW,
114
- ik * xy,
115
- -ik * normal.x
113
+ 1.0 + iI * normal.x * normal.x * cL,
114
+ iI * xy,
115
+ -iI * normal.x
116
116
  );
117
117
  bitangent = vec3(
118
118
  xy,
119
- ik + normal.y * normal.y * dW,
119
+ iI + normal.y * normal.y * cL,
120
120
  -normal.y
121
121
  );
122
122
  }
123
123
 
124
- vec3 ai(vec3 rgb, float wavelength) {
124
+ vec3 aj(vec3 rgb, float wavelength) {
125
125
  if (wavelength == 0.0) {
126
126
  return rgb;
127
127
  }
128
- vec3 tN = wavelength > 600.0
128
+ vec3 vk = wavelength > 600.0
129
129
  ? vec3(1.0, 0.0, 0.0)
130
130
  : wavelength > 500.0
131
131
  ? vec3(0.0, 1.0, 0.0)
132
132
  : vec3(0.0, 0.0, 1.0);
133
- return rgb * tN;
133
+ return rgb * vk;
134
134
  }
135
135
 
136
- float eN(
136
+ float ee(
137
137
  float wavelength,
138
- float hh,
139
- float hp,
140
- float qs
138
+ float hu,
139
+ float hD,
140
+ float rt
141
141
  ) {
142
- if (wavelength == 0.0 || hp <= 0.0) {
143
- return hh;
142
+ if (wavelength == 0.0 || hD <= 0.0) {
143
+ return hu;
144
144
  }
145
145
 
146
146
  const float FRAUNHOFER_C = 656.3;
147
147
  const float FRAUNHOFER_D = 587.6;
148
148
  const float FRAUNHOFER_F = 486.1;
149
- float jR = 1.0 / (
149
+ float kv = 1.0 / (
150
150
  1.0 / (FRAUNHOFER_F * FRAUNHOFER_F)
151
151
  - 1.0 / (FRAUNHOFER_C * FRAUNHOFER_C)
152
152
  );
153
- float ng = max(qs / hp, 1e-6);
154
- float qR = (hh - 1.0) * jR / ng;
155
- float tl = hh
156
- - qR / (FRAUNHOFER_D * FRAUNHOFER_D);
157
- return tl + qR / (wavelength * wavelength);
153
+ float oe = max(rt / hD, 1e-6);
154
+ float rV = (hu - 1.0) * kv / oe;
155
+ float uK = hu
156
+ - rV / (FRAUNHOFER_D * FRAUNHOFER_D);
157
+ return uK + rV / (wavelength * wavelength);
158
158
  }
159
159
 
160
- vec3 fq(
161
- vec3 gz,
160
+ vec3 fH(
161
+ vec3 gO,
162
162
  float anisotropy,
163
163
  vec2 samplePoint
164
164
  ) {
165
- float au;
165
+ float cosine;
166
166
  if (abs(anisotropy) < 0.001) {
167
- au = 1.0 - 2.0 * samplePoint.y;
167
+ cosine = 1.0 - 2.0 * samplePoint.y;
168
168
  }
169
169
  else {
170
- float ja = (1.0 - anisotropy * anisotropy)
170
+ float ju = (1.0 - anisotropy * anisotropy)
171
171
  / (1.0 + anisotropy - 2.0 * anisotropy * samplePoint.y);
172
- au = (
173
- ja * ja - 1.0 - anisotropy * anisotropy
172
+ cosine = (
173
+ ju * ju - 1.0 - anisotropy * anisotropy
174
174
  ) / (2.0 * anisotropy);
175
175
  }
176
176
 
177
- float ud = sqrt(max(0.0, 1.0 - au * au));
178
- float br = TWOPI * samplePoint.x;
177
+ float vF = sqrt(max(0.0, 1.0 - cosine * cosine));
178
+ float azimuth = TWOPI * samplePoint.x;
179
179
  vec3 tangent;
180
180
  vec3 bitangent;
181
- aL(gz, tangent, bitangent);
182
- return tangent * (ud * cos(br))
183
- + bitangent * (ud * sin(br))
184
- + gz * au;
181
+ aP(gO, tangent, bitangent);
182
+ return tangent * (vF * cos(azimuth))
183
+ + bitangent * (vF * sin(azimuth))
184
+ + gO * cosine;
185
185
  }
186
186
 
187
- float bD(float au, float anisotropy) {
188
- float ap = 1.0 + anisotropy * anisotropy
189
- + 2.0 * anisotropy * au;
187
+ float bL(float cosine, float anisotropy) {
188
+ float aq = 1.0 + anisotropy * anisotropy
189
+ + 2.0 * anisotropy * cosine;
190
190
  return INV4PI * (1.0 - anisotropy * anisotropy)
191
- / (ap * sqrt(ap));
191
+ / (aq * sqrt(aq));
192
192
  }
193
193
  `;
194
194
  //# sourceMappingURL=sampling.glsl.js.map
@@ -24,41 +24,41 @@ const uint BOUNCE_STRIDE = 64u;
24
24
 
25
25
 
26
26
 
27
- uvec2 bc;
28
- uint bd;
29
- uint cF = 0u;
30
- uint em = 0u;
31
- uint eg(uint kt) {
32
- uint x = kt;
27
+ uvec2 aZ;
28
+ uint aQ;
29
+ uint bT = 0u;
30
+ uint cP = 0u;
31
+ uint dG(uint kW) {
32
+ uint x = kW;
33
33
  x ^= x >> 16u; x *= 0x7feb352du;
34
34
  x ^= x >> 15u; x *= 0x846ca68bu;
35
35
  return x ^ (x >> 16u);
36
36
  }
37
- uint aq(uint a, uint b) {
38
- return eg(a ^ eg(b + 0x9e3779b9u));
37
+ uint ar(uint a, uint b) {
38
+ return dG(a ^ dG(b + 0x9e3779b9u));
39
39
  }
40
- uint iE(uint kt, uint ij) {
41
- uint x = kt + ij;
40
+ uint iV(uint kW, uint seed) {
41
+ uint x = kW + seed;
42
42
  x ^= x * 0x6c50b47cu; x ^= x * 0xb82f1e52u;
43
43
  x ^= x * 0xc7afe638u; x ^= x * 0x8d22f6e6u;
44
44
  return x;
45
45
  }
46
- uint sK(uint x, uint ij) {
47
- return reverseBits(iE(reverseBits(x), ij));
46
+ uint ua(uint x, uint seed) {
47
+ return reverseBits(iV(reverseBits(x), seed));
48
48
  }
49
49
 
50
- uint rl(uint kt) {
51
- uint r = reverseBits(kt);
50
+ uint su(uint kW) {
51
+ uint r = reverseBits(kW);
52
52
  ${sobolD1Steps.map(([shift, mask]) => `r ^= (r << ${shift}u) & 0x${mask.toString(16)}u;`).join("\n ")}
53
53
  return r;
54
54
  }
55
- vec2 vP(uint index, uint ij) {
56
- uint i = sK(index, aq(ij, 0u));
57
- uint x = reverseBits(iE(i, aq(ij, 1u)));
58
- uint y = sK(rl(i), aq(ij, 2u));
55
+ vec2 xE(uint index, uint seed) {
56
+ uint i = ua(index, ar(seed, 0u));
57
+ uint x = reverseBits(iV(i, ar(seed, 1u)));
58
+ uint y = ua(su(i), ar(seed, 2u));
59
59
  return vec2(float(x >> 8u), float(y >> 8u)) * (1.0 / 16777216.0);
60
60
  }
61
- uint tB(uvec2 p) {
61
+ uint uR(uvec2 p) {
62
62
  uvec2 v = p & uvec2(255u);
63
63
  v = (v | (v << uvec2(4u))) & uvec2(0x0f0fu);
64
64
  v = (v | (v << uvec2(2u))) & uvec2(0x3333u);
@@ -66,104 +66,104 @@ v = (v | (v << uvec2(1u))) & uvec2(0x5555u);
66
66
  return v.x | (v.y << 1u);
67
67
  }
68
68
  ${zSobolPackedPermutations.map((v, i) => `const uint Z_PERM_${i} = ${v}u;`).join("\n")}
69
- uint kw(uint tE) {
70
- uint group = tE >> 2u;
69
+ uint la(uint uU) {
70
+ uint group = uU >> 2u;
71
71
  uint word = Z_PERM_5;
72
72
  ${[0, 1, 2, 3, 4].map(i => `word = group == ${i}u ? Z_PERM_${i} : word;`).join("\n ")}
73
- return (word >> ((tE & 3u) * 8u)) & 255u;
73
+ return (word >> ((uU & 3u) * 8u)) & 255u;
74
74
  }
75
- uint pW(uint kN, uint dim, uint logSPP) {
75
+ uint qS(uint lu, uint dim, uint logSPP) {
76
76
  uint odd = logSPP & 1u;
77
- uint um = 8u + ((logSPP + 1u) >> 1u);
77
+ uint vN = 8u + ((logSPP + 1u) >> 1u);
78
78
  uint result = 0u;
79
- for (int digit = int(um) - 1; digit >= int(odd); digit--) {
79
+ for (int digit = int(vN) - 1; digit >= int(odd); digit--) {
80
80
  uint shift = 2u*uint(digit) - odd;
81
81
 
82
- uint st = 0u;
83
- if (shift < 30u) { st = kN >> (shift + 2u); }
84
- uint tE = (eg(st ^ (0x55555555u * dim)) >> 24u) % 24u;
85
- uint d = (kN >> shift) & 3u;
86
- result |= ((kw(tE) >> (2u*d)) & 3u) << shift;
82
+ uint tL = 0u;
83
+ if (shift < 30u) { tL = lu >> (shift + 2u); }
84
+ uint uU = (dG(tL ^ (0x55555555u * dim)) >> 24u) % 24u;
85
+ uint d = (lu >> shift) & 3u;
86
+ result |= ((la(uU) >> (2u*d)) & 3u) << shift;
87
87
  }
88
88
  if (odd != 0u) {
89
- result |= (kN & 1u) ^ (eg((kN >> 1u) ^ (0x55555555u * dim)) & 1u);
89
+ result |= (lu & 1u) ^ (dG((lu >> 1u) ^ (0x55555555u * dim)) & 1u);
90
90
  }
91
91
  return result;
92
92
  }
93
93
 
94
94
 
95
95
 
96
- uint cw(uint slot) {
97
- return CAMERA_BEVEL_BASE + uint(BEVEL_SAMPLES) + cF * BOUNCE_STRIDE + slot;
96
+ uint cE(uint slot) {
97
+ return CAMERA_BEVEL_BASE + uint(BEVEL_SAMPLES) + bT * BOUNCE_STRIDE + slot;
98
98
  }
99
99
 
100
- uvec4 hl;
101
- uint hm;
102
- bool fC = false;
103
- bool dg = false;
104
- uint dF;
105
- uint gv;
106
- vec2 eQ;
107
- void dw(uint dim) {
100
+ uvec4 hA;
101
+ uint hB;
102
+ bool fQ = false;
103
+ bool dv = false;
104
+ uint dQ;
105
+ uint gK;
106
+ vec2 fa;
107
+ void dN(uint dim) {
108
108
 
109
- uint kd = bc.x + bc.y * uint(round(1.0 / pixelSize.x));
110
- uvec4 key = uvec4(dim, bd, kd, uint(sequenceSeed));
111
- if (fC && all(equal(hl, key)) && hm == uint(zSobolLogSPP)) { return; }
112
- hl = key; hm = uint(zSobolLogSPP);
113
- fC = true; dg = false;
114
- uint ij = aq(aq(kd, dim), uint(sequenceSeed));
115
- uint index = bd;
109
+ uint kI = aZ.x + aZ.y * uint(round(1.0 / pixelSize.x));
110
+ uvec4 key = uvec4(dim, aQ, kI, uint(sequenceSeed));
111
+ if (fQ && all(equal(hA, key)) && hB == uint(zSobolLogSPP)) { return; }
112
+ hA = key; hB = uint(zSobolLogSPP);
113
+ fQ = true; dv = false;
114
+ uint seed = ar(ar(kI, dim), uint(sequenceSeed));
115
+ uint index = aQ;
116
116
  if (samplingPattern == 1) {
117
117
  uint logSPP = uint(zSobolLogSPP);
118
118
  if (index == 0u) { logSPP = 0u; }
119
119
  else { index -= 1u; }
120
120
 
121
- uint jb = index >> logSPP;
121
+ uint jw = index >> logSPP;
122
122
  uint mask = (1u << logSPP) - 1u;
123
- uint kN = (tB(bc) << logSPP) | (index & mask);
124
- index = pW(kN, dim, logSPP);
125
- uvec2 tile = bc >> uvec2(8u);
126
- ij = aq(aq(dim, uint(sequenceSeed)), aq(tile.x, tile.y));
123
+ uint lu = (uR(aZ) << logSPP) | (index & mask);
124
+ index = qS(lu, dim, logSPP);
125
+ uvec2 tile = aZ >> uvec2(8u);
126
+ seed = ar(ar(dim, uint(sequenceSeed)), ar(tile.x, tile.y));
127
127
 
128
- if (bd != 0u) { jb += 1u; }
129
- ij = aq(ij, jb);
128
+ if (aQ != 0u) { jw += 1u; }
129
+ seed = ar(seed, jw);
130
130
  }
131
- dF = sK(index, aq(ij, 0u));
132
- gv = ij;
133
- uint x = reverseBits(iE(dF, aq(ij, 1u)));
134
- eQ.x = float(x >> 8u) * (1.0 / 16777216.0);
131
+ dQ = ua(index, ar(seed, 0u));
132
+ gK = seed;
133
+ uint x = reverseBits(iV(dQ, ar(seed, 1u)));
134
+ fa.x = float(x >> 8u) * (1.0 / 16777216.0);
135
135
  }
136
- vec2 kS(uint dim) {
137
- dw(dim);
138
- if (!dg) {
139
- uint y = sK(rl(dF), aq(gv, 2u));
140
- eQ.y = float(y >> 8u) * (1.0 / 16777216.0);
141
- dg = true;
136
+ vec2 lC(uint dim) {
137
+ dN(dim);
138
+ if (!dv) {
139
+ uint y = ua(su(dQ), ar(gK, 2u));
140
+ fa.y = float(y >> 8u) * (1.0 / 16777216.0);
141
+ dv = true;
142
142
  }
143
- return EPS + (1.0 - 2.0*EPS) * eQ;
143
+ return EPS + (1.0 - 2.0*EPS) * fa;
144
144
  }
145
- float dz(uint dim) {
145
+ float dp(uint dim) {
146
146
  if (samplingPattern == 2) { return EPS + (1.0 - 2.0*EPS)*rand(); }
147
- dw(dim);
148
- return EPS + (1.0 - 2.0*EPS) * eQ.x;
147
+ dN(dim);
148
+ return EPS + (1.0 - 2.0*EPS) * fa.x;
149
149
  }
150
- vec2 fp(uint dim) {
150
+ vec2 dZ(uint dim) {
151
151
  if (samplingPattern == 2) {
152
- float x = dz(dim); float y = dz(dim);
152
+ float x = dp(dim); float y = dp(dim);
153
153
  return vec2(x,y);
154
154
  }
155
- return kS(dim);
155
+ return lC(dim);
156
156
  }
157
157
 
158
- float eo(uint slot) {
159
- uint dim = aq(aq(cF, slot), em) | 0x80000000u;
160
- em += 1u;
158
+ float eC(uint slot) {
159
+ uint dim = ar(ar(bT, slot), cP) | 0x80000000u;
160
+ cP += 1u;
161
161
  if (samplingPattern == 2) { return EPS + (1.0 - 2.0*EPS)*rand(); }
162
162
 
163
- uint kd = bc.x + bc.y * uint(round(1.0 / pixelSize.x));
164
- uint ij = aq(aq(kd, dim), uint(sequenceSeed));
165
- uint i = sK(bd, aq(ij, 0u));
166
- uint x = reverseBits(iE(i, aq(ij, 1u)));
163
+ uint kI = aZ.x + aZ.y * uint(round(1.0 / pixelSize.x));
164
+ uint seed = ar(ar(kI, dim), uint(sequenceSeed));
165
+ uint i = ua(aQ, ar(seed, 0u));
166
+ uint x = reverseBits(iV(i, ar(seed, 1u)));
167
167
  return EPS + (1.0 - 2.0*EPS) * (float(x >> 8u) * (1.0 / 16777216.0));
168
168
  }
169
169
  `;
@@ -9,16 +9,16 @@ vec4 textureLinear(sampler2D map, vec2 uv) {
9
9
  return texture(map, uv);
10
10
  #else
11
11
  vec2 size = vec2(textureSize(map, 0));
12
- vec2 qa = 1.0 / size;
12
+ vec2 qX = 1.0 / size;
13
13
 
14
14
  uv = uv * size - 0.5;
15
15
  vec2 f = fract(uv);
16
16
  uv = floor(uv) + 0.5;
17
17
 
18
- vec4 s1 = texture(map, (uv + vec2(0, 0)) * qa);
19
- vec4 s2 = texture(map, (uv + vec2(1, 0)) * qa);
20
- vec4 s3 = texture(map, (uv + vec2(0, 1)) * qa);
21
- vec4 s4 = texture(map, (uv + vec2(1, 1)) * qa);
18
+ vec4 s1 = texture(map, (uv + vec2(0, 0)) * qX);
19
+ vec4 s2 = texture(map, (uv + vec2(1, 0)) * qX);
20
+ vec4 s3 = texture(map, (uv + vec2(0, 1)) * qX);
21
+ vec4 s4 = texture(map, (uv + vec2(1, 1)) * qX);
22
22
 
23
23
  return mix(mix(s1, s2, f.x), mix(s3, s4, f.x), f.y);
24
24
  #endif
@@ -1,5 +1,5 @@
1
1
  import { glsl } from '../../shader.js';
2
- import { uvProjectionConstants } from '../../MaterialTable.js';
2
+ import { uvProjectionConstants } from '../../materialConstants.js';
3
3
  export default glsl `
4
4
  vec2 sphericalProjection(vec3 pos) {
5
5
  vec3 n = normalize(pos);
@@ -8,12 +8,12 @@ float phi = acos(n.y) / PI;
8
8
  return vec2(theta, 1.0 - phi);
9
9
  }
10
10
 
11
- vec2 iR(vec3 pos, vec3 normal, vec2 uvScale) {
12
- vec3 dn = abs(normal);
11
+ vec2 jh(vec3 pos, vec3 normal, vec2 uvScale) {
12
+ vec3 dI = abs(normal);
13
13
  vec2 uv = vec2(0.0);
14
- if (dn.x > dn.y && dn.x > dn.z) {
14
+ if (dI.x > dI.y && dI.x > dI.z) {
15
15
  uv = pos.yz;
16
- } else if (dn.y > dn.x && dn.y > dn.z) {
16
+ } else if (dI.y > dI.x && dI.y > dI.z) {
17
17
  uv = pos.xz;
18
18
  } else {
19
19
  uv = pos.xy;
@@ -53,18 +53,18 @@ return fract(uv * uvScale);
53
53
 
54
54
 
55
55
 
56
- vec2 hD(vec3 pos, vec3 normal) {
56
+ vec2 hT(vec3 pos, vec3 normal) {
57
57
  float theta = atan(pos.z, pos.x) / (2.0 * PI) + 0.5;
58
58
  return vec2(theta, pos.y);
59
59
  }
60
60
 
61
- vec2 gI(int fk, vec3 pos, vec3 normal, vec2 uvScale) {
62
- if (fk == ${uvProjectionConstants.triplanar + ''}) {
63
- return iR(pos, normal, uvScale);
64
- } else if (fk == ${uvProjectionConstants.spherical + ''}) {
61
+ vec2 gU(int fE, vec3 pos, vec3 normal, vec2 uvScale) {
62
+ if (fE == ${uvProjectionConstants.triplanar + ''}) {
63
+ return jh(pos, normal, uvScale);
64
+ } else if (fE == ${uvProjectionConstants.spherical + ''}) {
65
65
  return sphericalProjection(pos) * uvScale;
66
- } else if (fk == ${uvProjectionConstants.cylindrical + ''}) {
67
- return hD(pos, normal) * uvScale;
66
+ } else if (fE == ${uvProjectionConstants.cylindrical + ''}) {
67
+ return hT(pos, normal) * uvScale;
68
68
  }
69
69
  return vec2(0.0);
70
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"uvProjection.glsl.js","sourceRoot":"","sources":["../../../../src/renderer/glsl/chunks/uvProjection.glsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,eAAe,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2DO,qBAAqB,CAAC,SAAS,GAAG,EAAE;;mBAE7B,qBAAqB,CAAC,SAAS,GAAG,EAAE;;mBAEpC,qBAAqB,CAAC,WAAW,GAAG,EAAE;;;;;CAKtE,CAAC","sourcesContent":["import { glsl } from '../../shader.js';\nimport { uvProjectionConstants } from '../../MaterialTable.js';\n\nexport default glsl`\nvec2 sphericalProjection(vec3 pos) {\n vec3 n = normalize(pos);\n float theta = atan(n.x, n.z) / (2.0 * PI) + 0.5;\n float phi = acos(n.y) / PI;\n return vec2(theta, 1.0 - phi);\n}\n\nvec2 triplanarProjection(vec3 pos, vec3 normal, vec2 uvScale) {\n vec3 absNormal = abs(normal);\n vec2 uv = vec2(0.0);\n if (absNormal.x > absNormal.y && absNormal.x > absNormal.z) {\n uv = pos.yz;\n } else if (absNormal.y > absNormal.x && absNormal.y > absNormal.z) {\n uv = pos.xz;\n } else {\n uv = pos.xy;\n }\n return fract(uv * uvScale);\n}\n\n// vec4 triplanarProjectionSample(\n// sampler2DArray _map, vec2 mapSize, int index,\n// vec3 pos, vec3 normal, vec2 uvScale, float blending\n// ) {\n// vec3 absNormal = abs(normal);\n// // Calculate blending power - higher expo means sharper transitions\n// float expo = (1.0 - blending) * 125.0 + blending * 3.0;\n \n// // Weight each axis by its normal component raised to expo power\n// vec3 weights = pow(absNormal, vec3(expo));\n \n// // Normalize weights so they sum to 1\n// weights = weights / (weights.x + weights.y + weights.z);\n \n// // Project UVs on each axis plane (yz, xz, xy)\n// vec2 yzPlane = pos.yz * uvScale;\n// vec2 xzPlane = pos.xz * uvScale;\n// vec2 xyPlane = pos.xy * uvScale;\n// // Wrap\n// yzPlane = fract(yzPlane);\n// xzPlane = fract(xzPlane);\n// xyPlane = fract(xyPlane);\n\n// // Sample maps\n// vec4 yz = texture(_map, vec3(yzPlane * mapSize, float(index)));\n// vec4 xz = texture(_map, vec3(xzPlane * mapSize, float(index)));\n// vec4 xy = texture(_map, vec3(xyPlane * mapSize, float(index)));\n \n// // Blend the projected coordinates using the weights\n// return weights.x * yz + weights.y * xz + weights.z * xy;\n// }\n\nvec2 cylindricalProjection(vec3 pos, vec3 normal) {\n float theta = atan(pos.z, pos.x) / (2.0 * PI) + 0.5;\n return vec2(theta, pos.y);\n}\n\nvec2 projectUV(int projectionType, vec3 pos, vec3 normal, vec2 uvScale) {\n if (projectionType == ${uvProjectionConstants.triplanar + ''}) {\n return triplanarProjection(pos, normal, uvScale);\n } else if (projectionType == ${uvProjectionConstants.spherical + ''}) {\n return sphericalProjection(pos) * uvScale;\n } else if (projectionType == ${uvProjectionConstants.cylindrical + ''}) {\n return cylindricalProjection(pos, normal) * uvScale;\n }\n return vec2(0.0);\n}\n`;\n"]}
1
+ {"version":3,"file":"uvProjection.glsl.js","sourceRoot":"","sources":["../../../../src/renderer/glsl/chunks/uvProjection.glsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,eAAe,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2DO,qBAAqB,CAAC,SAAS,GAAG,EAAE;;mBAE7B,qBAAqB,CAAC,SAAS,GAAG,EAAE;;mBAEpC,qBAAqB,CAAC,WAAW,GAAG,EAAE;;;;;CAKtE,CAAC","sourcesContent":["import { glsl } from '../../shader.js';\nimport { uvProjectionConstants } from '../../materialConstants.js';\n\nexport default glsl`\nvec2 sphericalProjection(vec3 pos) {\n vec3 n = normalize(pos);\n float theta = atan(n.x, n.z) / (2.0 * PI) + 0.5;\n float phi = acos(n.y) / PI;\n return vec2(theta, 1.0 - phi);\n}\n\nvec2 triplanarProjection(vec3 pos, vec3 normal, vec2 uvScale) {\n vec3 absNormal = abs(normal);\n vec2 uv = vec2(0.0);\n if (absNormal.x > absNormal.y && absNormal.x > absNormal.z) {\n uv = pos.yz;\n } else if (absNormal.y > absNormal.x && absNormal.y > absNormal.z) {\n uv = pos.xz;\n } else {\n uv = pos.xy;\n }\n return fract(uv * uvScale);\n}\n\n// vec4 triplanarProjectionSample(\n// sampler2DArray _map, vec2 mapSize, int index,\n// vec3 pos, vec3 normal, vec2 uvScale, float blending\n// ) {\n// vec3 absNormal = abs(normal);\n// // Calculate blending power - higher expo means sharper transitions\n// float expo = (1.0 - blending) * 125.0 + blending * 3.0;\n \n// // Weight each axis by its normal component raised to expo power\n// vec3 weights = pow(absNormal, vec3(expo));\n \n// // Normalize weights so they sum to 1\n// weights = weights / (weights.x + weights.y + weights.z);\n \n// // Project UVs on each axis plane (yz, xz, xy)\n// vec2 yzPlane = pos.yz * uvScale;\n// vec2 xzPlane = pos.xz * uvScale;\n// vec2 xyPlane = pos.xy * uvScale;\n// // Wrap\n// yzPlane = fract(yzPlane);\n// xzPlane = fract(xzPlane);\n// xyPlane = fract(xyPlane);\n\n// // Sample maps\n// vec4 yz = texture(_map, vec3(yzPlane * mapSize, float(index)));\n// vec4 xz = texture(_map, vec3(xzPlane * mapSize, float(index)));\n// vec4 xy = texture(_map, vec3(xyPlane * mapSize, float(index)));\n \n// // Blend the projected coordinates using the weights\n// return weights.x * yz + weights.y * xz + weights.z * xy;\n// }\n\nvec2 cylindricalProjection(vec3 pos, vec3 normal) {\n float theta = atan(pos.z, pos.x) / (2.0 * PI) + 0.5;\n return vec2(theta, pos.y);\n}\n\nvec2 projectUV(int projectionType, vec3 pos, vec3 normal, vec2 uvScale) {\n if (projectionType == ${uvProjectionConstants.triplanar + ''}) {\n return triplanarProjection(pos, normal, uvScale);\n } else if (projectionType == ${uvProjectionConstants.spherical + ''}) {\n return sphericalProjection(pos) * uvScale;\n } else if (projectionType == ${uvProjectionConstants.cylindrical + ''}) {\n return cylindricalProjection(pos, normal) * uvScale;\n }\n return vec2(0.0);\n}\n`;\n"]}
@@ -33,18 +33,18 @@ if (any(lessThan(uv, vec2(0.0))) || any(greaterThan(uv, vec2(1.0)))) return;
33
33
  vec4 origin = viewProjectionInv * vec4(uv * 2.0 - 1.0, -1.0, 1.0);
34
34
  vec4 target = viewProjectionInv * vec4(uv * 2.0 - 1.0, 1.0, 1.0);
35
35
  Ray ray;
36
- iC(ray, origin.xyz / origin.w, normalize(target.xyz * origin.w - origin.xyz * target.w));
36
+ gC(ray, origin.xyz / origin.w, normalize(target.xyz * origin.w - origin.xyz * target.w));
37
37
  vec3 eye = viewInv[3].xyz;
38
- vec3 oj = -normalize(viewInv[2].xyz);
39
- ad si;
38
+ vec3 forward = -normalize(viewInv[2].xyz);
39
+ SurfaceInteraction si;
40
40
  si.triangleIndex = -1;
41
41
  for (int layer = 0; layer < 32; layer++) {
42
- cZ(ray, si, false);
42
+ intersectScene(ray, si, false);
43
43
  if (!si.hit) return;
44
- J material;
45
- eX(material, si.materialIndex, si.uv, si.uv1, si.instanceIndex, si.vertexColor);
44
+ OpenPbrResolvedMaterial material;
45
+ dg(material, si.materialIndex, si.uv, si.uv1, si.instanceIndex, si.vertexColor);
46
46
  if (material.materialType != SHADOW_CATCHER && material.alpha > 0.0) {
47
- out_depth.r = max(dot(si.position - eye, oj), 0.0);
47
+ out_depth.r = max(dot(si.position - eye, forward), 0.0);
48
48
  return;
49
49
  }
50
50
  ray.o = si.position + ray.d * (EPS * 0.02);
@@ -10,28 +10,36 @@ const normalizeRayTraceOutput = new FragmentShader({
10
10
  albedoTex: Shader.uniform('sampler2D'),
11
11
  normalTex: Shader.uniform('sampler2D'),
12
12
  shadowCatcherTex: Shader.uniform('sampler2D'),
13
+ catcherMomentsTex: Shader.uniform('sampler2D'),
13
14
  sampleCount: Shader.uniform('float', 1),
14
15
  lightScale: Shader.uniform('vec2', [1, 1])
15
16
  },
16
17
  main: glsl `
17
18
  void main() {
18
19
  vec2 uv = lightScale * v_Texcoord;
19
- vec4 rV = sample_albedoTex(uv);
20
- float hit = rV.a;
21
- vec4 rZ = sample_normalTex(uv);
20
+ vec4 tb = sample_albedoTex(uv);
21
+ float hit = tb.a;
22
+ vec4 tf = sample_normalTex(uv);
22
23
 
23
24
 
24
25
 
25
- float sr = max(rZ.a, 1.0);
26
- vec3 albedo = rV.rgb / sr;
27
- vec3 normal = rZ.rgb / sr;
28
- vec4 shadowCatcher= sample_shadowCatcherTex(uv) / sampleCount;
29
- vec4 sB = sample_colorTex(uv);
26
+ float tK = max(tf.a, 1.0);
27
+ vec3 albedo = tb.rgb / tK;
28
+ vec3 normal = tf.rgb / tK;
29
+ vec4 shadowCatcher = sample_shadowCatcherTex(uv);
30
30
 
31
31
 
32
32
 
33
+ float tj = sample_catcherMomentsTex(uv).w;
34
+ float opacity = tj > 0.0 ? shadowCatcher.a / tj : 0.0;
35
+ shadowCatcher /= sampleCount;
36
+ shadowCatcher.a = 1.0 - shadowCatcher.r * opacity;
37
+ vec4 tQ = sample_colorTex(uv);
33
38
 
34
- vec4 light = vec4(sB.rgb / (hit > 0.0 ? hit : sampleCount), sB.a / sampleCount);
39
+
40
+
41
+
42
+ vec4 light = vec4(tQ.rgb / (hit > 0.0 ? hit : sampleCount), tQ.a / sampleCount);
35
43
 
36
44
 
37
45