@meimu/mutracer 0.1.3 → 0.1.4

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 (118) hide show
  1. package/dist/assets/bvh.worker.js +1 -1
  2. package/dist/mutracer.umd.js +4114 -4015
  3. package/docs/api.md +11 -9
  4. package/docs/threejs.md +30 -4
  5. package/lib/Engine.js +18 -1
  6. package/lib/Engine.js.map +1 -1
  7. package/lib/main.d.ts +1 -1
  8. package/lib/main.js.map +1 -1
  9. package/lib/oidn.d.ts +1 -1
  10. package/lib/oidnBundledWeights.cdn.d.ts +2 -2
  11. package/lib/renderer/MaterialTable.d.ts +1 -0
  12. package/lib/renderer/MaterialTable.js +10 -4
  13. package/lib/renderer/MaterialTable.js.map +1 -1
  14. package/lib/renderer/WGPUBloomPass.js +18 -18
  15. package/lib/renderer/WGPUFullQuadPass.js +6 -6
  16. package/lib/renderer/WGPUJNLMDenoiser.js +69 -69
  17. package/lib/renderer/WGPURayTraceOutput.js +14 -14
  18. package/lib/renderer/WGPURayTracePass.d.ts +2 -0
  19. package/lib/renderer/WGPURayTracePass.js +12 -6
  20. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  21. package/lib/renderer/WGPURenderingPipeline.js +15 -15
  22. package/lib/renderer/WebGLJNLMDenoiser.js +69 -69
  23. package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
  24. package/lib/renderer/WebGLRayTracePass.d.ts +1 -0
  25. package/lib/renderer/WebGLRayTracePass.js +7 -1
  26. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  27. package/lib/renderer/envMapCreation.d.ts +5 -1
  28. package/lib/renderer/envMapCreation.js +42 -5
  29. package/lib/renderer/envMapCreation.js.map +1 -1
  30. package/lib/renderer/geometryUpdates.js +1 -1
  31. package/lib/renderer/geometryUpdates.js.map +1 -1
  32. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +12 -12
  33. package/lib/renderer/glsl/chunks/envMap.glsl.js +66 -54
  34. package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -1
  35. package/lib/renderer/glsl/chunks/intersect.glsl.js +316 -310
  36. package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
  37. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +151 -119
  38. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
  39. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +414 -414
  40. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  41. package/lib/renderer/glsl/chunks/random.glsl.js +3 -3
  42. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +40 -39
  43. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
  44. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +69 -69
  45. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +78 -78
  46. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +12 -12
  47. package/lib/renderer/glsl/chunks/sampling.glsl.js +75 -75
  48. package/lib/renderer/glsl/chunks/sobol.glsl.js +61 -61
  49. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  50. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +11 -11
  51. package/lib/renderer/glsl/depthQuery.frag.js +5 -5
  52. package/lib/renderer/glsl/depthQuery.frag.js.map +1 -1
  53. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +8 -8
  54. package/lib/renderer/glsl/rayTrace.frag.js +133 -133
  55. package/lib/renderer/glsl/rayTrace.frag.js.map +1 -1
  56. package/lib/renderer/glsl/shadowCatcher.frag.js +9 -9
  57. package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
  58. package/lib/renderer/glsl/webglPipeline.frag.js +52 -52
  59. package/lib/renderer/lightsUtil.js +6 -4
  60. package/lib/renderer/lightsUtil.js.map +1 -1
  61. package/lib/renderer/materialChanges.js +1 -1
  62. package/lib/renderer/materialChanges.js.map +1 -1
  63. package/lib/renderer/materialComparison.generated.js +36 -18
  64. package/lib/renderer/materialComparison.generated.js.map +1 -1
  65. package/lib/renderer/prepareMeshBVH.js +2 -2
  66. package/lib/renderer/prepareMeshBVH.js.map +1 -1
  67. package/lib/renderer/sceneChangeDetector.js +4 -1
  68. package/lib/renderer/sceneChangeDetector.js.map +1 -1
  69. package/lib/renderer/sceneLightChanges.js +3 -2
  70. package/lib/renderer/sceneLightChanges.js.map +1 -1
  71. package/lib/renderer/scratchSampling.js +18 -18
  72. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  73. package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +1 -1
  74. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +39 -31
  75. package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -1
  76. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +475 -469
  77. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  78. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +8 -8
  79. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +93 -59
  80. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
  81. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +469 -469
  82. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +1 -1
  83. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +117 -120
  84. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js.map +1 -1
  85. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  86. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +25 -22
  87. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
  88. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +127 -127
  89. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +136 -136
  90. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +6 -6
  91. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +73 -73
  92. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +62 -62
  93. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +11 -11
  94. package/lib/renderer/wgsl/compose.frag.wgsl.js +105 -105
  95. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  96. package/lib/renderer/wgsl/depthQuery.wgsl.d.ts +1 -1
  97. package/lib/renderer/wgsl/depthQuery.wgsl.js +5 -5
  98. package/lib/renderer/wgsl/depthQuery.wgsl.js.map +1 -1
  99. package/lib/renderer/wgsl/offlineAdaptive.compute.js +28 -28
  100. package/lib/renderer/wgsl/rayTrace.compute.js +251 -248
  101. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  102. package/lib/scene/EnvironmentLight.d.ts +9 -3
  103. package/lib/scene/EnvironmentLight.js +9 -2
  104. package/lib/scene/EnvironmentLight.js.map +1 -1
  105. package/lib/scene/Scene.d.ts +4 -0
  106. package/lib/scene/Scene.js.map +1 -1
  107. package/lib/scene/SpotLight.d.ts +2 -2
  108. package/lib/scene/SpotLight.js +1 -1
  109. package/lib/scene/SpotLight.js.map +1 -1
  110. package/lib/scene/Texture.d.ts +17 -6
  111. package/lib/scene/Texture.js +13 -4
  112. package/lib/scene/Texture.js.map +1 -1
  113. package/lib/util/fromTHREE.js +151 -29
  114. package/lib/util/fromTHREE.js.map +1 -1
  115. package/lib/version.d.ts +1 -1
  116. package/lib/version.js +1 -1
  117. package/lib/version.js.map +1 -1
  118. package/package.json +1 -1
@@ -28,8 +28,8 @@ uvec2 bc;
28
28
  uint bd;
29
29
  uint cF = 0u;
30
30
  uint em = 0u;
31
- uint eg(uint kk) {
32
- uint x = kk;
31
+ uint eg(uint kt) {
32
+ uint x = kt;
33
33
  x ^= x >> 16u; x *= 0x7feb352du;
34
34
  x ^= x >> 15u; x *= 0x846ca68bu;
35
35
  return x ^ (x >> 16u);
@@ -37,28 +37,28 @@ return x ^ (x >> 16u);
37
37
  uint aq(uint a, uint b) {
38
38
  return eg(a ^ eg(b + 0x9e3779b9u));
39
39
  }
40
- uint iA(uint kk, uint ic) {
41
- uint x = kk + ic;
40
+ uint iE(uint kt, uint ij) {
41
+ uint x = kt + ij;
42
42
  x ^= x * 0x6c50b47cu; x ^= x * 0xb82f1e52u;
43
43
  x ^= x * 0xc7afe638u; x ^= x * 0x8d22f6e6u;
44
44
  return x;
45
45
  }
46
- uint sC(uint x, uint ic) {
47
- return reverseBits(iA(reverseBits(x), ic));
46
+ uint sK(uint x, uint ij) {
47
+ return reverseBits(iE(reverseBits(x), ij));
48
48
  }
49
49
 
50
- uint rb(uint kk) {
51
- uint r = reverseBits(kk);
50
+ uint rl(uint kt) {
51
+ uint r = reverseBits(kt);
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 vI(uint index, uint ic) {
56
- uint i = sC(index, aq(ic, 0u));
57
- uint x = reverseBits(iA(i, aq(ic, 1u)));
58
- uint y = sC(rb(i), aq(ic, 2u));
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));
59
59
  return vec2(float(x >> 8u), float(y >> 8u)) * (1.0 / 16777216.0);
60
60
  }
61
- uint tp(uvec2 p) {
61
+ uint tB(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,27 +66,27 @@ 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 km(uint tu) {
70
- uint group = tu >> 2u;
69
+ uint kw(uint tE) {
70
+ uint group = tE >> 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 >> ((tu & 3u) * 8u)) & 255u;
73
+ return (word >> ((tE & 3u) * 8u)) & 255u;
74
74
  }
75
- uint pO(uint kE, uint dim, uint logSPP) {
75
+ uint pW(uint kN, uint dim, uint logSPP) {
76
76
  uint odd = logSPP & 1u;
77
- uint uf = 8u + ((logSPP + 1u) >> 1u);
77
+ uint um = 8u + ((logSPP + 1u) >> 1u);
78
78
  uint result = 0u;
79
- for (int digit = int(uf) - 1; digit >= int(odd); digit--) {
79
+ for (int digit = int(um) - 1; digit >= int(odd); digit--) {
80
80
  uint shift = 2u*uint(digit) - odd;
81
81
 
82
- uint sj = 0u;
83
- if (shift < 30u) { sj = kE >> (shift + 2u); }
84
- uint tu = (eg(sj ^ (0x55555555u * dim)) >> 24u) % 24u;
85
- uint d = (kE >> shift) & 3u;
86
- result |= ((km(tu) >> (2u*d)) & 3u) << shift;
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;
87
87
  }
88
88
  if (odd != 0u) {
89
- result |= (kE & 1u) ^ (eg((kE >> 1u) ^ (0x55555555u * dim)) & 1u);
89
+ result |= (kN & 1u) ^ (eg((kN >> 1u) ^ (0x55555555u * dim)) & 1u);
90
90
  }
91
91
  return result;
92
92
  }
@@ -97,62 +97,62 @@ uint cw(uint slot) {
97
97
  return CAMERA_BEVEL_BASE + uint(BEVEL_SAMPLES) + cF * BOUNCE_STRIDE + slot;
98
98
  }
99
99
 
100
- uvec4 hh;
101
- uint hi;
102
- bool fv = false;
103
- bool df = false;
104
- uint dE;
105
- uint gq;
106
- vec2 eN;
100
+ uvec4 hl;
101
+ uint hm;
102
+ bool fB = false;
103
+ bool dg = false;
104
+ uint dF;
105
+ uint gu;
106
+ vec2 eQ;
107
107
  void dw(uint dim) {
108
108
 
109
- uint jW = bc.x + bc.y * uint(round(1.0 / pixelSize.x));
110
- uvec4 key = uvec4(dim, bd, jW, uint(sequenceSeed));
111
- if (fv && all(equal(hh, key)) && hi == uint(zSobolLogSPP)) { return; }
112
- hh = key; hi = uint(zSobolLogSPP);
113
- fv = true; df = false;
114
- uint ic = aq(aq(jW, dim), uint(sequenceSeed));
109
+ uint kd = bc.x + bc.y * uint(round(1.0 / pixelSize.x));
110
+ uvec4 key = uvec4(dim, bd, kd, uint(sequenceSeed));
111
+ if (fB && all(equal(hl, key)) && hm == uint(zSobolLogSPP)) { return; }
112
+ hl = key; hm = uint(zSobolLogSPP);
113
+ fB = true; dg = false;
114
+ uint ij = aq(aq(kd, dim), uint(sequenceSeed));
115
115
  uint index = bd;
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 iW = index >> logSPP;
121
+ uint jb = index >> logSPP;
122
122
  uint mask = (1u << logSPP) - 1u;
123
- uint kE = (tp(bc) << logSPP) | (index & mask);
124
- index = pO(kE, dim, logSPP);
123
+ uint kN = (tB(bc) << logSPP) | (index & mask);
124
+ index = pW(kN, dim, logSPP);
125
125
  uvec2 tile = bc >> uvec2(8u);
126
- ic = aq(aq(dim, uint(sequenceSeed)), aq(tile.x, tile.y));
126
+ ij = aq(aq(dim, uint(sequenceSeed)), aq(tile.x, tile.y));
127
127
 
128
- if (bd != 0u) { iW += 1u; }
129
- ic = aq(ic, iW);
128
+ if (bd != 0u) { jb += 1u; }
129
+ ij = aq(ij, jb);
130
130
  }
131
- dE = sC(index, aq(ic, 0u));
132
- gq = ic;
133
- uint x = reverseBits(iA(dE, aq(ic, 1u)));
134
- eN.x = float(x >> 8u) * (1.0 / 16777216.0);
131
+ dF = sK(index, aq(ij, 0u));
132
+ gu = ij;
133
+ uint x = reverseBits(iE(dF, aq(ij, 1u)));
134
+ eQ.x = float(x >> 8u) * (1.0 / 16777216.0);
135
135
  }
136
- vec2 kJ(uint dim) {
136
+ vec2 kS(uint dim) {
137
137
  dw(dim);
138
- if (!df) {
139
- uint y = sC(rb(dE), aq(gq, 2u));
140
- eN.y = float(y >> 8u) * (1.0 / 16777216.0);
141
- df = true;
138
+ if (!dg) {
139
+ uint y = sK(rl(dF), aq(gu, 2u));
140
+ eQ.y = float(y >> 8u) * (1.0 / 16777216.0);
141
+ dg = true;
142
142
  }
143
- return EPS + (1.0 - 2.0*EPS) * eN;
143
+ return EPS + (1.0 - 2.0*EPS) * eQ;
144
144
  }
145
145
  float dz(uint dim) {
146
146
  if (samplingPattern == 2) { return EPS + (1.0 - 2.0*EPS)*rand(); }
147
147
  dw(dim);
148
- return EPS + (1.0 - 2.0*EPS) * eN.x;
148
+ return EPS + (1.0 - 2.0*EPS) * eQ.x;
149
149
  }
150
- vec2 fk(uint dim) {
150
+ vec2 fo(uint dim) {
151
151
  if (samplingPattern == 2) {
152
152
  float x = dz(dim); float y = dz(dim);
153
153
  return vec2(x,y);
154
154
  }
155
- return kJ(dim);
155
+ return kS(dim);
156
156
  }
157
157
 
158
158
  float eo(uint slot) {
@@ -160,10 +160,10 @@ uint dim = aq(aq(cF, slot), em) | 0x80000000u;
160
160
  em += 1u;
161
161
  if (samplingPattern == 2) { return EPS + (1.0 - 2.0*EPS)*rand(); }
162
162
 
163
- uint jW = bc.x + bc.y * uint(round(1.0 / pixelSize.x));
164
- uint ic = aq(aq(jW, dim), uint(sequenceSeed));
165
- uint i = sC(bd, aq(ic, 0u));
166
- uint x = reverseBits(iA(i, aq(ic, 1u)));
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)));
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 pS = 1.0 / size;
12
+ vec2 qa = 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)) * pS);
19
- vec4 s2 = texture(map, (uv + vec2(1, 0)) * pS);
20
- vec4 s3 = texture(map, (uv + vec2(0, 1)) * pS);
21
- vec4 s4 = texture(map, (uv + vec2(1, 1)) * pS);
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);
22
22
 
23
23
  return mix(mix(s1, s2, f.x), mix(s3, s4, f.x), f.y);
24
24
  #endif
@@ -8,12 +8,12 @@ float phi = acos(n.y) / PI;
8
8
  return vec2(theta, 1.0 - phi);
9
9
  }
10
10
 
11
- vec2 iM(vec3 pos, vec3 normal, vec2 uvScale) {
12
- vec3 dm = abs(normal);
11
+ vec2 iR(vec3 pos, vec3 normal, vec2 uvScale) {
12
+ vec3 dn = abs(normal);
13
13
  vec2 uv = vec2(0.0);
14
- if (dm.x > dm.y && dm.x > dm.z) {
14
+ if (dn.x > dn.y && dn.x > dn.z) {
15
15
  uv = pos.yz;
16
- } else if (dm.y > dm.x && dm.y > dm.z) {
16
+ } else if (dn.y > dn.x && dn.y > dn.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 hz(vec3 pos, vec3 normal) {
56
+ vec2 hD(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 gC(int fh, vec3 pos, vec3 normal, vec2 uvScale) {
62
- if (fh == ${uvProjectionConstants.triplanar + ''}) {
63
- return iM(pos, normal, uvScale);
64
- } else if (fh == ${uvProjectionConstants.spherical + ''}) {
61
+ vec2 gH(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 + ''}) {
65
65
  return sphericalProjection(pos) * uvScale;
66
- } else if (fh == ${uvProjectionConstants.cylindrical + ''}) {
67
- return hz(pos, normal) * uvScale;
66
+ } else if (fk == ${uvProjectionConstants.cylindrical + ''}) {
67
+ return hD(pos, normal) * uvScale;
68
68
  }
69
69
  return vec2(0.0);
70
70
  }
@@ -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
- iw(ray, origin.xyz / origin.w, normalize(target.xyz * origin.w - origin.xyz * target.w));
36
+ iC(ray, origin.xyz / origin.w, normalize(target.xyz * origin.w - origin.xyz * target.w));
37
37
  vec3 eye = viewInv[3].xyz;
38
- vec3 nY = -normalize(viewInv[2].xyz);
38
+ vec3 ol = -normalize(viewInv[2].xyz);
39
39
  ad si;
40
40
  si.triangleIndex = -1;
41
41
  for (int layer = 0; layer < 32; layer++) {
42
- cY(ray, si, false);
42
+ cZ(ray, si, false);
43
43
  if (!si.hit) return;
44
44
  J material;
45
- eT(material, si.materialIndex, si.uv, si.uv1, si.instanceIndex);
45
+ eX(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, nY), 0.0);
47
+ out_depth.r = max(dot(si.position - eye, ol), 0.0);
48
48
  return;
49
49
  }
50
50
  ray.o = si.position + ray.d * (EPS * 0.02);
@@ -1 +1 @@
1
- {"version":3,"file":"depthQuery.frag.js","sourceRoot":"","sources":["../../../src/renderer/glsl/depthQuery.frag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,IAAI,MAAM,+BAA+B,CAAC;AACjD,OAAO,SAAS,MAAM,iCAAiC,CAAC;AACxD,OAAO,SAAS,MAAM,4BAA4B,CAAC;AACnD,OAAO,YAAY,MAAM,+BAA+B,CAAC;AACzD,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,IAAI,MAAM,uBAAuB,CAAC;AAEzC,eAAe,IAAI,cAAc,CAAC;IAChC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;IACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IAC9C,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACjC,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;KAChC;IACD,IAAI,EAAE,UAAU,CAAC;EACjB,MAAM;EACN,IAAI;EACJ,MAAM,CAAC,IAAI;EACX,IAAI,CAAC,IAAI;EACT,YAAY;EACZ,SAAS,CAAC,IAAI;EACd,SAAS,CAAC,IAAI;;;yCAG2B,iBAAiB,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAwB/D;CACA,CAAC,CAAC","sourcesContent":["import { FragmentShader, Shader } from '../shader.js';\nimport { DEPTH_SAMPLE_GRID } from '../depthQuery.js';\nimport common from './chunks/common.glsl.js';\nimport core from './chunks/rayTraceCore.glsl.js';\nimport materials from './chunks/materialBuffer.glsl.js';\nimport intersect from './chunks/intersect.glsl.js';\nimport uvProjection from './chunks/uvProjection.glsl.js';\nimport random from './chunks/random.glsl.js';\nimport rand from './chunks/rand.glsl.js';\n\nexport default new FragmentShader({\n name: 'depthQuery', outputs: ['depth'],\n defines: { DEPTH_QUERY_MODE: true },\n includes: [core, materials, intersect, random],\n uniforms: {\n depthArea: Shader.uniform('vec4'),\n viewProjectionInv: Shader.uniform('mat4'),\n viewInv: Shader.uniform('mat4')\n },\n main: /* glsl */ `\n${common}\n${rand}\n${random.main}\n${core.main}\n${uvProjection}\n${materials.main}\n${intersect.main}\n\nvoid main() {\n vec2 offset = floor(gl_FragCoord.xy) / ${DEPTH_SAMPLE_GRID - 1}.0 * 2.0 - 1.0;\n vec2 uv = depthArea.xy + depthArea.zw * offset * vec2(1.0, -1.0);\n out_depth = vec4(0.0);\n if (any(lessThan(uv, vec2(0.0))) || any(greaterThan(uv, vec2(1.0)))) return;\n vec4 origin = viewProjectionInv * vec4(uv * 2.0 - 1.0, -1.0, 1.0);\n vec4 target = viewProjectionInv * vec4(uv * 2.0 - 1.0, 1.0, 1.0);\n Ray ray;\n initRay(ray, origin.xyz / origin.w, normalize(target.xyz * origin.w - origin.xyz * target.w));\n vec3 eye = viewInv[3].xyz;\n vec3 forward = -normalize(viewInv[2].xyz);\n SurfaceInteraction si;\n si.triangleIndex = -1;\n for (int layer = 0; layer < 32; layer++) {\n intersectScene(ray, si, false);\n if (!si.hit) return;\n OpenPbrResolvedMaterial material;\n getMaterial(material, si.materialIndex, si.uv, si.uv1, si.instanceIndex);\n if (material.materialType != SHADOW_CATCHER && material.alpha > 0.0) {\n out_depth.r = max(dot(si.position - eye, forward), 0.0);\n return;\n }\n ray.o = si.position + ray.d * (EPS * 0.02);\n }\n}\n`\n});\n"]}
1
+ {"version":3,"file":"depthQuery.frag.js","sourceRoot":"","sources":["../../../src/renderer/glsl/depthQuery.frag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,IAAI,MAAM,+BAA+B,CAAC;AACjD,OAAO,SAAS,MAAM,iCAAiC,CAAC;AACxD,OAAO,SAAS,MAAM,4BAA4B,CAAC;AACnD,OAAO,YAAY,MAAM,+BAA+B,CAAC;AACzD,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,IAAI,MAAM,uBAAuB,CAAC;AAEzC,eAAe,IAAI,cAAc,CAAC;IAChC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;IACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IAC9C,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACjC,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;KAChC;IACD,IAAI,EAAE,UAAU,CAAC;EACjB,MAAM;EACN,IAAI;EACJ,MAAM,CAAC,IAAI;EACX,IAAI,CAAC,IAAI;EACT,YAAY;EACZ,SAAS,CAAC,IAAI;EACd,SAAS,CAAC,IAAI;;;yCAG2B,iBAAiB,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAwB/D;CACA,CAAC,CAAC","sourcesContent":["import { FragmentShader, Shader } from '../shader.js';\nimport { DEPTH_SAMPLE_GRID } from '../depthQuery.js';\nimport common from './chunks/common.glsl.js';\nimport core from './chunks/rayTraceCore.glsl.js';\nimport materials from './chunks/materialBuffer.glsl.js';\nimport intersect from './chunks/intersect.glsl.js';\nimport uvProjection from './chunks/uvProjection.glsl.js';\nimport random from './chunks/random.glsl.js';\nimport rand from './chunks/rand.glsl.js';\n\nexport default new FragmentShader({\n name: 'depthQuery', outputs: ['depth'],\n defines: { DEPTH_QUERY_MODE: true },\n includes: [core, materials, intersect, random],\n uniforms: {\n depthArea: Shader.uniform('vec4'),\n viewProjectionInv: Shader.uniform('mat4'),\n viewInv: Shader.uniform('mat4')\n },\n main: /* glsl */ `\n${common}\n${rand}\n${random.main}\n${core.main}\n${uvProjection}\n${materials.main}\n${intersect.main}\n\nvoid main() {\n vec2 offset = floor(gl_FragCoord.xy) / ${DEPTH_SAMPLE_GRID - 1}.0 * 2.0 - 1.0;\n vec2 uv = depthArea.xy + depthArea.zw * offset * vec2(1.0, -1.0);\n out_depth = vec4(0.0);\n if (any(lessThan(uv, vec2(0.0))) || any(greaterThan(uv, vec2(1.0)))) return;\n vec4 origin = viewProjectionInv * vec4(uv * 2.0 - 1.0, -1.0, 1.0);\n vec4 target = viewProjectionInv * vec4(uv * 2.0 - 1.0, 1.0, 1.0);\n Ray ray;\n initRay(ray, origin.xyz / origin.w, normalize(target.xyz * origin.w - origin.xyz * target.w));\n vec3 eye = viewInv[3].xyz;\n vec3 forward = -normalize(viewInv[2].xyz);\n SurfaceInteraction si;\n si.triangleIndex = -1;\n for (int layer = 0; layer < 32; layer++) {\n intersectScene(ray, si, false);\n if (!si.hit) return;\n OpenPbrResolvedMaterial material;\n getMaterial(material, si.materialIndex, si.uv, si.uv1, si.instanceIndex, si.vertexColor);\n if (material.materialType != SHADOW_CATCHER && material.alpha > 0.0) {\n out_depth.r = max(dot(si.position - eye, forward), 0.0);\n return;\n }\n ray.o = si.position + ray.d * (EPS * 0.02);\n }\n}\n`\n});\n"]}
@@ -16,22 +16,22 @@ const normalizeRayTraceOutput = new FragmentShader({
16
16
  main: glsl `
17
17
  void main() {
18
18
  vec2 uv = lightScale * v_Texcoord;
19
- vec4 rN = sample_albedoTex(uv);
20
- float hit = rN.a;
21
- vec4 rR = sample_normalTex(uv);
19
+ vec4 rV = sample_albedoTex(uv);
20
+ float hit = rV.a;
21
+ vec4 rZ = sample_normalTex(uv);
22
22
 
23
23
 
24
24
 
25
- float sh = max(rR.a, 1.0);
26
- vec3 albedo = rN.rgb / sh;
27
- vec3 normal = rR.rgb / sh;
25
+ float sr = max(rZ.a, 1.0);
26
+ vec3 albedo = rV.rgb / sr;
27
+ vec3 normal = rZ.rgb / sr;
28
28
  vec4 shadowCatcher= sample_shadowCatcherTex(uv) / sampleCount;
29
- vec4 sq = sample_colorTex(uv);
29
+ vec4 sB = sample_colorTex(uv);
30
30
 
31
31
 
32
32
 
33
33
 
34
- vec4 light = vec4(sq.rgb / (hit > 0.0 ? hit : sampleCount), sq.a / sampleCount);
34
+ vec4 light = vec4(sB.rgb / (hit > 0.0 ? hit : sampleCount), sB.a / sampleCount);
35
35
 
36
36
 
37
37