@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.
- package/package.json +1 -1
- package/src/shade/RENDERER_CONTRACT.md +5 -2
- package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts.map +1 -1
- package/src/shade/device/SHADE_DEVICE_FLOOR.js +2 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +1 -1
- package/src/shade/renderer/hiz/generate_downsampler_code.js +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +1 -1
- package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +154 -147
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +2 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +5 -1
- package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.d.ts +8 -0
- package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.js +10 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +5 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.d.ts +22 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.js +33 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.d.ts +22 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.js +56 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.d.ts +13 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.js +42 -0
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts +2 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +382 -357
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +414 -410
- package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -7
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts +10 -5
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.js +30 -14
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +17 -3
- package/src/engine/graphics3/decal/DecalAtlas.d.ts +0 -43
- package/src/engine/graphics3/decal/DecalAtlas.d.ts.map +0 -1
- package/src/engine/graphics3/decal/DecalAtlasFill.d.ts +0 -12
- package/src/engine/graphics3/decal/DecalAtlasFill.d.ts.map +0 -1
- package/src/engine/graphics3/decal/decal_atlas_border.d.ts +0 -52
- package/src/engine/graphics3/decal/decal_atlas_border.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts +0 -26
- package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.js +0 -268
- package/src/shade/renderer/postprocess/ssr/copy_shader_f32.d.ts +0 -3
- package/src/shade/renderer/postprocess/ssr/copy_shader_f32.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/copy_shader_f32.js +0 -32
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts +0 -17
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +0 -98
- package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts +0 -23
- package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.js +0 -118
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts +0 -24
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts +0 -15
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +0 -17
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts +0 -35
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +0 -35
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts +0 -10
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts +0 -28
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +0 -48
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts +0 -28
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts +0 -16
- package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts +0 -23
- 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":"
|
|
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"}
|