@meimu/mutracer 0.1.1 → 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 (95) hide show
  1. package/dist/assets/bvh.worker.js +1 -1
  2. package/dist/mutracer.umd.js +3525 -3484
  3. package/docs/materials.md +27 -7
  4. package/docs/threejs.md +13 -2
  5. package/docs/viewer.md +53 -0
  6. package/lib/oidn.d.ts +1 -1
  7. package/lib/oidnBundledWeights.cdn.d.ts +2 -2
  8. package/lib/renderer/MaterialTable.d.ts +1 -0
  9. package/lib/renderer/MaterialTable.js +2 -1
  10. package/lib/renderer/MaterialTable.js.map +1 -1
  11. package/lib/renderer/WGPUBloomPass.js +18 -18
  12. package/lib/renderer/WGPUFullQuadPass.js +3 -3
  13. package/lib/renderer/WGPUJNLMDenoiser.js +62 -62
  14. package/lib/renderer/WGPURayTraceOutput.js +14 -12
  15. package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
  16. package/lib/renderer/WGPURayTracePass.js +2 -2
  17. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  18. package/lib/renderer/WGPURenderingPipeline.js +20 -18
  19. package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
  20. package/lib/renderer/WebGLJNLMDenoiser.js +61 -61
  21. package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
  22. package/lib/renderer/WebGLRayTracePass.js +3 -1
  23. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  24. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +9 -9
  25. package/lib/renderer/glsl/chunks/envMap.glsl.js +45 -45
  26. package/lib/renderer/glsl/chunks/intersect.glsl.js +262 -262
  27. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +111 -111
  28. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +436 -436
  29. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  30. package/lib/renderer/glsl/chunks/random.glsl.js +3 -3
  31. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +32 -32
  32. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +54 -54
  33. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +71 -71
  34. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +12 -12
  35. package/lib/renderer/glsl/chunks/sampling.glsl.js +64 -64
  36. package/lib/renderer/glsl/chunks/sobol.glsl.js +49 -49
  37. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  38. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +5 -5
  39. package/lib/renderer/glsl/depthQuery.frag.js +2 -2
  40. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +8 -8
  41. package/lib/renderer/glsl/rayTrace.frag.js +128 -128
  42. package/lib/renderer/glsl/shadowCatcher.frag.js +12 -12
  43. package/lib/renderer/glsl/webglPipeline.frag.js +49 -49
  44. package/lib/renderer/lightsUtil.js +1 -1
  45. package/lib/renderer/lightsUtil.js.map +1 -1
  46. package/lib/renderer/materialComparison.generated.js +5 -0
  47. package/lib/renderer/materialComparison.generated.js.map +1 -1
  48. package/lib/renderer/materialLayout.js +2 -1
  49. package/lib/renderer/materialLayout.js.map +1 -1
  50. package/lib/renderer/prepareMeshBVH.d.ts +4 -2
  51. package/lib/renderer/prepareMeshBVH.js +44 -20
  52. package/lib/renderer/prepareMeshBVH.js.map +1 -1
  53. package/lib/renderer/scratchSampling.js +6 -6
  54. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  55. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +29 -29
  56. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +376 -379
  57. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  58. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +5 -5
  59. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +51 -51
  60. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +453 -453
  61. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +1 -1
  62. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +122 -117
  63. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js.map +1 -1
  64. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  65. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +13 -13
  66. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +94 -94
  67. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +119 -119
  68. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +5 -5
  69. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +62 -62
  70. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +3 -3
  71. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +2 -2
  72. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
  73. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +53 -53
  74. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +5 -5
  75. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +2 -2
  76. package/lib/renderer/wgsl/compose.frag.wgsl.js +120 -92
  77. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
  78. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  79. package/lib/renderer/wgsl/depthQuery.wgsl.js +3 -3
  80. package/lib/renderer/wgsl/offlineAdaptive.compute.js +26 -26
  81. package/lib/renderer/wgsl/rayTrace.compute.js +220 -211
  82. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  83. package/lib/scene/OpenPBRMaterial.d.ts +4 -2
  84. package/lib/scene/OpenPBRMaterial.js +4 -2
  85. package/lib/scene/OpenPBRMaterial.js.map +1 -1
  86. package/lib/scene/openPbrSchema.d.ts +7 -2
  87. package/lib/scene/openPbrSchema.js +2 -1
  88. package/lib/scene/openPbrSchema.js.map +1 -1
  89. package/lib/util/fromTHREE.d.ts +1 -0
  90. package/lib/util/fromTHREE.js +24 -6
  91. package/lib/util/fromTHREE.js.map +1 -1
  92. package/lib/version.d.ts +1 -1
  93. package/lib/version.js +1 -1
  94. package/lib/version.js.map +1 -1
  95. package/package.json +5 -4
@@ -13,24 +13,24 @@ ${skipTriangleCode}
13
13
  vec4 r3 = dp(triangleIndex);
14
14
  ivec3 index = floatBitsToInt(r3.xyz) + vertexOffset;
15
15
  fu tri = fu(
16
- kw(positionBuffer, index.x, vertexColumns).xyz,
17
- kw(positionBuffer, index.y, vertexColumns).xyz,
18
- kw(positionBuffer, index.z, vertexColumns).xyz
16
+ ky(positionBuffer, index.x, vertexColumns).xyz,
17
+ ky(positionBuffer, index.y, vertexColumns).xyz,
18
+ ky(positionBuffer, index.z, vertexColumns).xyz
19
19
  );
20
- eB hit = fI(o, d, tri, ey, gJ, tMax);
20
+ eB hit = fI(o, d, tri, ey, gL, tMax);
21
21
 
22
22
  if (hit.t > 0.0) {
23
23
  tMax = hit.t;
24
24
  vec3 e1 = tri.p1 - tri.p0;
25
25
  vec3 e2 = tri.p2 - tri.p0;
26
26
  vec3 faceNormal = normalize(cross(e1, e2));
27
- int kb = int(ae(
27
+ int kd = int(ae(
28
28
  floatBitsToInt(bv(cf * ${INSTANCE_VEC4_STRIDE}).z)
29
29
  ).x);
30
- bool iH = fetchMatData(
31
- kb * MAT_DATA_SIZE + MAT_ROW_ALPHA
30
+ bool iI = fetchMatData(
31
+ kd * MAT_DATA_SIZE + MAT_ROW_ALPHA
32
32
  ).z > 0.5;
33
- if (!doubleSided && !iH && dot(faceNormal, d) > 0.0) {
33
+ if (!doubleSided && !iI && dot(faceNormal, d) > 0.0) {
34
34
  continue;
35
35
  }
36
36
 
@@ -41,31 +41,31 @@ ${handleHitCode}
41
41
  return glsl `
42
42
  ivec2 stack[STACK_SIZE];
43
43
  int top = -1;
44
- int sB = -1;
44
+ int sG = -1;
45
45
  float tMax = ${initialTMax};
46
46
 
47
47
  vec3 o = ray.o;
48
48
  vec3 d = ray.d;
49
49
 
50
- bool qP = false;
51
- vec3 hy;
50
+ bool qT = false;
51
+ vec3 hx;
52
52
  vec3 aB;
53
53
  ivec3 hs;
54
54
 
55
- fu lm;
55
+ fu lp;
56
56
 
57
57
 
58
58
  top = 0;
59
59
  stack[0] = ivec2(0, -1);
60
60
 
61
- int wd = 0;
62
- while(top >= 0 && wd < 5000) {
63
- wd++;
61
+ int wk = 0;
62
+ while(top >= 0 && wk < 5000) {
63
+ wk++;
64
64
  ivec2 node = stack[top--];
65
65
 
66
66
  int cf = node.y;
67
67
 
68
- if (cf != sB) {
68
+ if (cf != sG) {
69
69
  if (cf < 0) {
70
70
  o = ray.o;
71
71
  d = ray.d;
@@ -81,110 +81,110 @@ o = (w2l * vec4(ray.o, 1.0)).xyz;
81
81
  d = (w2l * vec4(ray.d, 0.0)).xyz;
82
82
  }
83
83
  ey = maxDimension(abs(d));
84
- gJ = mg(d, ey);
85
- sB = cf;
84
+ gL = mj(d, ey);
85
+ sG = cf;
86
86
  }
87
87
 
88
88
  int bo = cf < 0 ? 0 : blasOffset;
89
89
  uint fG = cf < 0 ? 0u : floatBitsToUint(bv(cf * ${INSTANCE_VEC4_STRIDE}).x);
90
- int gL = int(fG >> 30u);
90
+ int gN = int(fG >> 30u);
91
91
  int eS = int(fG & 0x3fffffffu);
92
92
  int bh = 0;
93
93
  int primitiveOffset = 0;
94
94
 
95
- if (gL == 3) {
96
- uint hT = uint(node.x);
97
- if ((hT & 0x80000000u) != 0u) {
98
- bh = int((hT >> 23u) & 0xffu);
99
- primitiveOffset = bo + eS + int(hT & 0x007fffffu);
95
+ if (gN == 3) {
96
+ uint hS = uint(node.x);
97
+ if ((hS & 0x80000000u) != 0u) {
98
+ bh = int((hS >> 23u) & 0xffu);
99
+ primitiveOffset = bo + eS + int(hS & 0x007fffffu);
100
100
  }
101
101
  else {
102
102
  int i = node.x + bo;
103
- vec4 jr = dp(i);
103
+ vec4 ju = dp(i);
104
104
  vec4 fC = dp(i + 1);
105
- vec4 mH = dp(i + 2);
106
- vec4 mI = dp(i + 3);
107
- vec4 mJ = dp(i + 4);
108
- uint header = floatBitsToUint(jr.w);
109
- int rq = int(header << 24u) >> 24;
110
- int rr = int((header >> 8u) << 24u) >> 24;
111
- int rs = int((header >> 16u) << 24u) >> 24;
112
- vec3 hG = vec3(
113
- uintBitsToFloat(uint(rq + 127) << 23u),
114
- uintBitsToFloat(uint(rr + 127) << 23u),
115
- uintBitsToFloat(uint(rs + 127) << 23u)
105
+ vec4 mK = dp(i + 2);
106
+ vec4 mL = dp(i + 3);
107
+ vec4 mM = dp(i + 4);
108
+ uint header = floatBitsToUint(ju.w);
109
+ int rv = int(header << 24u) >> 24;
110
+ int rw = int((header >> 8u) << 24u) >> 24;
111
+ int rA = int((header >> 16u) << 24u) >> 24;
112
+ vec3 hF = vec3(
113
+ uintBitsToFloat(uint(rv + 127) << 23u),
114
+ uintBitsToFloat(uint(rw + 127) << 23u),
115
+ uintBitsToFloat(uint(rA + 127) << 23u)
116
116
  );
117
117
  uint childBase = floatBitsToUint(fC.x);
118
- uint oE = floatBitsToUint(fC.y);
118
+ uint oH = floatBitsToUint(fC.y);
119
119
  uint internalMask = header >> 24u;
120
- uint uf = (d.x < 0.0 ? 4u : 0u) |
120
+ uint ul = (d.x < 0.0 ? 4u : 0u) |
121
121
  (d.y < 0.0 ? 2u : 0u) |
122
122
  (d.z < 0.0 ? 1u : 0u);
123
- uint gA[12] = uint[12](
124
- floatBitsToUint(mH.x), floatBitsToUint(mH.y),
125
- floatBitsToUint(mH.z), floatBitsToUint(mH.w),
126
- floatBitsToUint(mI.x), floatBitsToUint(mI.y),
127
- floatBitsToUint(mI.z), floatBitsToUint(mI.w),
128
- floatBitsToUint(mJ.x), floatBitsToUint(mJ.y),
129
- floatBitsToUint(mJ.z), floatBitsToUint(mJ.w)
123
+ uint gE[12] = uint[12](
124
+ floatBitsToUint(mK.x), floatBitsToUint(mK.y),
125
+ floatBitsToUint(mK.z), floatBitsToUint(mK.w),
126
+ floatBitsToUint(mL.x), floatBitsToUint(mL.y),
127
+ floatBitsToUint(mL.z), floatBitsToUint(mL.w),
128
+ floatBitsToUint(mM.x), floatBitsToUint(mM.y),
129
+ floatBitsToUint(mM.z), floatBitsToUint(mM.w)
130
130
  );
131
131
 
132
132
  for (int order = 7; order >= 0; order--) {
133
- uint slot = uint(order) ^ uf;
134
- uint sn = slot >= 4u
133
+ uint slot = uint(order) ^ ul;
134
+ uint su = slot >= 4u
135
135
  ? floatBitsToUint(fC.w)
136
136
  : floatBitsToUint(fC.z);
137
- uint meta = (sn >> ((slot & 3u) * 8u)) & 0xffu;
137
+ uint meta = (su >> ((slot & 3u) * 8u)) & 0xffu;
138
138
  if (meta == 0u) continue;
139
- uint lL = (slot & 3u) * 8u;
140
- uint kJ = slot >> 2u;
141
- vec3 tq = vec3(
142
- float((gA[kJ] >> lL) & 0xffu),
143
- float((gA[2u + kJ] >> lL) & 0xffu),
144
- float((gA[4u + kJ] >> lL) & 0xffu)
139
+ uint lO = (slot & 3u) * 8u;
140
+ uint kM = slot >> 2u;
141
+ vec3 tA = vec3(
142
+ float((gE[kM] >> lO) & 0xffu),
143
+ float((gE[2u + kM] >> lO) & 0xffu),
144
+ float((gE[4u + kM] >> lO) & 0xffu)
145
145
  );
146
- vec3 tp = vec3(
147
- float((gA[6u + kJ] >> lL) & 0xffu),
148
- float((gA[8u + kJ] >> lL) & 0xffu),
149
- float((gA[10u + kJ] >> lL) & 0xffu)
146
+ vec3 tw = vec3(
147
+ float((gE[6u + kM] >> lO) & 0xffu),
148
+ float((gE[8u + kM] >> lO) & 0xffu),
149
+ float((gE[10u + kM] >> lO) & 0xffu)
150
150
  );
151
- vec3 uI = jr.xyz + tq * hG;
152
- vec3 uH = jr.xyz + tp * hG;
153
- if (cM(o, d, uI, uH, tMax) <= 0.0) continue;
154
- uint ju = meta & 0x1fu;
155
- if (ju >= 24u) {
156
- uint mY = internalMask & ((1u << slot) - 1u);
157
- uint sL = childBase + qG(mY);
151
+ vec3 uP = ju.xyz + tA * hF;
152
+ vec3 uO = ju.xyz + tw * hF;
153
+ if (cM(o, d, uP, uO, tMax) <= 0.0) continue;
154
+ uint jw = meta & 0x1fu;
155
+ if (jw >= 24u) {
156
+ uint ne = internalMask & ((1u << slot) - 1u);
157
+ uint sQ = childBase + qK(ne);
158
158
  stack[++top] = ivec2(
159
- eS + int(sL * 5u), cf
159
+ eS + int(sQ * 5u), cf
160
160
  );
161
161
  }
162
162
  else {
163
- uint triangleCount = qG(meta >> 5u);
164
- uint rF = oE + ju;
165
- uint uS = 0x80000000u |
163
+ uint triangleCount = qK(meta >> 5u);
164
+ uint rK = oH + jw;
165
+ uint uZ = 0x80000000u |
166
166
  (triangleCount << 23u) |
167
- (rF & 0x007fffffu);
168
- stack[++top] = ivec2(int(uS), cf);
167
+ (rK & 0x007fffffu);
168
+ stack[++top] = ivec2(int(uZ), cf);
169
169
  }
170
170
  }
171
171
  }
172
172
  }
173
- else if (gL == 2) {
173
+ else if (gN == 2) {
174
174
  int i = node.x + bo;
175
- vec4 uK = dp(i);
176
- vec4 uL = dp(i + 1);
177
- vec4 uM = dp(i + 2);
178
- vec4 uN = dp(i + 3);
179
- bh = int(floatBitsToUint(uM.w));
175
+ vec4 uR = dp(i);
176
+ vec4 uS = dp(i + 1);
177
+ vec4 uT = dp(i + 2);
178
+ vec4 uU = dp(i + 3);
179
+ bh = int(floatBitsToUint(uT.w));
180
180
  if (bh > 0) {
181
- primitiveOffset = bo + eS + int(floatBitsToUint(uN.w));
181
+ primitiveOffset = bo + eS + int(floatBitsToUint(uU.w));
182
182
  }
183
183
  else {
184
- int left = eS + int(floatBitsToUint(uK.w) * 4u);
185
- int right = eS + int(floatBitsToUint(uL.w) * 4u);
186
- float d0 = cM(o, d, uK.xyz, uL.xyz, tMax);
187
- float d1 = cM(o, d, uM.xyz, uN.xyz, tMax);
184
+ int left = eS + int(floatBitsToUint(uR.w) * 4u);
185
+ int right = eS + int(floatBitsToUint(uS.w) * 4u);
186
+ float d0 = cM(o, d, uR.xyz, uS.xyz, tMax);
187
+ float d1 = cM(o, d, uT.xyz, uU.xyz, tMax);
188
188
  if (d0 > d1) {
189
189
  if (d0 > 0.0) stack[++top] = ivec2(left, cf);
190
190
  if (d1 > 0.0) stack[++top] = ivec2(right, cf);
@@ -195,42 +195,42 @@ if (d0 > 0.0) stack[++top] = ivec2(left, cf);
195
195
  }
196
196
  }
197
197
  }
198
- else if (gL == 1) {
199
- uint hT = uint(node.x);
200
- if ((hT & 0x80000000u) != 0u) {
201
- bh = int((hT >> 23u) & 0xffu);
202
- primitiveOffset = bo + eS + int(hT & 0x007fffffu);
198
+ else if (gN == 1) {
199
+ uint hS = uint(node.x);
200
+ if ((hS & 0x80000000u) != 0u) {
201
+ bh = int((hS >> 23u) & 0xffu);
202
+ primitiveOffset = bo + eS + int(hS & 0x007fffffu);
203
203
  }
204
204
  else {
205
205
  int i = node.x + bo;
206
- vec4 tV = dp(i);
207
- vec4 ra = dp(i + 1);
208
- vec4 rb = dp(i + 2);
209
- vec4 rc = dp(i + 3);
210
- vec3 nodeMin = tV.xyz;
211
- vec3 ec = vec3(tV.w, ra.x, ra.y);
212
- uint lS[4] = uint[4](
213
- floatBitsToUint(ra.z), floatBitsToUint(ra.w),
214
- floatBitsToUint(rb.x), floatBitsToUint(rb.y)
206
+ vec4 ub = dp(i);
207
+ vec4 rf = dp(i + 1);
208
+ vec4 rh = dp(i + 2);
209
+ vec4 ri = dp(i + 3);
210
+ vec3 nodeMin = ub.xyz;
211
+ vec3 ec = vec3(ub.w, rf.x, rf.y);
212
+ uint lV[4] = uint[4](
213
+ floatBitsToUint(rf.z), floatBitsToUint(rf.w),
214
+ floatBitsToUint(rh.x), floatBitsToUint(rh.y)
215
215
  );
216
- vec4 rj = eY(floatBitsToUint(rb.z));
217
- vec4 rk = eY(floatBitsToUint(rb.w));
218
- vec4 rl = eY(floatBitsToUint(rc.x));
219
- vec4 rf = eY(floatBitsToUint(rc.y));
220
- vec4 rh = eY(floatBitsToUint(rc.z));
221
- vec4 ri = eY(floatBitsToUint(rc.w));
222
- vec3 gv = eX(d);
223
- vec3 bJ = eV(gv, o);
224
- vec4 tx0 = (nodeMin.x + rj * ec.x - o.x) * gv.x;
225
- vec4 tx1 = (nodeMin.x + rf * ec.x - o.x) * gv.x;
226
- vec4 ty0 = (nodeMin.y + rk * ec.y - o.y) * gv.y;
227
- vec4 ty1 = (nodeMin.y + rh * ec.y - o.y) * gv.y;
228
- vec4 tz0 = (nodeMin.z + rl * ec.z - o.z) * gv.z;
229
- vec4 tz1 = (nodeMin.z + ri * ec.z - o.z) * gv.z;
230
- vec4 my = max(max((min(tx0, tx1) - vec4(bJ.x)), (min(ty0, ty1) - vec4(bJ.y))), (min(tz0, tz1) - vec4(bJ.z)));
231
- vec4 rH = min(min((max(tx0, tx1) + vec4(bJ.x)), (max(ty0, ty1) + vec4(bJ.y))), (max(tz0, tz1) + vec4(bJ.z)));
232
- vec4 distance = mix(rH, my, greaterThan(my, vec4(0.0)));
233
- distance = mix(distance, vec4(-1.0), greaterThan(my, min(rH, vec4(tMax))));
216
+ vec4 ro = eY(floatBitsToUint(rh.z));
217
+ vec4 rp = eY(floatBitsToUint(rh.w));
218
+ vec4 rq = eY(floatBitsToUint(ri.x));
219
+ vec4 rl = eY(floatBitsToUint(ri.y));
220
+ vec4 rm = eY(floatBitsToUint(ri.z));
221
+ vec4 rn = eY(floatBitsToUint(ri.w));
222
+ vec3 gx = eX(d);
223
+ vec3 bJ = eV(gx, o);
224
+ vec4 tx0 = (nodeMin.x + ro * ec.x - o.x) * gx.x;
225
+ vec4 tx1 = (nodeMin.x + rl * ec.x - o.x) * gx.x;
226
+ vec4 ty0 = (nodeMin.y + rp * ec.y - o.y) * gx.y;
227
+ vec4 ty1 = (nodeMin.y + rm * ec.y - o.y) * gx.y;
228
+ vec4 tz0 = (nodeMin.z + rq * ec.z - o.z) * gx.z;
229
+ vec4 tz1 = (nodeMin.z + rn * ec.z - o.z) * gx.z;
230
+ vec4 mB = max(max((min(tx0, tx1) - vec4(bJ.x)), (min(ty0, ty1) - vec4(bJ.y))), (min(tz0, tz1) - vec4(bJ.z)));
231
+ vec4 rM = min(min((max(tx0, tx1) + vec4(bJ.x)), (max(ty0, ty1) + vec4(bJ.y))), (max(tz0, tz1) + vec4(bJ.z)));
232
+ vec4 distance = mix(rM, mB, greaterThan(mB, vec4(0.0)));
233
+ distance = mix(distance, vec4(-1.0), greaterThan(mB, min(rM, vec4(tMax))));
234
234
  float fa[4] = float[4](distance.x, distance.y, distance.z, distance.w);
235
235
 
236
236
 
@@ -238,18 +238,18 @@ for (int order = 0; order < 4; order++) {
238
238
  float dX = -1.0;
239
239
  int el = -1;
240
240
  for (int child = 0; child < 4; child++) {
241
- if (lS[child] != 0u && fa[child] > dX) {
241
+ if (lV[child] != 0u && fa[child] > dX) {
242
242
  dX = fa[child];
243
243
  el = child;
244
244
  }
245
245
  }
246
246
  if (el >= 0 && dX > 0.0) {
247
- uint ni = lS[el];
248
- int jB = int(ni);
249
- if ((ni & 0x80000000u) == 0u) {
250
- jB += eS;
247
+ uint nl = lV[el];
248
+ int jD = int(nl);
249
+ if ((nl & 0x80000000u) == 0u) {
250
+ jD += eS;
251
251
  }
252
- stack[++top] = ivec2(jB, cf);
252
+ stack[++top] = ivec2(jD, cf);
253
253
  fa[el] = -1.0;
254
254
  }
255
255
  }
@@ -347,7 +347,7 @@ return t2;
347
347
  return INF;
348
348
  }
349
349
 
350
- float mR(vec3 pos, vec3 u, vec3 v, vec3 n, Ray r) {
350
+ float mU(vec3 pos, vec3 u, vec3 v, vec3 n, Ray r) {
351
351
  float dt = dot(r.d, n);
352
352
  float t = (dot(n, pos) - dot(n, r.o)) / dt;
353
353
 
@@ -366,7 +366,7 @@ return t;
366
366
  return INF;
367
367
  }
368
368
 
369
- float mk(Ray r, Light light, out LightSampleRec lightSample) {
369
+ float mo(Ray r, Light light, out LightSampleRec lightSample) {
370
370
 
371
371
 
372
372
 
@@ -383,7 +383,7 @@ vec3 normal = normalize(cross(u, v));
383
383
  if (dot(normal, r.d) > 0.)
384
384
  return INF;
385
385
 
386
- d = mR(pos, u, v, normal, r);
386
+ d = mU(pos, u, v, normal, r);
387
387
  if (d < 0.) {
388
388
  d = INF;
389
389
  }
@@ -400,9 +400,9 @@ lightSample.emission = light.emission;
400
400
  #ifdef HAS_SPHERE_LIGHTS
401
401
  if (type == SPHERE_LIGHT) {
402
402
  if (light.radius <= 0.0) {
403
- vec3 kf = light.position - r.o;
404
- float projection = dot(kf, r.d);
405
- vec3 ba = kf - projection * r.d;
403
+ vec3 kh = light.position - r.o;
404
+ float projection = dot(kh, r.d);
405
+ vec3 ba = kh - projection * r.d;
406
406
  if (projection <= EPS || dot(ba, ba) > 1e-8) return INF;
407
407
  d = projection;
408
408
  lightSample.direction = r.d;
@@ -436,9 +436,9 @@ lightSample.emission = light.radius <= 0.0
436
436
  #ifdef HAS_SPOT_LIGHTS
437
437
  if (type == SPOT_LIGHT) {
438
438
  if (light.radius <= 0.0) {
439
- vec3 kf = light.position - r.o;
440
- float projection = dot(kf, r.d);
441
- vec3 ba = kf - projection * r.d;
439
+ vec3 kh = light.position - r.o;
440
+ float projection = dot(kh, r.d);
441
+ vec3 ba = kh - projection * r.d;
442
442
  if (projection <= EPS || dot(ba, ba) > 1e-8) return INF;
443
443
  d = projection;
444
444
  lightSample.direction = r.d;
@@ -451,9 +451,9 @@ d = ht(light.radius, light.position, r);
451
451
  lightSample.isDelta = false;
452
452
  }
453
453
  if (d != INF) {
454
- vec3 uQ = r.o + d * r.d;
455
- float mo = bL(light, normalize(r.o - uQ));
456
- if (mo <= 0.0) return INF;
454
+ vec3 uX = r.o + d * r.d;
455
+ float mr = bL(light, normalize(r.o - uX));
456
+ if (mr <= 0.0) return INF;
457
457
  float aj = distance(r.o, light.position);
458
458
  float cosThetaMax = aj <= light.radius
459
459
  ? -1.0
@@ -463,7 +463,7 @@ lightSample.pdf = aj <= light.radius
463
463
  ? INV4PI
464
464
  : 1.0 / max(TWOPI * (1.0 - cosThetaMax), 1e-8);
465
465
  }
466
- lightSample.emission = light.emission * mo * (light.radius <= 0.0
466
+ lightSample.emission = light.emission * mr * (light.radius <= 0.0
467
467
  ? 1.0 / max(d * d, 1e-8)
468
468
  : 1.0);
469
469
  }
@@ -494,76 +494,76 @@ float w20 = m20.y * eZ.z;
494
494
  float w21 = m21.y * eZ.z;
495
495
  float w22 = m22.y * eZ.z;
496
496
 
497
- float he = w00 + w01 + w02 + w10 + w11 + w12 + w20 + w21 + w22;
497
+ float hg = w00 + w01 + w02 + w10 + w11 + w12 + w20 + w21 + w22;
498
498
 
499
- w00 = w00 / he;
500
- w01 = w01 / he + w00;
501
- w02 = w02 / he + w01;
502
- w10 = w10 / he + w02;
503
- w11 = w11 / he + w10;
504
- w12 = w12 / he + w11;
505
- w20 = w20 / he + w12;
506
- w21 = w21 / he + w20;
507
- w22 = w22 / he + w21;
499
+ w00 = w00 / hg;
500
+ w01 = w01 / hg + w00;
501
+ w02 = w02 / hg + w01;
502
+ w10 = w10 / hg + w02;
503
+ w11 = w11 / hg + w10;
504
+ w12 = w12 / hg + w11;
505
+ w20 = w20 / hg + w12;
506
+ w21 = w21 / hg + w20;
507
+ w22 = w22 / hg + w21;
508
508
 
509
509
  float rand = eo(0u);
510
- float mS;
510
+ float mV;
511
511
  if (rand < w00) {
512
- mS = m00.x;
512
+ mV = m00.x;
513
513
  } else if (rand < w01) {
514
- mS = m01.x;
514
+ mV = m01.x;
515
515
  } else if (rand < w02) {
516
- mS = m02.x;
516
+ mV = m02.x;
517
517
  } else if (rand < w10) {
518
- mS = m10.x;
518
+ mV = m10.x;
519
519
  } else if (rand < w11) {
520
- mS = m11.x;
520
+ mV = m11.x;
521
521
  } else if (rand < w12) {
522
- mS = m12.x;
522
+ mV = m12.x;
523
523
  } else if (rand < w20) {
524
- mS = m20.x;
524
+ mV = m20.x;
525
525
  } else if (rand < w21) {
526
- mS = m21.x;
526
+ mV = m21.x;
527
527
  } else {
528
- mS = m22.x;
528
+ mV = m22.x;
529
529
  }
530
- return int(mS);
530
+ return int(mV);
531
531
  }
532
532
 
533
533
 
534
534
  vec4 bv(int i);
535
535
 
536
536
 
537
- mat2x3 eD(vec3 normal, vec3 dp1, vec3 dp2, vec2 nP, vec2 nQ, vec4 aU) {
538
- float determinant = nP.x * nQ.y - nP.y * nQ.x;
537
+ mat2x3 eD(vec3 normal, vec3 dp1, vec3 dp2, vec2 nS, vec2 nT, vec4 aU) {
538
+ float determinant = nS.x * nT.y - nS.y * nT.x;
539
539
  vec3 t = aU.xyz;
540
540
  vec3 b = vec3(0.0);
541
541
 
542
- float qq = abs(aU.w) > 1.5 ? 0.0 : aU.w;
542
+ float qu = abs(aU.w) > 1.5 ? 0.0 : aU.w;
543
543
  if (abs(determinant) > 1e-12) {
544
- vec3 dt = (dp1 * nQ.y - dp2 * nP.y) / determinant;
545
- vec3 db = (dp2 * nP.x - dp1 * nQ.x) / determinant;
544
+ vec3 dt = (dp1 * nT.y - dp2 * nS.y) / determinant;
545
+ vec3 db = (dp2 * nS.x - dp1 * nT.x) / determinant;
546
546
  if (dot(t, t) < 1e-8) { t = dt; }
547
- if (qq == 0.0) { qq = (dot(cross(normal, dt), db) < 0.0 ? -1.0 : 1.0); }
547
+ if (qu == 0.0) { qu = (dot(cross(normal, dt), db) < 0.0 ? -1.0 : 1.0); }
548
548
  }
549
549
  t -= normal * dot(normal, t);
550
550
  if (dot(t, t) < 1e-8) {
551
- float ig = (normal.z >= 0.0 ? 1.0 : -1.0);
552
- float dW = -1.0 / (ig + normal.z);
551
+ float ie = (normal.z >= 0.0 ? 1.0 : -1.0);
552
+ float dW = -1.0 / (ie + normal.z);
553
553
  float xy = normal.x * normal.y * dW;
554
- t = vec3(1.0 + ig * normal.x * normal.x * dW, ig * xy, -ig * normal.x);
555
- b = vec3(xy, ig + normal.y * normal.y * dW, -normal.y);
554
+ t = vec3(1.0 + ie * normal.x * normal.x * dW, ie * xy, -ie * normal.x);
555
+ b = vec3(xy, ie + normal.y * normal.y * dW, -normal.y);
556
556
  }
557
557
  else { t = normalize(t); b = normalize(cross(normal, t)); }
558
- return mat2x3(t, b * (qq < 0.0 ? -1.0 : 1.0));
558
+ return mat2x3(t, b * (qu < 0.0 ? -1.0 : 1.0));
559
559
  }
560
560
 
561
561
  void hp(inout ad si, fu tri, vec3 barycentric, ivec3 index) {
562
562
  si.hit = true;
563
563
  si.position = barycentric.x * tri.p0 + barycentric.y * tri.p1 + barycentric.z * tri.p2;
564
- ivec2 i0 = gK(index.x, vertexColumns);
565
- ivec2 i1 = gK(index.y, vertexColumns);
566
- ivec2 i2 = gK(index.z, vertexColumns);
564
+ ivec2 i0 = gM(index.x, vertexColumns);
565
+ ivec2 i1 = gM(index.y, vertexColumns);
566
+ ivec2 i2 = gM(index.z, vertexColumns);
567
567
 
568
568
  vec3 n0 = texelFetch(normalBuffer, i0, 0).xyz;
569
569
  vec3 n1 = texelFetch(normalBuffer, i1, 0).xyz;
@@ -576,14 +576,14 @@ si.vertexNormal = normal;
576
576
 
577
577
 
578
578
  vec3 geometricNormal = normalize(cross(tri.p1 - tri.p0, tri.p2 - tri.p0));
579
- vec3 kd = barycentric.x * n0 + barycentric.y * n1 + barycentric.z * n2;
579
+ vec3 kf = barycentric.x * n0 + barycentric.y * n1 + barycentric.z * n2;
580
580
  float a = dot(n2 - n0, tri.p0 - tri.p2);
581
581
  float b = dot(n2 - n1, tri.p1 - tri.p2);
582
582
  float c = dot(n1 - n0, tri.p1 - tri.p0);
583
583
  float h = a * barycentric.x * (barycentric.x - 1.0)
584
584
  + (a + b + c) * barycentric.x * barycentric.y
585
585
  + b * barycentric.y * (barycentric.y - 1.0);
586
- if (dot(kd, geometricNormal) > 0.0) {
586
+ if (dot(kf, geometricNormal) > 0.0) {
587
587
  float h0 = max(max(dot(tri.p1 - tri.p0, n0), dot(tri.p2 - tri.p0, n0)), 0.0);
588
588
  float h1 = max(max(dot(tri.p0 - tri.p1, n1), dot(tri.p2 - tri.p1, n1)), 0.0);
589
589
  float h2 = max(max(dot(tri.p0 - tri.p2, n2), dot(tri.p1 - tri.p2, n2)), 0.0);
@@ -601,7 +601,7 @@ h1 = max(dot(si.position - tri.p1, n1) + h1, 0.0);
601
601
  h2 = max(dot(si.position - tri.p2, n2) + h2, 0.0);
602
602
  h = min(-min(min(h0, h1), h2), h * 0.5);
603
603
  }
604
- si.shadowOffset = kd * h;
604
+ si.shadowOffset = kf * h;
605
605
 
606
606
 
607
607
  ivec4 m0 = ivec4(texelFetch(materialIndexBuffer, i0, 0));
@@ -624,14 +624,14 @@ vec2 cX = barycentric.x * secondaryUv0
624
624
  + barycentric.y * secondaryUv1
625
625
  + barycentric.z * secondaryUv2;
626
626
 
627
- vec4 lw = fetchMatData(si.materialIndex * MAT_DATA_SIZE + MAT_ROW_UV);
628
- int uvProjection = int(lw.r);
627
+ vec4 lC = fetchMatData(si.materialIndex * MAT_DATA_SIZE + MAT_ROW_UV);
628
+ int uvProjection = int(lC.r);
629
629
  if (uvProjection > 0) {
630
- uv = gz(uvProjection, si.position, normal, lw.zw);
630
+ uv = gC(uvProjection, si.position, normal, lC.zw);
631
631
  cX = uv;
632
632
  } else {
633
- uv *= lw.zw;
634
- cX *= lw.zw;
633
+ uv *= lC.zw;
634
+ cX *= lC.zw;
635
635
  }
636
636
  #else
637
637
  vec2 uv = vec2(0.0);
@@ -640,13 +640,13 @@ vec2 cX = vec2(0.0);
640
640
 
641
641
  #ifdef NUM_COAT_NORMAL_MAPS
642
642
  si.coatNormal = normal;
643
- float lj = fetchMatData(si.materialIndex * MAT_DATA_SIZE + MAT_ROW_LAYER_MAPS).z;
643
+ float lm = fetchMatData(si.materialIndex * MAT_DATA_SIZE + MAT_ROW_LAYER_MAPS).z;
644
644
  #endif
645
645
  vec4 directionMaterial = fetchMatData(si.materialIndex * MAT_DATA_SIZE + MAT_ROW_DIRECTION_NORMAL);
646
- float sZ = fetchMatData(si.materialIndex * MAT_DATA_SIZE + MAT_ROW_FILM_TEXTURE).x;
647
- if (directionMaterial.x >= 0.0 || directionMaterial.y != 0.0 || sZ != 0.0
646
+ float te = fetchMatData(si.materialIndex * MAT_DATA_SIZE + MAT_ROW_FILM_TEXTURE).x;
647
+ if (directionMaterial.x >= 0.0 || directionMaterial.y != 0.0 || te != 0.0
648
648
  #ifdef NUM_COAT_NORMAL_MAPS
649
- || lj >= 0.0
649
+ || lm >= 0.0
650
650
  #endif
651
651
  ) {
652
652
  vec3 dp1 = tri.p0 - tri.p2;
@@ -672,19 +672,19 @@ fU = eD(normal, dp1, dp2, a-c, b-c, (aU.w == 0.0 ? vec4(0.0) : aU));
672
672
  si.directionTangent = fU[0];
673
673
  si.directionBitangent = fU[1];
674
674
  #ifdef NUM_COAT_NORMAL_MAPS
675
- if (lj >= 0.0) {
676
- int kq = int(lj);
677
- mat2x3 lT = eP;
678
- if (mapUvChannel[kq] > 0.5) {
675
+ if (lm >= 0.0) {
676
+ int ku = int(lm);
677
+ mat2x3 lW = eP;
678
+ if (mapUvChannel[ku] > 0.5) {
679
679
  vec2 a = texelFetch(uv1Buffer, i0, 0).xy;
680
680
  vec2 b = texelFetch(uv1Buffer, i1, 0).xy;
681
681
  vec2 c = texelFetch(uv1Buffer, i2, 0).xy;
682
- lT = eD(normal, dp1, dp2, a-c, b-c,
682
+ lW = eD(normal, dp1, dp2, a-c, b-c,
683
683
  aU.w == 0.0 ? vec4(0.0) : aU);
684
684
  }
685
- vec3 decoded = sampleMap(kq, getMapUvSet(kq, uv, cX)).rgb * 2.0 - 1.0;
686
- vec3 mapped = lT[0] * decoded.x * directionMaterial.z
687
- + lT[1] * decoded.y * directionMaterial.w + normal * decoded.z;
685
+ vec3 decoded = sampleMap(ku, getMapUvSet(ku, uv, cX)).rgb * 2.0 - 1.0;
686
+ vec3 mapped = lW[0] * decoded.x * directionMaterial.z
687
+ + lW[1] * decoded.y * directionMaterial.w + normal * decoded.z;
688
688
  if (dot(mapped, mapped) > 1e-12) { si.coatNormal = normalize(mapped); }
689
689
  }
690
690
  #endif
@@ -702,10 +702,10 @@ si.tangent = normalize(barycentric.x * t0 + barycentric.y * t1 + barycentric.z *
702
702
  #if defined(NUM_NORMAL_MAPS)
703
703
  vec3 dp1 = tri.p0 - tri.p2;
704
704
  vec3 dp2 = tri.p1 - tri.p2;
705
- vec2 nP = uv0 - uv2;
706
- vec2 nQ = uv1 - uv2;
707
- si.normal = nY(
708
- si.materialIndex, uv, normal, dp1, dp2, nP, nQ
705
+ vec2 nS = uv0 - uv2;
706
+ vec2 nT = uv1 - uv2;
707
+ si.normal = ob(
708
+ si.materialIndex, uv, normal, dp1, dp2, nS, nT
709
709
  );
710
710
  #else
711
711
  si.normal = normal;
@@ -718,35 +718,35 @@ vec3 barycentric;
718
718
  };
719
719
 
720
720
  vec4 dp(int i) {
721
- return kw(bvhBuffer, i, bvhColumns);
721
+ return ky(bvhBuffer, i, bvhColumns);
722
722
  }
723
723
 
724
724
  vec4 bv(int i) {
725
- return kw(instancesBuffer, i, instancesColumns);
725
+ return ky(instancesBuffer, i, instancesColumns);
726
726
  }
727
727
 
728
728
 
729
729
 
730
- uint qG(uint value) {
730
+ uint qK(uint value) {
731
731
  value -= (value >> 1u) & 0x55555555u;
732
732
  value = (value & 0x33333333u) + ((value >> 2u) & 0x33333333u);
733
733
  value = (value + (value >> 4u)) & 0x0f0f0f0fu;
734
734
  return (value * 0x01010101u) >> 24u;
735
735
  }
736
736
 
737
- vec4 eY(uint lI) {
737
+ vec4 eY(uint lL) {
738
738
  return vec4(
739
- float(lI & 0xffu),
740
- float((lI >> 8u) & 0xffu),
741
- float((lI >> 16u) & 0xffu),
742
- float(lI >> 24u)
739
+ float(lL & 0xffu),
740
+ float((lL >> 8u) & 0xffu),
741
+ float((lL >> 16u) & 0xffu),
742
+ float(lL >> 24u)
743
743
  ) / 255.0;
744
744
  }
745
745
 
746
746
 
747
747
 
748
748
 
749
- eB fI(vec3 o, vec3 d, fu tri, int ey, vec3 gJ, float tMax) {
749
+ eB fI(vec3 o, vec3 d, fu tri, int ey, vec3 gL, float tMax) {
750
750
  eB ti;
751
751
 
752
752
 
@@ -766,9 +766,9 @@ p2t = p2t.zxy;
766
766
  }
767
767
 
768
768
 
769
- p0t.xy += gJ.xy * p0t.z;
770
- p1t.xy += gJ.xy * p1t.z;
771
- p2t.xy += gJ.xy * p2t.z;
769
+ p0t.xy += gL.xy * p0t.z;
770
+ p1t.xy += gL.xy * p1t.z;
771
+ p2t.xy += gL.xy * p2t.z;
772
772
 
773
773
 
774
774
  vec3 e = vec3(
@@ -778,9 +778,9 @@ p0t.x * p1t.y - p0t.y * p1t.x
778
778
  );
779
779
 
780
780
  #ifdef DEPTH_QUERY_MODE
781
- vec3 ro = abs(vec3(p1t.x * p2t.y, p2t.x * p0t.y, p0t.x * p1t.y))
781
+ vec3 rt = abs(vec3(p1t.x * p2t.y, p2t.x * p0t.y, p0t.x * p1t.y))
782
782
  + abs(vec3(p1t.y * p2t.x, p2t.y * p0t.x, p0t.y * p1t.x));
783
- e = mix(e, vec3(0.0), lessThanEqual(abs(e), ro * 1e-6));
783
+ e = mix(e, vec3(0.0), lessThanEqual(abs(e), rt * 1e-6));
784
784
  #endif
785
785
 
786
786
 
@@ -793,19 +793,19 @@ float det = e.x + e.y + e.z;
793
793
  if (det == 0.0) return ti;
794
794
  #endif
795
795
 
796
- p0t.z *= gJ.z;
797
- p1t.z *= gJ.z;
798
- p2t.z *= gJ.z;
799
- float qZ = (e.x * p0t.z + e.y * p1t.z + e.z * p2t.z);
796
+ p0t.z *= gL.z;
797
+ p1t.z *= gL.z;
798
+ p2t.z *= gL.z;
799
+ float rd = (e.x * p0t.z + e.y * p1t.z + e.z * p2t.z);
800
800
 
801
801
 
802
- if (abs(qZ) > abs(tMax * det)) {
802
+ if (abs(rd) > abs(tMax * det)) {
803
803
  return ti;
804
804
  }
805
805
 
806
- float sg = 1. / det;
807
- ti.t = qZ * sg;
808
- ti.barycentric = e * sg;
806
+ float sm = 1. / det;
807
+ ti.t = rd * sm;
808
+ ti.barycentric = e * sm;
809
809
 
810
810
  return ti;
811
811
  }
@@ -825,9 +825,9 @@ return 1.0 / d;
825
825
  #endif
826
826
  }
827
827
 
828
- vec3 eV(vec3 gv, vec3 o) {
828
+ vec3 eV(vec3 gx, vec3 o) {
829
829
  #ifdef DEPTH_QUERY_MODE
830
- return abs(gv) * max(vec3(1.0), abs(o)) * 1e-6;
830
+ return abs(gx) * max(vec3(1.0), abs(o)) * 1e-6;
831
831
  #else
832
832
  return vec3(0.0);
833
833
  #endif
@@ -835,21 +835,21 @@ return vec3(0.0);
835
835
 
836
836
 
837
837
 
838
- float cM(vec3 o, vec3 d, vec3 vw, vec3 vu, float tMax) {
838
+ float cM(vec3 o, vec3 d, vec3 vD, vec3 vC, float tMax) {
839
839
  #ifdef DEPTH_QUERY_MODE
840
- vec3 gv = eX(d);
841
- vec3 uD = (vw - o) * gv;
842
- vec3 uE = (vu - o) * gv;
843
- vec3 bJ = eV(gv, o);
840
+ vec3 gx = eX(d);
841
+ vec3 uK = (vD - o) * gx;
842
+ vec3 uL = (vC - o) * gx;
843
+ vec3 bJ = eV(gx, o);
844
844
  #else
845
- vec3 uD = (vw - o) / d;
846
- vec3 uE = (vu - o) / d;
845
+ vec3 uK = (vD - o) / d;
846
+ vec3 uL = (vC - o) / d;
847
847
  vec3 bJ = vec3(0.0);
848
848
  #endif
849
- vec3 my = min(uD, uE) - bJ;
850
- vec3 rH = max(uD, uE) + bJ;
851
- float t0 = max(my.x, max(my.y, my.z));
852
- float t1 = min(rH.x, min(rH.y, rH.z));
849
+ vec3 mB = min(uK, uL) - bJ;
850
+ vec3 rM = max(uK, uL) + bJ;
851
+ float t0 = max(mB.x, max(mB.y, mB.z));
852
+ float t1 = min(rM.x, min(rM.y, rM.z));
853
853
 
854
854
  return (t0 > t1 || t0 > tMax) ? -1.0 : (t0 > 0.0 ? t0 : t1);
855
855
  }
@@ -858,7 +858,7 @@ int maxDimension(vec3 v) {
858
858
  return v.x > v.y ? (v.x > v.z ? 0 : 2) : (v.y > v.z ? 1 : 2);
859
859
  }
860
860
 
861
- vec3 mg(vec3 d, int ey) {
861
+ vec3 mj(vec3 d, int ey) {
862
862
 
863
863
 
864
864
  if (ey == 0) {
@@ -879,24 +879,24 @@ return;
879
879
  }
880
880
 
881
881
  int ey = maxDimension(abs(ray.d));
882
- vec3 gJ = mg(ray.d, ey);
882
+ vec3 gL = mj(ray.d, ey);
883
883
  int ao;
884
884
 
885
885
  ${getBVHTraverseCode(glsl `
886
886
  si.triangleIndex = triangleIndex;
887
- lm = tri;
888
- hy = faceNormal;
887
+ lp = tri;
888
+ hx = faceNormal;
889
889
  aB = hit.barycentric;
890
890
  hs = index;
891
- qP = true;
891
+ qT = true;
892
892
  ao = cf;
893
893
  `)}
894
894
 
895
- if (qP) {
895
+ if (qT) {
896
896
  si.instanceIndex = ao;
897
897
  si.materialIndex = int(ae(floatBitsToInt(bv(ao * ${INSTANCE_VEC4_STRIDE}).z)).x);
898
898
 
899
- hp(si, lm, aB, hs);
899
+ hp(si, lp, aB, hs);
900
900
  mat4 l2w = mat4(
901
901
  bv(ao * ${INSTANCE_VEC4_STRIDE} + 5),
902
902
  bv(ao * ${INSTANCE_VEC4_STRIDE} + 6),
@@ -910,7 +910,7 @@ bv(ao * ${INSTANCE_VEC4_STRIDE} + 3),
910
910
  bv(ao * ${INSTANCE_VEC4_STRIDE} + 4)
911
911
  );
912
912
  mat3 aD = transpose(mat3(w2l));
913
- si.faceNormal = normalize(aD * hy);
913
+ si.faceNormal = normalize(aD * hx);
914
914
  si.vertexNormal = normalize(aD * si.vertexNormal);
915
915
  si.normal = normalize(aD * si.normal);
916
916
  #ifdef NUM_COAT_NORMAL_MAPS
@@ -931,7 +931,7 @@ si.position = (l2w * vec4(si.position, 1.0)).xyz;
931
931
  }
932
932
 
933
933
 
934
- void iG(in Ray ray, inout ad si, int instanceIndex, float maxDistance) {
934
+ void iH(in Ray ray, inout ad si, int instanceIndex, float maxDistance) {
935
935
  si.hit = false;
936
936
 
937
937
  if (isEmptyScene) {
@@ -940,16 +940,16 @@ return;
940
940
 
941
941
  bool doubleSided = true;
942
942
  int ey = maxDimension(abs(ray.d));
943
- vec3 gJ = mg(ray.d, ey);
943
+ vec3 gL = mj(ray.d, ey);
944
944
  int ao;
945
945
 
946
946
  ${getBVHTraverseCode(glsl `
947
947
  si.triangleIndex = triangleIndex;
948
- lm = tri;
949
- hy = faceNormal;
948
+ lp = tri;
949
+ hx = faceNormal;
950
950
  aB = hit.barycentric;
951
951
  hs = index;
952
- qP = true;
952
+ qT = true;
953
953
  ao = cf;
954
954
  `, glsl `
955
955
  if (cf != instanceIndex) {
@@ -957,10 +957,10 @@ continue;
957
957
  }
958
958
  `, 'maxDistance')}
959
959
 
960
- if (qP) {
960
+ if (qT) {
961
961
  si.instanceIndex = ao;
962
962
  si.materialIndex = int(ae(floatBitsToInt(bv(ao * ${INSTANCE_VEC4_STRIDE}).z)).x);
963
- hp(si, lm, aB, hs);
963
+ hp(si, lp, aB, hs);
964
964
  mat4 l2w = mat4(
965
965
  bv(ao * ${INSTANCE_VEC4_STRIDE} + 5),
966
966
  bv(ao * ${INSTANCE_VEC4_STRIDE} + 6),
@@ -974,7 +974,7 @@ bv(ao * ${INSTANCE_VEC4_STRIDE} + 3),
974
974
  bv(ao * ${INSTANCE_VEC4_STRIDE} + 4)
975
975
  );
976
976
  mat3 aD = transpose(mat3(w2l));
977
- si.faceNormal = normalize(aD * hy);
977
+ si.faceNormal = normalize(aD * hx);
978
978
  si.vertexNormal = normalize(aD * si.vertexNormal);
979
979
  si.normal = normalize(aD * si.normal);
980
980
  #ifdef NUM_COAT_NORMAL_MAPS
@@ -994,7 +994,7 @@ si.position = (l2w * vec4(si.position, 1.0)).xyz;
994
994
  }
995
995
  }
996
996
 
997
- bool ex(in Ray ray, float lightDistance, int jE) {
997
+ bool ex(in Ray ray, float lightDistance, int jG) {
998
998
 
999
999
  if (isEmptyScene) {
1000
1000
  return false;
@@ -1002,21 +1002,21 @@ return false;
1002
1002
 
1003
1003
  bool doubleSided = true;
1004
1004
  int ey = maxDimension(abs(ray.d));
1005
- vec3 gJ = mg(ray.d, ey);
1005
+ vec3 gL = mj(ray.d, ey);
1006
1006
 
1007
1007
  ${getBVHTraverseCode(glsl `
1008
1008
 
1009
1009
 
1010
- bool jl = true;
1010
+ bool jn = true;
1011
1011
  vec3 barycentric = hit.barycentric;
1012
1012
  vec3 position = barycentric.x * tri.p0 + barycentric.y * tri.p1 + barycentric.z * tri.p2;
1013
1013
 
1014
- if (jl) {
1014
+ if (jn) {
1015
1015
  #ifdef HAS_ALPHA
1016
1016
  int materialIndex = int(ae(floatBitsToInt(bv(cf * ${INSTANCE_VEC4_STRIDE}).z)).x);
1017
- ivec2 i0 = gK(index.x, vertexColumns);
1018
- ivec2 i1 = gK(index.y, vertexColumns);
1019
- ivec2 i2 = gK(index.z, vertexColumns);
1017
+ ivec2 i0 = gM(index.x, vertexColumns);
1018
+ ivec2 i1 = gM(index.y, vertexColumns);
1019
+ ivec2 i2 = gM(index.z, vertexColumns);
1020
1020
  ivec4 m0 = ivec4(texelFetch(materialIndexBuffer, i0, 0));
1021
1021
  ivec4 m1 = ivec4(texelFetch(materialIndexBuffer, i1, 0));
1022
1022
  ivec4 m2 = ivec4(texelFetch(materialIndexBuffer, i2, 0));
@@ -1036,12 +1036,12 @@ vec2 uv0 = texelFetch(uvBuffer, i0, 0).xy;
1036
1036
  vec2 uv1 = texelFetch(uvBuffer, i1, 0).xy;
1037
1037
  vec2 uv2 = texelFetch(uvBuffer, i2, 0).xy;
1038
1038
  vec2 uv = barycentric.x * uv0 + barycentric.y * uv1 + barycentric.z * uv2;
1039
- vec4 lw = fetchMatData(ii + MAT_ROW_UV);
1040
- int uvProjection = int(lw.r);
1039
+ vec4 lC = fetchMatData(ii + MAT_ROW_UV);
1040
+ int uvProjection = int(lC.r);
1041
1041
  if (uvProjection > 0) {
1042
- uv = gz(uvProjection, position, hy, lw.zw);
1042
+ uv = gC(uvProjection, position, hx, lC.zw);
1043
1043
  } else {
1044
- uv *= lw.zw;
1044
+ uv *= lC.zw;
1045
1045
  }
1046
1046
 
1047
1047
  alpha *= sampleMap(diffuseMapIndex, uv).a;
@@ -1055,32 +1055,32 @@ vec2 uv0 = texelFetch(uvBuffer, i0, 0).xy;
1055
1055
  vec2 uv1 = texelFetch(uvBuffer, i1, 0).xy;
1056
1056
  vec2 uv2 = texelFetch(uvBuffer, i2, 0).xy;
1057
1057
  vec2 uv = barycentric.x * uv0 + barycentric.y * uv1 + barycentric.z * uv2;
1058
- vec4 lw = fetchMatData(ii + MAT_ROW_UV);
1059
- int uvProjection = int(lw.r);
1058
+ vec4 lC = fetchMatData(ii + MAT_ROW_UV);
1059
+ int uvProjection = int(lC.r);
1060
1060
  if (uvProjection > 0) {
1061
- uv = gz(uvProjection, position, hy, lw.zw);
1061
+ uv = gC(uvProjection, position, hx, lC.zw);
1062
1062
  } else {
1063
- uv *= lw.zw;
1063
+ uv *= lC.zw;
1064
1064
  }
1065
1065
  alpha *= sampleMap(alphaMapIndex, uv).g;
1066
1066
  }
1067
1067
  #endif
1068
1068
  float alphaCutoff = fetchMatData(ii + MAT_ROW_STANDALONE_MAPS).a;
1069
- alpha = ld(
1069
+ alpha = lg(
1070
1070
  alpha, int(fetchMatData(ii + MAT_ROW_ALPHA).w), alphaCutoff
1071
1071
  );
1072
1072
  if (eo(0u) > alpha) {
1073
1073
 
1074
1074
  tMax = min(max(lightDistance, 0.0), RAY_MAX_DISTANCE);
1075
- jl = false;
1075
+ jn = false;
1076
1076
  }
1077
1077
  #endif
1078
1078
  }
1079
- if (jl) {
1079
+ if (jn) {
1080
1080
  return true;
1081
1081
  }
1082
1082
  `, glsl `
1083
- if (triangleIndex == jE) {
1083
+ if (triangleIndex == jG) {
1084
1084
  continue;
1085
1085
  }
1086
1086
  `, 'min(max(lightDistance, 0.0), RAY_MAX_DISTANCE)')}