@meimu/mutracer 0.1.4 → 0.1.5

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 (67) hide show
  1. package/dist/assets/bvh.worker.js +1 -1
  2. package/dist/mutracer.umd.js +1425 -1421
  3. package/docs/api.md +2 -1
  4. package/docs/materials.md +17 -26
  5. package/docs/threejs.md +5 -5
  6. package/docs/viewer.md +36 -3
  7. package/lib/oidn.d.ts +1 -1
  8. package/lib/oidnBundledWeights.cdn.d.ts +2 -2
  9. package/lib/renderer/WGPUFullQuadPass.js +3 -3
  10. package/lib/renderer/WGPUJNLMDenoiser.js +35 -35
  11. package/lib/renderer/WGPURayTraceOutput.js +4 -4
  12. package/lib/renderer/WGPURayTracePass.js +5 -3
  13. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  14. package/lib/renderer/WGPURenderingPipeline.js +7 -7
  15. package/lib/renderer/WebGLJNLMDenoiser.js +36 -36
  16. package/lib/renderer/WebGLRayTracePass.js +1 -0
  17. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  18. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +8 -8
  19. package/lib/renderer/glsl/chunks/envMap.glsl.js +26 -26
  20. package/lib/renderer/glsl/chunks/intersect.glsl.js +141 -139
  21. package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
  22. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +56 -55
  23. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
  24. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +144 -144
  25. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js.map +1 -1
  26. package/lib/renderer/glsl/chunks/random.glsl.js +1 -1
  27. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +14 -14
  28. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
  29. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +19 -19
  30. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +46 -46
  31. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js.map +1 -1
  32. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +6 -6
  33. package/lib/renderer/glsl/chunks/sampling.glsl.js +33 -33
  34. package/lib/renderer/glsl/chunks/sobol.glsl.js +7 -7
  35. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +1 -1
  36. package/lib/renderer/glsl/depthQuery.frag.js +2 -2
  37. package/lib/renderer/glsl/rayTrace.frag.js +67 -67
  38. package/lib/renderer/glsl/shadowCatcher.frag.js +3 -3
  39. package/lib/renderer/glsl/webglPipeline.frag.js +26 -26
  40. package/lib/renderer/scratchSampling.js +16 -16
  41. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +14 -14
  42. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +178 -178
  43. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  44. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +3 -3
  45. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +24 -23
  46. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
  47. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +160 -160
  48. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +12 -12
  49. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +5 -5
  50. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +44 -44
  51. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +69 -69
  52. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +3 -3
  53. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +33 -33
  54. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +7 -7
  55. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +1 -1
  56. package/lib/renderer/wgsl/compose.frag.wgsl.js +54 -54
  57. package/lib/renderer/wgsl/customDenoise.wgsl.js +6 -6
  58. package/lib/renderer/wgsl/depthQuery.wgsl.js +2 -2
  59. package/lib/renderer/wgsl/offlineAdaptive.compute.js +5 -5
  60. package/lib/renderer/wgsl/rayTrace.compute.js +103 -103
  61. package/lib/scene/OpenPBRMaterial.d.ts +1 -1
  62. package/lib/scene/OpenPBRMaterial.js +1 -1
  63. package/lib/scene/OpenPBRMaterial.js.map +1 -1
  64. package/lib/version.d.ts +1 -1
  65. package/lib/version.js +1 -1
  66. package/lib/version.js.map +1 -1
  67. package/package.json +1 -1
@@ -3,16 +3,16 @@
3
3
  // Copyright (c) 2019 HOVER, MIT license; see LICENSES/RayTracingRenderer-MIT.txt.
4
4
  // Shared primary-ray construction keeps beauty and catcher coverage aligned.
5
5
  export default /* glsl */ `
6
- Ray hC(vec2 fG) {
7
- vec4 origin = viewProjectionInv * vec4(fG * 2.0 - 1.0, -1.0, 1.0);
8
- vec4 target = viewProjectionInv * vec4(fG * 2.0 - 1.0, 1.0, 1.0);
6
+ Ray hC(vec2 fH) {
7
+ vec4 origin = viewProjectionInv * vec4(fH * 2.0 - 1.0, -1.0, 1.0);
8
+ vec4 target = viewProjectionInv * vec4(fH * 2.0 - 1.0, 1.0, 1.0);
9
9
  Ray cam;
10
10
  iC(cam, origin.xyz / origin.w, normalize(target.xyz * origin.w - origin.xyz * target.w));
11
11
 
12
12
  return cam;
13
13
  }
14
14
 
15
- vec2 oL(vec2 p) {
15
+ vec2 oK(vec2 p) {
16
16
  p = 2.0 * p - 1.0;
17
17
  bool greater = abs(p.x) > abs(p.y);
18
18
  float r = greater ? p.x : p.y;
@@ -20,14 +20,14 @@ float theta = greater ? 0.25 * PI * p.y / p.x : PI * (0.5 - 0.25 * p.x / p.y);
20
20
  return r * vec2(cos(theta), sin(theta));
21
21
  }
22
22
 
23
- Ray nN() {
23
+ Ray nM() {
24
24
  Ray cam = hC(v_Texcoord + sa());
25
25
  if (cameraApertureRadius > 0.0) {
26
26
 
27
27
  vec3 eye = viewInv[3].xyz;
28
- vec3 ol = -normalize(viewInv[2].xyz);
29
- vec3 qy = eye + cam.d * (cameraFocusDistance / dot(cam.d, ol));
30
- vec2 rK = cameraApertureRadius * oL(fo(CAMERA_LENS));
28
+ vec3 oj = -normalize(viewInv[2].xyz);
29
+ vec3 qy = eye + cam.d * (cameraFocusDistance / dot(cam.d, oj));
30
+ vec2 rK = cameraApertureRadius * oK(fp(CAMERA_LENS));
31
31
  vec3 origin = vec3(viewInv * vec4(rK, 0.0, 1.0));
32
32
  iC(cam, origin, normalize(qy - origin));
33
33
  }
@@ -15,14 +15,14 @@ export default createShaderMixin({
15
15
  groundedBackgroundCenter: Shader.uniform('vec2')
16
16
  },
17
17
  main: glsl `
18
- vec2 eL(vec3 gg) {
19
- float phi = mod(atan(-gg.z, -gg.x), TWOPI);
20
- float theta = acos(clamp(gg.y, -1.0, 1.0));
18
+ vec2 eL(vec3 gh) {
19
+ float phi = mod(atan(-gh.z, -gh.x), TWOPI);
20
+ float theta = acos(clamp(gh.y, -1.0, 1.0));
21
21
  return vec2(phi * 0.5 * INVPI, theta * INVPI);
22
22
  }
23
23
 
24
- vec2 cY(vec3 mQ) {
25
- return eL(transpose(environmentRotation) * mQ);
24
+ vec2 cY(vec3 mP) {
25
+ return eL(transpose(environmentRotation) * mP);
26
26
  }
27
27
 
28
28
  float qB(float u, out int vOffset, out float pdf) {
@@ -65,25 +65,25 @@ left = mid + 1;
65
65
  right = mid;
66
66
  }
67
67
  }
68
- int oS = left - 1;
68
+ int oR = left - 1;
69
69
 
70
70
 
71
71
 
72
- vec2 s0 = texelFetch(envMapDistribution, ivec2(1 + oS, vOffset), 0).xy;
73
- vec2 s1 = texelFetch(envMapDistribution, ivec2(1 + oS + 1, vOffset), 0).xy;
72
+ vec2 s0 = texelFetch(envMapDistribution, ivec2(1 + oR, vOffset), 0).xy;
73
+ vec2 s1 = texelFetch(envMapDistribution, ivec2(1 + oR + 1, vOffset), 0).xy;
74
74
 
75
75
  pdf = s0.y;
76
76
 
77
- return (float(oS) + (u - s0.x) / (s1.x - s0.x)) / float(size.x);
77
+ return (float(oR) + (u - s0.x) / (s1.x - s0.x)) / float(size.x);
78
78
  }
79
79
 
80
80
 
81
- vec3 oM(vec2 random, out vec2 uv, out float pdf) {
82
- vec2 hd;
81
+ vec3 oL(vec2 random, out vec2 uv, out float pdf) {
82
+ vec2 he;
83
83
  int vOffset;
84
84
 
85
- uv.y = qB(random.x, vOffset, hd.y);
86
- uv.x = qA(random.y, vOffset, hd.x);
85
+ uv.y = qB(random.x, vOffset, he.y);
86
+ uv.x = qA(random.y, vOffset, he.x);
87
87
 
88
88
  float phi = uv.x * TWOPI;
89
89
  float theta = uv.y * PI;
@@ -94,7 +94,7 @@ float uw = sin(phi);
94
94
 
95
95
  vec3 dir = vec3(-sinTheta * ul, cc, -sinTheta * uw);
96
96
 
97
- pdf = hd.x * hd.y * INVPI2 / (2.0 * sinTheta);
97
+ pdf = he.x * he.y * INVPI2 / (2.0 * sinTheta);
98
98
 
99
99
  return environmentRotation * dir;
100
100
  }
@@ -113,24 +113,24 @@ return sL * sM * INVPI2 / (2.0 * sinTheta);
113
113
  }
114
114
 
115
115
  float dq(vec3 sN, float height, float radius) {
116
- float fQ = length(sN);
117
- if (fQ < 0.00001) {
116
+ float fR = length(sN);
117
+ if (fR < 0.00001) {
118
118
  return -radius;
119
119
  }
120
120
 
121
- float iG = radius * sN.y / fQ;
121
+ float iG = radius * sN.y / fR;
122
122
  float iq = -1.5 * height;
123
123
  float ev;
124
124
  if (iG >= 0.0) {
125
125
  ev = radius;
126
126
  } else if (iG < iq) {
127
- ev = -height * fQ / sN.y;
127
+ ev = -height * fR / sN.y;
128
128
  } else {
129
129
  float dW = 1.0
130
130
  - iG * iG / (3.0 * iq * iq);
131
131
  ev = radius * dW;
132
132
  }
133
- return fQ - ev;
133
+ return fR - ev;
134
134
  }
135
135
 
136
136
  vec3 eT(vec3 origin, vec3 d) {
@@ -156,18 +156,18 @@ if (
156
156
  cC > 0.0
157
157
  && dq(bB, height, radius) <= 0.0
158
158
  ) {
159
- vec3 nP = bB + bY * cC;
160
- if (nP.y >= 0.0) {
161
- return normalize(nP);
159
+ vec3 nO = bB + bY * cC;
160
+ if (nO.y >= 0.0) {
161
+ return normalize(nO);
162
162
  }
163
163
 
164
164
  if (bY.y < -0.00001 && radius > 1.5 * height) {
165
165
  float hT = (-height - bB.y) / bY.y;
166
- vec3 nF = bB + bY * hT;
167
- float oo = (2.0 / 3.0)
166
+ vec3 nE = bB + bY * hT;
167
+ float om = (2.0 / 3.0)
168
168
  * sqrt(radius * radius - 2.25 * height * height);
169
- if (hT > 0.0 && length(nF.xz) <= oo) {
170
- return normalize(nF);
169
+ if (hT > 0.0 && length(nE.xz) <= om) {
170
+ return normalize(nE);
171
171
  }
172
172
  }
173
173