@meimu/mutracer 0.1.2 → 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 (125) hide show
  1. package/dist/assets/bvh.worker.js +1 -1
  2. package/dist/mutracer.umd.js +4475 -4337
  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 +68 -68
  17. package/lib/renderer/WGPURayTraceOutput.js +16 -14
  18. package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
  19. package/lib/renderer/WGPURayTracePass.d.ts +2 -0
  20. package/lib/renderer/WGPURayTracePass.js +13 -7
  21. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  22. package/lib/renderer/WGPURenderingPipeline.js +24 -22
  23. package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
  24. package/lib/renderer/WebGLJNLMDenoiser.js +68 -68
  25. package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
  26. package/lib/renderer/WebGLRayTracePass.d.ts +1 -0
  27. package/lib/renderer/WebGLRayTracePass.js +7 -1
  28. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  29. package/lib/renderer/envMapCreation.d.ts +5 -1
  30. package/lib/renderer/envMapCreation.js +42 -5
  31. package/lib/renderer/envMapCreation.js.map +1 -1
  32. package/lib/renderer/geometryUpdates.js +1 -1
  33. package/lib/renderer/geometryUpdates.js.map +1 -1
  34. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +12 -12
  35. package/lib/renderer/glsl/chunks/envMap.glsl.js +69 -57
  36. package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -1
  37. package/lib/renderer/glsl/chunks/intersect.glsl.js +316 -310
  38. package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
  39. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +153 -121
  40. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
  41. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +540 -540
  42. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  43. package/lib/renderer/glsl/chunks/random.glsl.js +4 -4
  44. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +40 -39
  45. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
  46. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +71 -71
  47. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +84 -84
  48. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +13 -13
  49. package/lib/renderer/glsl/chunks/sampling.glsl.js +77 -77
  50. package/lib/renderer/glsl/chunks/sobol.glsl.js +65 -65
  51. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  52. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +11 -11
  53. package/lib/renderer/glsl/depthQuery.frag.js +5 -5
  54. package/lib/renderer/glsl/depthQuery.frag.js.map +1 -1
  55. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +8 -8
  56. package/lib/renderer/glsl/rayTrace.frag.js +165 -165
  57. package/lib/renderer/glsl/rayTrace.frag.js.map +1 -1
  58. package/lib/renderer/glsl/shadowCatcher.frag.js +14 -14
  59. package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
  60. package/lib/renderer/glsl/webglPipeline.frag.js +56 -56
  61. package/lib/renderer/lightsUtil.js +7 -5
  62. package/lib/renderer/lightsUtil.js.map +1 -1
  63. package/lib/renderer/materialChanges.js +1 -1
  64. package/lib/renderer/materialChanges.js.map +1 -1
  65. package/lib/renderer/materialComparison.generated.js +36 -18
  66. package/lib/renderer/materialComparison.generated.js.map +1 -1
  67. package/lib/renderer/prepareMeshBVH.js +2 -2
  68. package/lib/renderer/prepareMeshBVH.js.map +1 -1
  69. package/lib/renderer/sceneChangeDetector.js +4 -1
  70. package/lib/renderer/sceneChangeDetector.js.map +1 -1
  71. package/lib/renderer/sceneLightChanges.js +3 -2
  72. package/lib/renderer/sceneLightChanges.js.map +1 -1
  73. package/lib/renderer/scratchSampling.js +18 -18
  74. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  75. package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +1 -1
  76. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +39 -31
  77. package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -1
  78. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +475 -469
  79. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  80. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +8 -8
  81. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +95 -61
  82. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
  83. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +562 -562
  84. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +1 -1
  85. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +117 -120
  86. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js.map +1 -1
  87. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  88. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +25 -22
  89. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
  90. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +128 -128
  91. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +143 -143
  92. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +6 -6
  93. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +75 -75
  94. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +3 -3
  95. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +2 -2
  96. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
  97. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +69 -69
  98. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +11 -11
  99. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +2 -2
  100. package/lib/renderer/wgsl/compose.frag.wgsl.js +130 -102
  101. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
  102. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  103. package/lib/renderer/wgsl/depthQuery.wgsl.d.ts +1 -1
  104. package/lib/renderer/wgsl/depthQuery.wgsl.js +5 -5
  105. package/lib/renderer/wgsl/depthQuery.wgsl.js.map +1 -1
  106. package/lib/renderer/wgsl/offlineAdaptive.compute.js +28 -28
  107. package/lib/renderer/wgsl/rayTrace.compute.js +289 -277
  108. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  109. package/lib/scene/EnvironmentLight.d.ts +9 -3
  110. package/lib/scene/EnvironmentLight.js +9 -2
  111. package/lib/scene/EnvironmentLight.js.map +1 -1
  112. package/lib/scene/Scene.d.ts +4 -0
  113. package/lib/scene/Scene.js.map +1 -1
  114. package/lib/scene/SpotLight.d.ts +2 -2
  115. package/lib/scene/SpotLight.js +1 -1
  116. package/lib/scene/SpotLight.js.map +1 -1
  117. package/lib/scene/Texture.d.ts +17 -6
  118. package/lib/scene/Texture.js +13 -4
  119. package/lib/scene/Texture.js.map +1 -1
  120. package/lib/util/fromTHREE.js +151 -29
  121. package/lib/util/fromTHREE.js.map +1 -1
  122. package/lib/version.d.ts +1 -1
  123. package/lib/version.js +1 -1
  124. package/lib/version.js.map +1 -1
  125. package/package.json +5 -4
@@ -26,10 +26,10 @@ const uint BOUNCE_STRIDE = 64u;
26
26
 
27
27
  uvec2 bc;
28
28
  uint bd;
29
- uint cE = 0u;
29
+ uint cF = 0u;
30
30
  uint em = 0u;
31
- uint eg(uint ki) {
32
- uint x = ki;
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 ki, uint ie) {
41
- uint x = ki + ie;
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 sv(uint x, uint ie) {
47
- return reverseBits(iA(reverseBits(x), ie));
46
+ uint sK(uint x, uint ij) {
47
+ return reverseBits(iE(reverseBits(x), ij));
48
48
  }
49
49
 
50
- uint qX(uint ki) {
51
- uint r = reverseBits(ki);
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 vD(uint index, uint ie) {
56
- uint i = sv(index, aq(ie, 0u));
57
- uint x = reverseBits(iA(i, aq(ie, 1u)));
58
- uint y = sv(qX(i), aq(ie, 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 tj(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,104 +66,104 @@ 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 kk(uint tm) {
70
- uint group = tm >> 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 >> ((tm & 3u) * 8u)) & 255u;
73
+ return (word >> ((tE & 3u) * 8u)) & 255u;
74
74
  }
75
- uint pK(uint kB, uint dim, uint logSPP) {
75
+ uint pW(uint kN, uint dim, uint logSPP) {
76
76
  uint odd = logSPP & 1u;
77
- uint ua = 8u + ((logSPP + 1u) >> 1u);
77
+ uint um = 8u + ((logSPP + 1u) >> 1u);
78
78
  uint result = 0u;
79
- for (int digit = int(ua) - 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 sd = 0u;
83
- if (shift < 30u) { sd = kB >> (shift + 2u); }
84
- uint tm = (eg(sd ^ (0x55555555u * dim)) >> 24u) % 24u;
85
- uint d = (kB >> shift) & 3u;
86
- result |= ((kk(tm) >> (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 |= (kB & 1u) ^ (eg((kB >> 1u) ^ (0x55555555u * dim)) & 1u);
89
+ result |= (kN & 1u) ^ (eg((kN >> 1u) ^ (0x55555555u * dim)) & 1u);
90
90
  }
91
91
  return result;
92
92
  }
93
93
 
94
94
 
95
95
 
96
- uint cv(uint slot) {
97
- return CAMERA_BEVEL_BASE + uint(BEVEL_SAMPLES) + cE * BOUNCE_STRIDE + slot;
96
+ uint cw(uint slot) {
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 gp;
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 jU = bc.x + bc.y * uint(round(1.0 / pixelSize.x));
110
- uvec4 key = uvec4(dim, bd, jU, 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 ie = aq(aq(jU, 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 iV = index >> logSPP;
121
+ uint jb = index >> logSPP;
122
122
  uint mask = (1u << logSPP) - 1u;
123
- uint kB = (tj(bc) << logSPP) | (index & mask);
124
- index = pK(kB, dim, logSPP);
123
+ uint kN = (tB(bc) << logSPP) | (index & mask);
124
+ index = pW(kN, dim, logSPP);
125
125
  uvec2 tile = bc >> uvec2(8u);
126
- ie = 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) { iV += 1u; }
129
- ie = aq(ie, iV);
128
+ if (bd != 0u) { jb += 1u; }
129
+ ij = aq(ij, jb);
130
130
  }
131
- dE = sv(index, aq(ie, 0u));
132
- gp = ie;
133
- uint x = reverseBits(iA(dE, aq(ie, 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 kG(uint dim) {
136
+ vec2 kS(uint dim) {
137
137
  dw(dim);
138
- if (!df) {
139
- uint y = sv(qX(dE), aq(gp, 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 kG(dim);
155
+ return kS(dim);
156
156
  }
157
157
 
158
158
  float eo(uint slot) {
159
- uint dim = aq(aq(cE, slot), em) | 0x80000000u;
159
+ 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 jU = bc.x + bc.y * uint(round(1.0 / pixelSize.x));
164
- uint ie = aq(aq(jU, dim), uint(sequenceSeed));
165
- uint i = sv(bd, aq(ie, 0u));
166
- uint x = reverseBits(iA(i, aq(ie, 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 pO = 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)) * pO);
19
- vec4 s2 = texture(map, (uv + vec2(1, 0)) * pO);
20
- vec4 s3 = texture(map, (uv + vec2(0, 1)) * pO);
21
- vec4 s4 = texture(map, (uv + vec2(1, 1)) * pO);
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 iL(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 hA(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 gz(int fh, vec3 pos, vec3 normal, vec2 uvScale) {
62
- if (fh == ${uvProjectionConstants.triplanar + ''}) {
63
- return iL(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 hA(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 nV = -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, nV), 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 rI = sample_albedoTex(uv);
20
- float hit = rI.a;
21
- vec4 rM = 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 sc = max(rM.a, 1.0);
26
- vec3 albedo = rI.rgb / sc;
27
- vec3 normal = rM.rgb / sc;
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 sk = sample_colorTex(uv);
29
+ vec4 sB = sample_colorTex(uv);
30
30
 
31
31
 
32
32
 
33
33
 
34
- vec4 light = vec4(sk.rgb / (hit > 0.0 ? hit : sampleCount), sk.a / sampleCount);
34
+ vec4 light = vec4(sB.rgb / (hit > 0.0 ? hit : sampleCount), sB.a / sampleCount);
35
35
 
36
36
 
37
37