@driftengine/core 4.13.3 → 4.13.5

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 (153) hide show
  1. package/CHANGELOG.json +52 -0
  2. package/README.md +1 -1
  3. package/dist/index.d.ts +3 -2
  4. package/dist/render/anisotropicLobe.d.ts +5 -0
  5. package/dist/render/anisotropicLobe.js +13 -0
  6. package/dist/render/atmosphere.d.ts +79 -1
  7. package/dist/render/atmosphere.js +66 -19
  8. package/dist/render/backend/webgl2/renderer.d.ts +34 -2
  9. package/dist/render/backend/webgl2/renderer.js +44 -12
  10. package/dist/render/backend/webgpu/boltPass.d.ts +1 -1
  11. package/dist/render/backend/webgpu/causticsPass.d.ts +1 -1
  12. package/dist/render/backend/webgpu/clothSetPack.js +1 -0
  13. package/dist/render/backend/webgpu/clothSolvePack.d.ts +5 -2
  14. package/dist/render/backend/webgpu/clothSolvePack.js +2 -1
  15. package/dist/render/backend/webgpu/filmPass.d.ts +1 -1
  16. package/dist/render/backend/webgpu/gpuClothSet.js +1 -1
  17. package/dist/render/backend/webgpu/gpuDrivenPass.js +20 -3
  18. package/dist/render/backend/webgpu/linePass.d.ts +1 -1
  19. package/dist/render/backend/webgpu/mediumFields.d.ts +17 -0
  20. package/dist/render/backend/webgpu/mediumFields.js +74 -0
  21. package/dist/render/backend/webgpu/plumePass.d.ts +3 -3
  22. package/dist/render/backend/webgpu/postPass.d.ts +7 -2
  23. package/dist/render/backend/webgpu/renderer.d.ts +13 -3
  24. package/dist/render/backend/webgpu/renderer.js +86 -150
  25. package/dist/render/backend/webgpu/scatterPass.d.ts +1 -1
  26. package/dist/render/backend/webgpu/shaders/clothSolve.wgsl.d.ts +1 -1
  27. package/dist/render/backend/webgpu/shaders/clothSolve.wgsl.js +7 -5
  28. package/dist/render/backend/webgpu/waterPass.d.ts +1 -1
  29. package/dist/render/environmentMixing.d.ts +18 -0
  30. package/dist/render/environmentMixing.js +40 -0
  31. package/dist/render/fog.d.ts +43 -1
  32. package/dist/render/fog.js +87 -22
  33. package/dist/render/globalMedium.d.ts +112 -10
  34. package/dist/render/globalMedium.js +96 -1
  35. package/dist/render/globalMediumPass.d.ts +7 -3
  36. package/dist/render/globalMediumPass.js +22 -1
  37. package/dist/render/hairLobes.d.ts +27 -2
  38. package/dist/render/hairLobes.js +57 -4
  39. package/dist/render/lightBudget.d.ts +12 -0
  40. package/dist/render/lightBudget.js +24 -0
  41. package/dist/render/sceneTarget.d.ts +5 -3
  42. package/dist/render/sceneTarget.js +14 -8
  43. package/dist/render/shaders/arcane.d.ts +1 -1
  44. package/dist/render/shaders/bolt.d.ts +1 -1
  45. package/dist/render/shaders/caustics.d.ts +1 -1
  46. package/dist/render/shaders/film.d.ts +1 -1
  47. package/dist/render/shaders/film.js +4 -1
  48. package/dist/render/shaders/fire.d.ts +1 -1
  49. package/dist/render/shaders/flat/anisotropic.d.ts +8 -1
  50. package/dist/render/shaders/flat/anisotropic.js +25 -3
  51. package/dist/render/shaders/flat/hair.js +77 -27
  52. package/dist/render/shaders/flat/main.d.ts +1 -1
  53. package/dist/render/shaders/flat/main.js +23 -3
  54. package/dist/render/shaders/flat/models.js +12 -5
  55. package/dist/render/shaders/flat/preamble.js +7 -0
  56. package/dist/render/shaders/fog.d.ts +4 -4
  57. package/dist/render/shaders/fog.js +81 -32
  58. package/dist/render/shaders/generated/arcane.wgsl.d.ts +29 -39
  59. package/dist/render/shaders/generated/arcane.wgsl.js +29 -39
  60. package/dist/render/shaders/generated/bolt.wgsl.d.ts +26 -36
  61. package/dist/render/shaders/generated/bolt.wgsl.js +26 -36
  62. package/dist/render/shaders/generated/caustics.wgsl.d.ts +25 -35
  63. package/dist/render/shaders/generated/caustics.wgsl.js +25 -35
  64. package/dist/render/shaders/generated/film.wgsl.d.ts +28 -38
  65. package/dist/render/shaders/generated/film.wgsl.js +28 -38
  66. package/dist/render/shaders/generated/fire.wgsl.d.ts +28 -38
  67. package/dist/render/shaders/generated/fire.wgsl.js +28 -38
  68. package/dist/render/shaders/generated/flat.wgsl.d.ts +1466 -1546
  69. package/dist/render/shaders/generated/flat.wgsl.js +1489 -1569
  70. package/dist/render/shaders/generated/globalMedium.wgsl.d.ts +98 -12
  71. package/dist/render/shaders/generated/globalMedium.wgsl.js +98 -12
  72. package/dist/render/shaders/generated/line.wgsl.d.ts +25 -35
  73. package/dist/render/shaders/generated/line.wgsl.js +25 -35
  74. package/dist/render/shaders/generated/particle.wgsl.d.ts +100 -140
  75. package/dist/render/shaders/generated/particle.wgsl.js +100 -140
  76. package/dist/render/shaders/generated/rush.wgsl.d.ts +20 -10
  77. package/dist/render/shaders/generated/rush.wgsl.js +20 -10
  78. package/dist/render/shaders/generated/scatter.wgsl.d.ts +25 -35
  79. package/dist/render/shaders/generated/scatter.wgsl.js +25 -35
  80. package/dist/render/shaders/generated/smoke.wgsl.d.ts +28 -38
  81. package/dist/render/shaders/generated/smoke.wgsl.js +28 -38
  82. package/dist/render/shaders/generated/water.wgsl.d.ts +29 -39
  83. package/dist/render/shaders/generated/water.wgsl.js +29 -39
  84. package/dist/render/shaders/globalMedium.js +114 -10
  85. package/dist/render/shaders/gpudriven/blendRaster.wgsl.js +2 -1
  86. package/dist/render/shaders/gpudriven/fog.wgsl.d.ts +10 -4
  87. package/dist/render/shaders/gpudriven/fog.wgsl.js +77 -19
  88. package/dist/render/shaders/gpudriven/frameBlock.wgsl.d.ts +1 -1
  89. package/dist/render/shaders/gpudriven/frameBlock.wgsl.js +12 -1
  90. package/dist/render/shaders/gpudriven/shade.wgsl.js +3 -1
  91. package/dist/render/shaders/line.d.ts +1 -1
  92. package/dist/render/shaders/line.js +4 -2
  93. package/dist/render/shaders/localExposure.d.ts +42 -1
  94. package/dist/render/shaders/localExposure.js +73 -6
  95. package/dist/render/shaders/particle.d.ts +3 -3
  96. package/dist/render/shaders/particle.js +10 -6
  97. package/dist/render/shaders/scatter.d.ts +1 -1
  98. package/dist/render/shaders/scatter.js +4 -2
  99. package/dist/render/shaders/smoke.d.ts +1 -1
  100. package/dist/render/shaders/water.d.ts +1 -1
  101. package/dist/render/shaders/water.js +2 -1
  102. package/dist/render/surfaceModel.d.ts +23 -4
  103. package/dist/render/surfaceModel.js +12 -2
  104. package/package.json +6 -6
  105. package/src/index.ts +12 -2
  106. package/src/render/anisotropicLobe.ts +20 -0
  107. package/src/render/atmosphere.ts +153 -20
  108. package/src/render/backend/webgl2/renderer.ts +63 -13
  109. package/src/render/backend/webgpu/clothSetPack.ts +1 -0
  110. package/src/render/backend/webgpu/clothSolvePack.ts +6 -2
  111. package/src/render/backend/webgpu/gpuClothSet.ts +1 -1
  112. package/src/render/backend/webgpu/gpuDrivenPass.ts +20 -3
  113. package/src/render/backend/webgpu/mediumFields.ts +87 -0
  114. package/src/render/backend/webgpu/renderer.ts +109 -157
  115. package/src/render/backend/webgpu/shaders/clothSolve.wgsl.ts +7 -5
  116. package/src/render/environmentMixing.ts +48 -0
  117. package/src/render/fog.ts +125 -25
  118. package/src/render/globalMedium.ts +214 -11
  119. package/src/render/globalMediumPass.ts +29 -4
  120. package/src/render/hairLobes.ts +109 -3
  121. package/src/render/lightBudget.ts +32 -0
  122. package/src/render/sceneTarget.ts +15 -11
  123. package/src/render/shaders/film.ts +4 -1
  124. package/src/render/shaders/flat/anisotropic.ts +25 -3
  125. package/src/render/shaders/flat/hair.ts +77 -27
  126. package/src/render/shaders/flat/main.ts +23 -3
  127. package/src/render/shaders/flat/models.ts +12 -5
  128. package/src/render/shaders/flat/preamble.ts +7 -0
  129. package/src/render/shaders/fog.ts +81 -32
  130. package/src/render/shaders/generated/arcane.wgsl.ts +29 -39
  131. package/src/render/shaders/generated/bolt.wgsl.ts +26 -36
  132. package/src/render/shaders/generated/caustics.wgsl.ts +25 -35
  133. package/src/render/shaders/generated/film.wgsl.ts +28 -38
  134. package/src/render/shaders/generated/fire.wgsl.ts +28 -38
  135. package/src/render/shaders/generated/flat.wgsl.ts +1489 -1569
  136. package/src/render/shaders/generated/globalMedium.wgsl.ts +98 -12
  137. package/src/render/shaders/generated/line.wgsl.ts +25 -35
  138. package/src/render/shaders/generated/particle.wgsl.ts +100 -140
  139. package/src/render/shaders/generated/rush.wgsl.ts +20 -10
  140. package/src/render/shaders/generated/scatter.wgsl.ts +25 -35
  141. package/src/render/shaders/generated/smoke.wgsl.ts +28 -38
  142. package/src/render/shaders/generated/water.wgsl.ts +29 -39
  143. package/src/render/shaders/globalMedium.ts +114 -10
  144. package/src/render/shaders/gpudriven/blendRaster.wgsl.ts +2 -1
  145. package/src/render/shaders/gpudriven/fog.wgsl.ts +78 -19
  146. package/src/render/shaders/gpudriven/frameBlock.wgsl.ts +12 -1
  147. package/src/render/shaders/gpudriven/shade.wgsl.ts +3 -1
  148. package/src/render/shaders/line.ts +4 -2
  149. package/src/render/shaders/localExposure.ts +115 -6
  150. package/src/render/shaders/particle.ts +10 -6
  151. package/src/render/shaders/scatter.ts +4 -2
  152. package/src/render/shaders/water.ts +2 -1
  153. package/src/render/surfaceModel.ts +41 -6
@@ -1,4 +1,4 @@
1
- export declare const LINE_FRAG_WGSL = "struct Uniforms {\n uColor: vec3<f32>,\n uOpacity: f32,\n uCameraPos: vec3<f32>,\n uSoftness: f32,\n uFogColor: vec3<f32>,\n uFogDensity: f32,\n uFogHeightFalloff: f32,\n uFogEyeY: f32,\n uUnderwaterColor: vec3<f32>,\n uUnderwaterFogDensity: f32,\n uUnderwaterFactor: f32,\n uFogMode: i32,\n uFogNear: f32,\n uFogFar: f32,\n uOutputTransform: i32,\n uOutputExposure: f32,\n}\n\n@group(0) @binding(1) \nvar<uniform> unnamed: Uniforms;\nvar<private> vSide_1: f32;\nvar<private> vWorldPos_1: vec3<f32>;\nvar<private> outColor: vec4<f32>;\n\nfn linearToSrgb_u0028_vf3_u003b(c: ptr<function, vec3<f32>>) -> vec3<f32> {\n var low: vec3<f32>;\n var high: vec3<f32>;\n\n let _e71 = (*c);\n low = (_e71 * 12.92f);\n let _e73 = (*c);\n high = ((pow(max(_e73, vec3<f32>(0f, 0f, 0f)), vec3<f32>(0.41666666f, 0.41666666f, 0.41666666f)) * 1.055f) - vec3(0.055f));\n let _e79 = high;\n let _e80 = low;\n let _e81 = (*c);\n return mix(_e79, _e80, step(_e81, vec3<f32>(0.0031308f, 0.0031308f, 0.0031308f)));\n}\n\nfn highlightShoulder_u0028_vf3_u003b(c_1: ptr<function, vec3<f32>>) -> vec3<f32> {\n var m: f32;\n var e: f32;\n\n let _e72 = (*c_1)[0u];\n let _e74 = (*c_1)[1u];\n let _e76 = (*c_1)[2u];\n m = max(_e72, max(_e74, _e76));\n let _e79 = m;\n if (_e79 <= 0.8f) {\n let _e81 = (*c_1);\n return _e81;\n }\n let _e82 = m;\n e = (_e82 - 0.8f);\n let _e84 = (*c_1);\n let _e85 = e;\n let _e87 = e;\n let _e91 = m;\n return (_e84 * ((0.8f + ((0.2f * _e85) / (_e87 + 0.2f))) / _e91));\n}\n\nfn rrtAndOdtFit_u0028_vf3_u003b(v: ptr<function, vec3<f32>>) -> vec3<f32> {\n var a: vec3<f32>;\n var b: vec3<f32>;\n\n let _e71 = (*v);\n let _e72 = (*v);\n a = ((_e71 * (_e72 + vec3(0.0245786f))) - vec3(0.000090537f));\n let _e78 = (*v);\n let _e79 = (*v);\n b = ((_e78 * ((_e79 * 0.983729f) + vec3(0.432951f))) + vec3(0.238081f));\n let _e86 = a;\n let _e87 = b;\n return (_e86 / _e87);\n}\n\nfn acesFilmic_u0028_vf3_u003b(x: ptr<function, vec3<f32>>) -> vec3<f32> {\n var param: vec3<f32>;\n\n let _e71 = unnamed.uOutputExposure;\n let _e72 = (*x);\n (*x) = (_e72 * _e71);\n let _e74 = (*x);\n param = (mat3x3<f32>(vec3<f32>(0.59719f, 0.076f, 0.0284f), vec3<f32>(0.35458f, 0.90834f, 0.13383f), vec3<f32>(0.04823f, 0.01566f, 0.83777f)) * _e74);\n let _e76 = rrtAndOdtFit_u0028_vf3_u003b((&param));\n return clamp((mat3x3<f32>(vec3<f32>(1.60475f, -0.10208f, -0.00327f), vec3<f32>(-0.53108f, 1.10813f, -0.07276f), vec3<f32>(-0.07367f, -0.00605f, 1.07602f)) * _e76), vec3(0f), vec3(1f));\n}\n\nfn applyOutputTransform_u0028_vf3_u003b(c_2: ptr<function, vec3<f32>>) -> vec3<f32> {\n var param_1: vec3<f32>;\n var param_2: vec3<f32>;\n var param_3: vec3<f32>;\n\n let _e73 = unnamed.uOutputTransform;\n if (_e73 == 0i) {\n let _e75 = (*c_2);\n return _e75;\n }\n let _e77 = unnamed.uOutputTransform;\n if (_e77 == 2i) {\n let _e79 = (*c_2);\n param_1 = _e79;\n let _e80 = acesFilmic_u0028_vf3_u003b((&param_1));\n (*c_2) = _e80;\n }\n let _e82 = unnamed.uOutputTransform;\n if (_e82 == 3i) {\n let _e84 = (*c_2);\n let _e86 = unnamed.uOutputExposure;\n param_2 = (_e84 * _e86);\n let _e88 = highlightShoulder_u0028_vf3_u003b((&param_2));\n (*c_2) = _e88;\n }\n let _e89 = (*c_2);\n param_3 = _e89;\n let _e90 = linearToSrgb_u0028_vf3_u003b((&param_3));\n return _e90;\n}\n\nfn mediumColor_u0028_() -> vec3<f32> {\n let _e69 = unnamed.uFogColor;\n let _e71 = unnamed.uUnderwaterColor;\n let _e73 = unnamed.uUnderwaterFactor;\n return mix(_e69, _e71, vec3(_e73));\n}\n\nfn mediumFog_u0028_f1_u003b_f1_u003b(dist: ptr<function, f32>, pointY: ptr<function, f32>) -> f32 {\n var span: f32;\n var ramp: f32;\n var wetLinear: f32;\n var start: f32;\n var before: f32;\n var local: f32;\n var t: f32;\n var rest: f32;\n var denom: f32;\n var air: f32;\n var wet: f32;\n\n let _e82 = unnamed.uFogMode;\n if (_e82 == 1i) {\n let _e85 = unnamed.uFogFar;\n let _e87 = unnamed.uFogNear;\n span = max((_e85 - _e87), 0.0001f);\n let _e90 = (*dist);\n let _e92 = unnamed.uFogNear;\n let _e94 = span;\n ramp = clamp(((_e90 - _e92) / _e94), 0f, 1f);\n let _e98 = unnamed.uUnderwaterFactor;\n if (_e98 <= 0f) {\n let _e100 = ramp;\n return _e100;\n }\n let _e102 = unnamed.uUnderwaterFogDensity;\n let _e103 = (*dist);\n wetLinear = (_e102 * _e103);\n let _e105 = ramp;\n let _e106 = wetLinear;\n let _e108 = wetLinear;\n let _e114 = unnamed.uUnderwaterFactor;\n return mix(_e105, (1f - exp2(((-(_e106) * _e108) * 1.442695f))), _e114);\n }\n let _e117 = unnamed.uFogNear;\n let _e118 = (*dist);\n start = min(_e117, _e118);\n let _e120 = (*dist);\n if (_e120 > 0f) {\n let _e122 = start;\n let _e123 = (*dist);\n local = (_e122 / _e123);\n } else {\n local = 0f;\n }\n let _e125 = local;\n before = _e125;\n let _e126 = (*pointY);\n let _e128 = unnamed.uFogEyeY;\n let _e131 = unnamed.uFogHeightFalloff;\n t = ((_e126 - _e128) * _e131);\n let _e133 = t;\n let _e134 = before;\n rest = (_e133 * (1f - _e134));\n let _e137 = rest;\n let _e140 = rest;\n denom = select(_e140, 0.0001f, (abs(_e137) < 0.0001f));\n let _e143 = unnamed.uFogDensity;\n let _e145 = t;\n let _e147 = before;\n let _e151 = (*dist);\n let _e152 = start;\n let _e155 = denom;\n let _e160 = denom;\n air = (1f - exp(((((-(_e143) * exp((-(_e145) * _e147))) * (_e151 - _e152)) * (1f - exp(-(_e155)))) / _e160)));\n let _e165 = unnamed.uUnderwaterFactor;\n if (_e165 <= 0f) {\n let _e167 = air;\n return _e167;\n }\n let _e169 = unnamed.uUnderwaterFogDensity;\n let _e170 = (*dist);\n wet = (_e169 * _e170);\n let _e172 = air;\n let _e173 = wet;\n let _e175 = wet;\n let _e181 = unnamed.uUnderwaterFactor;\n return mix(_e172, (1f - exp2(((-(_e173) * _e175) * 1.442695f))), _e181);\n}\n\nfn main_1() {\n var edge: f32;\n var band: f32;\n var coverage: f32;\n var fog: f32;\n var param_4: f32;\n var param_5: f32;\n var color: vec3<f32>;\n var param_6: vec3<f32>;\n\n let _e76 = vSide_1;\n edge = (1f - abs(_e76));\n let _e79 = vSide_1;\n let _e80 = fwidth(_e79);\n let _e82 = unnamed.uSoftness;\n band = max(_e80, _e82);\n let _e84 = band;\n let _e85 = edge;\n coverage = smoothstep(0f, _e84, _e85);\n let _e87 = vWorldPos_1;\n let _e89 = unnamed.uCameraPos;\n param_4 = distance(_e87, _e89);\n let _e92 = vWorldPos_1[1u];\n param_5 = _e92;\n let _e93 = mediumFog_u0028_f1_u003b_f1_u003b((&param_4), (&param_5));\n fog = _e93;\n let _e95 = unnamed.uColor;\n let _e96 = mediumColor_u0028_();\n let _e97 = fog;\n color = mix(_e95, _e96, vec3(_e97));\n let _e100 = color;\n param_6 = _e100;\n let _e101 = applyOutputTransform_u0028_vf3_u003b((&param_6));\n let _e102 = coverage;\n let _e104 = unnamed.uOpacity;\n outColor = vec4<f32>(_e101.x, _e101.y, _e101.z, (_e102 * _e104));\n return;\n}\n\n@fragment \nfn main(@location(0) vSide: f32, @location(1) vWorldPos: vec3<f32>) -> @location(0) vec4<f32> {\n vSide_1 = vSide;\n vWorldPos_1 = vWorldPos;\n main_1();\n let _e5 = outColor;\n return _e5;\n}\n";
1
+ export declare const LINE_FRAG_WGSL = "struct Uniforms {\n uColor: vec3<f32>,\n uOpacity: f32,\n uCameraPos: vec3<f32>,\n uSoftness: f32,\n uFogColor: vec3<f32>,\n uFogMedium: vec4<f32>,\n uFogRange: vec4<f32>,\n uUnderwaterColor: vec3<f32>,\n uUnderwaterFactor: f32,\n uFogLayer2_: vec4<f32>,\n uFogGlow: vec4<f32>,\n uFogGlowDir: vec4<f32>,\n uOutputTransform: i32,\n uOutputExposure: f32,\n}\n\n@group(0) @binding(1) \nvar<uniform> unnamed: Uniforms;\nvar<private> vSide_1: f32;\nvar<private> vWorldPos_1: vec3<f32>;\nvar<private> outColor: vec4<f32>;\n\nfn linearToSrgb_u0028_vf3_u003b(c: ptr<function, vec3<f32>>) -> vec3<f32> {\n var low: vec3<f32>;\n var high: vec3<f32>;\n\n let _e70 = (*c);\n low = (_e70 * 12.92f);\n let _e72 = (*c);\n high = ((pow(max(_e72, vec3<f32>(0f, 0f, 0f)), vec3<f32>(0.41666666f, 0.41666666f, 0.41666666f)) * 1.055f) - vec3(0.055f));\n let _e78 = high;\n let _e79 = low;\n let _e80 = (*c);\n return mix(_e78, _e79, step(_e80, vec3<f32>(0.0031308f, 0.0031308f, 0.0031308f)));\n}\n\nfn highlightShoulder_u0028_vf3_u003b(c_1: ptr<function, vec3<f32>>) -> vec3<f32> {\n var m: f32;\n var e: f32;\n\n let _e71 = (*c_1)[0u];\n let _e73 = (*c_1)[1u];\n let _e75 = (*c_1)[2u];\n m = max(_e71, max(_e73, _e75));\n let _e78 = m;\n if (_e78 <= 0.8f) {\n let _e80 = (*c_1);\n return _e80;\n }\n let _e81 = m;\n e = (_e81 - 0.8f);\n let _e83 = (*c_1);\n let _e84 = e;\n let _e86 = e;\n let _e90 = m;\n return (_e83 * ((0.8f + ((0.2f * _e84) / (_e86 + 0.2f))) / _e90));\n}\n\nfn rrtAndOdtFit_u0028_vf3_u003b(v: ptr<function, vec3<f32>>) -> vec3<f32> {\n var a: vec3<f32>;\n var b: vec3<f32>;\n\n let _e70 = (*v);\n let _e71 = (*v);\n a = ((_e70 * (_e71 + vec3(0.0245786f))) - vec3(0.000090537f));\n let _e77 = (*v);\n let _e78 = (*v);\n b = ((_e77 * ((_e78 * 0.983729f) + vec3(0.432951f))) + vec3(0.238081f));\n let _e85 = a;\n let _e86 = b;\n return (_e85 / _e86);\n}\n\nfn acesFilmic_u0028_vf3_u003b(x: ptr<function, vec3<f32>>) -> vec3<f32> {\n var param: vec3<f32>;\n\n let _e70 = unnamed.uOutputExposure;\n let _e71 = (*x);\n (*x) = (_e71 * _e70);\n let _e73 = (*x);\n param = (mat3x3<f32>(vec3<f32>(0.59719f, 0.076f, 0.0284f), vec3<f32>(0.35458f, 0.90834f, 0.13383f), vec3<f32>(0.04823f, 0.01566f, 0.83777f)) * _e73);\n let _e75 = rrtAndOdtFit_u0028_vf3_u003b((&param));\n return clamp((mat3x3<f32>(vec3<f32>(1.60475f, -0.10208f, -0.00327f), vec3<f32>(-0.53108f, 1.10813f, -0.07276f), vec3<f32>(-0.07367f, -0.00605f, 1.07602f)) * _e75), vec3(0f), vec3(1f));\n}\n\nfn applyOutputTransform_u0028_vf3_u003b(c_2: ptr<function, vec3<f32>>) -> vec3<f32> {\n var param_1: vec3<f32>;\n var param_2: vec3<f32>;\n var param_3: vec3<f32>;\n\n let _e72 = unnamed.uOutputTransform;\n if (_e72 == 0i) {\n let _e74 = (*c_2);\n return _e74;\n }\n let _e76 = unnamed.uOutputTransform;\n if (_e76 == 2i) {\n let _e78 = (*c_2);\n param_1 = _e78;\n let _e79 = acesFilmic_u0028_vf3_u003b((&param_1));\n (*c_2) = _e79;\n }\n let _e81 = unnamed.uOutputTransform;\n if (_e81 == 3i) {\n let _e83 = (*c_2);\n let _e85 = unnamed.uOutputExposure;\n param_2 = (_e83 * _e85);\n let _e87 = highlightShoulder_u0028_vf3_u003b((&param_2));\n (*c_2) = _e87;\n }\n let _e88 = (*c_2);\n param_3 = _e88;\n let _e89 = linearToSrgb_u0028_vf3_u003b((&param_3));\n return _e89;\n}\n\nfn hazeDepth_u0028_f1_u003b_f1_u003b(dist: ptr<function, f32>, pointY: ptr<function, f32>) -> f32 {\n var start: f32;\n var before: f32;\n var local: f32;\n var t: f32;\n var rest: f32;\n var denom: f32;\n var depth: f32;\n var t2_: f32;\n var rest2_: f32;\n var denom2_: f32;\n\n let _e81 = unnamed.uFogRange[0u];\n let _e82 = (*dist);\n start = min(_e81, _e82);\n let _e84 = (*dist);\n if (_e84 > 0f) {\n let _e86 = start;\n let _e87 = (*dist);\n local = (_e86 / _e87);\n } else {\n local = 0f;\n }\n let _e89 = local;\n before = _e89;\n let _e90 = (*pointY);\n let _e93 = unnamed.uFogMedium[2u];\n let _e97 = unnamed.uFogMedium[1u];\n t = ((_e90 - _e93) * _e97);\n let _e99 = t;\n let _e100 = before;\n rest = (_e99 * (1f - _e100));\n let _e103 = rest;\n let _e106 = rest;\n denom = select(_e106, 0.0001f, (abs(_e103) < 0.0001f));\n let _e110 = unnamed.uFogMedium[0u];\n let _e111 = t;\n let _e113 = before;\n let _e117 = (*dist);\n let _e118 = start;\n let _e121 = denom;\n let _e126 = denom;\n depth = ((((_e110 * exp((-(_e111) * _e113))) * (_e117 - _e118)) * (1f - exp(-(_e121)))) / _e126);\n let _e130 = unnamed.uFogLayer2_[0u];\n if (_e130 > 0f) {\n let _e132 = (*pointY);\n let _e135 = unnamed.uFogMedium[2u];\n let _e139 = unnamed.uFogLayer2_[1u];\n t2_ = ((_e132 - _e135) * _e139);\n let _e141 = t2_;\n let _e142 = before;\n rest2_ = (_e141 * (1f - _e142));\n let _e145 = rest2_;\n let _e148 = rest2_;\n denom2_ = select(_e148, 0.0001f, (abs(_e145) < 0.0001f));\n let _e152 = unnamed.uFogLayer2_[0u];\n let _e153 = t2_;\n let _e155 = before;\n let _e159 = (*dist);\n let _e160 = start;\n let _e163 = denom2_;\n let _e168 = denom2_;\n let _e170 = depth;\n depth = (_e170 + ((((_e152 * exp((-(_e153) * _e155))) * (_e159 - _e160)) * (1f - exp(-(_e163)))) / _e168));\n }\n let _e172 = depth;\n return _e172;\n}\n\nfn mediumGlow_u0028_f1_u003b_f1_u003b_vf3_u003b(dist_1: ptr<function, f32>, pointY_1: ptr<function, f32>, toPoint: ptr<function, vec3<f32>>) -> vec3<f32> {\n var span: f32;\n var perMetre: f32;\n var param_4: f32;\n var param_5: f32;\n var hidden: f32;\n var lobe: f32;\n var phi_305_: bool;\n var phi_319_: bool;\n\n let _e78 = unnamed.uFogRange[2u];\n let _e79 = (_e78 == 1f);\n phi_305_ = _e79;\n if !(_e79) {\n let _e83 = unnamed.uFogGlow[0u];\n let _e86 = unnamed.uFogGlow[1u];\n let _e90 = unnamed.uFogGlow[2u];\n phi_305_ = (max(max(_e83, _e86), _e90) <= 0f);\n }\n let _e94 = phi_305_;\n if _e94 {\n return vec3<f32>(0f, 0f, 0f);\n }\n let _e97 = unnamed.uFogLayer2_[3u];\n let _e98 = (_e97 > 0f);\n phi_319_ = _e98;\n if _e98 {\n let _e99 = (*dist_1);\n let _e102 = unnamed.uFogLayer2_[3u];\n phi_319_ = (_e99 > _e102);\n }\n let _e105 = phi_319_;\n if _e105 {\n return vec3<f32>(0f, 0f, 0f);\n }\n let _e106 = (*dist_1);\n let _e109 = unnamed.uFogRange[0u];\n let _e110 = (*dist_1);\n span = (_e106 - min(_e109, _e110));\n let _e113 = span;\n if (_e113 <= 0f) {\n return vec3<f32>(0f, 0f, 0f);\n }\n let _e115 = (*dist_1);\n param_4 = _e115;\n let _e116 = (*pointY_1);\n param_5 = _e116;\n let _e117 = hazeDepth_u0028_f1_u003b_f1_u003b((&param_4), (&param_5));\n let _e118 = span;\n perMetre = (_e117 / _e118);\n let _e120 = perMetre;\n let _e122 = span;\n let _e125 = unnamed.uFogGlowDir[3u];\n hidden = (1f - exp((-(_e120) * max((_e122 - _e125), 0f))));\n let _e131 = (*toPoint);\n let _e133 = unnamed.uFogGlowDir;\n let _e139 = unnamed.uFogGlow[3u];\n lobe = pow(clamp(dot(_e131, _e133.xyz), 0f, 1f), _e139);\n let _e142 = unnamed.uFogGlow;\n let _e144 = lobe;\n let _e145 = hidden;\n let _e148 = unnamed.uUnderwaterFactor;\n return (_e142.xyz * ((_e144 * _e145) * (1f - _e148)));\n}\n\nfn mediumColor_u0028_() -> vec3<f32> {\n let _e68 = unnamed.uFogColor;\n let _e70 = unnamed.uUnderwaterColor;\n let _e72 = unnamed.uUnderwaterFactor;\n return mix(_e68, _e70, vec3(_e72));\n}\n\nfn mediumFog_u0028_f1_u003b_f1_u003b(dist_2: ptr<function, f32>, pointY_2: ptr<function, f32>) -> f32 {\n var cut: bool;\n var span_1: f32;\n var ramp: f32;\n var local_1: f32;\n var wetLinear: f32;\n var air: f32;\n var local_2: f32;\n var param_6: f32;\n var param_7: f32;\n var wet: f32;\n var phi_190_: bool;\n\n let _e81 = unnamed.uFogLayer2_[3u];\n let _e82 = (_e81 > 0f);\n phi_190_ = _e82;\n if _e82 {\n let _e83 = (*dist_2);\n let _e86 = unnamed.uFogLayer2_[3u];\n phi_190_ = (_e83 > _e86);\n }\n let _e89 = phi_190_;\n cut = _e89;\n let _e92 = unnamed.uFogRange[2u];\n if (_e92 == 1f) {\n let _e96 = unnamed.uFogRange[1u];\n let _e99 = unnamed.uFogRange[0u];\n span_1 = max((_e96 - _e99), 0.0001f);\n let _e102 = cut;\n if _e102 {\n local_1 = 0f;\n } else {\n let _e103 = (*dist_2);\n let _e106 = unnamed.uFogRange[0u];\n let _e108 = span_1;\n let _e113 = unnamed.uFogLayer2_[2u];\n local_1 = min(clamp(((_e103 - _e106) / _e108), 0f, 1f), (1f - _e113));\n }\n let _e116 = local_1;\n ramp = _e116;\n let _e118 = unnamed.uUnderwaterFactor;\n if (_e118 <= 0f) {\n let _e120 = ramp;\n return _e120;\n }\n let _e123 = unnamed.uFogMedium[3u];\n let _e124 = (*dist_2);\n wetLinear = (_e123 * _e124);\n let _e126 = ramp;\n let _e127 = wetLinear;\n let _e129 = wetLinear;\n let _e135 = unnamed.uUnderwaterFactor;\n return mix(_e126, (1f - exp2(((-(_e127) * _e129) * 1.442695f))), _e135);\n }\n let _e137 = cut;\n if _e137 {\n local_2 = 0f;\n } else {\n let _e138 = (*dist_2);\n param_6 = _e138;\n let _e139 = (*pointY_2);\n param_7 = _e139;\n let _e140 = hazeDepth_u0028_f1_u003b_f1_u003b((&param_6), (&param_7));\n let _e145 = unnamed.uFogLayer2_[2u];\n local_2 = (1f - max(exp(-(_e140)), _e145));\n }\n let _e148 = local_2;\n air = _e148;\n let _e150 = unnamed.uUnderwaterFactor;\n if (_e150 <= 0f) {\n let _e152 = air;\n return _e152;\n }\n let _e155 = unnamed.uFogMedium[3u];\n let _e156 = (*dist_2);\n wet = (_e155 * _e156);\n let _e158 = air;\n let _e159 = wet;\n let _e161 = wet;\n let _e167 = unnamed.uUnderwaterFactor;\n return mix(_e158, (1f - exp2(((-(_e159) * _e161) * 1.442695f))), _e167);\n}\n\nfn main_1() {\n var edge: f32;\n var band: f32;\n var coverage: f32;\n var dist_3: f32;\n var fog: f32;\n var param_8: f32;\n var param_9: f32;\n var color: vec3<f32>;\n var param_10: f32;\n var param_11: f32;\n var param_12: vec3<f32>;\n var param_13: vec3<f32>;\n\n let _e79 = vSide_1;\n edge = (1f - abs(_e79));\n let _e82 = vSide_1;\n let _e83 = fwidth(_e82);\n let _e85 = unnamed.uSoftness;\n band = max(_e83, _e85);\n let _e87 = band;\n let _e88 = edge;\n coverage = smoothstep(0f, _e87, _e88);\n let _e90 = vWorldPos_1;\n let _e92 = unnamed.uCameraPos;\n dist_3 = distance(_e90, _e92);\n let _e94 = dist_3;\n param_8 = _e94;\n let _e96 = vWorldPos_1[1u];\n param_9 = _e96;\n let _e97 = mediumFog_u0028_f1_u003b_f1_u003b((&param_8), (&param_9));\n fog = _e97;\n let _e99 = unnamed.uColor;\n let _e100 = mediumColor_u0028_();\n let _e101 = fog;\n let _e104 = vWorldPos_1;\n let _e106 = unnamed.uCameraPos;\n let _e109 = dist_3;\n param_10 = _e109;\n let _e111 = vWorldPos_1[1u];\n param_11 = _e111;\n param_12 = normalize((_e104 - _e106));\n let _e112 = mediumGlow_u0028_f1_u003b_f1_u003b_vf3_u003b((&param_10), (&param_11), (&param_12));\n color = (mix(_e99, _e100, vec3(_e101)) + _e112);\n let _e114 = color;\n param_13 = _e114;\n let _e115 = applyOutputTransform_u0028_vf3_u003b((&param_13));\n let _e116 = coverage;\n let _e118 = unnamed.uOpacity;\n outColor = vec4<f32>(_e115.x, _e115.y, _e115.z, (_e116 * _e118));\n return;\n}\n\n@fragment \nfn main(@location(0) vSide: f32, @location(1) vWorldPos: vec3<f32>) -> @location(0) vec4<f32> {\n vSide_1 = vSide;\n vWorldPos_1 = vWorldPos;\n main_1();\n let _e5 = outColor;\n return _e5;\n}\n";
2
2
  export declare const LINE_VERT_WGSL = "struct Uniforms {\n uViewProj: mat4x4<f32>,\n uModel: mat4x4<f32>,\n uCameraPos: vec3<f32>,\n uWidth: f32,\n uMinWidthPerMetre: f32,\n}\n\nstruct gl_PerVertex {\n @builtin(position) gl_Position: vec4<f32>,\n gl_PointSize: f32,\n}\n\nstruct VertexOutput {\n @location(0) member: f32,\n @location(1) member_1: vec3<f32>,\n @builtin(position) gl_Position: vec4<f32>,\n}\n\n@group(0) @binding(0) \nvar<uniform> unnamed: Uniforms;\nvar<private> aFrom_1: vec3<f32>;\nvar<private> aTo_1: vec3<f32>;\nvar<private> aCorner_1: vec2<f32>;\nvar<private> vSide: f32;\nvar<private> vWorldPos: vec3<f32>;\nvar<private> unnamed_1: gl_PerVertex = gl_PerVertex(vec4<f32>(0f, 0f, 0f, 1f), 1f);\n\nfn main_1() {\n var from_: vec3<f32>;\n var to: vec3<f32>;\n var mid: vec3<f32>;\n var dir: vec3<f32>;\n var len: f32;\n var local: vec3<f32>;\n var view: vec3<f32>;\n var dist: f32;\n var local_1: vec3<f32>;\n var across: vec3<f32>;\n var span: f32;\n var local_2: vec3<f32>;\n var halfWidth: f32;\n var world: vec3<f32>;\n\n let _e37 = unnamed.uModel;\n let _e38 = aFrom_1;\n from_ = (_e37 * vec4<f32>(_e38.x, _e38.y, _e38.z, 1f)).xyz;\n let _e46 = unnamed.uModel;\n let _e47 = aTo_1;\n to = (_e46 * vec4<f32>(_e47.x, _e47.y, _e47.z, 1f)).xyz;\n let _e54 = from_;\n let _e55 = to;\n let _e57 = aCorner_1[0u];\n mid = mix(_e54, _e55, vec3(_e57));\n let _e60 = to;\n let _e61 = from_;\n dir = (_e60 - _e61);\n let _e63 = dir;\n len = length(_e63);\n let _e65 = len;\n if (_e65 > 0.000001f) {\n let _e67 = dir;\n let _e68 = len;\n local = (_e67 / vec3(_e68));\n } else {\n local = vec3<f32>(0f, 1f, 0f);\n }\n let _e71 = local;\n dir = _e71;\n let _e72 = mid;\n let _e74 = unnamed.uCameraPos;\n view = (_e72 - _e74);\n let _e76 = view;\n dist = length(_e76);\n let _e78 = dist;\n if (_e78 > 0.000001f) {\n let _e80 = view;\n let _e81 = dist;\n local_1 = (_e80 / vec3(_e81));\n } else {\n local_1 = vec3<f32>(0f, 0f, 1f);\n }\n let _e84 = local_1;\n view = _e84;\n let _e85 = dir;\n let _e86 = view;\n across = cross(_e85, _e86);\n let _e88 = across;\n span = length(_e88);\n let _e90 = span;\n if (_e90 > 0.0001f) {\n let _e92 = across;\n let _e93 = span;\n local_2 = (_e92 / vec3(_e93));\n } else {\n let _e96 = dir;\n local_2 = normalize((cross(_e96, vec3<f32>(0f, 1f, 0f)) + vec3<f32>(0.001f, 0.001f, 0.001f)));\n }\n let _e100 = local_2;\n across = _e100;\n let _e102 = unnamed.uWidth;\n let _e103 = dist;\n let _e105 = unnamed.uMinWidthPerMetre;\n halfWidth = max(_e102, (_e103 * _e105));\n let _e108 = mid;\n let _e109 = across;\n let _e111 = aCorner_1[1u];\n let _e113 = halfWidth;\n world = (_e108 + ((_e109 * _e111) * _e113));\n let _e117 = aCorner_1[1u];\n vSide = _e117;\n let _e118 = world;\n vWorldPos = _e118;\n let _e120 = unnamed.uViewProj;\n let _e121 = world;\n unnamed_1.gl_Position = (_e120 * vec4<f32>(_e121.x, _e121.y, _e121.z, 1f));\n return;\n}\n\n@vertex \nfn main(@location(0) aFrom: vec3<f32>, @location(1) aTo: vec3<f32>, @location(2) aCorner: vec2<f32>) -> VertexOutput {\n aFrom_1 = aFrom;\n aTo_1 = aTo;\n aCorner_1 = aCorner;\n main_1();\n let _e11 = unnamed_1.gl_Position.y;\n unnamed_1.gl_Position.y = -(_e11);\n let _e13 = vSide;\n let _e14 = vWorldPos;\n let _e15 = unnamed_1.gl_Position;\n return VertexOutput(_e13, _e14, _e15);\n}\n";
3
3
  /**
4
4
  * What the transform assigned, so the renderer binds the same numbers.
@@ -8,7 +8,7 @@ export declare const LINE_VERT_WGSL = "struct Uniforms {\n uViewProj: mat4x4<
8
8
  export declare const LINE_BINDINGS: {
9
9
  readonly LINE_FRAG: {
10
10
  readonly uniforms: 1;
11
- readonly uniformSize: 112;
11
+ readonly uniformSize: 160;
12
12
  readonly fields: {
13
13
  readonly uColor: {
14
14
  readonly offset: 0;
@@ -35,58 +35,48 @@ export declare const LINE_BINDINGS: {
35
35
  readonly size: 12;
36
36
  readonly type: "vec3";
37
37
  };
38
- readonly uFogDensity: {
39
- readonly offset: 44;
40
- readonly size: 4;
41
- readonly type: "float";
42
- };
43
- readonly uFogHeightFalloff: {
38
+ readonly uFogMedium: {
44
39
  readonly offset: 48;
45
- readonly size: 4;
46
- readonly type: "float";
40
+ readonly size: 16;
41
+ readonly type: "vec4";
47
42
  };
48
- readonly uFogEyeY: {
49
- readonly offset: 52;
50
- readonly size: 4;
51
- readonly type: "float";
43
+ readonly uFogRange: {
44
+ readonly offset: 64;
45
+ readonly size: 16;
46
+ readonly type: "vec4";
52
47
  };
53
48
  readonly uUnderwaterColor: {
54
- readonly offset: 64;
49
+ readonly offset: 80;
55
50
  readonly size: 12;
56
51
  readonly type: "vec3";
57
52
  };
58
- readonly uUnderwaterFogDensity: {
59
- readonly offset: 76;
60
- readonly size: 4;
61
- readonly type: "float";
62
- };
63
53
  readonly uUnderwaterFactor: {
64
- readonly offset: 80;
54
+ readonly offset: 92;
65
55
  readonly size: 4;
66
56
  readonly type: "float";
67
57
  };
68
- readonly uFogMode: {
69
- readonly offset: 84;
70
- readonly size: 4;
71
- readonly type: "int";
58
+ readonly uFogLayer2: {
59
+ readonly offset: 96;
60
+ readonly size: 16;
61
+ readonly type: "vec4";
72
62
  };
73
- readonly uFogNear: {
74
- readonly offset: 88;
75
- readonly size: 4;
76
- readonly type: "float";
63
+ readonly uFogGlow: {
64
+ readonly offset: 112;
65
+ readonly size: 16;
66
+ readonly type: "vec4";
77
67
  };
78
- readonly uFogFar: {
79
- readonly offset: 92;
80
- readonly size: 4;
81
- readonly type: "float";
68
+ readonly uFogGlowDir: {
69
+ readonly offset: 128;
70
+ readonly size: 16;
71
+ readonly type: "vec4";
82
72
  };
83
73
  readonly uOutputTransform: {
84
- readonly offset: 96;
74
+ readonly offset: 144;
85
75
  readonly size: 4;
86
76
  readonly type: "int";
87
77
  };
88
78
  readonly uOutputExposure: {
89
- readonly offset: 100;
79
+ readonly offset: 148;
90
80
  readonly size: 4;
91
81
  readonly type: "float";
92
82
  };
@@ -4,7 +4,7 @@
4
4
  * The GLSL beside this file is the source of truth. A hand edit here is discarded by
5
5
  * the next generation, and `npm run wgsl:check` fails the build when this is stale.
6
6
  */
7
- export const LINE_FRAG_WGSL = "struct Uniforms {\n uColor: vec3<f32>,\n uOpacity: f32,\n uCameraPos: vec3<f32>,\n uSoftness: f32,\n uFogColor: vec3<f32>,\n uFogDensity: f32,\n uFogHeightFalloff: f32,\n uFogEyeY: f32,\n uUnderwaterColor: vec3<f32>,\n uUnderwaterFogDensity: f32,\n uUnderwaterFactor: f32,\n uFogMode: i32,\n uFogNear: f32,\n uFogFar: f32,\n uOutputTransform: i32,\n uOutputExposure: f32,\n}\n\n@group(0) @binding(1) \nvar<uniform> unnamed: Uniforms;\nvar<private> vSide_1: f32;\nvar<private> vWorldPos_1: vec3<f32>;\nvar<private> outColor: vec4<f32>;\n\nfn linearToSrgb_u0028_vf3_u003b(c: ptr<function, vec3<f32>>) -> vec3<f32> {\n var low: vec3<f32>;\n var high: vec3<f32>;\n\n let _e71 = (*c);\n low = (_e71 * 12.92f);\n let _e73 = (*c);\n high = ((pow(max(_e73, vec3<f32>(0f, 0f, 0f)), vec3<f32>(0.41666666f, 0.41666666f, 0.41666666f)) * 1.055f) - vec3(0.055f));\n let _e79 = high;\n let _e80 = low;\n let _e81 = (*c);\n return mix(_e79, _e80, step(_e81, vec3<f32>(0.0031308f, 0.0031308f, 0.0031308f)));\n}\n\nfn highlightShoulder_u0028_vf3_u003b(c_1: ptr<function, vec3<f32>>) -> vec3<f32> {\n var m: f32;\n var e: f32;\n\n let _e72 = (*c_1)[0u];\n let _e74 = (*c_1)[1u];\n let _e76 = (*c_1)[2u];\n m = max(_e72, max(_e74, _e76));\n let _e79 = m;\n if (_e79 <= 0.8f) {\n let _e81 = (*c_1);\n return _e81;\n }\n let _e82 = m;\n e = (_e82 - 0.8f);\n let _e84 = (*c_1);\n let _e85 = e;\n let _e87 = e;\n let _e91 = m;\n return (_e84 * ((0.8f + ((0.2f * _e85) / (_e87 + 0.2f))) / _e91));\n}\n\nfn rrtAndOdtFit_u0028_vf3_u003b(v: ptr<function, vec3<f32>>) -> vec3<f32> {\n var a: vec3<f32>;\n var b: vec3<f32>;\n\n let _e71 = (*v);\n let _e72 = (*v);\n a = ((_e71 * (_e72 + vec3(0.0245786f))) - vec3(0.000090537f));\n let _e78 = (*v);\n let _e79 = (*v);\n b = ((_e78 * ((_e79 * 0.983729f) + vec3(0.432951f))) + vec3(0.238081f));\n let _e86 = a;\n let _e87 = b;\n return (_e86 / _e87);\n}\n\nfn acesFilmic_u0028_vf3_u003b(x: ptr<function, vec3<f32>>) -> vec3<f32> {\n var param: vec3<f32>;\n\n let _e71 = unnamed.uOutputExposure;\n let _e72 = (*x);\n (*x) = (_e72 * _e71);\n let _e74 = (*x);\n param = (mat3x3<f32>(vec3<f32>(0.59719f, 0.076f, 0.0284f), vec3<f32>(0.35458f, 0.90834f, 0.13383f), vec3<f32>(0.04823f, 0.01566f, 0.83777f)) * _e74);\n let _e76 = rrtAndOdtFit_u0028_vf3_u003b((&param));\n return clamp((mat3x3<f32>(vec3<f32>(1.60475f, -0.10208f, -0.00327f), vec3<f32>(-0.53108f, 1.10813f, -0.07276f), vec3<f32>(-0.07367f, -0.00605f, 1.07602f)) * _e76), vec3(0f), vec3(1f));\n}\n\nfn applyOutputTransform_u0028_vf3_u003b(c_2: ptr<function, vec3<f32>>) -> vec3<f32> {\n var param_1: vec3<f32>;\n var param_2: vec3<f32>;\n var param_3: vec3<f32>;\n\n let _e73 = unnamed.uOutputTransform;\n if (_e73 == 0i) {\n let _e75 = (*c_2);\n return _e75;\n }\n let _e77 = unnamed.uOutputTransform;\n if (_e77 == 2i) {\n let _e79 = (*c_2);\n param_1 = _e79;\n let _e80 = acesFilmic_u0028_vf3_u003b((&param_1));\n (*c_2) = _e80;\n }\n let _e82 = unnamed.uOutputTransform;\n if (_e82 == 3i) {\n let _e84 = (*c_2);\n let _e86 = unnamed.uOutputExposure;\n param_2 = (_e84 * _e86);\n let _e88 = highlightShoulder_u0028_vf3_u003b((&param_2));\n (*c_2) = _e88;\n }\n let _e89 = (*c_2);\n param_3 = _e89;\n let _e90 = linearToSrgb_u0028_vf3_u003b((&param_3));\n return _e90;\n}\n\nfn mediumColor_u0028_() -> vec3<f32> {\n let _e69 = unnamed.uFogColor;\n let _e71 = unnamed.uUnderwaterColor;\n let _e73 = unnamed.uUnderwaterFactor;\n return mix(_e69, _e71, vec3(_e73));\n}\n\nfn mediumFog_u0028_f1_u003b_f1_u003b(dist: ptr<function, f32>, pointY: ptr<function, f32>) -> f32 {\n var span: f32;\n var ramp: f32;\n var wetLinear: f32;\n var start: f32;\n var before: f32;\n var local: f32;\n var t: f32;\n var rest: f32;\n var denom: f32;\n var air: f32;\n var wet: f32;\n\n let _e82 = unnamed.uFogMode;\n if (_e82 == 1i) {\n let _e85 = unnamed.uFogFar;\n let _e87 = unnamed.uFogNear;\n span = max((_e85 - _e87), 0.0001f);\n let _e90 = (*dist);\n let _e92 = unnamed.uFogNear;\n let _e94 = span;\n ramp = clamp(((_e90 - _e92) / _e94), 0f, 1f);\n let _e98 = unnamed.uUnderwaterFactor;\n if (_e98 <= 0f) {\n let _e100 = ramp;\n return _e100;\n }\n let _e102 = unnamed.uUnderwaterFogDensity;\n let _e103 = (*dist);\n wetLinear = (_e102 * _e103);\n let _e105 = ramp;\n let _e106 = wetLinear;\n let _e108 = wetLinear;\n let _e114 = unnamed.uUnderwaterFactor;\n return mix(_e105, (1f - exp2(((-(_e106) * _e108) * 1.442695f))), _e114);\n }\n let _e117 = unnamed.uFogNear;\n let _e118 = (*dist);\n start = min(_e117, _e118);\n let _e120 = (*dist);\n if (_e120 > 0f) {\n let _e122 = start;\n let _e123 = (*dist);\n local = (_e122 / _e123);\n } else {\n local = 0f;\n }\n let _e125 = local;\n before = _e125;\n let _e126 = (*pointY);\n let _e128 = unnamed.uFogEyeY;\n let _e131 = unnamed.uFogHeightFalloff;\n t = ((_e126 - _e128) * _e131);\n let _e133 = t;\n let _e134 = before;\n rest = (_e133 * (1f - _e134));\n let _e137 = rest;\n let _e140 = rest;\n denom = select(_e140, 0.0001f, (abs(_e137) < 0.0001f));\n let _e143 = unnamed.uFogDensity;\n let _e145 = t;\n let _e147 = before;\n let _e151 = (*dist);\n let _e152 = start;\n let _e155 = denom;\n let _e160 = denom;\n air = (1f - exp(((((-(_e143) * exp((-(_e145) * _e147))) * (_e151 - _e152)) * (1f - exp(-(_e155)))) / _e160)));\n let _e165 = unnamed.uUnderwaterFactor;\n if (_e165 <= 0f) {\n let _e167 = air;\n return _e167;\n }\n let _e169 = unnamed.uUnderwaterFogDensity;\n let _e170 = (*dist);\n wet = (_e169 * _e170);\n let _e172 = air;\n let _e173 = wet;\n let _e175 = wet;\n let _e181 = unnamed.uUnderwaterFactor;\n return mix(_e172, (1f - exp2(((-(_e173) * _e175) * 1.442695f))), _e181);\n}\n\nfn main_1() {\n var edge: f32;\n var band: f32;\n var coverage: f32;\n var fog: f32;\n var param_4: f32;\n var param_5: f32;\n var color: vec3<f32>;\n var param_6: vec3<f32>;\n\n let _e76 = vSide_1;\n edge = (1f - abs(_e76));\n let _e79 = vSide_1;\n let _e80 = fwidth(_e79);\n let _e82 = unnamed.uSoftness;\n band = max(_e80, _e82);\n let _e84 = band;\n let _e85 = edge;\n coverage = smoothstep(0f, _e84, _e85);\n let _e87 = vWorldPos_1;\n let _e89 = unnamed.uCameraPos;\n param_4 = distance(_e87, _e89);\n let _e92 = vWorldPos_1[1u];\n param_5 = _e92;\n let _e93 = mediumFog_u0028_f1_u003b_f1_u003b((&param_4), (&param_5));\n fog = _e93;\n let _e95 = unnamed.uColor;\n let _e96 = mediumColor_u0028_();\n let _e97 = fog;\n color = mix(_e95, _e96, vec3(_e97));\n let _e100 = color;\n param_6 = _e100;\n let _e101 = applyOutputTransform_u0028_vf3_u003b((&param_6));\n let _e102 = coverage;\n let _e104 = unnamed.uOpacity;\n outColor = vec4<f32>(_e101.x, _e101.y, _e101.z, (_e102 * _e104));\n return;\n}\n\n@fragment \nfn main(@location(0) vSide: f32, @location(1) vWorldPos: vec3<f32>) -> @location(0) vec4<f32> {\n vSide_1 = vSide;\n vWorldPos_1 = vWorldPos;\n main_1();\n let _e5 = outColor;\n return _e5;\n}\n";
7
+ export const LINE_FRAG_WGSL = "struct Uniforms {\n uColor: vec3<f32>,\n uOpacity: f32,\n uCameraPos: vec3<f32>,\n uSoftness: f32,\n uFogColor: vec3<f32>,\n uFogMedium: vec4<f32>,\n uFogRange: vec4<f32>,\n uUnderwaterColor: vec3<f32>,\n uUnderwaterFactor: f32,\n uFogLayer2_: vec4<f32>,\n uFogGlow: vec4<f32>,\n uFogGlowDir: vec4<f32>,\n uOutputTransform: i32,\n uOutputExposure: f32,\n}\n\n@group(0) @binding(1) \nvar<uniform> unnamed: Uniforms;\nvar<private> vSide_1: f32;\nvar<private> vWorldPos_1: vec3<f32>;\nvar<private> outColor: vec4<f32>;\n\nfn linearToSrgb_u0028_vf3_u003b(c: ptr<function, vec3<f32>>) -> vec3<f32> {\n var low: vec3<f32>;\n var high: vec3<f32>;\n\n let _e70 = (*c);\n low = (_e70 * 12.92f);\n let _e72 = (*c);\n high = ((pow(max(_e72, vec3<f32>(0f, 0f, 0f)), vec3<f32>(0.41666666f, 0.41666666f, 0.41666666f)) * 1.055f) - vec3(0.055f));\n let _e78 = high;\n let _e79 = low;\n let _e80 = (*c);\n return mix(_e78, _e79, step(_e80, vec3<f32>(0.0031308f, 0.0031308f, 0.0031308f)));\n}\n\nfn highlightShoulder_u0028_vf3_u003b(c_1: ptr<function, vec3<f32>>) -> vec3<f32> {\n var m: f32;\n var e: f32;\n\n let _e71 = (*c_1)[0u];\n let _e73 = (*c_1)[1u];\n let _e75 = (*c_1)[2u];\n m = max(_e71, max(_e73, _e75));\n let _e78 = m;\n if (_e78 <= 0.8f) {\n let _e80 = (*c_1);\n return _e80;\n }\n let _e81 = m;\n e = (_e81 - 0.8f);\n let _e83 = (*c_1);\n let _e84 = e;\n let _e86 = e;\n let _e90 = m;\n return (_e83 * ((0.8f + ((0.2f * _e84) / (_e86 + 0.2f))) / _e90));\n}\n\nfn rrtAndOdtFit_u0028_vf3_u003b(v: ptr<function, vec3<f32>>) -> vec3<f32> {\n var a: vec3<f32>;\n var b: vec3<f32>;\n\n let _e70 = (*v);\n let _e71 = (*v);\n a = ((_e70 * (_e71 + vec3(0.0245786f))) - vec3(0.000090537f));\n let _e77 = (*v);\n let _e78 = (*v);\n b = ((_e77 * ((_e78 * 0.983729f) + vec3(0.432951f))) + vec3(0.238081f));\n let _e85 = a;\n let _e86 = b;\n return (_e85 / _e86);\n}\n\nfn acesFilmic_u0028_vf3_u003b(x: ptr<function, vec3<f32>>) -> vec3<f32> {\n var param: vec3<f32>;\n\n let _e70 = unnamed.uOutputExposure;\n let _e71 = (*x);\n (*x) = (_e71 * _e70);\n let _e73 = (*x);\n param = (mat3x3<f32>(vec3<f32>(0.59719f, 0.076f, 0.0284f), vec3<f32>(0.35458f, 0.90834f, 0.13383f), vec3<f32>(0.04823f, 0.01566f, 0.83777f)) * _e73);\n let _e75 = rrtAndOdtFit_u0028_vf3_u003b((&param));\n return clamp((mat3x3<f32>(vec3<f32>(1.60475f, -0.10208f, -0.00327f), vec3<f32>(-0.53108f, 1.10813f, -0.07276f), vec3<f32>(-0.07367f, -0.00605f, 1.07602f)) * _e75), vec3(0f), vec3(1f));\n}\n\nfn applyOutputTransform_u0028_vf3_u003b(c_2: ptr<function, vec3<f32>>) -> vec3<f32> {\n var param_1: vec3<f32>;\n var param_2: vec3<f32>;\n var param_3: vec3<f32>;\n\n let _e72 = unnamed.uOutputTransform;\n if (_e72 == 0i) {\n let _e74 = (*c_2);\n return _e74;\n }\n let _e76 = unnamed.uOutputTransform;\n if (_e76 == 2i) {\n let _e78 = (*c_2);\n param_1 = _e78;\n let _e79 = acesFilmic_u0028_vf3_u003b((&param_1));\n (*c_2) = _e79;\n }\n let _e81 = unnamed.uOutputTransform;\n if (_e81 == 3i) {\n let _e83 = (*c_2);\n let _e85 = unnamed.uOutputExposure;\n param_2 = (_e83 * _e85);\n let _e87 = highlightShoulder_u0028_vf3_u003b((&param_2));\n (*c_2) = _e87;\n }\n let _e88 = (*c_2);\n param_3 = _e88;\n let _e89 = linearToSrgb_u0028_vf3_u003b((&param_3));\n return _e89;\n}\n\nfn hazeDepth_u0028_f1_u003b_f1_u003b(dist: ptr<function, f32>, pointY: ptr<function, f32>) -> f32 {\n var start: f32;\n var before: f32;\n var local: f32;\n var t: f32;\n var rest: f32;\n var denom: f32;\n var depth: f32;\n var t2_: f32;\n var rest2_: f32;\n var denom2_: f32;\n\n let _e81 = unnamed.uFogRange[0u];\n let _e82 = (*dist);\n start = min(_e81, _e82);\n let _e84 = (*dist);\n if (_e84 > 0f) {\n let _e86 = start;\n let _e87 = (*dist);\n local = (_e86 / _e87);\n } else {\n local = 0f;\n }\n let _e89 = local;\n before = _e89;\n let _e90 = (*pointY);\n let _e93 = unnamed.uFogMedium[2u];\n let _e97 = unnamed.uFogMedium[1u];\n t = ((_e90 - _e93) * _e97);\n let _e99 = t;\n let _e100 = before;\n rest = (_e99 * (1f - _e100));\n let _e103 = rest;\n let _e106 = rest;\n denom = select(_e106, 0.0001f, (abs(_e103) < 0.0001f));\n let _e110 = unnamed.uFogMedium[0u];\n let _e111 = t;\n let _e113 = before;\n let _e117 = (*dist);\n let _e118 = start;\n let _e121 = denom;\n let _e126 = denom;\n depth = ((((_e110 * exp((-(_e111) * _e113))) * (_e117 - _e118)) * (1f - exp(-(_e121)))) / _e126);\n let _e130 = unnamed.uFogLayer2_[0u];\n if (_e130 > 0f) {\n let _e132 = (*pointY);\n let _e135 = unnamed.uFogMedium[2u];\n let _e139 = unnamed.uFogLayer2_[1u];\n t2_ = ((_e132 - _e135) * _e139);\n let _e141 = t2_;\n let _e142 = before;\n rest2_ = (_e141 * (1f - _e142));\n let _e145 = rest2_;\n let _e148 = rest2_;\n denom2_ = select(_e148, 0.0001f, (abs(_e145) < 0.0001f));\n let _e152 = unnamed.uFogLayer2_[0u];\n let _e153 = t2_;\n let _e155 = before;\n let _e159 = (*dist);\n let _e160 = start;\n let _e163 = denom2_;\n let _e168 = denom2_;\n let _e170 = depth;\n depth = (_e170 + ((((_e152 * exp((-(_e153) * _e155))) * (_e159 - _e160)) * (1f - exp(-(_e163)))) / _e168));\n }\n let _e172 = depth;\n return _e172;\n}\n\nfn mediumGlow_u0028_f1_u003b_f1_u003b_vf3_u003b(dist_1: ptr<function, f32>, pointY_1: ptr<function, f32>, toPoint: ptr<function, vec3<f32>>) -> vec3<f32> {\n var span: f32;\n var perMetre: f32;\n var param_4: f32;\n var param_5: f32;\n var hidden: f32;\n var lobe: f32;\n var phi_305_: bool;\n var phi_319_: bool;\n\n let _e78 = unnamed.uFogRange[2u];\n let _e79 = (_e78 == 1f);\n phi_305_ = _e79;\n if !(_e79) {\n let _e83 = unnamed.uFogGlow[0u];\n let _e86 = unnamed.uFogGlow[1u];\n let _e90 = unnamed.uFogGlow[2u];\n phi_305_ = (max(max(_e83, _e86), _e90) <= 0f);\n }\n let _e94 = phi_305_;\n if _e94 {\n return vec3<f32>(0f, 0f, 0f);\n }\n let _e97 = unnamed.uFogLayer2_[3u];\n let _e98 = (_e97 > 0f);\n phi_319_ = _e98;\n if _e98 {\n let _e99 = (*dist_1);\n let _e102 = unnamed.uFogLayer2_[3u];\n phi_319_ = (_e99 > _e102);\n }\n let _e105 = phi_319_;\n if _e105 {\n return vec3<f32>(0f, 0f, 0f);\n }\n let _e106 = (*dist_1);\n let _e109 = unnamed.uFogRange[0u];\n let _e110 = (*dist_1);\n span = (_e106 - min(_e109, _e110));\n let _e113 = span;\n if (_e113 <= 0f) {\n return vec3<f32>(0f, 0f, 0f);\n }\n let _e115 = (*dist_1);\n param_4 = _e115;\n let _e116 = (*pointY_1);\n param_5 = _e116;\n let _e117 = hazeDepth_u0028_f1_u003b_f1_u003b((&param_4), (&param_5));\n let _e118 = span;\n perMetre = (_e117 / _e118);\n let _e120 = perMetre;\n let _e122 = span;\n let _e125 = unnamed.uFogGlowDir[3u];\n hidden = (1f - exp((-(_e120) * max((_e122 - _e125), 0f))));\n let _e131 = (*toPoint);\n let _e133 = unnamed.uFogGlowDir;\n let _e139 = unnamed.uFogGlow[3u];\n lobe = pow(clamp(dot(_e131, _e133.xyz), 0f, 1f), _e139);\n let _e142 = unnamed.uFogGlow;\n let _e144 = lobe;\n let _e145 = hidden;\n let _e148 = unnamed.uUnderwaterFactor;\n return (_e142.xyz * ((_e144 * _e145) * (1f - _e148)));\n}\n\nfn mediumColor_u0028_() -> vec3<f32> {\n let _e68 = unnamed.uFogColor;\n let _e70 = unnamed.uUnderwaterColor;\n let _e72 = unnamed.uUnderwaterFactor;\n return mix(_e68, _e70, vec3(_e72));\n}\n\nfn mediumFog_u0028_f1_u003b_f1_u003b(dist_2: ptr<function, f32>, pointY_2: ptr<function, f32>) -> f32 {\n var cut: bool;\n var span_1: f32;\n var ramp: f32;\n var local_1: f32;\n var wetLinear: f32;\n var air: f32;\n var local_2: f32;\n var param_6: f32;\n var param_7: f32;\n var wet: f32;\n var phi_190_: bool;\n\n let _e81 = unnamed.uFogLayer2_[3u];\n let _e82 = (_e81 > 0f);\n phi_190_ = _e82;\n if _e82 {\n let _e83 = (*dist_2);\n let _e86 = unnamed.uFogLayer2_[3u];\n phi_190_ = (_e83 > _e86);\n }\n let _e89 = phi_190_;\n cut = _e89;\n let _e92 = unnamed.uFogRange[2u];\n if (_e92 == 1f) {\n let _e96 = unnamed.uFogRange[1u];\n let _e99 = unnamed.uFogRange[0u];\n span_1 = max((_e96 - _e99), 0.0001f);\n let _e102 = cut;\n if _e102 {\n local_1 = 0f;\n } else {\n let _e103 = (*dist_2);\n let _e106 = unnamed.uFogRange[0u];\n let _e108 = span_1;\n let _e113 = unnamed.uFogLayer2_[2u];\n local_1 = min(clamp(((_e103 - _e106) / _e108), 0f, 1f), (1f - _e113));\n }\n let _e116 = local_1;\n ramp = _e116;\n let _e118 = unnamed.uUnderwaterFactor;\n if (_e118 <= 0f) {\n let _e120 = ramp;\n return _e120;\n }\n let _e123 = unnamed.uFogMedium[3u];\n let _e124 = (*dist_2);\n wetLinear = (_e123 * _e124);\n let _e126 = ramp;\n let _e127 = wetLinear;\n let _e129 = wetLinear;\n let _e135 = unnamed.uUnderwaterFactor;\n return mix(_e126, (1f - exp2(((-(_e127) * _e129) * 1.442695f))), _e135);\n }\n let _e137 = cut;\n if _e137 {\n local_2 = 0f;\n } else {\n let _e138 = (*dist_2);\n param_6 = _e138;\n let _e139 = (*pointY_2);\n param_7 = _e139;\n let _e140 = hazeDepth_u0028_f1_u003b_f1_u003b((&param_6), (&param_7));\n let _e145 = unnamed.uFogLayer2_[2u];\n local_2 = (1f - max(exp(-(_e140)), _e145));\n }\n let _e148 = local_2;\n air = _e148;\n let _e150 = unnamed.uUnderwaterFactor;\n if (_e150 <= 0f) {\n let _e152 = air;\n return _e152;\n }\n let _e155 = unnamed.uFogMedium[3u];\n let _e156 = (*dist_2);\n wet = (_e155 * _e156);\n let _e158 = air;\n let _e159 = wet;\n let _e161 = wet;\n let _e167 = unnamed.uUnderwaterFactor;\n return mix(_e158, (1f - exp2(((-(_e159) * _e161) * 1.442695f))), _e167);\n}\n\nfn main_1() {\n var edge: f32;\n var band: f32;\n var coverage: f32;\n var dist_3: f32;\n var fog: f32;\n var param_8: f32;\n var param_9: f32;\n var color: vec3<f32>;\n var param_10: f32;\n var param_11: f32;\n var param_12: vec3<f32>;\n var param_13: vec3<f32>;\n\n let _e79 = vSide_1;\n edge = (1f - abs(_e79));\n let _e82 = vSide_1;\n let _e83 = fwidth(_e82);\n let _e85 = unnamed.uSoftness;\n band = max(_e83, _e85);\n let _e87 = band;\n let _e88 = edge;\n coverage = smoothstep(0f, _e87, _e88);\n let _e90 = vWorldPos_1;\n let _e92 = unnamed.uCameraPos;\n dist_3 = distance(_e90, _e92);\n let _e94 = dist_3;\n param_8 = _e94;\n let _e96 = vWorldPos_1[1u];\n param_9 = _e96;\n let _e97 = mediumFog_u0028_f1_u003b_f1_u003b((&param_8), (&param_9));\n fog = _e97;\n let _e99 = unnamed.uColor;\n let _e100 = mediumColor_u0028_();\n let _e101 = fog;\n let _e104 = vWorldPos_1;\n let _e106 = unnamed.uCameraPos;\n let _e109 = dist_3;\n param_10 = _e109;\n let _e111 = vWorldPos_1[1u];\n param_11 = _e111;\n param_12 = normalize((_e104 - _e106));\n let _e112 = mediumGlow_u0028_f1_u003b_f1_u003b_vf3_u003b((&param_10), (&param_11), (&param_12));\n color = (mix(_e99, _e100, vec3(_e101)) + _e112);\n let _e114 = color;\n param_13 = _e114;\n let _e115 = applyOutputTransform_u0028_vf3_u003b((&param_13));\n let _e116 = coverage;\n let _e118 = unnamed.uOpacity;\n outColor = vec4<f32>(_e115.x, _e115.y, _e115.z, (_e116 * _e118));\n return;\n}\n\n@fragment \nfn main(@location(0) vSide: f32, @location(1) vWorldPos: vec3<f32>) -> @location(0) vec4<f32> {\n vSide_1 = vSide;\n vWorldPos_1 = vWorldPos;\n main_1();\n let _e5 = outColor;\n return _e5;\n}\n";
8
8
  export const LINE_VERT_WGSL = "struct Uniforms {\n uViewProj: mat4x4<f32>,\n uModel: mat4x4<f32>,\n uCameraPos: vec3<f32>,\n uWidth: f32,\n uMinWidthPerMetre: f32,\n}\n\nstruct gl_PerVertex {\n @builtin(position) gl_Position: vec4<f32>,\n gl_PointSize: f32,\n}\n\nstruct VertexOutput {\n @location(0) member: f32,\n @location(1) member_1: vec3<f32>,\n @builtin(position) gl_Position: vec4<f32>,\n}\n\n@group(0) @binding(0) \nvar<uniform> unnamed: Uniforms;\nvar<private> aFrom_1: vec3<f32>;\nvar<private> aTo_1: vec3<f32>;\nvar<private> aCorner_1: vec2<f32>;\nvar<private> vSide: f32;\nvar<private> vWorldPos: vec3<f32>;\nvar<private> unnamed_1: gl_PerVertex = gl_PerVertex(vec4<f32>(0f, 0f, 0f, 1f), 1f);\n\nfn main_1() {\n var from_: vec3<f32>;\n var to: vec3<f32>;\n var mid: vec3<f32>;\n var dir: vec3<f32>;\n var len: f32;\n var local: vec3<f32>;\n var view: vec3<f32>;\n var dist: f32;\n var local_1: vec3<f32>;\n var across: vec3<f32>;\n var span: f32;\n var local_2: vec3<f32>;\n var halfWidth: f32;\n var world: vec3<f32>;\n\n let _e37 = unnamed.uModel;\n let _e38 = aFrom_1;\n from_ = (_e37 * vec4<f32>(_e38.x, _e38.y, _e38.z, 1f)).xyz;\n let _e46 = unnamed.uModel;\n let _e47 = aTo_1;\n to = (_e46 * vec4<f32>(_e47.x, _e47.y, _e47.z, 1f)).xyz;\n let _e54 = from_;\n let _e55 = to;\n let _e57 = aCorner_1[0u];\n mid = mix(_e54, _e55, vec3(_e57));\n let _e60 = to;\n let _e61 = from_;\n dir = (_e60 - _e61);\n let _e63 = dir;\n len = length(_e63);\n let _e65 = len;\n if (_e65 > 0.000001f) {\n let _e67 = dir;\n let _e68 = len;\n local = (_e67 / vec3(_e68));\n } else {\n local = vec3<f32>(0f, 1f, 0f);\n }\n let _e71 = local;\n dir = _e71;\n let _e72 = mid;\n let _e74 = unnamed.uCameraPos;\n view = (_e72 - _e74);\n let _e76 = view;\n dist = length(_e76);\n let _e78 = dist;\n if (_e78 > 0.000001f) {\n let _e80 = view;\n let _e81 = dist;\n local_1 = (_e80 / vec3(_e81));\n } else {\n local_1 = vec3<f32>(0f, 0f, 1f);\n }\n let _e84 = local_1;\n view = _e84;\n let _e85 = dir;\n let _e86 = view;\n across = cross(_e85, _e86);\n let _e88 = across;\n span = length(_e88);\n let _e90 = span;\n if (_e90 > 0.0001f) {\n let _e92 = across;\n let _e93 = span;\n local_2 = (_e92 / vec3(_e93));\n } else {\n let _e96 = dir;\n local_2 = normalize((cross(_e96, vec3<f32>(0f, 1f, 0f)) + vec3<f32>(0.001f, 0.001f, 0.001f)));\n }\n let _e100 = local_2;\n across = _e100;\n let _e102 = unnamed.uWidth;\n let _e103 = dist;\n let _e105 = unnamed.uMinWidthPerMetre;\n halfWidth = max(_e102, (_e103 * _e105));\n let _e108 = mid;\n let _e109 = across;\n let _e111 = aCorner_1[1u];\n let _e113 = halfWidth;\n world = (_e108 + ((_e109 * _e111) * _e113));\n let _e117 = aCorner_1[1u];\n vSide = _e117;\n let _e118 = world;\n vWorldPos = _e118;\n let _e120 = unnamed.uViewProj;\n let _e121 = world;\n unnamed_1.gl_Position = (_e120 * vec4<f32>(_e121.x, _e121.y, _e121.z, 1f));\n return;\n}\n\n@vertex \nfn main(@location(0) aFrom: vec3<f32>, @location(1) aTo: vec3<f32>, @location(2) aCorner: vec2<f32>) -> VertexOutput {\n aFrom_1 = aFrom;\n aTo_1 = aTo;\n aCorner_1 = aCorner;\n main_1();\n let _e11 = unnamed_1.gl_Position.y;\n unnamed_1.gl_Position.y = -(_e11);\n let _e13 = vSide;\n let _e14 = vWorldPos;\n let _e15 = unnamed_1.gl_Position;\n return VertexOutput(_e13, _e14, _e15);\n}\n";
9
9
  /**
10
10
  * What the transform assigned, so the renderer binds the same numbers.
@@ -14,7 +14,7 @@ export const LINE_VERT_WGSL = "struct Uniforms {\n uViewProj: mat4x4<f32>,\n
14
14
  export const LINE_BINDINGS = {
15
15
  "LINE_FRAG": {
16
16
  "uniforms": 1,
17
- "uniformSize": 112,
17
+ "uniformSize": 160,
18
18
  "fields": {
19
19
  "uColor": {
20
20
  "offset": 0,
@@ -41,58 +41,48 @@ export const LINE_BINDINGS = {
41
41
  "size": 12,
42
42
  "type": "vec3"
43
43
  },
44
- "uFogDensity": {
45
- "offset": 44,
46
- "size": 4,
47
- "type": "float"
48
- },
49
- "uFogHeightFalloff": {
44
+ "uFogMedium": {
50
45
  "offset": 48,
51
- "size": 4,
52
- "type": "float"
46
+ "size": 16,
47
+ "type": "vec4"
53
48
  },
54
- "uFogEyeY": {
55
- "offset": 52,
56
- "size": 4,
57
- "type": "float"
49
+ "uFogRange": {
50
+ "offset": 64,
51
+ "size": 16,
52
+ "type": "vec4"
58
53
  },
59
54
  "uUnderwaterColor": {
60
- "offset": 64,
55
+ "offset": 80,
61
56
  "size": 12,
62
57
  "type": "vec3"
63
58
  },
64
- "uUnderwaterFogDensity": {
65
- "offset": 76,
66
- "size": 4,
67
- "type": "float"
68
- },
69
59
  "uUnderwaterFactor": {
70
- "offset": 80,
60
+ "offset": 92,
71
61
  "size": 4,
72
62
  "type": "float"
73
63
  },
74
- "uFogMode": {
75
- "offset": 84,
76
- "size": 4,
77
- "type": "int"
64
+ "uFogLayer2": {
65
+ "offset": 96,
66
+ "size": 16,
67
+ "type": "vec4"
78
68
  },
79
- "uFogNear": {
80
- "offset": 88,
81
- "size": 4,
82
- "type": "float"
69
+ "uFogGlow": {
70
+ "offset": 112,
71
+ "size": 16,
72
+ "type": "vec4"
83
73
  },
84
- "uFogFar": {
85
- "offset": 92,
86
- "size": 4,
87
- "type": "float"
74
+ "uFogGlowDir": {
75
+ "offset": 128,
76
+ "size": 16,
77
+ "type": "vec4"
88
78
  },
89
79
  "uOutputTransform": {
90
- "offset": 96,
80
+ "offset": 144,
91
81
  "size": 4,
92
82
  "type": "int"
93
83
  },
94
84
  "uOutputExposure": {
95
- "offset": 100,
85
+ "offset": 148,
96
86
  "size": 4,
97
87
  "type": "float"
98
88
  }