@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
@@ -11,18 +11,18 @@ export default /*wgsl*/ `
11
11
  const SHADOW_CATCHER_LIGHT_SAMPLES = 4u;
12
12
 
13
13
  fn sampleShadowCatcher(si: ad, bounce: i32, aa: ptr<function, Path>) {
14
- let oT = -(*aa).ray.d;
14
+ let oS = -(*aa).ray.d;
15
15
 
16
16
 
17
17
  if (rtUniform.lightChoiceCount > 0) {
18
18
  var shadow = 0.0;
19
19
  for (var candidate = 0u; candidate < SHADOW_CATCHER_LIGHT_SAMPLES; candidate++) {
20
20
  var lightSample: LightSampleRec;
21
- let ln = vec3f(fo(rd(candidate, 1u)), dz(rd(candidate, 0u)));
21
+ let ln = vec3f(fp(rd(candidate, 1u)), dz(rd(candidate, 0u)));
22
22
  sampleLight(si.position, ln, &lightSample, false);
23
23
  let lightDir = lightSample.direction;
24
24
  let cosThetaL = dot(si.normal, lightDir);
25
- let pM = dot(si.normal, oT) * cosThetaL;
25
+ let pM = dot(si.normal, oS) * cosThetaL;
26
26
  if (lightSample.pdf > 0.0 && pM >= 0.0) {
27
27
  var ray: Ray;
28
28
  iC(&ray, si.position + EPS * lightDir, lightDir);
@@ -5,27 +5,27 @@ export default /*wgsl*/ `
5
5
 
6
6
  fn aQ(view: vec3f, alpha: vec2f, samplePoint: vec2f) -> vec3f {
7
7
  let rm = vec3f(alpha, 1.0);
8
- let gj = normalize(rm * view);
9
- let uh = min(gj.z, 1.0);
8
+ let gk = normalize(rm * view);
9
+ let uh = min(gk.z, 1.0);
10
10
  let qQ = 1.0 + uh;
11
11
  let rh = (1.0 - samplePoint.y) * qQ;
12
12
  let rR = samplePoint.y * qQ;
13
13
  let sI = rh + (1.0 - uh);
14
14
  let fl = sqrt(max(0.0, sI * rR));
15
15
  let br = TWOPI * samplePoint.x;
16
- let lJ = vec3f(
17
- gj.x + fl * cos(br),
18
- gj.y + fl * sin(br),
16
+ let lI = vec3f(
17
+ gk.x + fl * cos(br),
18
+ gk.y + fl * sin(br),
19
19
  rh
20
20
  );
21
- return normalize(rm * lJ);
21
+ return normalize(rm * lI);
22
22
  }
23
23
 
24
- fn gK(oq: vec3f, alpha: vec2f) -> f32 {
24
+ fn gL(oo: vec3f, alpha: vec2f) -> f32 {
25
25
  let hr = vec3f(
26
- oq.x / alpha.x,
27
- oq.y / alpha.y,
28
- oq.z
26
+ oo.x / alpha.x,
27
+ oo.y / alpha.y,
28
+ oo.z
29
29
  );
30
30
  let ap = dot(hr, hr);
31
31
  return 1.0 / (
@@ -39,9 +39,9 @@ if (eF <= 1e-8) {
39
39
  return 0.0;
40
40
  }
41
41
  let ic = alpha * direction.xy;
42
- let lK = dot(ic, ic)
42
+ let lJ = dot(ic, ic)
43
43
  / (eF * eF);
44
- return 2.0 / (1.0 + sqrt(1.0 + lK));
44
+ return 2.0 / (1.0 + sqrt(1.0 + lJ));
45
45
  }
46
46
 
47
47
  fn aE(au: f32) -> f32 {
@@ -57,17 +57,17 @@ if (kl >= 1.0) {
57
57
  return 1.0;
58
58
  }
59
59
 
60
- let lU = sqrt(max(0.0, 1.0 - kl));
61
- let ba = (iA - cJ * lU)
62
- / max(iA + cJ * lU, 1e-8);
63
- let pN = (cJ * iA - lU)
64
- / max(cJ * iA + lU, 1e-8);
60
+ let lT = sqrt(max(0.0, 1.0 - kl));
61
+ let ba = (iA - cJ * lT)
62
+ / max(iA + cJ * lT, 1e-8);
63
+ let pN = (cJ * iA - lT)
64
+ / max(cJ * iA + lT, 1e-8);
65
65
  return 0.5 * (
66
66
  ba * ba + pN * pN
67
67
  );
68
68
  }
69
69
 
70
- fn gh(samplePoint: vec2f) -> vec2f {
70
+ fn gi(samplePoint: vec2f) -> vec2f {
71
71
  let offset = 2.0 * samplePoint - vec2f(1.0);
72
72
  if (offset.x == 0.0 && offset.y == 0.0) {
73
73
  return vec2f(0.0);
@@ -87,21 +87,21 @@ return radius * vec2f(cos(angle), sin(angle));
87
87
  }
88
88
 
89
89
  fn bi(samplePoint: vec2f) -> vec3f {
90
- let kF = gh(samplePoint);
90
+ let kF = gi(samplePoint);
91
91
  return vec3f(
92
92
  kF,
93
93
  sqrt(max(0.0, 1.0 - dot(kF, kF)))
94
94
  );
95
95
  }
96
96
 
97
- fn aG(pr: f32, nO: f32) -> f32 {
98
- let scale = max(pr, nO);
97
+ fn aG(pr: f32, nN: f32) -> f32 {
98
+ let scale = max(pr, nN);
99
99
  if (scale <= 0.0) {
100
100
  return 0.0;
101
101
  }
102
- let normalized = vec2f(pr, nO) / scale;
103
- let oP = normalized * normalized;
104
- return oP.x / (oP.x + oP.y);
102
+ let normalized = vec2f(pr, nN) / scale;
103
+ let oO = normalized * normalized;
104
+ return oO.x / (oO.x + oO.y);
105
105
  }
106
106
 
107
107
  fn aL(
@@ -139,12 +139,12 @@ return vec3f(0.0, 0.0, rgb.b);
139
139
 
140
140
  fn eN(
141
141
  wavelength: f32,
142
- hg: f32,
142
+ hh: f32,
143
143
  hp: f32,
144
144
  qs: f32
145
145
  ) -> f32 {
146
146
  if (wavelength == 0.0 || hp <= 0.0) {
147
- return hg;
147
+ return hh;
148
148
  }
149
149
 
150
150
  let FRAUNHOFER_C = 656.3;
@@ -154,15 +154,15 @@ let jR = 1.0 / (
154
154
  1.0 / (FRAUNHOFER_F * FRAUNHOFER_F)
155
155
  - 1.0 / (FRAUNHOFER_C * FRAUNHOFER_C)
156
156
  );
157
- let nh = max(qs / hp, 1e-6);
158
- let qR = (hg - 1.0) * jR / nh;
159
- let tl = hg
157
+ let ng = max(qs / hp, 1e-6);
158
+ let qR = (hh - 1.0) * jR / ng;
159
+ let tl = hh
160
160
  - qR / (FRAUNHOFER_D * FRAUNHOFER_D);
161
161
  return tl + qR / (wavelength * wavelength);
162
162
  }
163
163
 
164
- fn fp(
165
- gy: vec3f,
164
+ fn fq(
165
+ gz: vec3f,
166
166
  anisotropy: f32,
167
167
  samplePoint: vec2f
168
168
  ) -> vec3f {
@@ -182,10 +182,10 @@ let ud = sqrt(max(0.0, 1.0 - au * au));
182
182
  let br = TWOPI * samplePoint.x;
183
183
  var tangent: vec3f;
184
184
  var bitangent: vec3f;
185
- aL(gy, &tangent, &bitangent);
185
+ aL(gz, &tangent, &bitangent);
186
186
  return tangent * (ud * cos(br))
187
187
  + bitangent * (ud * sin(br))
188
- + gy * au;
188
+ + gz * au;
189
189
  }
190
190
 
191
191
  fn bD(au: f32, anisotropy: f32) -> f32 {
@@ -99,18 +99,18 @@ return cw(9u + (candidate - 1u) * 3u + slot);
99
99
 
100
100
  var<private> hl: vec4u;
101
101
  var<private> hm: u32;
102
- var<private> fB: bool = false;
102
+ var<private> fC: bool = false;
103
103
  var<private> dg: bool = false;
104
104
  var<private> dF: u32;
105
- var<private> gu: u32;
105
+ var<private> gv: u32;
106
106
  var<private> eQ: vec2f;
107
107
  fn dw(dim: u32) {
108
108
 
109
109
  let kd = bc.x + bc.y * u32(rtUniform.outputSize.x);
110
110
  let key = vec4u(dim, bd, kd, rtUniform.sequenceSeed);
111
- if (fB && all(hl == key) && hm == rtUniform.zSobolLogSPP) { return; }
111
+ if (fC && all(hl == key) && hm == rtUniform.zSobolLogSPP) { return; }
112
112
  hl = key; hm = rtUniform.zSobolLogSPP;
113
- fB = true; dg = false;
113
+ fC = true; dg = false;
114
114
  var ij = aq(aq(kd, dim), rtUniform.sequenceSeed);
115
115
  var index = bd;
116
116
  if (SAMPLING_PATTERN == 1) {
@@ -129,14 +129,14 @@ if (bd != 0u) { jb += 1u; }
129
129
  ij = aq(ij, jb);
130
130
  }
131
131
  dF = sK(index, aq(ij, 0u));
132
- gu = ij;
132
+ gv = ij;
133
133
  let x = reverseBits(iE(dF, aq(ij, 1u)));
134
134
  eQ.x = f32(x >> 8u) * (1.0 / 16777216.0);
135
135
  }
136
136
  fn kS(dim: u32) -> vec2f {
137
137
  dw(dim);
138
138
  if (!dg) {
139
- let y = sK(rl(dF), aq(gu, 2u));
139
+ let y = sK(rl(dF), aq(gv, 2u));
140
140
  eQ.y = f32(y >> 8u) * (1.0 / 16777216.0);
141
141
  dg = true;
142
142
  }
@@ -147,7 +147,7 @@ if (SAMPLING_PATTERN == 2) { return EPS + (1.0 - 2.0*EPS)*rand(); }
147
147
  dw(dim);
148
148
  return EPS + (1.0 - 2.0*EPS) * eQ.x;
149
149
  }
150
- fn fo(dim: u32) -> vec2f {
150
+ fn fp(dim: u32) -> vec2f {
151
151
  if (SAMPLING_PATTERN == 2) {
152
152
  let x = dz(dim); let y = dz(dim);
153
153
  return vec2f(x,y);
@@ -28,7 +28,7 @@ let theta = atan2(pos.z, pos.x) / (2.0 * PI) + 0.5;
28
28
  return vec2f(theta, pos.y);
29
29
  }
30
30
 
31
- fn gH(fk: i32, pos: vec3f, normal: vec3f) -> vec2f {
31
+ fn gI(fk: i32, pos: vec3f, normal: vec3f) -> vec2f {
32
32
  if (fk == ${uvProjectionConstants.triplanar}) {
33
33
  return iR(pos, normal);
34
34
  } else if (fk == ${uvProjectionConstants.spherical}) {
@@ -1,5 +1,5 @@
1
1
  export const linearToSrgbDefine = /* wgsl */ `
2
- fn fM(color: vec3f) -> vec3f {
2
+ fn fN(color: vec3f) -> vec3f {
3
3
  let linear = max(color, vec3f(0.0));
4
4
  let low = linear * 12.92;
5
5
  let high = 1.055 * pow(linear, vec3f(1.0 / 2.4)) - 0.055;
@@ -19,7 +19,7 @@ let color = max(vec3f(0.0), jr - 0.004);
19
19
  return pow((color * (6.2 * color + 0.5)) /
20
20
  (color * (6.2 * color + 1.7) + 0.06), vec3f(2.2));
21
21
  }
22
- fn oJ(value: vec3f) -> vec3f {
22
+ fn oI(value: vec3f) -> vec3f {
23
23
  let kO = value * (value + 0.0245786) - 0.000090537;
24
24
  let ap = value * (0.983729 * value + 0.4329510) + 0.238081;
25
25
  return kO / ap;
@@ -30,28 +30,28 @@ vec3f(0.59719, 0.07600, 0.02840),
30
30
  vec3f(0.35458, 0.90834, 0.13383),
31
31
  vec3f(0.04823, 0.01566, 0.83777)
32
32
  );
33
- let oE = mat3x3f(
33
+ let oD = mat3x3f(
34
34
  vec3f(1.60475, -0.10208, -0.00327),
35
35
  vec3f(-0.53108, 1.10813, -0.07276),
36
36
  vec3f(-0.07367, -0.00605, 1.07602)
37
37
  );
38
38
  let color = pw * (jr / 0.6);
39
- return clamp(oE * oJ(color), vec3f(0.0), vec3f(1.0));
39
+ return clamp(oD * oI(color), vec3f(0.0), vec3f(1.0));
40
40
  }
41
- fn fT(value: vec3f) -> vec3f {
42
- let mO = value * value;
43
- let qK = mO * mO;
44
- return 15.5 * qK * mO - 40.14 * qK * value
45
- + 31.96 * qK - 6.868 * mO * value
46
- + 0.4298 * mO + 0.1191 * value - 0.00232;
41
+ fn fU(value: vec3f) -> vec3f {
42
+ let mN = value * value;
43
+ let qK = mN * mN;
44
+ return 15.5 * qK * mN - 40.14 * qK * value
45
+ + 31.96 * qK - 6.868 * mN * value
46
+ + 0.4298 * mN + 0.1191 * value - 0.00232;
47
47
  }
48
- fn me(jr: vec3f) -> vec3f {
49
- let mR = mat3x3f(
48
+ fn mc(jr: vec3f) -> vec3f {
49
+ let mQ = mat3x3f(
50
50
  vec3f(1.6605, -0.1246, -0.0182),
51
51
  vec3f(-0.5876, 1.1329, -0.1006),
52
52
  vec3f(-0.0728, -0.0083, 1.1187)
53
53
  );
54
- let mS = mat3x3f(
54
+ let mR = mat3x3f(
55
55
  vec3f(0.6274, 0.0691, 0.0164),
56
56
  vec3f(0.3293, 0.9195, 0.0880),
57
57
  vec3f(0.0433, 0.0113, 0.8956)
@@ -61,16 +61,16 @@ vec3f(0.856627153315983, 0.137318972929847, 0.11189821299995),
61
61
  vec3f(0.0951212405381588, 0.761241990602591, 0.0767994186031903),
62
62
  vec3f(0.0482516061458583, 0.101439036467562, 0.811302368396859)
63
63
  );
64
- let oF = mat3x3f(
64
+ let oE = mat3x3f(
65
65
  vec3f(1.1271005818144368, -0.1413297634984383, -0.14132976349843826),
66
66
  vec3f(-0.11060664309660323, 1.157823702216272, -0.11060664309660294),
67
67
  vec3f(-0.016493938717834573, -0.016493938717834257, 1.2519364065950405)
68
68
  );
69
- var color = pH * (mS * jr);
69
+ var color = pH * (mR * jr);
70
70
  color = clamp((log2(max(color, vec3f(1e-10))) + 12.47393) / 16.5, vec3f(0.0), vec3f(1.0));
71
- color = oF * fT(color);
71
+ color = oE * fU(color);
72
72
  color = pow(max(color, vec3f(0.0)), vec3f(2.2));
73
- return clamp(mR * color, vec3f(0.0), vec3f(1.0));
73
+ return clamp(mQ * color, vec3f(0.0), vec3f(1.0));
74
74
  }
75
75
  fn cl(color: vec3f) -> vec3f {
76
76
  let toneMappingMode = i32(toneMappingParams.x);
@@ -78,10 +78,10 @@ if (toneMappingMode == 1) { return lv(color); }
78
78
  if (toneMappingMode == 2) { return jJ(color); }
79
79
  if (toneMappingMode == 3) { return iP(color); }
80
80
  if (toneMappingMode == 4) { return jU(color); }
81
- return me(color);
81
+ return mc(color);
82
82
  }
83
83
  ${linearToSrgbDefine}
84
- fn gb(jr: vec3f) -> vec3f {
84
+ fn gc(jr: vec3f) -> vec3f {
85
85
  let contrast = colorGradingParams.x;
86
86
  let saturation = colorGradingParams.y;
87
87
  let temperature = colorGradingParams.z;
@@ -106,46 +106,46 @@ jl = load_bloomTex(uv, 0) * bloomIntensity;
106
106
  dY = vec4f(dY.rgb + jl.rgb, dY.a);
107
107
  }
108
108
 
109
- var ll = gb(dY.rgb * exposure);
109
+ var ll = gc(dY.rgb * exposure);
110
110
  let iI = smoothstep(0.2, 0.72, distance(vec2f(uv) / vec2f(colorTexRegion()), vec2f(0.5)));
111
111
  ll *= 1.0 - toneMappingParams.y * iI;
112
- let gA = hdrOutputEnabled > 0.5;
113
- if (!gA) {
112
+ let gC = hdrOutputEnabled > 0.5;
113
+ if (!gC) {
114
114
  ll = cl(ll);
115
115
  }
116
- let mn = select(
116
+ let ml = select(
117
117
  pow(max(ll, vec3f(0.0)), vec3f(1.0 / 2.2)),
118
- fM(ll),
119
- gA
118
+ fN(ll),
119
+ gC
120
120
  );
121
- var oc = mn;
121
+ var ob = ml;
122
122
  if (flatBackgroundColor.a > 0.5) {
123
123
  let jg = clamp(
124
124
  load_flatBackgroundMaskTex(uv, 0).a,
125
125
  0.0,
126
126
  1.0
127
127
  );
128
- let pb = fM(max(flatBackgroundColor.rgb, vec3f(0.0)));
129
- oc = mix(pb, mn, jg);
128
+ let pb = fN(max(flatBackgroundColor.rgb, vec3f(0.0)));
129
+ ob = mix(pb, ml, jg);
130
130
  if (bloomIntensity > 0.0) {
131
- var ir = gb(
131
+ var ir = gc(
132
132
  max(dY.rgb - jl.rgb, vec3f(0.0))
133
133
  * exposure
134
134
  );
135
135
  ir *= 1.0 - toneMappingParams.y * iI;
136
- if (!gA) {
136
+ if (!gC) {
137
137
  ir = cl(ir);
138
138
  }
139
139
  let rF = select(
140
140
  pow(max(ir, vec3f(0.0)), vec3f(1.0 / 2.2)),
141
- fM(ir),
142
- gA
141
+ fN(ir),
142
+ gC
143
143
  );
144
- oc += max(mn - rF, vec3f(0.0))
144
+ ob += max(ml - rF, vec3f(0.0))
145
145
  * (1.0 - jg);
146
146
  }
147
147
  }
148
- dY = vec4f(oc, dY.a);
148
+ dY = vec4f(ob, dY.a);
149
149
  if (bloomIntensity > 0.0) {
150
150
  dY.a = max(dY.a, min(dot(jl.rgb, vec3f(0.2125, 0.7154, 0.0721)), 1.0));
151
151
  }
@@ -162,35 +162,35 @@ let background = load_catcherBackgroundTex(uv, 0);
162
162
 
163
163
 
164
164
  let kH = select(0.0, clamp(background.a - coverage, 0.0, 1.0 - coverage), flatBackgroundColor.a > 0.5);
165
- var bK = gb((foreground.rgb + jl.rgb) * exposure);
166
- var backgroundColor = gb((background.rgb / max(background.a, 0.000001) + jl.rgb) * exposure);
165
+ var bK = gc((foreground.rgb + jl.rgb) * exposure);
166
+ var backgroundColor = gc((background.rgb / max(background.a, 0.000001) + jl.rgb) * exposure);
167
167
  bK *= 1.0 - toneMappingParams.y * iI;
168
168
  backgroundColor *= 1.0 - toneMappingParams.y * iI;
169
- if (!gA) {
169
+ if (!gC) {
170
170
  bK = cl(bK);
171
171
  backgroundColor = cl(backgroundColor);
172
172
  }
173
- bK = select(pow(max(bK, vec3f(0.0)), vec3f(1.0 / 2.2)), fM(bK), gA);
174
- backgroundColor = select(pow(max(backgroundColor, vec3f(0.0)), vec3f(1.0 / 2.2)), fM(backgroundColor), gA);
173
+ bK = select(pow(max(bK, vec3f(0.0)), vec3f(1.0 / 2.2)), fN(bK), gC);
174
+ backgroundColor = select(pow(max(backgroundColor, vec3f(0.0)), vec3f(1.0 / 2.2)), fN(backgroundColor), gC);
175
175
  if (flatBackgroundColor.a > 0.5) {
176
- var eP = gb(background.rgb / max(background.a, 0.000001) * exposure);
176
+ var eP = gc(background.rgb / max(background.a, 0.000001) * exposure);
177
177
  eP *= 1.0 - toneMappingParams.y * iI;
178
- if (!gA) { eP = cl(eP); }
179
- let mo = select(pow(max(eP, vec3f(0.0)), vec3f(1.0 / 2.2)), fM(eP), gA);
180
- let uk = select(vec3f(0.0), max(backgroundColor - mo, vec3f(0.0)), bloomIntensity > 0.0);
181
- backgroundColor = fM(max(flatBackgroundColor.rgb, vec3f(0.0))) + uk;
178
+ if (!gC) { eP = cl(eP); }
179
+ let mn = select(pow(max(eP, vec3f(0.0)), vec3f(1.0 / 2.2)), fN(eP), gC);
180
+ let uk = select(vec3f(0.0), max(backgroundColor - mn, vec3f(0.0)), bloomIntensity > 0.0);
181
+ backgroundColor = fN(max(flatBackgroundColor.rgb, vec3f(0.0))) + uk;
182
182
  }
183
183
 
184
184
 
185
- let fR = coverage * opacity;
186
- let mg = clamp(dot(jl.rgb, vec3f(0.2125, 0.7154, 0.0721)), 0.0, 1.0);
187
- let hv = max(foreground.a, mg * (1.0 - coverage - kH));
188
- let jd = max(background.a, mg * coverage);
185
+ let fS = coverage * opacity;
186
+ let mf = clamp(dot(jl.rgb, vec3f(0.2125, 0.7154, 0.0721)), 0.0, 1.0);
187
+ let hv = max(foreground.a, mf * (1.0 - coverage - kH));
188
+ let jd = max(background.a, mf * coverage);
189
189
  let ku = (jd - kH) * (1.0 - opacity) + kH;
190
- let alpha = hv + ku + fR;
190
+ let alpha = hv + ku + fS;
191
191
  let premultiplied = bK * hv
192
192
  + backgroundColor * ku
193
- + shadowCatcherColor * fR;
193
+ + shadowCatcherColor * fS;
194
194
  dY = vec4f(premultiplied / max(alpha, 0.000001), alpha);
195
195
  }
196
196
  }
@@ -207,7 +207,7 @@ let sW = select(
207
207
  pow(encoded, vec3f(2.2)),
208
208
  select(pow((encoded + 0.055) / 1.055, vec3f(2.4)), encoded / 12.92,
209
209
  encoded <= vec3f(0.04045)),
210
- gA
210
+ gC
211
211
  );
212
212
  output.denoiseColor = vec4f(sW, dY.a);
213
213
 
@@ -221,9 +221,9 @@ if (shadowCatcherEnabled > 0.5 && flatBackgroundColor.a < 0.5) {
221
221
  let coverage = clamp(load_shadowCatcherTex(uv, 0).r, 0.0, 1.0);
222
222
  let background = load_catcherBackgroundTex(uv, 0);
223
223
  if (coverage > 0.0 && background.a > 0.0) {
224
- var iv = gb(background.rgb / background.a * exposure);
224
+ var iv = gc(background.rgb / background.a * exposure);
225
225
  iv *= 1.0 - toneMappingParams.y * iI;
226
- if (!gA) { iv = cl(iv); }
226
+ if (!gC) { iv = cl(iv); }
227
227
 
228
228
 
229
229
 
@@ -240,7 +240,7 @@ let denoised = load_colorTex(uv, 0);
240
240
 
241
241
  let alpha = select(load_composedTex(uv, 0).a, clamp(denoised.a, 0.0, 1.0), denoisedAlpha > 0.5);
242
242
  let linear = max(denoised.rgb, vec3f(0.0));
243
- let encoded = select(pow(linear, vec3f(1.0 / 2.2)), fM(linear), hdrOutputEnabled > 0.5);
243
+ let encoded = select(pow(linear, vec3f(1.0 / 2.2)), fN(linear), hdrOutputEnabled > 0.5);
244
244
  output.color = vec4f(select(vec3f(0.0), encoded, alpha > 0.0), alpha);
245
245
  `;
246
246
  //# sourceMappingURL=compose.frag.wgsl.js.map
@@ -5,19 +5,19 @@ let filtered = load_filteredTex(uv, 0).rgb;
5
5
  let foreground = load_foregroundTex(uv, 0);
6
6
  let background = load_backgroundTex(uv, 0);
7
7
 
8
- var mt = foreground;
9
- var mr = background;
8
+ var mr = foreground;
9
+ var mq = background;
10
10
  if (any(filtered != original)) {
11
11
  let uz = abs(original) > vec3f(0.000001);
12
12
  let ap = select(vec3f(1.0), original, uz);
13
13
  let scale = select(vec3f(1.0), filtered / ap, uz);
14
14
  let ub = select(filtered - original, vec3f(0.0), uz);
15
- mt = vec4f(foreground.rgb * scale + ub, foreground.a);
15
+ mr = vec4f(foreground.rgb * scale + ub, foreground.a);
16
16
 
17
- mr = vec4f(background.rgb * scale + ub * background.a, background.a);
17
+ mq = vec4f(background.rgb * scale + ub * background.a, background.a);
18
18
  }
19
- output.foreground = mt;
20
- output.background = mr;
19
+ output.foreground = mr;
20
+ output.background = mq;
21
21
  `;
22
22
  /** Custom output alpha is ignored; retain the input composition's coverage. */
23
23
  export const customDenoiseCoverageMain = /* wgsl */ `
@@ -12,7 +12,7 @@ outColor[index] = vec4f(0.0);
12
12
  if (any(uv < vec2f(0.0)) || any(uv > vec2f(1.0))) { return; }
13
13
  var ray = hC(uv);
14
14
  let eye = cameraUniform.viewInv[3].xyz;
15
- let ol = -normalize(cameraUniform.viewInv[2].xyz);
15
+ let oj = -normalize(cameraUniform.viewInv[2].xyz);
16
16
  var si: ad;
17
17
  si.triangleIndex = -1;
18
18
 
@@ -24,7 +24,7 @@ if (!si.hit) { return; }
24
24
  var material: J;
25
25
  eX(&material, si.materialIndex, si.uv, si.uv1, si.instanceIndex, si.vertexColor);
26
26
  if (material.materialType != SHADOW_CATCHER && material.alpha > 0.0) {
27
- outColor[index] = vec4f(max(dot(si.position - eye, ol), 0.0), 0.0, 0.0, 0.0);
27
+ outColor[index] = vec4f(max(dot(si.position - eye, oj), 0.0), 0.0, 0.0, 0.0);
28
28
  return;
29
29
  }
30
30
  ray.o = si.position + ray.d * (EPS * 0.02);
@@ -40,14 +40,14 @@ let ux = tileX * params.tileSize;
40
40
  let uy = tileY * params.tileSize;
41
41
  let wl = min(ux + params.tileSize, params.width);
42
42
  let wm = min(uy + params.tileSize, params.height);
43
- var mZ = 0.0;
43
+ var mY = 0.0;
44
44
  var je = 0.0;
45
45
  var count = 0u;
46
46
 
47
47
  for (var y = uy; y < wm; y++) {
48
48
  for (var x = ux; x < wl; x++) {
49
- let fP = y * params.width + x;
50
- let offset = fP * 4u;
49
+ let fQ = y * params.width + x;
50
+ let offset = fQ * 4u;
51
51
  let samples = pilotMoments[offset + 3u];
52
52
  if (samples <= 0.0) {
53
53
  continue;
@@ -66,13 +66,13 @@ var variance = pi;
66
66
  if (samples > 1.0) {
67
67
  variance = pi * samples / (samples - 1.0);
68
68
  }
69
- mZ += mean;
69
+ mY += mean;
70
70
  je = max(je, variance);
71
71
  count += 1u;
72
72
  }
73
73
  }
74
74
 
75
- let mean = mZ / f32(max(count, 1u));
75
+ let mean = mY / f32(max(count, 1u));
76
76
  var oX = 0.0;
77
77
  if (params.hasPrevious != 0u) {
78
78
  oX = previousVariance[tile];