@meimu/mutracer 0.3.0 → 0.3.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 (304) hide show
  1. package/CHANGELOG.md +222 -0
  2. package/LICENSES/FidelityFX-FSR.txt +19 -0
  3. package/LICENSES/pbrt-v4-Apache-2.0.txt +202 -0
  4. package/THIRD_PARTY_NOTICES.md +18 -4
  5. package/dist/assets/bvh.worker.js +1 -1
  6. package/dist/mutracer.umd.js +6260 -5580
  7. package/docs/api.md +45 -18
  8. package/docs/materials.md +4 -2
  9. package/docs/performance.md +7 -0
  10. package/docs/post-processing.md +62 -9
  11. package/docs/progressive-rendering.md +3 -0
  12. package/docs/sampling.md +4 -0
  13. package/docs/technical/acceleration.md +52 -0
  14. package/docs/technical/aovs.md +79 -0
  15. package/docs/technical/caustics.md +109 -0
  16. package/docs/technical/continuous-spectrum.md +29 -0
  17. package/docs/technical/display-upscale.md +82 -0
  18. package/docs/technical/openpbr.md +99 -0
  19. package/docs/technical/pbrt-import.md +168 -0
  20. package/docs/technical/tiling.md +74 -0
  21. package/docs/technical/webgl.md +53 -0
  22. package/docs/viewer.md +11 -1
  23. package/lib/Display.d.ts +19 -5
  24. package/lib/Display.js +10 -7
  25. package/lib/Display.js.map +1 -1
  26. package/lib/Engine.d.ts +2 -1
  27. package/lib/Engine.js +30 -2
  28. package/lib/Engine.js.map +1 -1
  29. package/lib/Render.d.ts +20 -11
  30. package/lib/Render.js +32 -7
  31. package/lib/Render.js.map +1 -1
  32. package/lib/main.d.ts +3 -1
  33. package/lib/main.js +1 -0
  34. package/lib/main.js.map +1 -1
  35. package/lib/oidn.d.ts +1 -1
  36. package/lib/renderer/AovPrimitiveCache.js +39 -8
  37. package/lib/renderer/AovPrimitiveCache.js.map +1 -1
  38. package/lib/renderer/DisplayPostProcess.d.ts +8 -3
  39. package/lib/renderer/DisplayPostProcess.js +51 -18
  40. package/lib/renderer/DisplayPostProcess.js.map +1 -1
  41. package/lib/renderer/MaterialData.js +7 -2
  42. package/lib/renderer/MaterialData.js.map +1 -1
  43. package/lib/renderer/RenderingPipeline.d.ts +7 -1
  44. package/lib/renderer/RenderingPipeline.js.map +1 -1
  45. package/lib/renderer/TileRender.d.ts +2 -2
  46. package/lib/renderer/TileRender.js +128 -7
  47. package/lib/renderer/TileRender.js.map +1 -1
  48. package/lib/renderer/WGPUAov.d.ts +6 -1
  49. package/lib/renderer/WGPUAov.js +108 -14
  50. package/lib/renderer/WGPUAov.js.map +1 -1
  51. package/lib/renderer/WGPUCanvasSurface.js +12 -1
  52. package/lib/renderer/WGPUCanvasSurface.js.map +1 -1
  53. package/lib/renderer/WGPUEnvMapDistribution.js +19 -19
  54. package/lib/renderer/WGPUFullQuadPass.js +3 -3
  55. package/lib/renderer/WGPURayTraceOutput.js +12 -12
  56. package/lib/renderer/WGPURayTracePass.d.ts +17 -4
  57. package/lib/renderer/WGPURayTracePass.js +194 -71
  58. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  59. package/lib/renderer/WGPURenderingPipeline.js +46 -40
  60. package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
  61. package/lib/renderer/WebGLAov.js +3 -3
  62. package/lib/renderer/WebGLAov.js.map +1 -1
  63. package/lib/renderer/WebGLFullQuadPass.d.ts +1 -1
  64. package/lib/renderer/WebGLFullQuadPass.js +8 -2
  65. package/lib/renderer/WebGLFullQuadPass.js.map +1 -1
  66. package/lib/renderer/WebGLJNLMDenoiser.js +66 -66
  67. package/lib/renderer/WebGLJNLMDenoiser.js.map +1 -1
  68. package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
  69. package/lib/renderer/WebGLRayTracePass.d.ts +14 -10
  70. package/lib/renderer/WebGLRayTracePass.js +115 -111
  71. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  72. package/lib/renderer/WebGLRenderingPipeline.js +10 -3
  73. package/lib/renderer/WebGLRenderingPipeline.js.map +1 -1
  74. package/lib/renderer/WebGLSkyBaker.js +57 -57
  75. package/lib/renderer/aov.d.ts +13 -1
  76. package/lib/renderer/aov.js +21 -2
  77. package/lib/renderer/aov.js.map +1 -1
  78. package/lib/renderer/aovDisplay.js +2 -2
  79. package/lib/renderer/aovDisplay.js.map +1 -1
  80. package/lib/renderer/binnedSahBvh.d.ts +2 -1
  81. package/lib/renderer/binnedSahBvh.js +24 -17
  82. package/lib/renderer/binnedSahBvh.js.map +1 -1
  83. package/lib/renderer/bvhAccel.d.ts +3 -1
  84. package/lib/renderer/bvhAccel.js +36 -6
  85. package/lib/renderer/bvhAccel.js.map +1 -1
  86. package/lib/renderer/cameraUniform.d.ts +1 -1
  87. package/lib/renderer/cameraUniform.js +6 -2
  88. package/lib/renderer/cameraUniform.js.map +1 -1
  89. package/lib/renderer/compactVertices.d.ts +14 -0
  90. package/lib/renderer/compactVertices.js +124 -0
  91. package/lib/renderer/compactVertices.js.map +1 -0
  92. package/lib/renderer/easu.d.ts +11 -0
  93. package/lib/renderer/easu.js +156 -0
  94. package/lib/renderer/easu.js.map +1 -0
  95. package/lib/renderer/geometryUpdateState.d.ts +1 -0
  96. package/lib/renderer/geometryUpdateState.js.map +1 -1
  97. package/lib/renderer/geometryUpdates.js +3 -2
  98. package/lib/renderer/geometryUpdates.js.map +1 -1
  99. package/lib/renderer/glsl/aovDisplay.frag.js +5 -5
  100. package/lib/renderer/glsl/aovReflectance.glsl.js +35 -35
  101. package/lib/renderer/glsl/aovReflectanceSamples.glsl.js +1 -1
  102. package/lib/renderer/glsl/aovTrace.frag.js +44 -36
  103. package/lib/renderer/glsl/aovTrace.frag.js.map +1 -1
  104. package/lib/renderer/glsl/chunks/cameraProjection.glsl.d.ts +2 -0
  105. package/lib/renderer/glsl/chunks/cameraProjection.glsl.js +16 -0
  106. package/lib/renderer/glsl/chunks/cameraProjection.glsl.js.map +1 -0
  107. package/lib/renderer/glsl/chunks/cameraRay.glsl.d.ts +1 -1
  108. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +9 -16
  109. package/lib/renderer/glsl/chunks/cameraRay.glsl.js.map +1 -1
  110. package/lib/renderer/glsl/chunks/emissiveLight.glsl.js +8 -8
  111. package/lib/renderer/glsl/chunks/envMap.glsl.js +67 -67
  112. package/lib/renderer/glsl/chunks/intersect.glsl.js +390 -375
  113. package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
  114. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +120 -120
  115. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +562 -562
  116. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  117. package/lib/renderer/glsl/chunks/random.glsl.js +4 -4
  118. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +37 -35
  119. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
  120. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +70 -74
  121. package/lib/renderer/glsl/chunks/sampleLight.glsl.js.map +1 -1
  122. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.d.ts +1 -1
  123. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +107 -88
  124. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js.map +1 -1
  125. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +11 -11
  126. package/lib/renderer/glsl/chunks/sampling.glsl.js +77 -77
  127. package/lib/renderer/glsl/chunks/sobol.glsl.js +70 -70
  128. package/lib/renderer/glsl/chunks/spectralPrefix.glsl.d.ts +6 -0
  129. package/lib/renderer/glsl/chunks/spectralPrefix.glsl.js +47 -0
  130. package/lib/renderer/glsl/chunks/spectralPrefix.glsl.js.map +1 -0
  131. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  132. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +11 -11
  133. package/lib/renderer/glsl/depthQuery.frag.js +12 -6
  134. package/lib/renderer/glsl/depthQuery.frag.js.map +1 -1
  135. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +10 -10
  136. package/lib/renderer/glsl/rayTrace.frag.js +233 -170
  137. package/lib/renderer/glsl/rayTrace.frag.js.map +1 -1
  138. package/lib/renderer/glsl/shadowCatcher.frag.js +10 -9
  139. package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
  140. package/lib/renderer/glsl/webglPipeline.frag.js +58 -58
  141. package/lib/renderer/gpuMemory.js +1 -1
  142. package/lib/renderer/gpuMemory.js.map +1 -1
  143. package/lib/renderer/openPbrEnergyLut.d.ts +2 -1
  144. package/lib/renderer/openPbrEnergyLut.js +18 -1
  145. package/lib/renderer/openPbrEnergyLut.js.map +1 -1
  146. package/lib/renderer/pathLimits.d.ts +5 -4
  147. package/lib/renderer/pathLimits.js +6 -5
  148. package/lib/renderer/pathLimits.js.map +1 -1
  149. package/lib/renderer/prepareMeshBVH.d.ts +2 -0
  150. package/lib/renderer/prepareMeshBVH.js +5 -3
  151. package/lib/renderer/prepareMeshBVH.js.map +1 -1
  152. package/lib/renderer/progressiveScheduler.js +1 -1
  153. package/lib/renderer/progressiveScheduler.js.map +1 -1
  154. package/lib/renderer/renderPipeline.d.ts +4 -0
  155. package/lib/renderer/renderPipeline.js +1 -0
  156. package/lib/renderer/renderPipeline.js.map +1 -1
  157. package/lib/renderer/researchTransport.d.ts +1 -1
  158. package/lib/renderer/researchTransport.js.map +1 -1
  159. package/lib/renderer/sceneAssembly.d.ts +1 -1
  160. package/lib/renderer/sceneAssembly.js +4 -3
  161. package/lib/renderer/sceneAssembly.js.map +1 -1
  162. package/lib/renderer/sceneChangeDetector.d.ts +1 -1
  163. package/lib/renderer/sceneChangeDetector.js +3 -1
  164. package/lib/renderer/sceneChangeDetector.js.map +1 -1
  165. package/lib/renderer/sceneLayoutSchema.d.ts +1 -0
  166. package/lib/renderer/sceneLayoutSchema.js +2 -2
  167. package/lib/renderer/sceneLayoutSchema.js.map +1 -1
  168. package/lib/renderer/scenePreparation.d.ts +3 -2
  169. package/lib/renderer/scenePreparation.js +18 -2
  170. package/lib/renderer/scenePreparation.js.map +1 -1
  171. package/lib/renderer/scratchSampling.js +6 -6
  172. package/lib/renderer/spectrum.js +2 -2
  173. package/lib/renderer/staticBvhPreparation.d.ts +9 -0
  174. package/lib/renderer/staticBvhPreparation.js +8 -2
  175. package/lib/renderer/staticBvhPreparation.js.map +1 -1
  176. package/lib/renderer/surfaceHit.d.ts +10 -0
  177. package/lib/renderer/surfaceHit.js +22 -0
  178. package/lib/renderer/surfaceHit.js.map +1 -0
  179. package/lib/renderer/tangentRequirements.d.ts +2 -0
  180. package/lib/renderer/tangentRequirements.js +7 -0
  181. package/lib/renderer/tangentRequirements.js.map +1 -0
  182. package/lib/renderer/textureAtlas.d.ts +4 -0
  183. package/lib/renderer/textureAtlas.js +48 -2
  184. package/lib/renderer/textureAtlas.js.map +1 -1
  185. package/lib/renderer/webgl.js +4 -0
  186. package/lib/renderer/webgl.js.map +1 -1
  187. package/lib/renderer/webglVertexAttributes.d.ts +17 -0
  188. package/lib/renderer/webglVertexAttributes.js +44 -0
  189. package/lib/renderer/webglVertexAttributes.js.map +1 -0
  190. package/lib/renderer/wgpuBindlessSource.js +2 -2
  191. package/lib/renderer/wgpuMaterialConstants.js +4 -3
  192. package/lib/renderer/wgpuMaterialConstants.js.map +1 -1
  193. package/lib/renderer/wgpuSceneUniform.js +2 -2
  194. package/lib/renderer/wgpuSceneUniform.js.map +1 -1
  195. package/lib/renderer/wgpuShaderSource.d.ts +15 -0
  196. package/lib/renderer/wgpuShaderSource.js +1 -1
  197. package/lib/renderer/wgpuShaderSource.js.map +1 -1
  198. package/lib/renderer/wgsl/aovCompact.wgsl.d.ts +4 -0
  199. package/lib/renderer/wgsl/aovCompact.wgsl.js +26 -0
  200. package/lib/renderer/wgsl/aovCompact.wgsl.js.map +1 -0
  201. package/lib/renderer/wgsl/aovDisplay.wgsl.js +9 -9
  202. package/lib/renderer/wgsl/aovReflectance.wgsl.js +39 -39
  203. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.js +1 -1
  204. package/lib/renderer/wgsl/aovResolve.wgsl.d.ts +4 -0
  205. package/lib/renderer/wgsl/aovResolve.wgsl.js +21 -2
  206. package/lib/renderer/wgsl/aovResolve.wgsl.js.map +1 -1
  207. package/lib/renderer/wgsl/aovSnapshot.wgsl.js +2 -2
  208. package/lib/renderer/wgsl/aovSnapshot.wgsl.js.map +1 -1
  209. package/lib/renderer/wgsl/aovTrace.wgsl.js +31 -31
  210. package/lib/renderer/wgsl/aovTraceDisplay.wgsl.d.ts +2 -0
  211. package/lib/renderer/wgsl/aovTraceDisplay.wgsl.js +56 -0
  212. package/lib/renderer/wgsl/aovTraceDisplay.wgsl.js.map +1 -0
  213. package/lib/renderer/wgsl/bloom.wgsl.js +18 -18
  214. package/lib/renderer/wgsl/causticLight.compute.d.ts +1 -1
  215. package/lib/renderer/wgsl/causticLight.compute.js +121 -119
  216. package/lib/renderer/wgsl/causticLight.compute.js.map +1 -1
  217. package/lib/renderer/wgsl/chunks/background.wgsl.js +46 -46
  218. package/lib/renderer/wgsl/chunks/causticAdjoint.wgsl.js +4 -4
  219. package/lib/renderer/wgsl/chunks/causticAtomic.wgsl.js +3 -3
  220. package/lib/renderer/wgsl/chunks/caustics.wgsl.js +3 -3
  221. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  222. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +30 -30
  223. package/lib/renderer/wgsl/chunks/intersect.wgsl.d.ts +6 -2
  224. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +550 -542
  225. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  226. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.d.ts +1 -1
  227. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +18 -16
  228. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js.map +1 -1
  229. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.d.ts +2 -1
  230. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +70 -69
  231. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
  232. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +593 -593
  233. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +118 -118
  234. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  235. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.d.ts +4 -1
  236. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +32 -26
  237. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
  238. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +114 -114
  239. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.d.ts +1 -1
  240. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +159 -137
  241. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js.map +1 -1
  242. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +8 -8
  243. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +74 -74
  244. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +74 -74
  245. package/lib/renderer/wgsl/chunks/spectralPrefix.wgsl.d.ts +6 -0
  246. package/lib/renderer/wgsl/chunks/spectralPrefix.wgsl.js +66 -0
  247. package/lib/renderer/wgsl/chunks/spectralPrefix.wgsl.js.map +1 -0
  248. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +11 -11
  249. package/lib/renderer/wgsl/chunks/vertexAttributes.wgsl.d.ts +2 -0
  250. package/lib/renderer/wgsl/chunks/vertexAttributes.wgsl.js +61 -0
  251. package/lib/renderer/wgsl/chunks/vertexAttributes.wgsl.js.map +1 -0
  252. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +2 -0
  253. package/lib/renderer/wgsl/compose.frag.wgsl.js +99 -97
  254. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
  255. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  256. package/lib/renderer/wgsl/depthQuery.wgsl.d.ts +1 -1
  257. package/lib/renderer/wgsl/depthQuery.wgsl.js +11 -2
  258. package/lib/renderer/wgsl/depthQuery.wgsl.js.map +1 -1
  259. package/lib/renderer/wgsl/easu.wgsl.d.ts +2 -0
  260. package/lib/renderer/wgsl/easu.wgsl.js +80 -0
  261. package/lib/renderer/wgsl/easu.wgsl.js.map +1 -0
  262. package/lib/renderer/wgsl/easuDetail.wgsl.d.ts +21 -0
  263. package/lib/renderer/wgsl/easuDetail.wgsl.js +230 -0
  264. package/lib/renderer/wgsl/easuDetail.wgsl.js.map +1 -0
  265. package/lib/renderer/wgsl/jnlm.compute.js +74 -74
  266. package/lib/renderer/wgsl/jnlm.compute.js.map +1 -1
  267. package/lib/renderer/wgsl/offlineAdaptive.compute.js +26 -26
  268. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.js +3 -3
  269. package/lib/renderer/wgsl/photonMap.compute.js +89 -89
  270. package/lib/renderer/wgsl/proceduralSky.compute.js +61 -61
  271. package/lib/renderer/wgsl/rayTrace.compute.d.ts +14 -0
  272. package/lib/renderer/wgsl/rayTrace.compute.js +395 -333
  273. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  274. package/lib/scene/Scene.js.map +1 -1
  275. package/lib/settings/render.d.ts +11 -0
  276. package/lib/settings/render.js +1 -0
  277. package/lib/settings/render.js.map +1 -1
  278. package/lib/util/fromTHREE.js +21 -14
  279. package/lib/util/fromTHREE.js.map +1 -1
  280. package/lib/version.d.ts +1 -1
  281. package/lib/version.js +1 -1
  282. package/lib/version.js.map +1 -1
  283. package/package.json +5 -2
  284. package/lib/oidnBundledWeights.cdn.d.ts +0 -2
  285. package/lib/oidnBundledWeights.cdn.js +0 -5
  286. package/lib/oidnBundledWeights.cdn.js.map +0 -1
  287. package/lib/renderer/bvh.worker.d.ts +0 -1
  288. package/lib/renderer/bvh.worker.js +0 -16
  289. package/lib/renderer/bvh.worker.js.map +0 -1
  290. package/lib/renderer/bvhWorkerBuild.d.ts +0 -13
  291. package/lib/renderer/bvhWorkerBuild.js +0 -17
  292. package/lib/renderer/bvhWorkerBuild.js.map +0 -1
  293. package/lib/renderer/lightCore.d.ts +0 -12
  294. package/lib/renderer/lightCore.js +0 -13
  295. package/lib/renderer/lightCore.js.map +0 -1
  296. package/lib/renderer/materialCore.d.ts +0 -8
  297. package/lib/renderer/materialCore.js +0 -9
  298. package/lib/renderer/materialCore.js.map +0 -1
  299. package/lib/scene/PixelTexture.d.ts +0 -6
  300. package/lib/scene/PixelTexture.js +0 -10
  301. package/lib/scene/PixelTexture.js.map +0 -1
  302. package/lib/util/studioLighting.d.ts +0 -18
  303. package/lib/util/studioLighting.js +0 -36
  304. package/lib/util/studioLighting.js.map +0 -1
@@ -1,99 +1,99 @@
1
- export default /* wgsl */ `fn di(point: vec3f, height: f32, radius: f32) -> f32 {
2
- let fQ = length(point);
3
- if (fQ < 0.00001) {
1
+ export default /* wgsl */ `fn dk(point: vec3f, height: f32, radius: f32) -> f32 {
2
+ let gc = length(point);
3
+ if (gc < 0.00001) {
4
4
  return -radius;
5
5
  }
6
6
 
7
- let iG = radius * point.y / fQ;
8
- let iq = -1.5 * height;
9
- var eq: f32;
10
- if (iG >= 0.0) {
11
- eq = radius;
7
+ let jf = radius * point.y / gc;
8
+ let iS = -1.5 * height;
9
+ var ez: f32;
10
+ if (jf >= 0.0) {
11
+ ez = radius;
12
12
  }
13
- else if (iG < iq) {
14
- eq = -height * fQ / point.y;
13
+ else if (jf < iS) {
14
+ ez = -height * gc / point.y;
15
15
  }
16
16
  else {
17
- let cv = 1.0
18
- - iG * iG / (3.0 * iq * iq);
19
- eq = radius * cv;
17
+ let cA = 1.0
18
+ - jf * jf / (3.0 * iS * iS);
19
+ ez = radius * cA;
20
20
  }
21
- return fQ - eq;
21
+ return gc - ez;
22
22
  }
23
23
 
24
- fn eM(origin: vec3f, direction: vec3f) -> vec3f {
24
+ fn eW(origin: vec3f, direction: vec3f) -> vec3f {
25
25
  if (!USE_GROUNDED_BACKGROUND) {
26
26
  return direction;
27
27
  }
28
28
  let params = rtUniform.groundedBackgroundParams;
29
- let bS = normalize(direction);
29
+ let bT = normalize(direction);
30
30
  let center = vec3f(
31
31
  rtUniform.groundedBackgroundCenter.x,
32
32
  params.z + params.x,
33
33
  rtUniform.groundedBackgroundCenter.y
34
34
  );
35
- let bs = origin - center;
36
- let eE = dot(bs, bS);
37
- let bj = eE * eE
38
- - dot(bs, bs) + params.y * params.y;
35
+ let bA = origin - center;
36
+ let eN = dot(bA, bT);
37
+ let bk = eN * eN
38
+ - dot(bA, bA) + params.y * params.y;
39
39
  if (
40
- bj <= 0.0
41
- || di(bs, params.x, params.y) > 0.0
40
+ bk <= 0.0
41
+ || dk(bA, params.x, params.y) > 0.0
42
42
  ) {
43
43
  return direction;
44
44
  }
45
45
 
46
- var cw = -eE + sqrt(bj);
47
- if (cw <= 0.0) {
46
+ var cB = -eN + sqrt(bk);
47
+ if (cB <= 0.0) {
48
48
  return direction;
49
49
  }
50
50
 
51
- let oA = bs + bS * cw;
52
- if (oA.y >= 0.0) {
53
- return normalize(oA);
51
+ let pw = bA + bT * cB;
52
+ if (pw.y >= 0.0) {
53
+ return normalize(pw);
54
54
  }
55
55
 
56
- if (bS.y < -0.00001 && params.y > 1.5 * params.x) {
57
- let hP = (-params.x - bs.y) / bS.y;
58
- let ot = bs + bS * hP;
59
- let oT = (2.0 / 3.0)
56
+ if (bT.y < -0.00001 && params.y > 1.5 * params.x) {
57
+ let iz = (-params.x - bA.y) / bT.y;
58
+ let pm = bA + bT * iz;
59
+ let qb = (2.0 / 3.0)
60
60
  * sqrt(params.y * params.y - 2.25 * params.x * params.x);
61
- if (hP > 0.0 && length(ot.xz) <= oT) {
62
- return normalize(ot);
61
+ if (iz > 0.0 && length(pm.xz) <= qb) {
62
+ return normalize(pm);
63
63
  }
64
64
  }
65
65
 
66
- var cI = 0.0;
66
+ var cK = 0.0;
67
67
  for (var i = 0; i < 14; i++) {
68
- let fd = (cI + cw) * 0.5;
69
- let qq = bs + bS * fd;
70
- if (di(qq, params.x, params.y) > 0.0) {
71
- cw = fd;
68
+ let fp = (cK + cB) * 0.5;
69
+ let rD = bA + bT * fp;
70
+ if (dk(rD, params.x, params.y) > 0.0) {
71
+ cB = fp;
72
72
  }
73
73
  else {
74
- cI = fd;
74
+ cK = fp;
75
75
  }
76
76
  }
77
- let hit = bs + bS * ((cI + cw) * 0.5);
77
+ let hit = bA + bT * ((cK + cB) * 0.5);
78
78
  return normalize(hit);
79
79
  }
80
80
 
81
- fn ft(ray: Ray) -> vec4f {
81
+ fn fI(ray: Ray) -> vec4f {
82
82
  var bg = vec4f(0.0);
83
83
  if (USE_BACKGROUND_MAP) {
84
- let d = eM(ray.o, ray.d);
84
+ let d = eW(ray.o, ray.d);
85
85
  let t = rtUniform.backgroundMapTransform;
86
- let qS = vec3f(t.x * d.x - t.y * d.z, d.y, t.y * d.x + t.x * d.z);
86
+ let sh = vec3f(t.x * d.x - t.y * d.z, d.y, t.y * d.x + t.x * d.z);
87
87
  let rotation = rtUniform.backgroundMapRotation;
88
- let gU = transpose(mat3x3f(rotation[0].xyz, rotation[1].xyz, rotation[2].xyz)) * qS;
89
- let aW = textureLinear(backgroundMap, eF(gU));
88
+ let hs = transpose(mat3x3f(rotation[0].xyz, rotation[1].xyz, rotation[2].xyz)) * sh;
89
+ let aW = textureLinear(backgroundMap, eP(hs));
90
90
  bg = vec4f(aW.rgb * t.z, aW.a);
91
91
  }
92
92
  else if (USE_BACKGROUND) {
93
93
  bg = rtUniform.backgroundColor;
94
94
  }
95
95
  else if (USE_ENVMAP) {
96
- bg = textureLinear(envMap, cT(ray.d));
96
+ bg = textureLinear(envMap, cU(ray.d));
97
97
  }
98
98
  return bg;
99
99
  }
@@ -2,11 +2,11 @@
2
2
  // view is toward the preceding light vertex, outgoing toward the camera.
3
3
  // Reference: Veach 1997, thesis section 5.3 (mathematical formula, no copied code).
4
4
  export default /* wgsl */ `
5
- fn causticAdjoint(view:vec3f,vJ:vec3f,shading:vec3f,geometric:vec3f)->f32 {
6
- let iF=abs(dot(view,shading)*dot(vJ,geometric));
7
- let ah=abs(dot(view,geometric)*dot(vJ,shading));
5
+ fn causticAdjoint(view:vec3f,xB:vec3f,shading:vec3f,geometric:vec3f)->f32 {
6
+ let je=abs(dot(view,shading)*dot(xB,geometric));
7
+ let ah=abs(dot(view,geometric)*dot(xB,shading));
8
8
  if(ah==0.0){return 0.0;}
9
- return iF/ah;
9
+ return je/ah;
10
10
  }
11
11
  `;
12
12
  //# sourceMappingURL=causticAdjoint.wgsl.js.map
@@ -1,13 +1,13 @@
1
1
  // Float32 addition implemented with u32 compare/exchange works on baseline
2
2
  // WebGPU, without a fixed radiance quantum or the Q16.16 saturation ceiling.
3
3
  export default /* wgsl */ `
4
- fn kM(index:u32,value:f32) {
4
+ fn lF(index:u32,value:f32) {
5
5
  if(!(value>0.0)||!(value<3.402823e38)){return;}
6
6
  var previous=atomicLoad(&splats[index]);
7
7
  loop {
8
8
  let sum=bitcast<f32>(previous)+value;
9
- let vN=bitcast<u32>(sum);
10
- let result=atomicCompareExchangeWeak(&splats[index],previous,vN);
9
+ let xH=bitcast<u32>(sum);
10
+ let result=atomicCompareExchangeWeak(&splats[index],previous,xH);
11
11
  if(result.exchanged){break;}
12
12
  previous=result.old_value;
13
13
  }
@@ -13,9 +13,9 @@ return isCausticSpecular(m) && m.transmissionWeight == 1.0 && m.causticRoughness
13
13
  fn isCausticR(m:OpenPbrResolvedMaterial)->bool{
14
14
  return isCausticSpecular(m)&&m.causticRoughness==0.0&&!m.causticNormalMapped&&m.alpha>=1.0;
15
15
  }
16
- fn causticHitOwned(path: Path, xd: bool, vl: bool) -> bool {
17
- let r1 = ${mnee} && xd && path.causticMneeReceiver && path.causticK == 1u && path.causticSingleT;
18
- let r2 = ${lightTracing} && vl && path.causticK > 0u && path.causticReceiverPrimary;
16
+ fn causticHitOwned(path: Path, zf: bool, xc: bool) -> bool {
17
+ let r1 = ${mnee} && zf && path.causticMneeReceiver && path.causticK == 1u && path.causticSingleT;
18
+ let r2 = ${lightTracing} && xc && path.causticK > 0u && path.causticReceiverPrimary;
19
19
  let r3=${photonMapping}&&path.causticPhotonReceiver&&path.causticK>0u;
20
20
  return path.causticHasReceiver && (r1 || r2 || r3);
21
21
  }
@@ -11,12 +11,12 @@ const ROUGHNESS_MIN = 0.001;
11
11
 
12
12
 
13
13
 
14
- fn sO(position: vec3f, geometricNormal: vec3f, direction: vec3f) -> vec3f {
14
+ fn un(position: vec3f, geometricNormal: vec3f, direction: vec3f) -> vec3f {
15
15
  let normal = select(-geometricNormal, geometricNormal, dot(geometricNormal, direction) >= 0.0);
16
- let rb = vec3i(256.0 * normal);
16
+ let st = vec3i(256.0 * normal);
17
17
  let bits = bitcast<vec3i>(position);
18
- let ye = bitcast<vec3f>(bits + select(rb, -rb, position < vec3f(0.0)));
19
- return select(ye, position + normal / 65536.0, abs(position) < vec3f(1.0 / 32.0));
18
+ let Aa = bitcast<vec3f>(bits + select(st, -st, position < vec3f(0.0)));
19
+ return select(Aa, position + normal / 65536.0, abs(position) < vec3f(1.0 / 32.0));
20
20
  }
21
21
 
22
22
  `;
@@ -12,39 +12,39 @@ fn textureLinear(tex: texture_2d<f32>, _uv: vec2f) -> vec4f {
12
12
  let size = vec2f(textureDimensions(tex, 0));
13
13
 
14
14
  let uv2f = _uv * size - vec2f(0.5);
15
- let yj = floor(uv2f);
15
+ let Ah = floor(uv2f);
16
16
  let f = fract(uv2f);
17
- let yi = vec2i(yj);
17
+ let Ag = vec2i(Ah);
18
18
  let maximum = vec2i(size) - vec2i(1);
19
19
 
20
20
 
21
- let s1 = textureLoad(tex, clamp(yi + vec2i(0, 0), vec2i(0), maximum), 0);
22
- let s2 = textureLoad(tex, clamp(yi + vec2i(1, 0), vec2i(0), maximum), 0);
23
- let s3 = textureLoad(tex, clamp(yi + vec2i(0, 1), vec2i(0), maximum), 0);
24
- let s4 = textureLoad(tex, clamp(yi + vec2i(1, 1), vec2i(0), maximum), 0);
21
+ let s1 = textureLoad(tex, clamp(Ag + vec2i(0, 0), vec2i(0), maximum), 0);
22
+ let s2 = textureLoad(tex, clamp(Ag + vec2i(1, 0), vec2i(0), maximum), 0);
23
+ let s3 = textureLoad(tex, clamp(Ag + vec2i(0, 1), vec2i(0), maximum), 0);
24
+ let s4 = textureLoad(tex, clamp(Ag + vec2i(1, 1), vec2i(0), maximum), 0);
25
25
 
26
26
  return mix(mix(s1, s2, f.x), mix(s3, s4, f.x), f.y);
27
27
 
28
28
  }
29
29
 
30
- fn eF(gh: vec3f) -> vec2f {
31
- var phi = atan2(-gh.z, -gh.x);
30
+ fn eP(gz: vec3f) -> vec2f {
31
+ var phi = atan2(-gz.z, -gz.x);
32
32
  if (phi < 0.0) {
33
33
  phi += TWOPI;
34
34
  }
35
- let theta = acos(clamp(gh.y, -1.0, 1.0));
35
+ let theta = acos(clamp(gz.y, -1.0, 1.0));
36
36
  return vec2f(phi * 0.5 * INVPI, theta * INVPI);
37
37
  }
38
38
 
39
- fn jS() -> mat3x3f {
39
+ fn ky() -> mat3x3f {
40
40
  return mat3x3f(rtUniform.environmentRotation[0].xyz, rtUniform.environmentRotation[1].xyz, rtUniform.environmentRotation[2].xyz);
41
41
  }
42
42
 
43
- fn cT(nD: vec3f) -> vec2f {
44
- return eF(transpose(jS()) * nD);
43
+ fn cU(oA: vec3f) -> vec2f {
44
+ return eP(transpose(ky()) * oA);
45
45
  }
46
46
 
47
- fn rv(u: f32, vOffset: ptr<function, i32>, pdf: ptr<function, vec2f>) -> f32 {
47
+ fn sN(u: f32, vOffset: ptr<function, i32>, pdf: ptr<function, vec2f>) -> f32 {
48
48
  let size = vec2i(textureDimensions(envMap, 0));
49
49
 
50
50
  var left = 0;
@@ -70,7 +70,7 @@ let s1 = textureLoad(envMapDistribution, vec2i(0, *vOffset + 1), 0).xy;
70
70
  return (f32(*vOffset) + (u - s0.x) / (s1.x - s0.x)) / f32(size.y);
71
71
  }
72
72
 
73
- fn ru(u: f32, vOffset: i32, pdf: ptr<function, vec2f>) -> f32 {
73
+ fn sM(u: f32, vOffset: i32, pdf: ptr<function, vec2f>) -> f32 {
74
74
  let size = vec2i(textureDimensions(envMap, 0));
75
75
 
76
76
  var left = 0;
@@ -84,16 +84,16 @@ left = mid + 1;
84
84
  right = mid;
85
85
  }
86
86
  }
87
- let pw = left - 1;
87
+ let qG = left - 1;
88
88
 
89
89
 
90
90
 
91
- let s0 = textureLoad(envMapDistribution, vec2i(1 + pw, vOffset), 0).xy;
92
- let s1 = textureLoad(envMapDistribution, vec2i(1 + pw + 1, vOffset), 0).xy;
91
+ let s0 = textureLoad(envMapDistribution, vec2i(1 + qG, vOffset), 0).xy;
92
+ let s1 = textureLoad(envMapDistribution, vec2i(1 + qG + 1, vOffset), 0).xy;
93
93
 
94
94
  (*pdf).x = s0.y;
95
95
 
96
- return (f32(pw) + (u - s0.x) / (s1.x - s0.x)) / f32(size.x);
96
+ return (f32(qG) + (u - s0.x) / (s1.x - s0.x)) / f32(size.x);
97
97
  }
98
98
 
99
99
 
@@ -105,36 +105,36 @@ return partialPdf.x * partialPdf.y * INVPI2 / (2.0 * sinTheta);
105
105
  }
106
106
 
107
107
 
108
- fn pn(random: vec2f, uv: ptr<function, vec2f>, pdf: ptr<function, f32>) -> vec3f {
108
+ fn qx(random: vec2f, uv: ptr<function, vec2f>, pdf: ptr<function, f32>) -> vec3f {
109
109
  var partialPdf: vec2f;
110
110
  var vOffset: i32;
111
111
 
112
- (*uv).y = rv(random.x, &vOffset, &partialPdf);
113
- (*uv).x = ru(random.y, vOffset, &partialPdf);
112
+ (*uv).y = sN(random.x, &vOffset, &partialPdf);
113
+ (*uv).x = sM(random.y, vOffset, &partialPdf);
114
114
 
115
115
  let phi = (*uv).x * TWOPI;
116
116
  let theta = (*uv).y * PI;
117
- let ct = cos(theta);
117
+ let cv = cos(theta);
118
118
  let sinTheta = sin(theta);
119
- let vZ = cos(phi);
120
- let wr = sin(phi);
119
+ let xV = cos(phi);
120
+ let yo = sin(phi);
121
121
 
122
- let dir = vec3f(-sinTheta * vZ, ct, -sinTheta * wr);
122
+ let dir = vec3f(-sinTheta * xV, cv, -sinTheta * yo);
123
123
 
124
124
  *pdf = envMapSolidAnglePdf(partialPdf, (*uv).y);
125
125
 
126
- return jS() * dir;
126
+ return ky() * dir;
127
127
  }
128
128
 
129
129
  fn envMapPdf(_uv: vec2f) -> f32 {
130
130
  let size = vec2f(textureDimensions(envMap, 0));
131
131
 
132
- let yn = clamp(vec2i(_uv * size), vec2i(0), vec2i(size) - vec2i(1));
132
+ let Al = clamp(vec2i(_uv * size), vec2i(0), vec2i(size) - vec2i(1));
133
133
 
134
- let ue = textureLoad(envMapDistribution, vec2i(1 + yn.x, yn.y), 0).y;
135
- let uf = textureLoad(envMapDistribution, vec2i(0, yn.y), 0).y;
134
+ let vO = textureLoad(envMapDistribution, vec2i(1 + Al.x, Al.y), 0).y;
135
+ let vP = textureLoad(envMapDistribution, vec2i(0, Al.y), 0).y;
136
136
 
137
- return envMapSolidAnglePdf(vec2f(ue, uf), _uv.y);
137
+ return envMapSolidAnglePdf(vec2f(vO, vP), _uv.y);
138
138
  }
139
139
 
140
140
 
@@ -1,5 +1,7 @@
1
1
  export declare function createSceneHitQueryWgsl(hasAnisotropyDirections?: boolean): string;
2
- export declare function createSceneIntersectionsWgsl({ hasDisplacement, hasAnisotropyDirections, hasCoatNormals, blasLayoutMask, closestName, shadowName, bevelName, closestHitHook }: {
2
+ export declare function createSceneIntersectionsWgsl({ perInstanceBounds, compactVertices, hasDisplacement, hasAnisotropyDirections, hasCoatNormals, blasLayoutMask, closestName, shadowName, bevelName, closestHitHook }: {
3
+ perInstanceBounds?: boolean;
4
+ compactVertices?: boolean;
3
5
  hasDisplacement: boolean;
4
6
  hasAnisotropyDirections?: boolean;
5
7
  hasCoatNormals?: boolean;
@@ -9,10 +11,12 @@ export declare function createSceneIntersectionsWgsl({ hasDisplacement, hasAniso
9
11
  bevelName?: string;
10
12
  closestHitHook?: string;
11
13
  }): string;
12
- export default function getIntersectCode({ hasDisplacement, hasAnisotropyDirections, hasCoatNormals, blasLayoutMask, sceneIntersections }: {
14
+ export default function getIntersectCode({ perInstanceBounds, compactVertices, hasDisplacement, hasAnisotropyDirections, hasCoatNormals, blasLayoutMask, sceneIntersections }: {
15
+ perInstanceBounds?: boolean;
13
16
  hasDisplacement: boolean;
14
17
  hasAnisotropyDirections?: boolean;
15
18
  hasCoatNormals?: boolean;
16
19
  blasLayoutMask?: number;
17
20
  sceneIntersections?: string;
21
+ compactVertices?: boolean;
18
22
  }): string;