@woosh/meep-engine 3.54.0 → 3.55.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 (78) hide show
  1. package/package.json +1 -1
  2. package/src/shade/RENDERER_CONTRACT.md +5 -2
  3. package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts.map +1 -1
  4. package/src/shade/device/SHADE_DEVICE_FLOOR.js +2 -0
  5. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  6. package/src/shade/renderer/Renderer.js +1 -1
  7. package/src/shade/renderer/hiz/generate_downsampler_code.js +1 -1
  8. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +1 -1
  9. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.d.ts.map +1 -1
  10. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +154 -147
  11. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +2 -1
  12. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
  13. package/src/shade/renderer/postprocess/gtao/GTAO.js +5 -1
  14. package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.d.ts +8 -0
  15. package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.d.ts.map +1 -1
  16. package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.js +10 -1
  17. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
  18. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +5 -0
  19. package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.d.ts +22 -0
  20. package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.d.ts.map +1 -0
  21. package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.js +33 -0
  22. package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.d.ts +22 -0
  23. package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.d.ts.map +1 -0
  24. package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.js +56 -0
  25. package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.d.ts +13 -0
  26. package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.d.ts.map +1 -0
  27. package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.js +42 -0
  28. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts +2 -1
  29. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  30. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +382 -357
  31. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  32. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +414 -410
  33. package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -7
  34. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts +10 -5
  35. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts.map +1 -1
  36. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.js +30 -14
  37. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -1
  38. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +17 -3
  39. package/src/engine/graphics3/decal/DecalAtlas.d.ts +0 -43
  40. package/src/engine/graphics3/decal/DecalAtlas.d.ts.map +0 -1
  41. package/src/engine/graphics3/decal/DecalAtlasFill.d.ts +0 -12
  42. package/src/engine/graphics3/decal/DecalAtlasFill.d.ts.map +0 -1
  43. package/src/engine/graphics3/decal/decal_atlas_border.d.ts +0 -52
  44. package/src/engine/graphics3/decal/decal_atlas_border.d.ts.map +0 -1
  45. package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts +0 -26
  46. package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts.map +0 -1
  47. package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.js +0 -268
  48. package/src/shade/renderer/postprocess/ssr/copy_shader_f32.d.ts +0 -3
  49. package/src/shade/renderer/postprocess/ssr/copy_shader_f32.d.ts.map +0 -1
  50. package/src/shade/renderer/postprocess/ssr/copy_shader_f32.js +0 -32
  51. package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts +0 -17
  52. package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +0 -1
  53. package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +0 -98
  54. package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts +0 -23
  55. package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts.map +0 -1
  56. package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.js +0 -118
  57. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts +0 -24
  58. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts.map +0 -1
  59. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts +0 -15
  60. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts.map +0 -1
  61. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +0 -17
  62. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts.map +0 -1
  63. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts +0 -35
  64. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts.map +0 -1
  65. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +0 -35
  66. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts.map +0 -1
  67. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts +0 -10
  68. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts.map +0 -1
  69. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts +0 -28
  70. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts.map +0 -1
  71. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +0 -48
  72. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +0 -1
  73. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts +0 -28
  74. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts.map +0 -1
  75. package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts +0 -16
  76. package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts.map +0 -1
  77. package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts +0 -23
  78. package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_gtao_resolve_hzb_depth.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;GAkBG;AACH,2CAFU,SAAS,CAiCjB;0BArDwB,oCAAoC"}
@@ -0,0 +1,56 @@
1
+ import { CAMERA_UNIFORM_STRUCT } from "../../camera/CAMERA_UNIFORM_STRUCT.js";
2
+ import { chunk_get_view_space_depth } from "../../shader/chunk/depth/chunk_get_view_space_depth.js";
3
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
4
+ import { GTAO_EFFECT_FALLOFF_RANGE, GTAO_EFFECT_RADIUS } from "./GTAO_CONSTANTS.js";
5
+
6
+ /**
7
+ * Resolves a single reverse-Z device depth from an HZB `(d_min, d_max)` pair (`hzb.x` = farthest,
8
+ * `hzb.y` = closest in the $2^m \times 2^m$ footprint) using a discontinuity-aware slope filter.
9
+ *
10
+ * Why neither pure `hzb.y` (closest) nor pure `0.5 * (hzb.x + hzb.y)` (average) suffices alone
11
+ * (cf. Intel XeGTAO `DepthMIPFilter` and Tomasz Stachowiak / h3r2tic's Tiny Glade linear + point
12
+ * depth-sampling analysis):
13
+ * - On a continuous sloped surface, reverse-Z device depth $1 / (-z_{\text{view}})$ is affine in
14
+ * screen space. Taking only `hzb.y` treats each coarse $2^m \times 2^m$ texel as a flat "Duplo
15
+ * brick" protruding toward the camera, causing false self-occlusion on slopes; averaging
16
+ * `0.5 * (hzb.x + hzb.y)` reconstructs the smooth plane across the footprint.
17
+ * - Across a silhouette edge (depth discontinuity), averaging `hzb.x` and `hzb.y` creates a
18
+ * mid-air "shrink-wrap" phantom surface between foreground and background (or erodes silhouettes
19
+ * against the sky). Weighting `hzb.x` down to zero when `depth_far - depth_near` exceeds the
20
+ * effect falloff collapses the filter to `hzb.y` (the foreground surface).
21
+ *
22
+ * @see https://github.com/GameTechDev/XeGTAO/blob/a5b1686c7ea37788eeb3576b5be47f7c03db532c/Source/Rendering/Shaders/XeGTAO.hlsli#L622
23
+ * @type {CodeChunk}
24
+ */
25
+ export const chunk_gtao_resolve_hzb_depth = CodeChunk.from(
26
+ //language=WGSL
27
+ `
28
+ fn gtao_resolve_hzb_depth(
29
+ hzb: vec2<f32>,
30
+ camera: ${CAMERA_UNIFORM_STRUCT.wgsl_ref},
31
+ ) -> f32 {
32
+ // If any texel in the footprint is background/sky (reverse-Z depth <= 0), do not blend across
33
+ // the silhouette into the sky (which also avoids 0 / 0 or inf - inf under an infinite far plane).
34
+ if (hzb.x <= 0.0) {
35
+ return hzb.y;
36
+ }
37
+
38
+ // XeGTAO DepthMIPFilter falloff: empirically 0.75 * effectRadius works well across mips.
39
+ const effect_radius = 0.75 * ${GTAO_EFFECT_RADIUS};
40
+ const falloff_range = ${GTAO_EFFECT_FALLOFF_RANGE} * effect_radius;
41
+ const falloff_from = effect_radius * (1.0 - ${GTAO_EFFECT_FALLOFF_RANGE});
42
+ const falloff_mul = -1.0 / falloff_range;
43
+ const falloff_add = falloff_from / falloff_range + 1.0;
44
+
45
+ let depth_far = get_view_space_depth(hzb.x, camera);
46
+ let depth_near = get_view_space_depth(hzb.y, camera);
47
+
48
+ let w = saturate(fma(depth_far - depth_near, falloff_mul, falloff_add));
49
+
50
+ return mix(hzb.y, hzb.x, w / (1.0 + w));
51
+ }
52
+ `,
53
+ [
54
+ chunk_get_view_space_depth,
55
+ ]
56
+ );
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Samples reverse-Z device depth for a GTAO horizon tap at `uv` and `mip_level`.
3
+ *
4
+ * - `mip_level <= 0.0` reads full-resolution `tDepth` (mip 0).
5
+ * - `mip_level > 0.0` reads `tHZB` at `mip_level - 1.0` (since `tHZB` mip 0 is half-resolution, i.e.
6
+ * screen mip 1) in normalized UV space (matching `HierarchicalZBuffer`'s alignment-padded reduction)
7
+ * and resolves the `(min, max)` depth pair through {@link chunk_gtao_resolve_hzb_depth}.
8
+ *
9
+ * @type {CodeChunk}
10
+ */
11
+ export const chunk_gtao_sample_depth: CodeChunk;
12
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
13
+ //# sourceMappingURL=chunk_gtao_sample_depth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_gtao_sample_depth.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.js"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AACH,sCAFU,SAAS,CAqBjB;0BAnCwB,oCAAoC"}
@@ -0,0 +1,42 @@
1
+ import { CAMERA_UNIFORM_STRUCT } from "../../camera/CAMERA_UNIFORM_STRUCT.js";
2
+ import { SCREEN_DEPTH_RESOURCE, SCREEN_HZB_RESOURCE } from "../../shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.js";
3
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
4
+ import { ShaderResourceDescriptor } from "../../shader/resource/ShaderResourceDescriptor.js";
5
+ import { chunk_gtao_resolve_hzb_depth } from "./chunk_gtao_resolve_hzb_depth.js";
6
+
7
+ const POINT_SAMPLER_RESOURCE = ShaderResourceDescriptor.sampler("sPoint", "non-filtering");
8
+
9
+ /**
10
+ * Samples reverse-Z device depth for a GTAO horizon tap at `uv` and `mip_level`.
11
+ *
12
+ * - `mip_level <= 0.0` reads full-resolution `tDepth` (mip 0).
13
+ * - `mip_level > 0.0` reads `tHZB` at `mip_level - 1.0` (since `tHZB` mip 0 is half-resolution, i.e.
14
+ * screen mip 1) in normalized UV space (matching `HierarchicalZBuffer`'s alignment-padded reduction)
15
+ * and resolves the `(min, max)` depth pair through {@link chunk_gtao_resolve_hzb_depth}.
16
+ *
17
+ * @type {CodeChunk}
18
+ */
19
+ export const chunk_gtao_sample_depth = CodeChunk.from(
20
+ //language=WGSL
21
+ `
22
+ fn gtao_sample_depth(
23
+ uv: vec2<f32>,
24
+ mip_level: f32,
25
+ camera: ${CAMERA_UNIFORM_STRUCT.wgsl_ref},
26
+ ) -> f32 {
27
+ if (mip_level <= 0.0) {
28
+ return textureSampleLevel(tDepth, sPoint, uv, 0.0).x;
29
+ }
30
+
31
+ let hzb = textureSampleLevel(tHZB, sPoint, uv, mip_level - 1.0).xy;
32
+ return gtao_resolve_hzb_depth(hzb, camera);
33
+ }
34
+ `,
35
+ [
36
+ chunk_gtao_resolve_hzb_depth,
37
+ ]
38
+ );
39
+
40
+ chunk_gtao_sample_depth.requireResource(SCREEN_DEPTH_RESOURCE);
41
+ chunk_gtao_sample_depth.requireResource(SCREEN_HZB_RESOURCE);
42
+ chunk_gtao_sample_depth.requireResource(POINT_SAMPLER_RESOURCE);
@@ -1,7 +1,8 @@
1
1
  export const fragment_shader_gtao: ImageShader;
2
2
  import { GTAO_DEPTH_MIP_LEVELS } from "./GTAO_CONSTANTS.js";
3
+ import { GTAO_DEPTH_MIP_SAMPLING_OFFSET } from "./GTAO_CONSTANTS.js";
3
4
  import { GTAO_EFFECT_FALLOFF_RANGE } from "./GTAO_CONSTANTS.js";
4
5
  import { GTAO_EFFECT_RADIUS } from "./GTAO_CONSTANTS.js";
5
6
  import { ImageShader } from "../../shader/ImageShader.js";
6
- export { GTAO_DEPTH_MIP_LEVELS, GTAO_EFFECT_FALLOFF_RANGE, GTAO_EFFECT_RADIUS };
7
+ export { GTAO_DEPTH_MIP_LEVELS, GTAO_DEPTH_MIP_SAMPLING_OFFSET, GTAO_EFFECT_FALLOFF_RANGE, GTAO_EFFECT_RADIUS };
7
8
  //# sourceMappingURL=fragment_shader_gtao.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fragment_shader_gtao.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js"],"names":[],"mappings":"AAuUA,+CA6BG;sCAzUI,qBAAqB;0CAArB,qBAAqB;mCAArB,qBAAqB;4BAZA,6BAA6B"}
1
+ {"version":3,"file":"fragment_shader_gtao.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js"],"names":[],"mappings":"AAgWA,+CA6BG;sCA/VI,qBAAqB;+CAArB,qBAAqB;0CAArB,qBAAqB;mCAArB,qBAAqB;4BAfA,6BAA6B"}