@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
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
2
|
-
import { ImageShader } from "../../shader/ImageShader.js";
|
|
3
|
-
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
4
|
-
import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
|
|
5
|
-
|
|
6
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
7
|
-
|
|
8
|
-
// per-pass, eight bytes, read-only: immediate data rather than a uniform buffer
|
|
9
|
-
resources.setImmediate("output_resolution", "vec2<u32>");
|
|
10
|
-
|
|
11
|
-
resources.createGroup()
|
|
12
|
-
.addTexture("tInput");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Inclusive source-texel window one output texel of the reduction reads: `(min.xy, max.xy)`.
|
|
17
|
-
*
|
|
18
|
-
* The windows of one step tile the source exactly — every source texel belongs to one output texel,
|
|
19
|
-
* none twice and none missed — which is what makes the result a max over the whole level rather than a
|
|
20
|
-
* max over an arbitrary stencil. Pinned by `depth_max_source_bounds.spec`.
|
|
21
|
-
*
|
|
22
|
-
* The stride is `ceil(source / output)`, not a hardcoded 2, and the upper bound is
|
|
23
|
-
* `min + stride - 1` because the loops that read it are inclusive. It used to be `target * 2` for the
|
|
24
|
-
* origin and `min + stride` for the bound, which at a halving step is three texels per axis: nine
|
|
25
|
-
* reads for a 2x2 footprint, overlapping its neighbours on both sides.
|
|
26
|
-
*/
|
|
27
|
-
export const chunk_depth_max_source_bounds = CodeChunk.from(
|
|
28
|
-
//language=WGSL
|
|
29
|
-
`
|
|
30
|
-
fn depth_max_source_bounds(
|
|
31
|
-
target_coord: vec2<u32>,
|
|
32
|
-
source_resolution: vec2<u32>,
|
|
33
|
-
output_resolution: vec2<u32>
|
|
34
|
-
) -> vec4<u32> {
|
|
35
|
-
|
|
36
|
-
let scale = vec2f(source_resolution) / vec2f(output_resolution);
|
|
37
|
-
|
|
38
|
-
let stride = max(vec2u(ceil(scale)), vec2u(1u));
|
|
39
|
-
|
|
40
|
-
let source_bounds_min = target_coord * stride;
|
|
41
|
-
|
|
42
|
-
// inclusive, and clamped so an output resolution that does not divide the source cannot read past
|
|
43
|
-
// the last texel
|
|
44
|
-
let source_bounds_max = min(
|
|
45
|
-
source_bounds_min + stride - vec2u(1u),
|
|
46
|
-
source_resolution - vec2u(1u)
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
return vec4u(source_bounds_min, source_bounds_max);
|
|
50
|
-
}
|
|
51
|
-
`
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
const body = CodeChunk.from(
|
|
55
|
-
//language=WGSL
|
|
56
|
-
`
|
|
57
|
-
@fragment
|
|
58
|
-
fn main(
|
|
59
|
-
@builtin(position) coord : vec4<f32>,
|
|
60
|
-
@location(0) uv: vec2<f32>,
|
|
61
|
-
) -> @location(0) f32 {
|
|
62
|
-
|
|
63
|
-
let target_coord_i = vec2<u32>(coord.xy);
|
|
64
|
-
|
|
65
|
-
let source_resolution = textureDimensions(tInput);
|
|
66
|
-
|
|
67
|
-
let bounds = depth_max_source_bounds(target_coord_i, source_resolution, output_resolution);
|
|
68
|
-
|
|
69
|
-
var max_value = 0.0;
|
|
70
|
-
|
|
71
|
-
for(var y = bounds.y ; y <= bounds.w ; y++){
|
|
72
|
-
for(var x = bounds.x ; x <= bounds.z ; x++){
|
|
73
|
-
|
|
74
|
-
let depth = textureLoad(tInput, vec2u(x,y), 0).r;
|
|
75
|
-
|
|
76
|
-
max_value = max(depth, max_value);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return max_value;
|
|
81
|
-
}
|
|
82
|
-
`,
|
|
83
|
-
[chunk_depth_max_source_bounds]
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
export const depth_max_shader = new ImageShader({
|
|
87
|
-
descriptor: ShaderDescriptor.from({
|
|
88
|
-
label: "Depth Reduce / max",
|
|
89
|
-
body,
|
|
90
|
-
resources,
|
|
91
|
-
}),
|
|
92
|
-
targets: [
|
|
93
|
-
{
|
|
94
|
-
format: "r32float"
|
|
95
|
-
}
|
|
96
|
-
]
|
|
97
|
-
});
|
|
98
|
-
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Build an `r32float` max-depth mip chain.
|
|
3
|
-
*
|
|
4
|
-
* **Nothing calls this.** `SSR.graph_pass` binds `view_ctx.hierarchical_z_buffer.texture` as
|
|
5
|
-
* `tHZB` — see `Renderer.js` — and {@link HierarchicalZBuffer} is generally sufficient instead of
|
|
6
|
-
* this. Kept because `@woosh/meep-engine` publishes raw `src`, so an unreferenced export is still
|
|
7
|
-
* public surface.
|
|
8
|
-
*
|
|
9
|
-
* **The two are not interchangeable.** This pyramid is single-channel; the live HZB is two-channel and
|
|
10
|
-
* `chunk_ffx_sssr_load_depth` reads its `.y`. Substituting this one gives a silently zero `.y`
|
|
11
|
-
* rather than an error. See `prefilter/NOTES.md` for the rest of the dead surface in this directory.
|
|
12
|
-
*
|
|
13
|
-
* @param {Object} options
|
|
14
|
-
* @param {FrameGraph} options.graph
|
|
15
|
-
* @param {number[]} options.resolution
|
|
16
|
-
* @param {number} options.input_depth
|
|
17
|
-
*/
|
|
18
|
-
export function graph_build_depth_max_pyramid({ graph, resolution, input_depth }: {
|
|
19
|
-
graph: FrameGraph;
|
|
20
|
-
resolution: number[];
|
|
21
|
-
input_depth: number;
|
|
22
|
-
}): any;
|
|
23
|
-
//# sourceMappingURL=graph_build_depth_max_pyramid.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph_build_depth_max_pyramid.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;GAgBG;AACH;IAJ+B,KAAK;IACP,UAAU,EAA5B,MAAM,EAAE;IACQ,WAAW,EAA3B,MAAM;QAiGhB"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { TextureViewDescriptor } from "../../../descriptor/texture/TextureViewDescriptor.js";
|
|
2
|
-
import { TextureResourceDescriptor } from "../../../device/graph/TextureResourceDescriptor.js";
|
|
3
|
-
import { copy_shader_f32 } from "./copy_shader_f32.js";
|
|
4
|
-
import { depth_max_shader } from "./depth_max_shader.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Build an `r32float` max-depth mip chain.
|
|
8
|
-
*
|
|
9
|
-
* **Nothing calls this.** `SSR.graph_pass` binds `view_ctx.hierarchical_z_buffer.texture` as
|
|
10
|
-
* `tHZB` — see `Renderer.js` — and {@link HierarchicalZBuffer} is generally sufficient instead of
|
|
11
|
-
* this. Kept because `@woosh/meep-engine` publishes raw `src`, so an unreferenced export is still
|
|
12
|
-
* public surface.
|
|
13
|
-
*
|
|
14
|
-
* **The two are not interchangeable.** This pyramid is single-channel; the live HZB is two-channel and
|
|
15
|
-
* `chunk_ffx_sssr_load_depth` reads its `.y`. Substituting this one gives a silently zero `.y`
|
|
16
|
-
* rather than an error. See `prefilter/NOTES.md` for the rest of the dead surface in this directory.
|
|
17
|
-
*
|
|
18
|
-
* @param {Object} options
|
|
19
|
-
* @param {FrameGraph} options.graph
|
|
20
|
-
* @param {number[]} options.resolution
|
|
21
|
-
* @param {number} options.input_depth
|
|
22
|
-
*/
|
|
23
|
-
export function graph_build_depth_max_pyramid({
|
|
24
|
-
graph,
|
|
25
|
-
resolution,
|
|
26
|
-
input_depth = -1
|
|
27
|
-
}) {
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* @param data
|
|
31
|
-
* @param {FramePassResources} resources
|
|
32
|
-
* @param {GraphicsExecutionContext} context
|
|
33
|
-
*/
|
|
34
|
-
function execute(data, resources, context) {
|
|
35
|
-
/**
|
|
36
|
-
* @type {GPUTextureContext}
|
|
37
|
-
*/
|
|
38
|
-
const input = resources.get(data.input);
|
|
39
|
-
/**
|
|
40
|
-
* @type {GPUTextureContext}
|
|
41
|
-
*/
|
|
42
|
-
const output = resources.get(data.output);
|
|
43
|
-
|
|
44
|
-
const encoder = context.encoder;
|
|
45
|
-
|
|
46
|
-
let source_view = output.obtainView(TextureViewDescriptor.from({
|
|
47
|
-
baseMipLevel: 0,
|
|
48
|
-
mipLevelCount: 1
|
|
49
|
-
}));
|
|
50
|
-
|
|
51
|
-
copy_shader_f32.draw({
|
|
52
|
-
encoder: encoder,
|
|
53
|
-
bindings: {
|
|
54
|
-
tInput: input.obtainView(),
|
|
55
|
-
},
|
|
56
|
-
colorAttachments: [
|
|
57
|
-
{
|
|
58
|
-
view: source_view,
|
|
59
|
-
|
|
60
|
-
storeOp: "store",
|
|
61
|
-
loadOp: "clear",
|
|
62
|
-
}
|
|
63
|
-
]
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
const mips = output.descriptor.mipLevelCount;
|
|
67
|
-
|
|
68
|
-
for (let i = 1; i < mips; i++) {
|
|
69
|
-
|
|
70
|
-
const destination_resolution = new Uint32Array([resolution[0] >>> i, resolution[1] >>> i]);
|
|
71
|
-
|
|
72
|
-
const output_resolution = encoder.allocateTransientBufferAndLoad(
|
|
73
|
-
destination_resolution.buffer,
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
const destination_view = output.obtainView(TextureViewDescriptor.from({
|
|
77
|
-
baseMipLevel: i,
|
|
78
|
-
mipLevelCount: 1
|
|
79
|
-
}));
|
|
80
|
-
|
|
81
|
-
depth_max_shader.draw({
|
|
82
|
-
encoder,
|
|
83
|
-
bindings: {
|
|
84
|
-
tInput: source_view,
|
|
85
|
-
output_resolution: output_resolution,
|
|
86
|
-
},
|
|
87
|
-
colorAttachments: [
|
|
88
|
-
{
|
|
89
|
-
view: destination_view,
|
|
90
|
-
storeOp: "store",
|
|
91
|
-
loadOp: "clear",
|
|
92
|
-
}
|
|
93
|
-
]
|
|
94
|
-
})
|
|
95
|
-
|
|
96
|
-
source_view = destination_view;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
const pass_data = {};
|
|
102
|
-
|
|
103
|
-
const builder = graph.add("build depth max pyramid", pass_data, execute);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
pass_data.input = builder.read(input_depth);
|
|
107
|
-
|
|
108
|
-
pass_data.output = builder.create("depth max", TextureResourceDescriptor.from({
|
|
109
|
-
resolution,
|
|
110
|
-
dimension: "2d",
|
|
111
|
-
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
|
|
112
|
-
format: "r32float",
|
|
113
|
-
enableMips: true
|
|
114
|
-
}));
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return pass_data.output;
|
|
118
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Packs and unpacks a 3D froxel coordinate `(x, y, z)` (up to 1024 per axis) into a single `u32`.
|
|
3
|
-
* Shared between `shader_volumetrics_classify_froxels` and `shader_volumetrics_lighting_regimes`.
|
|
4
|
-
*
|
|
5
|
-
* @type {CodeChunk}
|
|
6
|
-
*/
|
|
7
|
-
export const chunk_volumetrics_froxel_pack: CodeChunk;
|
|
8
|
-
/**
|
|
9
|
-
* Computes the jittered world-space sample position and view ray for a froxel `(x, y, z)`.
|
|
10
|
-
* Shared by `shader_volumetrics_classify_froxels` and `shader_volumetrics_lighting_regimes` so the
|
|
11
|
-
* classification pass and the lighting pass are guaranteed to evaluate the exact same world point.
|
|
12
|
-
*
|
|
13
|
-
* @type {CodeChunk}
|
|
14
|
-
*/
|
|
15
|
-
export const chunk_volumetrics_froxel_jittered_ray: CodeChunk;
|
|
16
|
-
/**
|
|
17
|
-
* Evaluates a froxel's participating-media sample (`scattering`, `extinction`, `phase_g`, `random_u`)
|
|
18
|
-
* at the jittered sample point produced by {@link chunk_volumetrics_froxel_jittered_ray}.
|
|
19
|
-
*
|
|
20
|
-
* @type {CodeChunk}
|
|
21
|
-
*/
|
|
22
|
-
export const chunk_volumetrics_froxel_media_sample: CodeChunk;
|
|
23
|
-
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
24
|
-
//# sourceMappingURL=chunk_volumetrics_froxel_sample.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_volumetrics_froxel_sample.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.js"],"names":[],"mappings":"AAkBA;;;;;GAKG;AACH,4CAFU,SAAS,CAmBjB;AAEF;;;;;;GAMG;AACH,oDAFU,SAAS,CA0DjB;AAYF;;;;;GAKG;AACH,oDAFU,SAAS,CA2DjB;0BA5KwB,iCAAiC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `volumetrics_froxel_centre_ws(voxel, resolution)` — the world position a froxel's value stands for:
|
|
3
|
-
* its column's centre, at the depth its slab's content sits at (`volumetrics_froxel_content_offset`),
|
|
4
|
-
* which is where the lighting pass's jittered samples average to and where
|
|
5
|
-
* `volumetrics_position_world_to_froxel_uvw` puts the froxel's texel centre. A froxel GI module
|
|
6
|
-
* whose answer depends on position asks it there; GI is smooth enough across a froxel that one
|
|
7
|
-
* sample is all of it.
|
|
8
|
-
*
|
|
9
|
-
* The enclosing shader binds `camera` and `volumetrics_metadata` under those names.
|
|
10
|
-
*
|
|
11
|
-
* @type {CodeChunk}
|
|
12
|
-
*/
|
|
13
|
-
export const chunk_volumetrics_froxel_centre_ws: CodeChunk;
|
|
14
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
15
|
-
//# sourceMappingURL=chunk_volumetrics_froxel_centre_ws.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_volumetrics_froxel_centre_ws.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;GAWG;AACH,iDAFU,SAAS,CAyBjB;0BAzCwB,oCAAoC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* How the froxel GI stage (`shader_volumetrics_gi`) stores its answer. One thread per froxel asks the
|
|
3
|
-
* renderer's indirect lighting mode what radiance arrives at the froxel, as RGB SH2
|
|
4
|
-
* (`chunk_volumetrics_gi_sample`), and hands the answer to `volumetrics_gi_store`. That starts the
|
|
5
|
-
* froxel irradiance volume, and `shader_volumetrics_build_irradiance` adds the lights to it.
|
|
6
|
-
*
|
|
7
|
-
* `volumetrics_gi_store(voxel, radiance)` scales the field by `INDIRECT_LIGHT_INTENSITY`, as the
|
|
8
|
-
* deferred and forward paths scale their indirect light, encodes it as the volume stores light
|
|
9
|
-
* (`volumetrics_irradiance_sh_add_radiance`) and writes it to `tGIY` / `tGICoCg`.
|
|
10
|
-
*
|
|
11
|
-
* The enclosing shader binds `tGIY` and `tGICoCg` under those names.
|
|
12
|
-
*
|
|
13
|
-
* @type {CodeChunk}
|
|
14
|
-
*/
|
|
15
|
-
export const chunk_volumetrics_gi: CodeChunk;
|
|
16
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
17
|
-
//# sourceMappingURL=chunk_volumetrics_gi.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_volumetrics_gi.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;GAaG;AACH,mCAFU,SAAS,CA0BjB;0BA3CwB,oCAAoC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* {@link chunk_volumetrics_gi_sample} under IBL: the environment, as `GPULightCollection.environment_sh`
|
|
3
|
-
* holds it (`shader_project_environment_sh`). It is infinitely far, so every froxel receives the same
|
|
4
|
-
* field.
|
|
5
|
-
* @type {CodeChunk}
|
|
6
|
-
*/
|
|
7
|
-
export const chunk_volumetrics_gi_sample_ibl: CodeChunk;
|
|
8
|
-
/**
|
|
9
|
-
* {@link chunk_volumetrics_gi_sample} under Brick4: the sparse volumetric light map's probes,
|
|
10
|
-
* interpolated at the froxel's centre and truncated from SH3 to SH2. Reads `brick4`.
|
|
11
|
-
* @type {CodeChunk}
|
|
12
|
-
*/
|
|
13
|
-
export const chunk_volumetrics_gi_sample_brick4: CodeChunk;
|
|
14
|
-
/**
|
|
15
|
-
* {@link chunk_volumetrics_gi_sample} under LPV: the light probe volume's tetrahedral mesh, its probes
|
|
16
|
-
* (radiance SH2) interpolated barycentrically at the froxel's centre. Reads the LPV's buffers.
|
|
17
|
-
* @type {CodeChunk}
|
|
18
|
-
*/
|
|
19
|
-
export const chunk_volumetrics_gi_sample_lpv: CodeChunk;
|
|
20
|
-
/**
|
|
21
|
-
* The radiance that arrives at a froxel, as RGB SH2, by the renderer's indirect lighting mode
|
|
22
|
-
* ({@link INDIRECT_LIGHTING}):
|
|
23
|
-
*
|
|
24
|
-
* ```wgsl
|
|
25
|
-
* fn volumetrics_gi_sample(voxel: vec3<u32>, resolution: vec3<u32>) -> array<vec3<f32>, 4>
|
|
26
|
-
* ```
|
|
27
|
-
*
|
|
28
|
-
* A new mode is one more alternative: nothing downstream knows which mode wrote the volume.
|
|
29
|
-
*
|
|
30
|
-
* @type {CodeChunkChoice}
|
|
31
|
-
*/
|
|
32
|
-
export const chunk_volumetrics_gi_sample: CodeChunkChoice;
|
|
33
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
34
|
-
import { CodeChunkChoice } from "../../shader/compiler/CodeChunkChoice.js";
|
|
35
|
-
//# sourceMappingURL=chunk_volumetrics_gi_sample.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_volumetrics_gi_sample.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.js"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,8CAFU,SAAS,CAUhB;AAEH;;;;GAIG;AACH,iDAFU,SAAS,CAWhB;AAEH;;;;GAIG;AACH,8CAFU,SAAS,CAWhB;AAEH;;;;;;;;;;;GAWG;AACH,0CAFU,eAAe,CAE0D;0BArEzD,oCAAoC;gCAC9B,0CAA0C"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The froxel GI stage: the renderer's indirect lighting at every froxel, as the froxel irradiance
|
|
3
|
-
* volume encodes light, for `shader_volumetrics_build_irradiance` to add the lights to. The shader is
|
|
4
|
-
* built for the renderer's switches, which pick the indirect lighting mode it samples
|
|
5
|
-
* (`chunk_volumetrics_gi_sample`); this binds the environment and the running mode's source.
|
|
6
|
-
*
|
|
7
|
-
* @param {object} options
|
|
8
|
-
* @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} options.graph
|
|
9
|
-
* @param {ShaderSwitchSet} [options.shader_switches] the renderer's
|
|
10
|
-
* @param {import("../../scene/GPUSceneContext.js").GPUSceneContext} options.scene_ctx for its environment,
|
|
11
|
-
* `lights.environment_sh`
|
|
12
|
-
* @param {import("../../global_illumination/brick4/Brick4LightMap.js").Brick4LightMap} [options.brick4] the scene's,
|
|
13
|
-
* while Brick4 runs
|
|
14
|
-
* @param {import("../../global_illumination/lpv/GPULightProbeVolume.js").GPULightProbeVolume} [options.lpv] the
|
|
15
|
-
* scene's, while LPV runs. A source not given is the shader's default, for a variant that does not read it
|
|
16
|
-
* @param {import("../../camera/GPUCameraContext.js").GPUCameraContext} options.camera
|
|
17
|
-
* @param {number} options.volumetrics_metadata graph handle
|
|
18
|
-
* @param {number[]} options.resolution the froxel grid
|
|
19
|
-
* @returns {{Y: number, CoCg: number}} handles of the GI volume, in the froxel irradiance encoding
|
|
20
|
-
*/
|
|
21
|
-
export function graph_build_froxel_gi({ graph, shader_switches, scene_ctx, brick4, lpv, camera, volumetrics_metadata, resolution, }: {
|
|
22
|
-
graph: import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
|
|
23
|
-
shader_switches?: ShaderSwitchSet;
|
|
24
|
-
scene_ctx: import("../../scene/GPUSceneContext.js").GPUSceneContext;
|
|
25
|
-
brick4?: import("../../global_illumination/brick4/Brick4LightMap.js").Brick4LightMap;
|
|
26
|
-
lpv?: import("../../global_illumination/lpv/GPULightProbeVolume.js").GPULightProbeVolume;
|
|
27
|
-
camera: import("../../camera/GPUCameraContext.js").GPUCameraContext;
|
|
28
|
-
volumetrics_metadata: number;
|
|
29
|
-
resolution: number[];
|
|
30
|
-
}): {
|
|
31
|
-
Y: number;
|
|
32
|
-
CoCg: number;
|
|
33
|
-
};
|
|
34
|
-
import { ShaderSwitchSet } from "../../shader/compiler/ShaderSwitchSet.js";
|
|
35
|
-
//# sourceMappingURL=graph_build_froxel_gi.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph_build_froxel_gi.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAbsG,KAAK,EAAhG,OAAO,8DAA8D,EAAE,UAAU;IACvD,eAAe,GAAzC,eAAe;IACmD,SAAS,EAA3E,OAAO,gCAAgC,EAAE,eAAe;IAE8B,MAAM,GAA5F,OAAO,oDAAoD,EAAE,cAAc;IAEkB,GAAG,GAAhG,OAAO,sDAAsD,EAAE,mBAAmB;IAEb,MAAM,EAA3E,OAAO,kCAAkC,EAAE,gBAAgB;IAC3C,oBAAoB,EAApC,MAAM;IACY,UAAU,EAA5B,MAAM,EAAE;IACN;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAsDrC;gCA5E+B,0CAA0C"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The froxel GI stage: the renderer's indirect lighting at every froxel, one thread per froxel. Which
|
|
3
|
-
* mode's light it asks for is a shader switch ({@link chunk_volumetrics_gi_sample}); the bindings are
|
|
4
|
-
* the same for every mode. See `chunk_volumetrics_gi` for what it does with the answer.
|
|
5
|
-
*
|
|
6
|
-
* @type {ComputeShader}
|
|
7
|
-
*/
|
|
8
|
-
export const shader_volumetrics_gi: ComputeShader;
|
|
9
|
-
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
10
|
-
//# sourceMappingURL=shader_volumetrics_gi.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_volumetrics_gi.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.js"],"names":[],"mappings":"AAuCA;;;;;;GAMG;AACH,oCAFU,aAAa,CAMpB;8BA9C2B,+BAA+B"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The bindings every froxel GI module has, whatever its mode reads: where the froxels are, and the
|
|
3
|
-
* two volumes it writes (`chunk_volumetrics_gi`). rgba16float for both, because rg16float is not a
|
|
4
|
-
* storage format without texture-formats-tier1.
|
|
5
|
-
*
|
|
6
|
-
* @returns {ShaderResourceGroupDescriptor}
|
|
7
|
-
*/
|
|
8
|
-
export function volumetrics_gi_resource_group(): ShaderResourceGroupDescriptor;
|
|
9
|
-
/**
|
|
10
|
-
* The froxel GI's luma volume, as its modules write it (`chunk_volumetrics_gi`).
|
|
11
|
-
* @type {ShaderResourceDescriptor}
|
|
12
|
-
*/
|
|
13
|
-
export const VOLUMETRICS_GI_Y_RESOURCE: ShaderResourceDescriptor;
|
|
14
|
-
/**
|
|
15
|
-
* The froxel GI's chroma volume, as its modules write it (`chunk_volumetrics_gi`).
|
|
16
|
-
* @type {ShaderResourceDescriptor}
|
|
17
|
-
*/
|
|
18
|
-
export const VOLUMETRICS_GI_COCG_RESOURCE: ShaderResourceDescriptor;
|
|
19
|
-
/**
|
|
20
|
-
* Workgroup shape of every froxel GI module, `[x, y, z]` in froxels: flat in z like the lighting
|
|
21
|
-
* pass, and 64 invocations.
|
|
22
|
-
*
|
|
23
|
-
* @type {number[]}
|
|
24
|
-
*/
|
|
25
|
-
export const VOLUMETRICS_GI_WORKGROUP_RESOLUTION: number[];
|
|
26
|
-
import { ShaderResourceGroupDescriptor } from "../../shader/resource/ShaderResourceGroupDescriptor.js";
|
|
27
|
-
import { ShaderResourceDescriptor } from "../../shader/resource/ShaderResourceDescriptor.js";
|
|
28
|
-
//# sourceMappingURL=volumetrics_gi_resources.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"volumetrics_gi_resources.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js"],"names":[],"mappings":"AAiBA;;;;;;GAMG;AACH,iDAFa,6BAA6B,CAQzC;AAzBD;;;GAGG;AACH,wCAFU,wBAAwB,CAE0F;AAE5H;;;GAGG;AACH,2CAFU,wBAAwB,CAEgG;AAiBlI;;;;;GAKG;AACH,kDAFU,MAAM,EAAE,CAE2C;8CApCf,wDAAwD;yCAD7D,mDAAmD"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The froxel irradiance volume (`chunk_volumetrics_irradiance_sh`), what lit particles are lit by: the
|
|
3
|
-
* froxel GI stage (`gi/graph_build_froxel_gi`), then every light with its shadow on top of it
|
|
4
|
-
* (`shader_volumetrics_build_irradiance`).
|
|
5
|
-
*
|
|
6
|
-
* Nothing here reads the fog. The volume is the same with or without participating media, and the
|
|
7
|
-
* two passes run only when something reads what they write — the frame graph culls them otherwise,
|
|
8
|
-
* which is the frame with no lit particle in it.
|
|
9
|
-
*
|
|
10
|
-
* @param {Object} options
|
|
11
|
-
* @param {import("../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} options.graph
|
|
12
|
-
* @param {import("../camera/GPUCameraContext.js").GPUCameraContext} options.camera
|
|
13
|
-
* @param {import("../view/GPUViewContext.js").GPUViewContext} options.view
|
|
14
|
-
* @param {import("../light/GPULightCollection.js").GPULightCollection} options.lights
|
|
15
|
-
* @param {number} options.light_cluster_data
|
|
16
|
-
* @param {number} options.light_cluster_lookup
|
|
17
|
-
* @param {number} options.light_cluster_parameters
|
|
18
|
-
* @param {number} options.shadowmap_atlas
|
|
19
|
-
* @param {number} options.volumetrics_metadata where the froxels are
|
|
20
|
-
* @param {number[]} options.resolution the froxel grid
|
|
21
|
-
* @param {ShaderSwitchSet} [options.shader_switches] the renderer's; the GI that starts the volume and the
|
|
22
|
-
* lights' pass are built for them
|
|
23
|
-
* @param {import("../global_illumination/brick4/Brick4LightMap.js").Brick4LightMap} [options.brick4] the scene's,
|
|
24
|
-
* while Brick4 runs
|
|
25
|
-
* @param {import("../global_illumination/lpv/GPULightProbeVolume.js").GPULightProbeVolume} [options.lpv] the
|
|
26
|
-
* scene's, while LPV runs
|
|
27
|
-
* @returns {{Y: number, CoCg: number}} handles of the volume: luma SH2, and chroma in `.rg`
|
|
28
|
-
*/
|
|
29
|
-
export function graph_build_froxel_irradiance({ graph, camera, view, lights, light_cluster_data, light_cluster_lookup, light_cluster_parameters, shadowmap_atlas, volumetrics_metadata, resolution, shader_switches, brick4, lpv, }: {
|
|
30
|
-
graph: import("../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
|
|
31
|
-
camera: import("../camera/GPUCameraContext.js").GPUCameraContext;
|
|
32
|
-
view: import("../view/GPUViewContext.js").GPUViewContext;
|
|
33
|
-
lights: import("../light/GPULightCollection.js").GPULightCollection;
|
|
34
|
-
light_cluster_data: number;
|
|
35
|
-
light_cluster_lookup: number;
|
|
36
|
-
light_cluster_parameters: number;
|
|
37
|
-
shadowmap_atlas: number;
|
|
38
|
-
volumetrics_metadata: number;
|
|
39
|
-
resolution: number[];
|
|
40
|
-
shader_switches?: ShaderSwitchSet;
|
|
41
|
-
brick4?: import("../global_illumination/brick4/Brick4LightMap.js").Brick4LightMap;
|
|
42
|
-
lpv?: import("../global_illumination/lpv/GPULightProbeVolume.js").GPULightProbeVolume;
|
|
43
|
-
}): {
|
|
44
|
-
Y: number;
|
|
45
|
-
CoCg: number;
|
|
46
|
-
};
|
|
47
|
-
import { ShaderSwitchSet } from "../shader/compiler/ShaderSwitchSet.js";
|
|
48
|
-
//# sourceMappingURL=graph_build_froxel_irradiance.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph_build_froxel_irradiance.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;IAlBmG,KAAK,EAA7F,OAAO,2DAA2D,EAAE,UAAU;IACZ,MAAM,EAAxE,OAAO,+BAA+B,EAAE,gBAAgB;IACI,IAAI,EAAhE,OAAO,2BAA2B,EAAE,cAAc;IACmB,MAAM,EAA3E,OAAO,gCAAgC,EAAE,kBAAkB;IAC3C,kBAAkB,EAAlC,MAAM;IACU,oBAAoB,EAApC,MAAM;IACU,wBAAwB,EAAxC,MAAM;IACU,eAAe,EAA/B,MAAM;IACU,oBAAoB,EAApC,MAAM;IACY,UAAU,EAA5B,MAAM,EAAE;IACkB,eAAe,GAAzC,eAAe;IAEoE,MAAM,GAAzF,OAAO,iDAAiD,EAAE,cAAc;IAEkB,GAAG,GAA7F,OAAO,mDAAmD,EAAE,mBAAmB;IAE7E;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAsFrC;gCAvH+B,uCAAuC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workgroup shape of this pass, `[x, y, z]` in froxels, stated to the `@workgroup_size` below and
|
|
3
|
-
* read back out of it by the dispatch. Flat in z and 64 invocations, for the reasons the fog's
|
|
4
|
-
* lighting pass gives (`VOLUMETRICS_LIGHTING_WORKGROUP_RESOLUTION`): it walks the same light
|
|
5
|
-
* clusters, and those are farthest apart along depth.
|
|
6
|
-
*
|
|
7
|
-
* @type {number[]}
|
|
8
|
-
*/
|
|
9
|
-
export const VOLUMETRICS_IRRADIANCE_WORKGROUP_RESOLUTION: number[];
|
|
10
|
-
/**
|
|
11
|
-
* The most point lights, and separately spot lights, of a froxel's cluster cell this pass adds, each with
|
|
12
|
-
* its shadow tap. Chosen, not derived. Past it the rest of that type's list in the cell goes unshaded: the highest ids, except within one 32-light window where the GPU's lane order decides (PROPOSAL_HIERARCHICAL, I.6).
|
|
13
|
-
* @type {number}
|
|
14
|
-
*/
|
|
15
|
-
export const VOLUMETRICS_IRRADIANCE_LIGHT_BUDGET: number;
|
|
16
|
-
/**
|
|
17
|
-
* The froxel irradiance volume (`chunk_volumetrics_irradiance_sh`): what a lit particle standing in a
|
|
18
|
-
* froxel is lit by. Starts from the froxel GI stage's volume and adds every directional, point and
|
|
19
|
-
* spot light with its shadow, at a point jittered through the froxel every frame.
|
|
20
|
-
*
|
|
21
|
-
* Its own pass, not a by-product of the fog's lighting pass: particle lighting needs no medium, so it
|
|
22
|
-
* runs whether or not the scene has any fog, and the frame graph culls it when nothing reads it.
|
|
23
|
-
*
|
|
24
|
-
* @type {ComputeShader}
|
|
25
|
-
*/
|
|
26
|
-
export const shader_volumetrics_build_irradiance: ComputeShader;
|
|
27
|
-
import { ComputeShader } from "../shader/ComputeShader.js";
|
|
28
|
-
//# sourceMappingURL=shader_volumetrics_build_irradiance.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_volumetrics_build_irradiance.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js"],"names":[],"mappings":"AAqCA;;;;;;;GAOG;AACH,0DAFU,MAAM,EAAE,CAEmD;AAErE;;;;GAIG;AACH,kDAFU,MAAM,CAEsC;AA0KtD;;;;;;;;;GASG;AACH,kDAFU,aAAa,CAMpB;8BApN2B,4BAA4B"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export const VOLUMETRICS_CLASSIFY_WORKGROUP_RESOLUTION: readonly number[];
|
|
2
|
-
/**
|
|
3
|
-
* Classifies every froxel of the volumetric grid into one of the three lighting regimes (Decision 4.2)
|
|
4
|
-
* using subgroup-coalesced appends ({@link chunk_collection_u32_append}):
|
|
5
|
-
*
|
|
6
|
-
* 1. `list_clipmap` — froxels fully inside the world-space irradiance clipmap (`c < count - 1`, or
|
|
7
|
-
* `c == count - 1` with `edge_weight == 0`).
|
|
8
|
-
* 2. `list_blended` — froxels in the outer transition band of the coarsest cascade (`c == count - 1`
|
|
9
|
-
* with `edge_weight > 0`), where clipmap irradiance blends into the far-field lighting.
|
|
10
|
-
* 3. `list_far_field` — froxels outside all cascades (`CLIPMAP_LEVEL_NONE`).
|
|
11
|
-
*
|
|
12
|
-
* @type {ComputeShader}
|
|
13
|
-
*/
|
|
14
|
-
export const shader_volumetrics_classify_froxels: ComputeShader;
|
|
15
|
-
import { ComputeShader } from "../shader/ComputeShader.js";
|
|
16
|
-
//# sourceMappingURL=shader_volumetrics_classify_froxels.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_volumetrics_classify_froxels.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.js"],"names":[],"mappings":"AAgBA,0EAAkF;AAyDlF;;;;;;;;;;;GAWG;AACH,kDAFU,aAAa,CAMpB;8BApF2B,4BAA4B"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workgroup size (64 threads) used by each of the 3 volumetric lighting regime dispatches.
|
|
3
|
-
* @type {number}
|
|
4
|
-
*/
|
|
5
|
-
export const VOLUMETRICS_REGIME_WORKGROUP_SIZE: number;
|
|
6
|
-
/**
|
|
7
|
-
* Evaluates far-field in-scattering at a froxel sample (`VolumetricsFroxelSample`) using the same
|
|
8
|
-
* full irradiance model as the world-space irradiance clipmap (environment GI + directional lights
|
|
9
|
-
* with atmospheric transmittance and multiple scattering, evaluated through
|
|
10
|
-
* `irradiance_clipmap_sh_multiscattering`).
|
|
11
|
-
*
|
|
12
|
-
* Shared as a first-class {@link CodeChunk} between `shader_volumetrics_lighting_blended` and
|
|
13
|
-
* `shader_volumetrics_lighting_far_field`.
|
|
14
|
-
*
|
|
15
|
-
* @type {CodeChunk}
|
|
16
|
-
*/
|
|
17
|
-
export const chunk_volumetrics_far_field_directional: CodeChunk;
|
|
18
|
-
export const shader_volumetrics_lighting_clipmap: ComputeShader;
|
|
19
|
-
export const shader_volumetrics_lighting_blended: ComputeShader;
|
|
20
|
-
export const shader_volumetrics_lighting_far_field: ComputeShader;
|
|
21
|
-
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
22
|
-
import { ComputeShader } from "../shader/ComputeShader.js";
|
|
23
|
-
//# sourceMappingURL=shader_volumetrics_lighting_regimes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_volumetrics_lighting_regimes.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.js"],"names":[],"mappings":"AA+CA;;;GAGG;AACH,gDAFU,MAAM,CAEoC;AAEpD;;;;;;;;;;GAUG;AACH,sDAFU,SAAS,CA6FjB;AAwFF,gEAIG;AAuFH,gEAIG;AA2DH,kEAIG;0BAhYuB,iCAAiC;8BAC7B,4BAA4B"}
|