@meimu/mutracer 0.1.2 → 0.1.3

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 (68) hide show
  1. package/dist/assets/bvh.worker.js +1 -1
  2. package/dist/mutracer.umd.js +3429 -3390
  3. package/lib/oidn.d.ts +1 -1
  4. package/lib/oidnBundledWeights.cdn.d.ts +2 -2
  5. package/lib/renderer/WGPUBloomPass.js +18 -18
  6. package/lib/renderer/WGPUFullQuadPass.js +3 -3
  7. package/lib/renderer/WGPUJNLMDenoiser.js +62 -62
  8. package/lib/renderer/WGPURayTraceOutput.js +14 -12
  9. package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
  10. package/lib/renderer/WGPURayTracePass.js +1 -1
  11. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  12. package/lib/renderer/WGPURenderingPipeline.js +20 -18
  13. package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
  14. package/lib/renderer/WebGLJNLMDenoiser.js +61 -61
  15. package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
  16. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +9 -9
  17. package/lib/renderer/glsl/chunks/envMap.glsl.js +45 -45
  18. package/lib/renderer/glsl/chunks/intersect.glsl.js +262 -262
  19. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +111 -111
  20. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +436 -436
  21. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  22. package/lib/renderer/glsl/chunks/random.glsl.js +3 -3
  23. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +32 -32
  24. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +54 -54
  25. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +71 -71
  26. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +12 -12
  27. package/lib/renderer/glsl/chunks/sampling.glsl.js +64 -64
  28. package/lib/renderer/glsl/chunks/sobol.glsl.js +49 -49
  29. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  30. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +5 -5
  31. package/lib/renderer/glsl/depthQuery.frag.js +2 -2
  32. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +8 -8
  33. package/lib/renderer/glsl/rayTrace.frag.js +128 -128
  34. package/lib/renderer/glsl/shadowCatcher.frag.js +12 -12
  35. package/lib/renderer/glsl/webglPipeline.frag.js +49 -49
  36. package/lib/renderer/lightsUtil.js +1 -1
  37. package/lib/renderer/lightsUtil.js.map +1 -1
  38. package/lib/renderer/scratchSampling.js +6 -6
  39. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  40. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +29 -29
  41. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +368 -368
  42. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +5 -5
  43. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +51 -51
  44. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +453 -453
  45. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +116 -116
  46. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  47. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +13 -13
  48. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +94 -94
  49. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +119 -119
  50. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +5 -5
  51. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +62 -62
  52. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +3 -3
  53. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +2 -2
  54. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
  55. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +53 -53
  56. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +5 -5
  57. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +2 -2
  58. package/lib/renderer/wgsl/compose.frag.wgsl.js +120 -92
  59. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
  60. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  61. package/lib/renderer/wgsl/depthQuery.wgsl.js +3 -3
  62. package/lib/renderer/wgsl/offlineAdaptive.compute.js +26 -26
  63. package/lib/renderer/wgsl/rayTrace.compute.js +220 -211
  64. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  65. package/lib/version.d.ts +1 -1
  66. package/lib/version.js +1 -1
  67. package/lib/version.js.map +1 -1
  68. package/package.json +5 -4
@@ -32,7 +32,7 @@ return;
32
32
  // So here the code are injected separately.
33
33
  const bounceCodeOnIntelMac = glsl `
34
34
 
35
- for(int vI = 0; vI < BOUNCES; vI++) {{
35
+ for(int vN = 0; vN < BOUNCES; vN++) {{
36
36
  if (aa.abort) {
37
37
  return vec4(aa.li, aa.alpha);
38
38
  }
@@ -40,10 +40,10 @@ bounce(aa, depth, si, mat, outAux);
40
40
  }}
41
41
  `;
42
42
  const bounceCodeOnOther = glsl `
43
- bool uT = !si.isTransparency;
44
- int qB = min(BOUNCES, bounceLimit);
43
+ bool uY = !si.isTransparency;
44
+ int qF = min(BOUNCES, bounceLimit);
45
45
  for(int idx = 0; idx < min(BOUNCES * 3, ${MAX_PATH_EVENTS}); idx++) {
46
- if (uT && idx > qB) {
46
+ if (uY && idx > qF) {
47
47
  aa.abort = true;
48
48
  }
49
49
  if (aa.abort) {
@@ -93,7 +93,7 @@ ${envMap.main}
93
93
  ${samplingGlsl}
94
94
  ${openPbrBsdfGlsl}
95
95
 
96
- float mh;
96
+ float mk;
97
97
  float bf;
98
98
 
99
99
  ${sampleLightGlsl}
@@ -110,7 +110,7 @@ bool isShadowCatcher;
110
110
  };
111
111
 
112
112
  void bounce(inout Path aa, inout int depth, inout ad si, inout J mat, inout RayTraceAuxiliary outAux) {
113
- cE = uint(max(depth, 0));
113
+ cF = uint(max(depth, 0));
114
114
 
115
115
 
116
116
 
@@ -135,26 +135,26 @@ if (aa.isNextRefraction) {
135
135
 
136
136
 
137
137
 
138
- vec4 bg = cw(aa.ray.o, aa.ray.d);
138
+ vec4 bg = cx(aa.ray.o, aa.ray.d);
139
139
  bg.rgb = ai(bg.rgb, bf);
140
140
  float cT = aa.scatteringIsDelta ? 1.0
141
- : aF(aa.scatteringPdf,
141
+ : aG(aa.scatteringPdf,
142
142
  iv(aS(aa.ray.d)) * envLightSelectionPmf);
143
143
  aa.li += cT * aa.beta * bg.rgb * bg.a;
144
144
  aa.alpha = max(aa.alpha, bg.a);
145
145
  }
146
146
  else {
147
- vec2 tE = aS(aa.ray.d);
148
- vec3 emission = textureLinear(envMap, tE).rgb;
147
+ vec2 tJ = aS(aa.ray.d);
148
+ vec3 emission = textureLinear(envMap, tJ).rgb;
149
149
  emission = ai(emission, bf);
150
150
  aa.li += aa.beta * emission *
151
- aF(
151
+ aG(
152
152
  aa.scatteringPdf,
153
- iv(tE) * envLightSelectionPmf
153
+ iv(tJ) * envLightSelectionPmf
154
154
  );
155
155
  }
156
156
  #else
157
- vec4 bg = cw(aa.ray.o, aa.ray.d);
157
+ vec4 bg = cx(aa.ray.o, aa.ray.d);
158
158
  bg.rgb = ai(bg.rgb, bf);
159
159
  aa.li += aa.beta * bg.rgb * bg.a;
160
160
  #endif
@@ -165,7 +165,7 @@ return;
165
165
 
166
166
  if (!si.hit) {
167
167
 
168
- vec4 bg = cw(aa.ray.o, aa.ray.d);
168
+ vec4 bg = cx(aa.ray.o, aa.ray.d);
169
169
 
170
170
 
171
171
 
@@ -177,10 +177,10 @@ aa.alpha = bg.a;
177
177
  outAux.isBlank = bg.a < 0.01;
178
178
  }
179
179
  else {
180
- Ray cam = hz(v_Texcoord + rN());
181
- bool mz = dot(cam.d, aa.ray.d) > 0.0;
180
+ Ray cam = hy(v_Texcoord + rS());
181
+ bool mC = dot(cam.d, aa.ray.d) > 0.0;
182
182
  if (transmissiveOutputAlphaMin < 1.0) {
183
- if (mz) {
183
+ if (mC) {
184
184
  aa.alpha = max(aa.alpha, bg.a);
185
185
  } else {
186
186
  aa.alpha = 1.0;
@@ -188,8 +188,8 @@ aa.alpha = 1.0;
188
188
  }
189
189
  #if !defined(USE_ENVMAP)
190
190
 
191
- if (mz) {
192
- aa.li = aa.beta * aF(aa.scatteringPdf, 1.0) * bg.rgb;
191
+ if (mC) {
192
+ aa.li = aa.beta * aG(aa.scatteringPdf, 1.0) * bg.rgb;
193
193
  }
194
194
  #endif
195
195
  }
@@ -197,7 +197,7 @@ aa.abort = true;
197
197
  return;
198
198
  }
199
199
 
200
- bool cG = false;
200
+ bool cH = false;
201
201
  if ((mat.materialType == STANDARD || mat.materialType == UNLIT)) {
202
202
  if (transmissiveOutputAlphaMin < 1.0) {
203
203
 
@@ -210,18 +210,18 @@ if (alpha < 1.0) {
210
210
 
211
211
  aa.alpha = max(aa.alpha, alpha);
212
212
  if (eo(3u) > alpha) {
213
- cG = true;
213
+ cH = true;
214
214
  }
215
215
  }
216
- if (!cG) {
217
- lO(si, mat, aa);
216
+ if (!cH) {
217
+ lR(si, mat, aa);
218
218
  }
219
219
  else {
220
220
  aa.ray.o = si.position + aa.ray.d * EPS;
221
221
  }
222
222
  }
223
223
 
224
- if (!si.albedoSampled && !cG) {
224
+ if (!si.albedoSampled && !cH) {
225
225
 
226
226
  if ((mat.materialType == STANDARD || mat.materialType == UNLIT) &&
227
227
  !(mat.transmissionWeight > 0.5 ||
@@ -243,11 +243,11 @@ si.albedoSampled = true;
243
243
 
244
244
 
245
245
  #ifdef USE_RR
246
- if (depth >= RR_MAX && !cG) {
246
+ if (depth >= RR_MAX && !cH) {
247
247
 
248
- float oj = max(max(aa.beta.x, aa.beta.y), aa.beta.z);
249
- float q = max(0.0, 1.0 - oj);
250
- if (dz(cv(RUSSIAN_ROULETTE)) < q) {
248
+ float oo = max(max(aa.beta.x, aa.beta.y), aa.beta.z);
249
+ float q = max(0.0, 1.0 - oo);
250
+ if (dz(cw(RUSSIAN_ROULETTE)) < q) {
251
251
 
252
252
 
253
253
  aa.alpha = 1.0;
@@ -272,7 +272,7 @@ si.isTransparency = mat.transmissionWeight > 0.001 || mat.subsurfaceWeight > 0.0
272
272
 
273
273
 
274
274
  if (dispersionWavelengths == 1 && si.hit && mat.transmissionWeight > 0.001 && mat.transmissionDispersionScale > 0.001) {
275
- bf = mh;
275
+ bf = mk;
276
276
  }
277
277
  if (mat.transmissionWeight > 0.001 && bf > 0.0) {
278
278
  mat.specularIor = eK(
@@ -283,7 +283,7 @@ mat.dispersionAbbeNumber
283
283
  );
284
284
  }
285
285
 
286
- if (cG) {
286
+ if (cH) {
287
287
  return;
288
288
  }
289
289
 
@@ -293,12 +293,12 @@ bool hu = eo(3u) < mat.alpha;
293
293
  LightSampleRec lightSample;
294
294
  for (int i = 0; i < NUM_LIGHTS; i++) {
295
295
 
296
- Light light = ql(i);
297
- float d = mk(aa.ray, light, lightSample);
298
- bool mp = si.hit && d > distance(si.position, aa.ray.o);
299
- if (d != INF && !(mp && hu)) {
296
+ Light light = qp(i);
297
+ float d = mo(aa.ray, light, lightSample);
298
+ bool mt = si.hit && d > distance(si.position, aa.ray.o);
299
+ if (d != INF && !(mt && hu)) {
300
300
  lightSample.pdf *= light.selectionPmf;
301
- float eW = aF(aa.scatteringPdf, lightSample.pdf);
301
+ float eW = aG(aa.scatteringPdf, lightSample.pdf);
302
302
  lightSample.emission = ai(lightSample.emission, bf);
303
303
  aa.li += eW * aa.beta * lightSample.emission;
304
304
 
@@ -313,10 +313,10 @@ if (!(si.hit && hu)) {
313
313
  if (aa.isNextRefraction) {
314
314
 
315
315
 
316
- vec4 bg = cw(aa.ray.o, aa.ray.d);
316
+ vec4 bg = cx(aa.ray.o, aa.ray.d);
317
317
  bg.rgb = ai(bg.rgb, bf);
318
318
  float cT = aa.scatteringIsDelta ? 1.0
319
- : aF(aa.scatteringPdf,
319
+ : aG(aa.scatteringPdf,
320
320
  iv(aS(aa.ray.d)) * envLightSelectionPmf);
321
321
  aa.li += cT * aa.beta * bg.rgb * bg.a;
322
322
  aa.alpha = max(aa.alpha, bg.a);
@@ -325,7 +325,7 @@ return;
325
325
  }
326
326
  vec2 uv = aS(aa.ray.d);
327
327
  vec3 emission = textureLinear(envMap, uv).rgb;
328
- float eW = aF(
328
+ float eW = aG(
329
329
  aa.scatteringPdf,
330
330
  iv(uv) * envLightSelectionPmf
331
331
  );
@@ -345,105 +345,105 @@ depth++;
345
345
  }
346
346
 
347
347
 
348
- vec2 kn(float radius, float xi) {
348
+ vec2 kp(float radius, float xi) {
349
349
  float x = 0.25;
350
- for (int np = 0; np < 10; np++) {
350
+ for (int ns = 0; ns < 10; ns++) {
351
351
  float x2 = x * x;
352
352
  float x3 = x2 * x;
353
- float kD = 1.0 - x;
353
+ float kG = 1.0 - x;
354
354
  float value = 10.0 * x2 - 20.0 * x3 + 15.0 * x2 * x2 -
355
355
  4.0 * x2 * x3 - xi;
356
- float lV = 20.0 * x * kD * kD * kD;
357
- if (abs(value) < 1e-6 || lV == 0.0) break;
358
- x = clamp(x - value / lV, 0.0, 1.0);
356
+ float lY = 20.0 * x * kG * kG * kG;
357
+ if (abs(value) < 1e-6 || lY == 0.0) break;
358
+ x = clamp(x - value / lY, 0.0, 1.0);
359
359
  }
360
- float jh = x * radius;
360
+ float jj = x * radius;
361
361
  return vec2(
362
- jh,
363
- sqrt(max(radius * radius - jh * jh, 0.0))
362
+ jj,
363
+ sqrt(max(radius * radius - jj * jj, 0.0))
364
364
  );
365
365
  }
366
366
 
367
- float iN(float radius, float gr) {
368
- if (gr >= radius) return 0.0;
369
- float nS = radius - gr;
370
- return nS * nS * nS;
367
+ float iO(float radius, float gs) {
368
+ if (gs >= radius) return 0.0;
369
+ float nV = radius - gs;
370
+ return nV * nV * nV;
371
371
  }
372
372
 
373
373
 
374
- vec3 mf(ad source, float radius) {
374
+ vec3 mi(ad source, float radius) {
375
375
  vec3 geometricNormal = source.faceNormal;
376
376
  if (dot(geometricNormal, source.vertexNormal) < 0.0) geometricNormal = -geometricNormal;
377
377
  vec3 tangent;
378
378
  vec3 bitangent;
379
- aK(geometricNormal, tangent, bitangent);
379
+ aL(geometricNormal, tangent, bitangent);
380
380
  vec3 iB = vec3(0.0);
381
381
 
382
- for (int ib = 0; ib < BEVEL_SAMPLES; ib++) {
383
- vec2 oU = fk(CAMERA_BEVEL_BASE + uint(ib));
384
- float cz = oU.x;
385
- float ou = oU.y;
382
+ for (int ia = 0; ia < BEVEL_SAMPLES; ia++) {
383
+ vec2 oY = fk(CAMERA_BEVEL_BASE + uint(ia));
384
+ float cA = oY.x;
385
+ float ox = oY.y;
386
386
  vec3 di = geometricNormal;
387
387
  vec3 fE = tangent;
388
388
  vec3 ek = bitangent;
389
- float fZ = 0.5;
390
- float hV = 0.25;
391
- float gy = 0.25;
392
- if (cz < 0.5) {
393
- cz *= 2.0;
394
- }
395
- else if (cz < 0.75) {
396
- vec3 mx = di;
389
+ float ga = 0.5;
390
+ float hU = 0.25;
391
+ float gA = 0.25;
392
+ if (cA < 0.5) {
393
+ cA *= 2.0;
394
+ }
395
+ else if (cA < 0.75) {
396
+ vec3 mA = di;
397
397
  di = fE;
398
- fE = mx;
399
- fZ = 0.25;
400
- hV = 0.5;
401
- cz = (cz - 0.5) * 4.0;
398
+ fE = mA;
399
+ ga = 0.25;
400
+ hU = 0.5;
401
+ cA = (cA - 0.5) * 4.0;
402
402
  }
403
403
  else {
404
- vec3 mx = di;
404
+ vec3 mA = di;
405
405
  di = ek;
406
- ek = mx;
407
- fZ = 0.25;
408
- gy = 0.5;
409
- cz = (cz - 0.75) * 4.0;
406
+ ek = mA;
407
+ ga = 0.25;
408
+ gA = 0.5;
409
+ cA = (cA - 0.75) * 4.0;
410
410
  }
411
411
 
412
- vec2 gO = kn(radius, ou);
413
- float phi = TWOPI * cz;
414
- vec3 qj = gO.x *
412
+ vec2 gQ = kp(radius, ox);
413
+ float phi = TWOPI * cA;
414
+ vec3 qn = gQ.x *
415
415
  (cos(phi) * fE + sin(phi) * ek);
416
416
  Ray ray;
417
417
  iw(
418
418
  ray,
419
- source.position + di * gO.y + qj,
419
+ source.position + di * gQ.y + qn,
420
420
  -di
421
421
  );
422
422
  ad hit;
423
- iG(
423
+ iH(
424
424
  ray,
425
425
  hit,
426
426
  source.instanceIndex,
427
- max(2.0 * gO.y, EPS)
427
+ max(2.0 * gQ.y, EPS)
428
428
  );
429
429
  if (!hit.hit) continue;
430
430
 
431
- float kE = fZ * abs(dot(di, hit.faceNormal));
432
- float mt = hV * abs(dot(fE, hit.faceNormal));
433
- float jS = gy * abs(dot(ek, hit.faceNormal));
434
- float weight = kE / max(
435
- kE * kE + mt * mt +
436
- jS * jS,
431
+ float kH = ga * abs(dot(di, hit.faceNormal));
432
+ float mw = hU * abs(dot(fE, hit.faceNormal));
433
+ float jU = gA * abs(dot(ek, hit.faceNormal));
434
+ float weight = kH / max(
435
+ kH * kH + mw * mw +
436
+ jU * jU,
437
437
  1e-8
438
438
  );
439
- weight *= iN(radius, distance(hit.position, source.position)) /
440
- max(iN(radius, gO.x), 1e-8);
439
+ weight *= iO(radius, distance(hit.position, source.position)) /
440
+ max(iO(radius, gQ.x), 1e-8);
441
441
  iB += weight * hit.vertexNormal;
442
442
  }
443
443
 
444
444
  if (dot(iB, iB) <= 1e-12) return source.normal;
445
- vec3 jA = normalize(iB);
446
- vec3 result = source.normal + jA - source.vertexNormal;
445
+ vec3 jC = normalize(iB);
446
+ vec3 result = source.normal + jC - source.vertexNormal;
447
447
  return dot(result, result) > 1e-12 ? normalize(result) : source.normal;
448
448
  }
449
449
 
@@ -473,49 +473,49 @@ return bw(si, ray, mat, outAux);
473
473
 
474
474
 
475
475
 
476
- Ray nK = ray;
477
- nK.o = si.position + ray.d * (EPS * 0.02);
476
+ Ray nN = ray;
477
+ nN.o = si.position + ray.d * (EPS * 0.02);
478
478
  ad dU = si;
479
479
  dU.albedoSampled = false;
480
- cY(nK, dU, false);
481
- J nJ;
482
- eT(nJ, dU.materialIndex, dU.uv, dU.uv1, dU.instanceIndex);
483
- RayTraceAuxiliary gg = outAux;
484
- if (dU.hit && (nJ.materialType == STANDARD || nJ.materialType == UNLIT)) {
485
- gg.albedo = nJ.transmissionWeight > 0.5
480
+ cY(nN, dU, false);
481
+ J nM;
482
+ eT(nM, dU.materialIndex, dU.uv, dU.uv1, dU.instanceIndex);
483
+ RayTraceAuxiliary gh = outAux;
484
+ if (dU.hit && (nM.materialType == STANDARD || nM.materialType == UNLIT)) {
485
+ gh.albedo = nM.transmissionWeight > 0.5
486
486
  ? vec3(1.0)
487
- : nJ.baseColor;
488
- gg.normal = dot(
487
+ : nM.baseColor;
488
+ gh.normal = dot(
489
489
  dU.normal,
490
490
  dU.position - vec3(viewInv[3])
491
491
  ) > 0.0
492
492
  ? -dU.normal
493
493
  : dU.normal;
494
- dU.albedoSampled = nJ.transmissionWeight > 0.5;
494
+ dU.albedoSampled = nM.transmissionWeight > 0.5;
495
495
  }
496
- vec4 back = bw(dU, nK, nJ, gg);
496
+ vec4 back = bw(dU, nN, nM, gh);
497
497
  if (coverage <= 0.0) {
498
- outAux = gg;
498
+ outAux = gh;
499
499
  return back;
500
500
  }
501
501
 
502
- ad te = si;
503
- J tF = mat;
504
- tF.alpha = 1.0;
505
- RayTraceAuxiliary iQ = outAux;
506
- vec4 qL = bw(te, ray, tF, iQ);
507
- outAux.albedo = mix(gg.albedo, iQ.albedo, coverage);
508
- vec3 fR = mix(gg.normal, iQ.normal, coverage);
502
+ ad tk = si;
503
+ J tK = mat;
504
+ tK.alpha = 1.0;
505
+ RayTraceAuxiliary iR = outAux;
506
+ vec4 qQ = bw(tk, ray, tK, iR);
507
+ outAux.albedo = mix(gh.albedo, iR.albedo, coverage);
508
+ vec3 fR = mix(gh.normal, iR.normal, coverage);
509
509
  outAux.normal = dot(fR, fR) > 1e-12
510
510
  ? normalize(fR)
511
511
  : vec3(0.0);
512
- outAux.isBlank = gg.isBlank && iQ.isBlank;
513
- return mix(back, qL, coverage);
512
+ outAux.isBlank = gh.isBlank && iR.isBlank;
513
+ return mix(back, qQ, coverage);
514
514
  }
515
515
 
516
516
 
517
517
 
518
- vec4 mj(Ray ray, out RayTraceAuxiliary outAux) {
518
+ vec4 mn(Ray ray, out RayTraceAuxiliary outAux) {
519
519
 
520
520
  ad si;
521
521
  J mat;
@@ -534,7 +534,7 @@ si.isTransparency = mat.transmissionWeight > 0.001 || mat.subsurfaceWeight > 0.0
534
534
 
535
535
  #ifdef HAS_BEVEL
536
536
  if (bevelEnabled && mat.bevel > 0.0) {
537
- si.normal = mf(si, mat.bevel);
537
+ si.normal = mi(si, mat.bevel);
538
538
  }
539
539
  #endif
540
540
 
@@ -563,20 +563,20 @@ return iz(si, ray, mat, outAux);
563
563
 
564
564
  void main() {
565
565
 
566
- se();
567
- jY(v_Texcoord * viewportSize, int(uint(sampleCount) ^ eg(uint(sequenceSeed))));
566
+ sk();
567
+ ka(v_Texcoord * viewportSize, int(uint(sampleCount) ^ eg(uint(sequenceSeed))));
568
568
 
569
569
 
570
570
  bf = dispersionWavelengths == 1 ? 0.0 : wavelength;
571
- mh = wavelength;
571
+ mk = wavelength;
572
572
  if (dispersionWavelengths == 1 && wavelength > 0.0) {
573
573
  float channel = floor(dz(CAMERA_WAVELENGTH) * 3.0);
574
- mh = channel < 1.0 ? 650.0 : channel < 2.0 ? 510.0 : 475.0;
574
+ mk = channel < 1.0 ? 650.0 : channel < 2.0 ? 510.0 : 475.0;
575
575
  }
576
576
 
577
577
 
578
578
 
579
- Ray cam = nv();
579
+ Ray cam = nC();
580
580
 
581
581
  RayTraceAuxiliary outAux;
582
582
  outAux.albedo = vec3(0.0);
@@ -584,38 +584,38 @@ outAux.normal = vec3(0.0);
584
584
  outAux.isBlank = false;
585
585
  outAux.isShadowCatcher = false;
586
586
 
587
- vec4 aN = mj(cam, outAux);
587
+ vec4 aF = mn(cam, outAux);
588
588
 
589
589
 
590
590
 
591
591
  #ifdef CLAMPING
592
592
  float clamping = float(CLAMPING);
593
- aN.rgb = clamp(aN.rgb, -clamping, clamping);
593
+ aF.rgb = clamp(aF.rgb, -clamping, clamping);
594
594
  #endif
595
595
 
596
596
 
597
597
  if (bf > 0.0) {
598
598
 
599
- aN.rgb *= 3.0;
599
+ aF.rgb *= 3.0;
600
600
  if (dispersionWavelengths != 1) {
601
601
 
602
602
 
603
- aN.a /= 3.0;
603
+ aF.a /= 3.0;
604
604
  }
605
605
  }
606
- if (!(aN.x < INF && aN.x > -EPS)) {
607
- aN = vec4(0, 0, 0, 1);
606
+ if (!(aF.x < INF && aF.x > -EPS)) {
607
+ aF = vec4(0, 0, 0, 1);
608
608
  }
609
609
 
610
- out_color = aN;
610
+ out_color = aF;
611
611
  out_albedo = vec4(outAux.albedo, outAux.isBlank ? 0.0 : 1.0);
612
612
  out_normal = vec4(outAux.normal, 1.0);
613
613
 
614
614
 
615
- float jj = dot(aN.rgb, vec3(0.2126, 0.7152, 0.0722));
615
+ float jl = dot(aF.rgb, vec3(0.2126, 0.7152, 0.0722));
616
616
  out_moments = outAux.isShadowCatcher
617
617
  ? vec4(0.0)
618
- : vec4(jj, jj * jj, 1.0, 0.0);
618
+ : vec4(jl, jl * jl, 1.0, 0.0);
619
619
 
620
620
  }`
621
621
  });
@@ -52,7 +52,7 @@ ${cameraRayGlsl}
52
52
 
53
53
 
54
54
 
55
- vec4 mj(inout Ray ray, out vec4 background) {
55
+ vec4 mn(inout Ray ray, out vec4 background) {
56
56
  background = vec4(0.0);
57
57
  Path aa;
58
58
  aa.ray = ray;
@@ -81,7 +81,7 @@ if (mat.materialType != SHADOW_CATCHER) {
81
81
  return vec4(0.0, 0.0, 0.0, 1.0);
82
82
  }
83
83
 
84
- vec4 bg = cw(ray.o, ray.d);
84
+ vec4 bg = cx(ray.o, ray.d);
85
85
  background = vec4(bg.rgb * bg.a, bg.a);
86
86
  if (!aa.abort) {
87
87
  sampleShadowCatcher(si, 0, aa);
@@ -90,28 +90,28 @@ return vec4(1.0, bg.a, bg.a >= 0.01 ? 1.0 : 0.0, aa.alpha);
90
90
  }
91
91
 
92
92
  void main() {
93
- se();
94
- jY(v_Texcoord * viewportSize, int(uint(sampleCount) ^ eg(uint(sequenceSeed))));
93
+ sk();
94
+ ka(v_Texcoord * viewportSize, int(uint(sampleCount) ^ eg(uint(sequenceSeed))));
95
95
 
96
96
  if (dispersionWavelengths == 1 && wavelength > 0.0) { dz(CAMERA_WAVELENGTH); }
97
- Ray cam = nv();
97
+ Ray cam = nC();
98
98
  vec4 background;
99
- vec4 aN = mj(cam, background);
99
+ vec4 aF = mn(cam, background);
100
100
 
101
- if (!(aN.x < INF && aN.x > -EPS)) {
102
- aN = vec4(0, 0, 0, 1);
101
+ if (!(aF.x < INF && aF.x > -EPS)) {
102
+ aF = vec4(0, 0, 0, 1);
103
103
  }
104
104
 
105
- out_shadowCatcher = aN;
105
+ out_shadowCatcher = aF;
106
106
  out_catcherBackground = background;
107
107
 
108
108
 
109
109
 
110
- float jj = aN.a * (background.a >= 0.01
110
+ float jl = aF.a * (background.a >= 0.01
111
111
  ? dot(background.rgb / background.a, vec3(0.2126, 0.7152, 0.0722))
112
112
  : 1.0);
113
- out_catcherMoments = aN.r > 0.0
114
- ? vec4(jj, jj * jj, 1.0, 0.0)
113
+ out_catcherMoments = aF.r > 0.0
114
+ ? vec4(jl, jl * jl, 1.0, 0.0)
115
115
  : vec4(0.0);
116
116
 
117
117
  }`