@woosh/meep-engine 3.34.0 → 3.35.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/device/timing/profile/GPUProfileSession.d.ts +25 -11
- package/src/shade/device/timing/profile/GPUProfileSession.d.ts.map +1 -1
- package/src/shade/device/timing/profile/GPUProfileSession.js +553 -474
- package/src/shade/playground/avboit/main.d.ts.map +1 -1
- package/src/shade/playground/avboit/main.js +888 -916
- package/src/shade/playground/particle_ecs/README.md +13 -7
- package/src/shade/playground/particle_ecs/bonfire_effects.d.ts +5 -5
- package/src/shade/playground/particle_ecs/bonfire_effects.js +5 -5
- package/src/shade/playground/particle_ecs/effects/smoke.json +1859 -1859
- package/src/shade/playground/particle_ecs/effects/soot.json +1605 -1605
- package/src/shade/playground/particle_system/README.md +1 -2
- package/src/shade/playground/profile_hotkey.d.ts.map +1 -1
- package/src/shade/playground/profile_hotkey.js +4 -40
- package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/main.js +4 -39
- package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/main.js +4 -39
- package/src/shade/playground/volumetrics_froxel/measure.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/measure.js +2 -4
- package/src/shade/renderer/Renderer.d.ts +1 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +3 -1
- package/src/shade/renderer/light/GPULightCollection.d.ts +9 -1
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +41 -0
- package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts +37 -0
- package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/shader_project_environment_sh.js +105 -0
- package/src/shade/renderer/particles/DESIGN.md +65 -8
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +7 -1
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +1247 -1244
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts +7 -1
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +9 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +4 -2
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +15 -9
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +29 -11
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting_model.d.ts +24 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting_model.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting_model.js +45 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +3 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +38 -0
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +190 -185
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +8 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +5 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +8 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +9 -0
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +13 -3
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +9 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.d.ts +39 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.js +107 -0
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts +15 -0
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +44 -0
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +19 -0
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +48 -0
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +29 -0
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +90 -0
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.d.ts +10 -0
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.js +55 -0
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.d.ts +10 -0
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.js +47 -0
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.d.ts +10 -0
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.js +63 -0
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts +17 -0
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +26 -0
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +8 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +50 -2
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +488 -436
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +254 -63
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CAMERA_UNIFORM_STRUCT } from "../../camera/CAMERA_UNIFORM_STRUCT.js";
|
|
2
|
+
import { ShaderResourceGroupDescriptor } from "../../shader/resource/ShaderResourceGroupDescriptor.js";
|
|
3
|
+
import { VOLUMETRICS_METADATA_STRUCT } from "../VOLUMETRICS_METADATA_STRUCT.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The bindings every froxel GI module has, whatever its mode reads: where the froxels are, and the
|
|
7
|
+
* two volumes it writes (`chunk_volumetrics_gi`). rgba16float for both, because rg16float is not a
|
|
8
|
+
* storage format without texture-formats-tier1.
|
|
9
|
+
*
|
|
10
|
+
* @returns {ShaderResourceGroupDescriptor}
|
|
11
|
+
*/
|
|
12
|
+
export function volumetrics_gi_resource_group() {
|
|
13
|
+
return new ShaderResourceGroupDescriptor()
|
|
14
|
+
.addUniform("volumetrics_metadata", VOLUMETRICS_METADATA_STRUCT)
|
|
15
|
+
.addUniform("camera", CAMERA_UNIFORM_STRUCT)
|
|
16
|
+
.addStorageTexture("tGIY", "rgba16float", "3d", "write-only")
|
|
17
|
+
.addStorageTexture("tGICoCg", "rgba16float", "3d", "write-only");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Workgroup shape of every froxel GI module, `[x, y, z]` in froxels: flat in z like the lighting
|
|
22
|
+
* pass, and 64 invocations.
|
|
23
|
+
*
|
|
24
|
+
* @type {number[]}
|
|
25
|
+
*/
|
|
26
|
+
export const VOLUMETRICS_GI_WORKGROUP_RESOLUTION = [8, 8, 1];
|
|
@@ -29,11 +29,13 @@ export function graph_integrate_sky({ graph }: {
|
|
|
29
29
|
* `[1, 1, 1]` when the froxels are marching instead, which keeps the passes in the graph without
|
|
30
30
|
* doing any work
|
|
31
31
|
* @param {number} options.volumetrics_metadata
|
|
32
|
+
* @param {import("../ShadeIndirectLightingMode.js").ShadeIndirectLightingMode} options.indirect_lighting_mode which froxel GI module starts the
|
|
33
|
+
* froxel irradiance volume (`gi/graph_build_froxel_gi`)
|
|
32
34
|
* @param {number} [options.taa_history] imported previous-frame accumulated scattering volume
|
|
33
35
|
* @param {number} [options.taa_output] imported destination for this frame's accumulated scattering volume
|
|
34
36
|
* @param {GPUCameraContext} [options.camera_previous] previous-frame camera, for temporal reprojection
|
|
35
37
|
*/
|
|
36
|
-
export function graph_build_volumetrics({ graph, camera, lights, view, light_cluster_data, light_cluster_lookup, light_cluster_parameters, shadowmap_atlas, volumetric_resolution, sun_shadow_resolution, volumetrics_metadata, taa_history, taa_output, camera_previous, }: {
|
|
38
|
+
export function graph_build_volumetrics({ graph, camera, lights, view, light_cluster_data, light_cluster_lookup, light_cluster_parameters, shadowmap_atlas, volumetric_resolution, sun_shadow_resolution, volumetrics_metadata, indirect_lighting_mode, taa_history, taa_output, camera_previous, }: {
|
|
37
39
|
graph: FrameGraph;
|
|
38
40
|
camera: GPUCameraContext;
|
|
39
41
|
lights: GPULightCollection;
|
|
@@ -45,6 +47,7 @@ export function graph_build_volumetrics({ graph, camera, lights, view, light_clu
|
|
|
45
47
|
volumetric_resolution: number[];
|
|
46
48
|
sun_shadow_resolution: number[];
|
|
47
49
|
volumetrics_metadata: number;
|
|
50
|
+
indirect_lighting_mode: import("../ShadeIndirectLightingMode.js").ShadeIndirectLightingMode;
|
|
48
51
|
taa_history?: number;
|
|
49
52
|
taa_output?: number;
|
|
50
53
|
camera_previous?: GPUCameraContext;
|
|
@@ -52,6 +55,10 @@ export function graph_build_volumetrics({ graph, camera, lights, view, light_clu
|
|
|
52
55
|
lut_transmittance: number;
|
|
53
56
|
lut_multiple_scattering: number;
|
|
54
57
|
lut_aerial: any;
|
|
58
|
+
irradiance: {
|
|
59
|
+
Y: number;
|
|
60
|
+
CoCg: number;
|
|
61
|
+
};
|
|
55
62
|
volumetrics_metadata: number;
|
|
56
63
|
};
|
|
57
64
|
//# sourceMappingURL=graph_build_volumetrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_build_volumetrics.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/graph_build_volumetrics.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_build_volumetrics.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/graph_build_volumetrics.js"],"names":[],"mappings":"AA0BA;;;;;;;;GAQG;AACH;IAH+B,KAAK;IACvB;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAC,CA8DjE;AAqVD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAnB+B,KAAK;IACC,MAAM;IACJ,MAAM;IACV,IAAI;IACZ,kBAAkB,EAAlC,MAAM;IACU,oBAAoB,EAApC,MAAM;IACU,wBAAwB,EAAxC,MAAM;IACU,eAAe,EAA/B,MAAM;IACY,qBAAqB,EAAvC,MAAM,EAAE;IACU,qBAAqB,EAAvC,MAAM,EAAE;IAGQ,oBAAoB,EAApC,MAAM;IACuE,sBAAsB,EAAnG,OAAO,iCAAiC,EAAE,yBAAyB;IAElD,WAAW,GAA5B,MAAM;IACW,UAAU,GAA3B,MAAM;IACqB,eAAe;;;;;;WAjKH,MAAM;cAAQ,MAAM;;;EA0VrE"}
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
shader_volumetrics_build_sun_shadow_volume_seeded
|
|
18
18
|
} from "./shader_volumetrics_build_sun_shadow_volume.js";
|
|
19
19
|
import { shader_volumetrics_taa } from "./taa/shader_volumetrics_taa.js";
|
|
20
|
+
import { graph_build_froxel_gi } from "./gi/graph_build_froxel_gi.js";
|
|
20
21
|
import {
|
|
21
22
|
VOLUMETRICS_SUN_SHADOW_CASCADE_COUNT,
|
|
22
23
|
VOLUMETRICS_SUN_SHADOW_WORKGROUP_RESOLUTION,
|
|
@@ -291,6 +292,9 @@ function graph_build_sun_shadow_volume({
|
|
|
291
292
|
* @param view
|
|
292
293
|
* @param camera
|
|
293
294
|
* @param resolution
|
|
295
|
+
* @param {{Y: number, CoCg: number}} gi the froxel GI stage's volume, which the irradiance starts from
|
|
296
|
+
* @returns {{scattering: number, irradiance: {Y: number, CoCg: number}}} the lit scattering volume,
|
|
297
|
+
* and the froxel irradiance volume: the GI plus the same lights (chunk_volumetrics_irradiance_sh)
|
|
294
298
|
*/
|
|
295
299
|
function graph_integrate_light_scattering({
|
|
296
300
|
graph,
|
|
@@ -308,6 +312,7 @@ function graph_integrate_light_scattering({
|
|
|
308
312
|
view,
|
|
309
313
|
camera,
|
|
310
314
|
resolution,
|
|
315
|
+
gi,
|
|
311
316
|
}) {
|
|
312
317
|
|
|
313
318
|
const data = {};
|
|
@@ -352,6 +357,10 @@ function graph_integrate_light_scattering({
|
|
|
352
357
|
tParticipatingMedia0: participating_media0.obtainView(),
|
|
353
358
|
tParticipatingMedia1: participating_media1.obtainView(),
|
|
354
359
|
tLighting: output.obtainView(DEFAULT_RENDER_TARGET_VIEW_DESCRIPTOR),
|
|
360
|
+
tGIY: resources.get(data.gi_Y).obtainView(),
|
|
361
|
+
tGICoCg: resources.get(data.gi_CoCg).obtainView(),
|
|
362
|
+
tIrradianceY: resources.get(data.irradiance_Y).obtainView(DEFAULT_RENDER_TARGET_VIEW_DESCRIPTOR),
|
|
363
|
+
tIrradianceCoCg: resources.get(data.irradiance_CoCg).obtainView(DEFAULT_RENDER_TARGET_VIEW_DESCRIPTOR),
|
|
355
364
|
//
|
|
356
365
|
light_data: lights.buffer_data,
|
|
357
366
|
|
|
@@ -391,6 +400,9 @@ function graph_integrate_light_scattering({
|
|
|
391
400
|
data.sun_multiple_scattering_lut = pass.read(sun_multiple_scattering_lut);
|
|
392
401
|
data.sun_shadow_cascades = sun_shadow_cascades.map(handle => pass.read(handle));
|
|
393
402
|
|
|
403
|
+
data.gi_Y = pass.read(gi.Y);
|
|
404
|
+
data.gi_CoCg = pass.read(gi.CoCg);
|
|
405
|
+
|
|
394
406
|
data.output = pass.create("Light Scattering LUT", TextureResourceDescriptor.from({
|
|
395
407
|
resolution,
|
|
396
408
|
dimension: "3d",
|
|
@@ -398,8 +410,27 @@ function graph_integrate_light_scattering({
|
|
|
398
410
|
usage: GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.RENDER_ATTACHMENT
|
|
399
411
|
}));
|
|
400
412
|
|
|
413
|
+
data.irradiance_Y = pass.create("Froxel Irradiance Y", TextureResourceDescriptor.from({
|
|
414
|
+
resolution,
|
|
415
|
+
dimension: "3d",
|
|
416
|
+
format: "rgba16float",
|
|
417
|
+
usage: GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.TEXTURE_BINDING
|
|
418
|
+
}));
|
|
401
419
|
|
|
402
|
-
|
|
420
|
+
data.irradiance_CoCg = pass.create("Froxel Irradiance CoCg", TextureResourceDescriptor.from({
|
|
421
|
+
resolution,
|
|
422
|
+
dimension: "3d",
|
|
423
|
+
format: "rgba16float",
|
|
424
|
+
usage: GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.TEXTURE_BINDING
|
|
425
|
+
}));
|
|
426
|
+
|
|
427
|
+
return {
|
|
428
|
+
scattering: data.output,
|
|
429
|
+
irradiance: {
|
|
430
|
+
Y: data.irradiance_Y,
|
|
431
|
+
CoCg: data.irradiance_CoCg,
|
|
432
|
+
},
|
|
433
|
+
};
|
|
403
434
|
|
|
404
435
|
}
|
|
405
436
|
|
|
@@ -419,6 +450,8 @@ function graph_integrate_light_scattering({
|
|
|
419
450
|
* `[1, 1, 1]` when the froxels are marching instead, which keeps the passes in the graph without
|
|
420
451
|
* doing any work
|
|
421
452
|
* @param {number} options.volumetrics_metadata
|
|
453
|
+
* @param {import("../ShadeIndirectLightingMode.js").ShadeIndirectLightingMode} options.indirect_lighting_mode which froxel GI module starts the
|
|
454
|
+
* froxel irradiance volume (`gi/graph_build_froxel_gi`)
|
|
422
455
|
* @param {number} [options.taa_history] imported previous-frame accumulated scattering volume
|
|
423
456
|
* @param {number} [options.taa_output] imported destination for this frame's accumulated scattering volume
|
|
424
457
|
* @param {GPUCameraContext} [options.camera_previous] previous-frame camera, for temporal reprojection
|
|
@@ -435,6 +468,7 @@ export function graph_build_volumetrics({
|
|
|
435
468
|
volumetric_resolution,
|
|
436
469
|
sun_shadow_resolution,
|
|
437
470
|
volumetrics_metadata,
|
|
471
|
+
indirect_lighting_mode,
|
|
438
472
|
taa_history,
|
|
439
473
|
taa_output,
|
|
440
474
|
camera_previous,
|
|
@@ -468,7 +502,20 @@ export function graph_build_volumetrics({
|
|
|
468
502
|
resolution: sun_shadow_resolution,
|
|
469
503
|
});
|
|
470
504
|
|
|
471
|
-
const
|
|
505
|
+
const gi = graph_build_froxel_gi({
|
|
506
|
+
graph,
|
|
507
|
+
indirect_lighting_mode,
|
|
508
|
+
scene_ctx: view.scene,
|
|
509
|
+
camera,
|
|
510
|
+
volumetrics_metadata,
|
|
511
|
+
resolution: volumetric_resolution,
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
const {
|
|
515
|
+
scattering: light_scattering_lut,
|
|
516
|
+
irradiance,
|
|
517
|
+
} = graph_integrate_light_scattering({
|
|
518
|
+
gi,
|
|
472
519
|
graph,
|
|
473
520
|
resolution: volumetric_resolution,
|
|
474
521
|
camera,
|
|
@@ -589,6 +636,7 @@ export function graph_build_volumetrics({
|
|
|
589
636
|
lut_transmittance: transmittance_lut,
|
|
590
637
|
lut_multiple_scattering: multiscatted_lut,
|
|
591
638
|
lut_aerial: a_data.output,
|
|
639
|
+
irradiance,
|
|
592
640
|
volumetrics_metadata,
|
|
593
641
|
};
|
|
594
642
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_volumetrics_build_lighting.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_volumetrics_build_lighting.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js"],"names":[],"mappings":"AAiDA;;;;;;;;;;;;;;;GAeG;AACH,wDAFU,MAAM,EAAE,CAEiD;AAkanE,8DAIE;8BAnd4B,4BAA4B"}
|