@meimu/mutracer 0.2.0 → 0.3.0

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 (211) hide show
  1. package/README.md +3 -0
  2. package/dist/assets/bvh.worker.js +1 -1
  3. package/dist/mutracer.umd.js +8949 -7915
  4. package/docs/api.md +42 -21
  5. package/docs/caustics.md +80 -0
  6. package/docs/materials.md +5 -4
  7. package/docs/progressive-rendering.md +50 -9
  8. package/docs/technical/continuous-spectrum.md +93 -0
  9. package/docs/updates.md +3 -1
  10. package/docs/viewer-checklist.md +65 -0
  11. package/docs/viewer.md +7 -5
  12. package/lib/Display.js +1 -1
  13. package/lib/Display.js.map +1 -1
  14. package/lib/Engine.d.ts +2 -0
  15. package/lib/Engine.js +47 -12
  16. package/lib/Engine.js.map +1 -1
  17. package/lib/Render.d.ts +61 -13
  18. package/lib/Render.js +169 -19
  19. package/lib/Render.js.map +1 -1
  20. package/lib/RenderLoop.d.ts +7 -3
  21. package/lib/RenderLoop.js +68 -44
  22. package/lib/RenderLoop.js.map +1 -1
  23. package/lib/main.d.ts +1 -1
  24. package/lib/main.js.map +1 -1
  25. package/lib/oidn.d.ts +1 -1
  26. package/lib/oidnBundledWeights.cdn.d.ts +2 -2
  27. package/lib/renderer/GPUTraceQueue.d.ts +2 -1
  28. package/lib/renderer/GPUTraceQueue.js +3 -1
  29. package/lib/renderer/GPUTraceQueue.js.map +1 -1
  30. package/lib/renderer/RenderingPipeline.d.ts +4 -0
  31. package/lib/renderer/RenderingPipeline.js.map +1 -1
  32. package/lib/renderer/WGPUCausticLightPass.d.ts +48 -0
  33. package/lib/renderer/WGPUCausticLightPass.js +217 -0
  34. package/lib/renderer/WGPUCausticLightPass.js.map +1 -0
  35. package/lib/renderer/WGPUEnvMapDistribution.js +18 -18
  36. package/lib/renderer/WGPUFullQuadPass.js +3 -3
  37. package/lib/renderer/WGPUPhotonMap.d.ts +37 -0
  38. package/lib/renderer/WGPUPhotonMap.js +191 -0
  39. package/lib/renderer/WGPUPhotonMap.js.map +1 -0
  40. package/lib/renderer/WGPURayTraceOutput.d.ts +13 -1
  41. package/lib/renderer/WGPURayTraceOutput.js +122 -28
  42. package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
  43. package/lib/renderer/WGPURayTracePass.d.ts +48 -17
  44. package/lib/renderer/WGPURayTracePass.js +538 -340
  45. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  46. package/lib/renderer/WGPURenderingPipeline.js +83 -47
  47. package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
  48. package/lib/renderer/WebGLFullQuadPass.d.ts +2 -1
  49. package/lib/renderer/WebGLFullQuadPass.js +4 -0
  50. package/lib/renderer/WebGLFullQuadPass.js.map +1 -1
  51. package/lib/renderer/WebGLJNLMDenoiser.js +66 -66
  52. package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
  53. package/lib/renderer/WebGLRayTracePass.d.ts +6 -1
  54. package/lib/renderer/WebGLRayTracePass.js +43 -6
  55. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  56. package/lib/renderer/WebGLRenderingPipeline.js +10 -14
  57. package/lib/renderer/WebGLRenderingPipeline.js.map +1 -1
  58. package/lib/renderer/WebGLSkyBaker.js +60 -60
  59. package/lib/renderer/accumulationTarget.d.ts +2 -1
  60. package/lib/renderer/accumulationTarget.js.map +1 -1
  61. package/lib/renderer/causticDiagnostics.d.ts +31 -0
  62. package/lib/renderer/causticDiagnostics.js +5 -0
  63. package/lib/renderer/causticDiagnostics.js.map +1 -0
  64. package/lib/renderer/causticEmission.d.ts +10 -0
  65. package/lib/renderer/causticEmission.js +40 -0
  66. package/lib/renderer/causticEmission.js.map +1 -0
  67. package/lib/renderer/causticUniform.d.ts +12 -0
  68. package/lib/renderer/causticUniform.js +22 -0
  69. package/lib/renderer/causticUniform.js.map +1 -0
  70. package/lib/renderer/caustics.d.ts +16 -0
  71. package/lib/renderer/caustics.js +93 -0
  72. package/lib/renderer/caustics.js.map +1 -0
  73. package/lib/renderer/glsl/aovDisplay.frag.js +5 -5
  74. package/lib/renderer/glsl/aovReflectance.glsl.js +53 -53
  75. package/lib/renderer/glsl/aovReflectanceSamples.glsl.js +1 -1
  76. package/lib/renderer/glsl/aovTrace.frag.js +33 -33
  77. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +9 -9
  78. package/lib/renderer/glsl/chunks/emissiveLight.glsl.d.ts +2 -0
  79. package/lib/renderer/glsl/chunks/emissiveLight.glsl.js +35 -0
  80. package/lib/renderer/glsl/chunks/emissiveLight.glsl.js.map +1 -0
  81. package/lib/renderer/glsl/chunks/envMap.glsl.js +73 -73
  82. package/lib/renderer/glsl/chunks/intersect.glsl.js +426 -428
  83. package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
  84. package/lib/renderer/glsl/chunks/materialBuffer.glsl.d.ts +1 -0
  85. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +156 -153
  86. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
  87. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +771 -771
  88. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  89. package/lib/renderer/glsl/chunks/random.glsl.js +6 -6
  90. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.d.ts +1 -0
  91. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +68 -63
  92. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
  93. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +94 -76
  94. package/lib/renderer/glsl/chunks/sampleLight.glsl.js.map +1 -1
  95. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.d.ts +1 -0
  96. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +140 -117
  97. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js.map +1 -1
  98. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +14 -14
  99. package/lib/renderer/glsl/chunks/sampling.glsl.js +89 -92
  100. package/lib/renderer/glsl/chunks/sampling.glsl.js.map +1 -1
  101. package/lib/renderer/glsl/chunks/sobol.glsl.js +79 -79
  102. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  103. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +11 -11
  104. package/lib/renderer/glsl/depthQuery.frag.js +2 -2
  105. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +10 -10
  106. package/lib/renderer/glsl/rayTrace.frag.d.ts +1 -1
  107. package/lib/renderer/glsl/rayTrace.frag.js +260 -237
  108. package/lib/renderer/glsl/rayTrace.frag.js.map +1 -1
  109. package/lib/renderer/glsl/shadowCatcher.frag.js +26 -26
  110. package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
  111. package/lib/renderer/glsl/webglPipeline.frag.js +59 -59
  112. package/lib/renderer/lightSampling.d.ts +3 -2
  113. package/lib/renderer/lightSampling.js +14 -8
  114. package/lib/renderer/lightSampling.js.map +1 -1
  115. package/lib/renderer/progressiveScheduler.js +4 -3
  116. package/lib/renderer/progressiveScheduler.js.map +1 -1
  117. package/lib/renderer/renderPipeline.d.ts +1 -0
  118. package/lib/renderer/renderPipeline.js.map +1 -1
  119. package/lib/renderer/researchTransport.d.ts +31 -0
  120. package/lib/renderer/researchTransport.js +5 -0
  121. package/lib/renderer/researchTransport.js.map +1 -0
  122. package/lib/renderer/sceneLayoutSchema.d.ts +1 -0
  123. package/lib/renderer/sceneLayoutSchema.js +2 -2
  124. package/lib/renderer/sceneLayoutSchema.js.map +1 -1
  125. package/lib/renderer/scratchSampling.js +6 -6
  126. package/lib/renderer/spectrum.d.ts +21 -0
  127. package/lib/renderer/spectrum.js +154 -0
  128. package/lib/renderer/spectrum.js.map +1 -0
  129. package/lib/renderer/webglLightSampling.d.ts +39 -0
  130. package/lib/renderer/webglLightSampling.js +15 -0
  131. package/lib/renderer/webglLightSampling.js.map +1 -0
  132. package/lib/renderer/wgpuBindlessSource.js +3 -3
  133. package/lib/renderer/wgpuShaderSource.d.ts +7 -0
  134. package/lib/renderer/wgpuShaderSource.js +2 -0
  135. package/lib/renderer/wgpuShaderSource.js.map +1 -1
  136. package/lib/renderer/wgsl/aovDisplay.wgsl.js +9 -9
  137. package/lib/renderer/wgsl/aovReflectance.wgsl.js +55 -55
  138. package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.js +1 -1
  139. package/lib/renderer/wgsl/aovResolve.wgsl.js +2 -2
  140. package/lib/renderer/wgsl/aovSnapshot.wgsl.js +1 -1
  141. package/lib/renderer/wgsl/aovTrace.wgsl.js +33 -33
  142. package/lib/renderer/wgsl/bloom.wgsl.js +18 -18
  143. package/lib/renderer/wgsl/causticLight.compute.d.ts +6 -0
  144. package/lib/renderer/wgsl/causticLight.compute.js +537 -0
  145. package/lib/renderer/wgsl/causticLight.compute.js.map +1 -0
  146. package/lib/renderer/wgsl/chunks/background.wgsl.d.ts +2 -0
  147. package/lib/renderer/wgsl/chunks/background.wgsl.js +102 -0
  148. package/lib/renderer/wgsl/chunks/background.wgsl.js.map +1 -0
  149. package/lib/renderer/wgsl/chunks/causticAdjoint.wgsl.d.ts +2 -0
  150. package/lib/renderer/wgsl/chunks/causticAdjoint.wgsl.js +12 -0
  151. package/lib/renderer/wgsl/chunks/causticAdjoint.wgsl.js.map +1 -0
  152. package/lib/renderer/wgsl/chunks/causticAtomic.wgsl.d.ts +2 -0
  153. package/lib/renderer/wgsl/chunks/causticAtomic.wgsl.js +16 -0
  154. package/lib/renderer/wgsl/chunks/causticAtomic.wgsl.js.map +1 -0
  155. package/lib/renderer/wgsl/chunks/caustics.wgsl.d.ts +1 -0
  156. package/lib/renderer/wgsl/chunks/caustics.wgsl.js +62 -0
  157. package/lib/renderer/wgsl/chunks/caustics.wgsl.js.map +1 -0
  158. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  159. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +37 -37
  160. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +598 -592
  161. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  162. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +14 -14
  163. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.d.ts +2 -1
  164. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +75 -73
  165. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
  166. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +794 -794
  167. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +139 -139
  168. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  169. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.d.ts +2 -1
  170. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +35 -25
  171. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
  172. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.d.ts +1 -1
  173. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +142 -138
  174. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js.map +1 -1
  175. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.d.ts +1 -1
  176. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +204 -187
  177. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js.map +1 -1
  178. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.d.ts +1 -1
  179. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +11 -11
  180. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js.map +1 -1
  181. package/lib/renderer/wgsl/chunks/sampling.wgsl.d.ts +1 -1
  182. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +89 -93
  183. package/lib/renderer/wgsl/chunks/sampling.wgsl.js.map +1 -1
  184. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +83 -83
  185. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +11 -11
  186. package/lib/renderer/wgsl/compose.frag.wgsl.js +98 -98
  187. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  188. package/lib/renderer/wgsl/depthQuery.wgsl.js +2 -2
  189. package/lib/renderer/wgsl/jnlm.compute.js +74 -74
  190. package/lib/renderer/wgsl/offlineAdaptive.compute.js +25 -25
  191. package/lib/renderer/wgsl/oidnAuxiliary.wgsl.js +3 -3
  192. package/lib/renderer/wgsl/photonMap.compute.d.ts +29 -0
  193. package/lib/renderer/wgsl/photonMap.compute.js +352 -0
  194. package/lib/renderer/wgsl/photonMap.compute.js.map +1 -0
  195. package/lib/renderer/wgsl/proceduralSky.compute.js +64 -64
  196. package/lib/renderer/wgsl/rayTrace.compute.d.ts +9 -1
  197. package/lib/renderer/wgsl/rayTrace.compute.js +448 -522
  198. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  199. package/lib/scene/MaterialState.d.ts +2 -2
  200. package/lib/scene/MaterialState.js +2 -2
  201. package/lib/scene/MaterialState.js.map +1 -1
  202. package/lib/settings/render.d.ts +11 -0
  203. package/lib/settings/render.js +1 -0
  204. package/lib/settings/render.js.map +1 -1
  205. package/lib/util/fromTHREE.js +2 -2
  206. package/lib/util/fromTHREE.js.map +1 -1
  207. package/lib/version.d.ts +1 -1
  208. package/lib/version.js +1 -1
  209. package/lib/version.js.map +1 -1
  210. package/llms.txt +2 -1
  211. package/package.json +3 -3
@@ -16,17 +16,17 @@ export default createShaderMixin({
16
16
  groundedBackgroundCenter: Shader.uniform('vec2')
17
17
  },
18
18
  main: glsl `
19
- vec2 eV(vec3 gx) {
20
- float phi = mod(atan(-gx.z, -gx.x), TWOPI);
21
- float theta = acos(clamp(gx.y, -1.0, 1.0));
19
+ vec2 eF(vec3 gh) {
20
+ float phi = mod(atan(-gh.z, -gh.x), TWOPI);
21
+ float theta = acos(clamp(gh.y, -1.0, 1.0));
22
22
  return vec2(phi * 0.5 * INVPI, theta * INVPI);
23
23
  }
24
24
 
25
- vec2 dm(vec3 nO) {
26
- return eV(transpose(environmentRotation) * nO);
25
+ vec2 cT(vec3 nD) {
26
+ return eF(transpose(environmentRotation) * nD);
27
27
  }
28
28
 
29
- float rE(float u, out int vOffset, out float pdf) {
29
+ float rv(float u, out int vOffset, out float pdf) {
30
30
  ivec2 size = textureSize(envMap, 0);
31
31
 
32
32
  int left = 0;
@@ -52,7 +52,7 @@ pdf = s0.y;
52
52
  return (float(vOffset) + (u - s0.x) / (s1.x - s0.x)) / float(size.y);
53
53
  }
54
54
 
55
- float rD(float u, int vOffset, out float pdf) {
55
+ float ru(float u, int vOffset, out float pdf) {
56
56
  ivec2 size = textureSize(envMap, 0);
57
57
 
58
58
  int left = 0;
@@ -66,128 +66,128 @@ left = mid + 1;
66
66
  right = mid;
67
67
  }
68
68
  }
69
- int pO = left - 1;
69
+ int pw = left - 1;
70
70
 
71
71
 
72
72
 
73
- vec2 s0 = texelFetch(envMapDistribution, ivec2(1 + pO, vOffset), 0).xy;
74
- vec2 s1 = texelFetch(envMapDistribution, ivec2(1 + pO + 1, vOffset), 0).xy;
73
+ vec2 s0 = texelFetch(envMapDistribution, ivec2(1 + pw, vOffset), 0).xy;
74
+ vec2 s1 = texelFetch(envMapDistribution, ivec2(1 + pw + 1, vOffset), 0).xy;
75
75
 
76
76
  pdf = s0.y;
77
77
 
78
- return (float(pO) + (u - s0.x) / (s1.x - s0.x)) / float(size.x);
78
+ return (float(pw) + (u - s0.x) / (s1.x - s0.x)) / float(size.x);
79
79
  }
80
80
 
81
81
 
82
- float eW(vec2 ew, float v) {
82
+ float envMapSolidAnglePdf(vec2 partialPdf, float v) {
83
83
  if (!(v > 0.0 && v < 1.0)) { return 0.0; }
84
84
  float sinTheta = sin(min(v, 1.0 - v) * PI);
85
- return ew.x * ew.y * INVPI2 / (2.0 * sinTheta);
85
+ return partialPdf.x * partialPdf.y * INVPI2 / (2.0 * sinTheta);
86
86
  }
87
87
 
88
88
 
89
- vec3 pI(vec2 random, out vec2 uv, out float pdf) {
90
- vec2 ew;
89
+ vec3 pn(vec2 random, out vec2 uv, out float pdf) {
90
+ vec2 partialPdf;
91
91
  int vOffset;
92
92
 
93
- uv.y = rE(random.x, vOffset, ew.y);
94
- uv.x = rD(random.y, vOffset, ew.x);
93
+ uv.y = rv(random.x, vOffset, partialPdf.y);
94
+ uv.x = ru(random.y, vOffset, partialPdf.x);
95
95
 
96
96
  float phi = uv.x * TWOPI;
97
97
  float theta = uv.y * PI;
98
- float ci = cos(theta);
98
+ float ct = cos(theta);
99
99
  float sinTheta = sin(theta);
100
- float vM = cos(phi);
101
- float vX = sin(phi);
100
+ float vZ = cos(phi);
101
+ float wr = sin(phi);
102
102
 
103
- vec3 dir = vec3(-sinTheta * vM, ci, -sinTheta * vX);
103
+ vec3 dir = vec3(-sinTheta * vZ, ct, -sinTheta * wr);
104
104
 
105
- pdf = eW(ew, uv.y);
105
+ pdf = envMapSolidAnglePdf(partialPdf, uv.y);
106
106
 
107
107
  return environmentRotation * dir;
108
108
  }
109
109
 
110
- float iT(vec2 uv) {
110
+ float envMapPdf(vec2 uv) {
111
111
  vec2 size = vec2(textureSize(envMap, 0));
112
112
 
113
113
  ivec2 pixel = clamp(ivec2(uv * size), ivec2(0), ivec2(size) - ivec2(1));
114
114
 
115
- float ub = texelFetch(envMapDistribution, ivec2(1 + pixel.x, pixel.y), 0).y;
116
- float uc = texelFetch(envMapDistribution, ivec2(0, pixel.y), 0).y;
115
+ float ue = texelFetch(envMapDistribution, ivec2(1 + pixel.x, pixel.y), 0).y;
116
+ float uf = texelFetch(envMapDistribution, ivec2(0, pixel.y), 0).y;
117
117
 
118
- return eW(vec2(ub, uc), uv.y);
118
+ return envMapSolidAnglePdf(vec2(ue, uf), uv.y);
119
119
  }
120
120
 
121
- float dK(vec3 point, float height, float radius) {
122
- float ge = length(point);
123
- if (ge < 0.00001) {
121
+ float di(vec3 point, float height, float radius) {
122
+ float fQ = length(point);
123
+ if (fQ < 0.00001) {
124
124
  return -radius;
125
125
  }
126
126
 
127
- float iX = radius * point.y / ge;
128
- float iL = -1.5 * height;
129
- float eH;
130
- if (iX >= 0.0) {
131
- eH = radius;
132
- } else if (iX < iL) {
133
- eH = -height * ge / point.y;
127
+ float iG = radius * point.y / fQ;
128
+ float iq = -1.5 * height;
129
+ float eq;
130
+ if (iG >= 0.0) {
131
+ eq = radius;
132
+ } else if (iG < iq) {
133
+ eq = -height * fQ / point.y;
134
134
  } else {
135
- float cL = 1.0
136
- - iX * iX / (3.0 * iL * iL);
137
- eH = radius * cL;
135
+ float cv = 1.0
136
+ - iG * iG / (3.0 * iq * iq);
137
+ eq = radius * cv;
138
138
  }
139
- return ge - eH;
139
+ return fQ - eq;
140
140
  }
141
141
 
142
- vec3 fd(vec3 origin, vec3 d) {
142
+ vec3 eM(vec3 origin, vec3 d) {
143
143
  #ifdef USE_GROUNDED_BACKGROUND
144
144
  float height = groundedBackgroundParams.x;
145
145
  float radius = groundedBackgroundParams.y;
146
- float xB = groundedBackgroundParams.z;
147
- vec3 cf = normalize(d);
148
- vec3 bI = origin - vec3(
146
+ float yd = groundedBackgroundParams.z;
147
+ vec3 bS = normalize(d);
148
+ vec3 bs = origin - vec3(
149
149
  groundedBackgroundCenter.x,
150
- xB + height,
150
+ yd + height,
151
151
  groundedBackgroundCenter.y
152
152
  );
153
153
 
154
154
 
155
155
 
156
- float eT = dot(bI, cf);
157
- float br = eT * eT
158
- - dot(bI, bI) + radius * radius;
159
- if (br > 0.0) {
160
- float cM = -eT + sqrt(br);
156
+ float eE = dot(bs, bS);
157
+ float bj = eE * eE
158
+ - dot(bs, bs) + radius * radius;
159
+ if (bj > 0.0) {
160
+ float cw = -eE + sqrt(bj);
161
161
  if (
162
- cM > 0.0
163
- && dK(bI, height, radius) <= 0.0
162
+ cw > 0.0
163
+ && di(bs, height, radius) <= 0.0
164
164
  ) {
165
- vec3 oK = bI + cf * cM;
166
- if (oK.y >= 0.0) {
167
- return normalize(oK);
165
+ vec3 oA = bs + bS * cw;
166
+ if (oA.y >= 0.0) {
167
+ return normalize(oA);
168
168
  }
169
169
 
170
- if (cf.y < -0.00001 && radius > 1.5 * height) {
171
- float ir = (-height - bI.y) / cf.y;
172
- vec3 oB = bI + cf * ir;
173
- float pe = (2.0 / 3.0)
170
+ if (bS.y < -0.00001 && radius > 1.5 * height) {
171
+ float hP = (-height - bs.y) / bS.y;
172
+ vec3 ot = bs + bS * hP;
173
+ float oT = (2.0 / 3.0)
174
174
  * sqrt(radius * radius - 2.25 * height * height);
175
- if (ir > 0.0 && length(oB.xz) <= pe) {
176
- return normalize(oB);
175
+ if (hP > 0.0 && length(ot.xz) <= oT) {
176
+ return normalize(ot);
177
177
  }
178
178
  }
179
179
 
180
- float cV = 0.0;
180
+ float cI = 0.0;
181
181
  for (int i = 0; i < 14; i++) {
182
- float fB = (cV + cM) * 0.5;
183
- vec3 qy = bI + cf * fB;
184
- if (dK(qy, height, radius) > 0.0) {
185
- cM = fB;
182
+ float fd = (cI + cw) * 0.5;
183
+ vec3 qq = bs + bS * fd;
184
+ if (di(qq, height, radius) > 0.0) {
185
+ cw = fd;
186
186
  } else {
187
- cV = fB;
187
+ cI = fd;
188
188
  }
189
189
  }
190
- vec3 hit = bI + cf * ((cV + cM) * 0.5);
190
+ vec3 hit = bs + bS * ((cI + cw) * 0.5);
191
191
  return normalize(hit);
192
192
  }
193
193
  }
@@ -195,15 +195,15 @@ return normalize(hit);
195
195
  return d;
196
196
  }
197
197
 
198
- vec4 cG(vec3 origin, vec3 d) {
199
- d = fd(origin, d);
198
+ vec4 cn(vec3 origin, vec3 d) {
199
+ d = eM(origin, d);
200
200
  #ifdef USE_BACKGROUND
201
201
  vec4 t = backgroundMapTransform;
202
202
  d = vec3(t.x * d.x - t.y * d.z, d.y, t.y * d.x + t.x * d.z);
203
- vec4 bc = textureLinear(backgroundMap, eV(transpose(backgroundMapRotation) * d));
204
- return vec4(bc.rgb * t.z, bc.a);
203
+ vec4 aW = textureLinear(backgroundMap, eF(transpose(backgroundMapRotation) * d));
204
+ return vec4(aW.rgb * t.z, aW.a);
205
205
  #else
206
- return textureLinear(backgroundMap, dm(d));
206
+ return textureLinear(backgroundMap, cT(d));
207
207
  #endif
208
208
  }`
209
209
  });