@woosh/meep-engine 3.54.0 → 3.56.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/engine/ecs/transform/Transform64.d.ts +21 -0
- package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform64.js +26 -0
- 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 +5 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +26 -3
- 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/particles/GPUParticleSystem.d.ts +2 -1
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts +2 -2
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +4 -9
- 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/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -7
- package/src/shade/renderer/view/GPUViewContext.d.ts +0 -14
- package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewContext.js +0 -29
- package/src/shade/renderer/view/ViewManager.d.ts +1 -1
- package/src/shade/renderer/view/ViewManager.js +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +40 -3
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +660 -583
- 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/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- 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/VOLUMETRICS_RESOLUTION_Z.d.ts +0 -2
- package/src/shade/renderer/volumetrics/VOLUMETRICS_RESOLUTION_Z.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/VOLUMETRICS_RESOLUTION_Z.js +0 -1
- 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
package/package.json
CHANGED
|
@@ -80,6 +80,27 @@ export const TRANSFORM64_SIZE: number;
|
|
|
80
80
|
* @copyright Company Named Limited (c) 2026
|
|
81
81
|
*/
|
|
82
82
|
export class Transform64 extends Float64Array {
|
|
83
|
+
/**
|
|
84
|
+
* A transform over memory you own: {@link TRANSFORM64_SIZE} elements of `buffer`, starting at
|
|
85
|
+
* `byte_offset`, in the layout described on the class. Nothing is copied and nothing is written - the
|
|
86
|
+
* transform reads whatever the memory holds, so call {@link makeIdentity} first if it does not hold a
|
|
87
|
+
* transform yet.
|
|
88
|
+
*
|
|
89
|
+
* `new Transform64()` is untouched by this: the instance is built by `Float64Array`'s constructor with
|
|
90
|
+
* this class as `new.target`, so it shares the hidden class of an owning transform and every element
|
|
91
|
+
* access stays monomorphic, while our own constructor - and its identity fill - never runs.
|
|
92
|
+
*
|
|
93
|
+
* A buffer that can change length (a resizable `ArrayBuffer` or a growable `SharedArrayBuffer`) is
|
|
94
|
+
* refused: a view over one gets a different hidden class, and mixing those in would make element access
|
|
95
|
+
* on every transform polymorphic. A fixed-length `SharedArrayBuffer` is fine.
|
|
96
|
+
*
|
|
97
|
+
* NOTE: {@link clone} of a view is an ordinary owning transform, not another view.
|
|
98
|
+
*
|
|
99
|
+
* @param {ArrayBuffer|SharedArrayBuffer} buffer fixed-length
|
|
100
|
+
* @param {number} byte_offset multiple of 8, with {@link TRANSFORM64_SIZE} * 8 bytes available after it
|
|
101
|
+
* @returns {Transform64}
|
|
102
|
+
*/
|
|
103
|
+
static view(buffer: ArrayBuffer | SharedArrayBuffer, byte_offset: number): Transform64;
|
|
83
104
|
/**
|
|
84
105
|
* Build a transform from loose components, with {@link matrix} already composed from them
|
|
85
106
|
* @param {number} translation_x
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transform64.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/Transform64.js"],"names":[],"mappings":"AAUA;;GAEG;AAEH;;;;;;GAMG;AACH,wCAFU,MAAM,CAE2B;AAE3C;;;;;;;GAOG;AACH,6CAFU,MAAM,CAEiC;AAEjD;;;GAGG;AACH,0CAFU,MAAM,CAE8B;AAE9C;;;GAGG;AACH,uCAFU,MAAM,CAE2B;AAE3C;;;GAGG;AACH,+BAFU,MAAM,CAEmB;AASnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH;IAmqBI;;;;;;;;;;;;;OAaG;IACH,2BAZW,MAAM,iBACN,MAAM,iBACN,MAAM,cACN,MAAM,cACN,MAAM,cACN,MAAM,cACN,MAAM,WACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,WAAW,CAgBvB;IAED;;;;OAIG;IACH,sBAHW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,GAChC,WAAW,CAQvB;IAED;;;;OAIG;IACH,4BAFa,WAAW,CAQvB;
|
|
1
|
+
{"version":3,"file":"Transform64.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/Transform64.js"],"names":[],"mappings":"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"}
|
|
@@ -777,6 +777,32 @@ export class Transform64 extends Float64Array {
|
|
|
777
777
|
+ `, scale: [${this.scale_x}, ${this.scale_y}, ${this.scale_z}] }`;
|
|
778
778
|
}
|
|
779
779
|
|
|
780
|
+
/**
|
|
781
|
+
* A transform over memory you own: {@link TRANSFORM64_SIZE} elements of `buffer`, starting at
|
|
782
|
+
* `byte_offset`, in the layout described on the class. Nothing is copied and nothing is written - the
|
|
783
|
+
* transform reads whatever the memory holds, so call {@link makeIdentity} first if it does not hold a
|
|
784
|
+
* transform yet.
|
|
785
|
+
*
|
|
786
|
+
* `new Transform64()` is untouched by this: the instance is built by `Float64Array`'s constructor with
|
|
787
|
+
* this class as `new.target`, so it shares the hidden class of an owning transform and every element
|
|
788
|
+
* access stays monomorphic, while our own constructor - and its identity fill - never runs.
|
|
789
|
+
*
|
|
790
|
+
* A buffer that can change length (a resizable `ArrayBuffer` or a growable `SharedArrayBuffer`) is
|
|
791
|
+
* refused: a view over one gets a different hidden class, and mixing those in would make element access
|
|
792
|
+
* on every transform polymorphic. A fixed-length `SharedArrayBuffer` is fine.
|
|
793
|
+
*
|
|
794
|
+
* NOTE: {@link clone} of a view is an ordinary owning transform, not another view.
|
|
795
|
+
*
|
|
796
|
+
* @param {ArrayBuffer|SharedArrayBuffer} buffer fixed-length
|
|
797
|
+
* @param {number} byte_offset multiple of 8, with {@link TRANSFORM64_SIZE} * 8 bytes available after it
|
|
798
|
+
* @returns {Transform64}
|
|
799
|
+
*/
|
|
800
|
+
static view(buffer, byte_offset) {
|
|
801
|
+
assert.notOk(buffer.resizable === true || buffer.growable === true, 'buffer must be fixed-length');
|
|
802
|
+
|
|
803
|
+
return Reflect.construct(Float64Array, [buffer, byte_offset, TRANSFORM64_SIZE], Transform64);
|
|
804
|
+
}
|
|
805
|
+
|
|
780
806
|
/**
|
|
781
807
|
* Build a transform from loose components, with {@link matrix} already composed from them
|
|
782
808
|
* @param {number} translation_x
|
|
@@ -47,12 +47,15 @@ Three consequences that shape everything below:
|
|
|
47
47
|
The renderer requires a WebGPU device that meets a fixed floor. There is no feature detection
|
|
48
48
|
beyond it and no branch that produces a lesser frame.
|
|
49
49
|
|
|
50
|
-
**Required features** — the adapter must have
|
|
50
|
+
**Required features** — the adapter must have all three, or startup fails:
|
|
51
51
|
|
|
52
52
|
- `indirect-first-instance` — indirect draw is used throughout
|
|
53
53
|
- `float32-blendable` — the MBOIT transparency mode blends into 32-bit float targets. The default mode,
|
|
54
54
|
AVBOIT, blends `rgba16float` only and does not need it. The feature stays on the floor while MBOIT is
|
|
55
55
|
selectable at all; retiring it from the floor means retiring MBOIT.
|
|
56
|
+
- `texture-formats-tier1` — the hierarchical Z buffer is reduced in compute into `rg16float` storage
|
|
57
|
+
textures, which core WebGPU cannot write. Without it the HZB texture and every HZB pipeline fail
|
|
58
|
+
validation, and occlusion culling, SSR, screen-space shadows and light culling all read the HZB.
|
|
56
59
|
|
|
57
60
|
**Required limits:**
|
|
58
61
|
|
|
@@ -65,7 +68,7 @@ The required features and the two fixed limits are one definition, `device/SHADE
|
|
|
65
68
|
All of it is checked against the adapter before a device is requested, so a refusal names every
|
|
66
69
|
feature and limit the adapter lacks, with the value it offers, rather than the first one found.
|
|
67
70
|
|
|
68
|
-
**Taken when offered, never required:** `timestamp-query`, `subgroups
|
|
71
|
+
**Taken when offered, never required:** `timestamp-query`, `subgroups`.
|
|
69
72
|
`timestamp-query` drives GPU timers and nothing else, and some browsers withhold it on hardware that
|
|
70
73
|
is otherwise fine — so the timers go quiet when it is absent rather than the renderer refusing to
|
|
71
74
|
start.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SHADE_DEVICE_FLOOR.d.ts","sourceRoot":"","sources":["../../../../src/shade/device/SHADE_DEVICE_FLOOR.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH;IACI;;OAEG;cADO,cAAc,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"SHADE_DEVICE_FLOOR.d.ts","sourceRoot":"","sources":["../../../../src/shade/device/SHADE_DEVICE_FLOOR.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH;IACI;;OAEG;cADO,cAAc,mBAAmB,CAAC;IAW5C;;OAEG;YADO,SAAS,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC;GAO3C;oCAnCiC,sCAAsC"}
|
|
@@ -21,6 +21,8 @@ export const SHADE_DEVICE_FLOOR = Object.freeze({
|
|
|
21
21
|
WebGPUExtensionType.IndirectFirstInstance,
|
|
22
22
|
// the MBOIT transparency mode blends into 32-bit float targets; stays while MBOIT is selectable
|
|
23
23
|
WebGPUExtensionType.Float32Blendable,
|
|
24
|
+
// the HZB is reduced in compute into rg16float storage textures; core WebGPU has no rg16float storage
|
|
25
|
+
WebGPUExtensionType.TextureFormatsTier1,
|
|
24
26
|
]),
|
|
25
27
|
|
|
26
28
|
/**
|
|
@@ -226,6 +226,10 @@ export class Renderer {
|
|
|
226
226
|
* @return {ViewManager}
|
|
227
227
|
*/
|
|
228
228
|
get views(): ViewManager;
|
|
229
|
+
/**
|
|
230
|
+
* @returns {GPUViewVolumetrics}
|
|
231
|
+
*/
|
|
232
|
+
get volumetrics(): GPUViewVolumetrics;
|
|
229
233
|
/**
|
|
230
234
|
*
|
|
231
235
|
* @return {GraphicsContext}
|
|
@@ -546,6 +550,7 @@ import { MotionBlur } from "./postprocess/motion_blur/MotionBlur.js";
|
|
|
546
550
|
import { DepthOfField } from "./postprocess/dof/raymarch/DepthOfField.js";
|
|
547
551
|
import { DepthOfFieldU } from "./postprocess/dof/gather/DepthOfFieldU.js";
|
|
548
552
|
import { ViewManager } from "./view/ViewManager.js";
|
|
553
|
+
import { GPUViewVolumetrics } from "./volumetrics/GPUViewVolumetrics.js";
|
|
549
554
|
import { GraphicsContext } from "./GraphicsContext.js";
|
|
550
555
|
import Vector2 from "../../core/geom/Vector2.js";
|
|
551
556
|
import { GPUTextureContext } from "./texture/GPUTextureContext.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"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"}
|
|
@@ -114,6 +114,7 @@ import { GPUTextureContext } from "./texture/GPUTextureContext.js";
|
|
|
114
114
|
import { RenderTarget } from "./texture/RenderTarget.js";
|
|
115
115
|
import { View } from "./view/View.js";
|
|
116
116
|
import { ViewManager } from "./view/ViewManager.js";
|
|
117
|
+
import { GPUViewVolumetrics } from "./volumetrics/GPUViewVolumetrics.js";
|
|
117
118
|
|
|
118
119
|
/**
|
|
119
120
|
* @typedef {import("../device/timing/profile/GPUFrameRecorder.js").GPUFrameRecorder} GPUFrameRecorder
|
|
@@ -582,6 +583,23 @@ export class Renderer {
|
|
|
582
583
|
return this.#views;
|
|
583
584
|
}
|
|
584
585
|
|
|
586
|
+
/**
|
|
587
|
+
* The main view's volumetric fog: the froxel grid, its TAA history, and the irradiance clipmap
|
|
588
|
+
* lit particles read. One, like the TAA history, since {@link render} draws one main view; a
|
|
589
|
+
* view of its own would put one on every shadow view as well.
|
|
590
|
+
*
|
|
591
|
+
* Constructed in {@link initialize}.
|
|
592
|
+
* @type {GPUViewVolumetrics | undefined}
|
|
593
|
+
*/
|
|
594
|
+
#volumetrics;
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* @returns {GPUViewVolumetrics}
|
|
598
|
+
*/
|
|
599
|
+
get volumetrics() {
|
|
600
|
+
return this.#volumetrics;
|
|
601
|
+
}
|
|
602
|
+
|
|
585
603
|
/**
|
|
586
604
|
* @type {GraphicsContext}
|
|
587
605
|
*/
|
|
@@ -1007,6 +1025,8 @@ export class Renderer {
|
|
|
1007
1025
|
if (this.#nss !== undefined) {
|
|
1008
1026
|
this.#nss.reset_history = true;
|
|
1009
1027
|
}
|
|
1028
|
+
|
|
1029
|
+
this.#volumetrics?.reset_history();
|
|
1010
1030
|
}
|
|
1011
1031
|
|
|
1012
1032
|
/**
|
|
@@ -1562,7 +1582,6 @@ export class Renderer {
|
|
|
1562
1582
|
// for the sake of a feature the renderer does not need to run.
|
|
1563
1583
|
WebGPUExtensionType.TimestampQuery,
|
|
1564
1584
|
WebGPUExtensionType.Subgroups,
|
|
1565
|
-
WebGPUExtensionType.TextureFormatsTier1,
|
|
1566
1585
|
/*
|
|
1567
1586
|
Compressed textures. Taken when offered and never required: a device with none of
|
|
1568
1587
|
them still loads every scene, because the asset layer asks what is supported before
|
|
@@ -1636,6 +1655,7 @@ export class Renderer {
|
|
|
1636
1655
|
|
|
1637
1656
|
this.#cameras = new CameraManager(this.device);
|
|
1638
1657
|
this.#views = new ViewManager(graphics, this.#cameras, this.#scenes);
|
|
1658
|
+
this.#volumetrics = new GPUViewVolumetrics(this.device);
|
|
1639
1659
|
|
|
1640
1660
|
const resolution_internal = this.#internal_resolution.asArray();
|
|
1641
1661
|
|
|
@@ -1869,6 +1889,7 @@ export class Renderer {
|
|
|
1869
1889
|
this.#depth_of_field_unreal?.destroy();
|
|
1870
1890
|
this.#restir_di?.destroy();
|
|
1871
1891
|
this.#nss?.destroy();
|
|
1892
|
+
this.#volumetrics?.destroy();
|
|
1872
1893
|
|
|
1873
1894
|
this.#views?.destroy();
|
|
1874
1895
|
this.#scenes?.destroy();
|
|
@@ -2750,7 +2771,7 @@ export class Renderer {
|
|
|
2750
2771
|
limits: graphics.collection_limits,
|
|
2751
2772
|
});
|
|
2752
2773
|
|
|
2753
|
-
// The view's volumetrics: the fog every surface is seen through (participating media ->
|
|
2774
|
+
// The main view's volumetrics: the fog every surface is seen through (participating media ->
|
|
2754
2775
|
// per-froxel lighting -> ray-marched integration), and the froxel irradiance lit particles
|
|
2755
2776
|
// are lit by. Both need the light clusters and shadow atlas. A scene with no volumes records
|
|
2756
2777
|
// no fog and hands the transparency pass a constant LUT that reads as none (transmittance 1,
|
|
@@ -2758,8 +2779,9 @@ export class Renderer {
|
|
|
2758
2779
|
// below is skipped on the same fact.
|
|
2759
2780
|
const has_volumetrics = view_ctx.scene.volumetrics.source.volumes.length > 0;
|
|
2760
2781
|
|
|
2761
|
-
const volumetrics =
|
|
2782
|
+
const volumetrics = this.#volumetrics.graph_update({
|
|
2762
2783
|
graph,
|
|
2784
|
+
view: view_ctx,
|
|
2763
2785
|
light_cluster_data: light_clusters.data,
|
|
2764
2786
|
light_cluster_lookup: light_clusters.lookup,
|
|
2765
2787
|
light_cluster_parameters: light_clusters.parameters,
|
|
@@ -2845,6 +2867,7 @@ export class Renderer {
|
|
|
2845
2867
|
input_velocity: gr_velocity,
|
|
2846
2868
|
input_normal: gr_texture_normal,
|
|
2847
2869
|
input_occlusion: gr_occlusion_clip,
|
|
2870
|
+
input_hzb: gr_texture_hzb,
|
|
2848
2871
|
// NOTE: AO is blended into the G-buffer
|
|
2849
2872
|
output: gr_texture_material_albedo_ao,
|
|
2850
2873
|
camera: gr_buffer_camera_current,
|
|
@@ -295,7 +295,7 @@ export class GPUParticleSystem {
|
|
|
295
295
|
* @param {number} args.integral graph handle of the integral texture
|
|
296
296
|
* @param {number} args.volumetrics_lut graph handle
|
|
297
297
|
* @param {number} args.volumetrics_metadata graph handle
|
|
298
|
-
* @param {{Y: number, CoCg: number}} args.volumetrics_irradiance graph handles of the froxel
|
|
298
|
+
* @param {{Y: number, CoCg: number, uniform: number}} args.volumetrics_irradiance graph handles of the froxel
|
|
299
299
|
* irradiance volume, what an emitter flagged `EMITTER_FLAG.LIGHTING` is lit by
|
|
300
300
|
* @param {{color: number, norm: number, extinction: number, emission: number}} args.accumulators
|
|
301
301
|
* @returns {{color: number, norm: number, extinction: number, emission: number}} after the draw
|
|
@@ -312,6 +312,7 @@ export class GPUParticleSystem {
|
|
|
312
312
|
volumetrics_irradiance: {
|
|
313
313
|
Y: number;
|
|
314
314
|
CoCg: number;
|
|
315
|
+
uniform: number;
|
|
315
316
|
};
|
|
316
317
|
accumulators: {
|
|
317
318
|
color: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUParticleSystem.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/GPUParticleSystem.js"],"names":[],"mappings":"AA4DA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH;IAmLI;;;;;;OAMG;IACH,sBANW,MAAM,iBACN,OAAO,6BAA6B,EAAE,eAAe;QAEpC,QAAQ,GAAzB,MAAM;QACW,sBAAsB,GAAvC,MAAM;OAoBhB;IA1MD;;;OAGG;IACH,UAFU,MAAM,CAEP;IAET;;;;OAIG;IACH,eAFU,OAAO,6BAA6B,EAAE,eAAe,CAEjD;IAEd;;;OAGG;IACH,UAFU,MAAM,CAEP;IAET;;OAEG;IACH,UAFU,eAAe,CAEhB;IAET;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,qBAFU,MAAM,CAEQ;IAExB;;;;OAIG;IACH,sBAAM;IAEN,yBAAyB;IACzB,0BAAc;IAEd;;;;;;;;;;;OAWG;IACH,SAFU,MAAM,CAEH;IA4Ib;;;OAGG;IACH,kCAEC;IAED;;;OAGG;IACH,yEAEC;IAED;;;;;;;;;;;;OAYG;IACH,eAFa,MAAM,CAIlB;IAED;;;;;;;OAOG;IACH,eAHW,OAAO,8BAA8B,EAAE,eAAe,SACtD,MAAM,QAwBhB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH;QAPkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;QAC/D,MAAM,EAArB,MAAM;QACS,cAAc,EAA7B,MAAM;QAES,EAAE,EAAjB,MAAM;QACJ,OAAO,sBAAsB,EAAE,yBAAyB,CAgEpE;IAiBD;;;;;;;;;OASG;IACH;QANgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACjE,MAAM,EAAnB,MAAM;QACkB,kBAAkB,EAA1C,UAAU,MAAM,CAAC;QACJ,SAAS,EAAtB,MAAM;QACJ,MAAM,CAalB;IAED;;;;;;;;;;OAUG;IACH;QAPgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACjE,MAAM,EAAnB,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,aAAa,EAA1B,MAAM;QACsD,MAAM,EAAlE;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC;QACnD;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAkBjE;IAED;;;;;;;;;;;;;;;;OAgBG;IACH;QAbgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACrB,QAAQ,EAAjE,OAAO,2BAA2B,EAAE,cAAc;QACrC,MAAM,EAAnB,MAAM;QACO,aAAa,EAA1B,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,QAAQ,EAArB,MAAM;QACO,eAAe,EAA5B,MAAM;QACO,oBAAoB,EAAjC,MAAM;
|
|
1
|
+
{"version":3,"file":"GPUParticleSystem.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/GPUParticleSystem.js"],"names":[],"mappings":"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"}
|
|
@@ -609,7 +609,7 @@ export class GPUParticleSystem {
|
|
|
609
609
|
* @param {number} args.integral graph handle of the integral texture
|
|
610
610
|
* @param {number} args.volumetrics_lut graph handle
|
|
611
611
|
* @param {number} args.volumetrics_metadata graph handle
|
|
612
|
-
* @param {{Y: number, CoCg: number}} args.volumetrics_irradiance graph handles of the froxel
|
|
612
|
+
* @param {{Y: number, CoCg: number, uniform: number}} args.volumetrics_irradiance graph handles of the froxel
|
|
613
613
|
* irradiance volume, what an emitter flagged `EMITTER_FLAG.LIGHTING` is lit by
|
|
614
614
|
* @param {{color: number, norm: number, extinction: number, emission: number}} args.accumulators
|
|
615
615
|
* @returns {{color: number, norm: number, extinction: number, emission: number}} after the draw
|
|
@@ -70,7 +70,7 @@ export function graph_particle_avboit_splat({ graph, camera, warp, depth_texture
|
|
|
70
70
|
* @param {number} params.integral graph handle of the integral texture
|
|
71
71
|
* @param {number} params.volumetrics_lut graph handle
|
|
72
72
|
* @param {number} params.volumetrics_metadata graph handle
|
|
73
|
-
* @param {{Y: number, CoCg: number, uniform
|
|
73
|
+
* @param {{Y: number, CoCg: number, uniform: number}} params.volumetrics_irradiance graph handles of
|
|
74
74
|
* the world-space irradiance clipmap a lit emitter's particles are lit by
|
|
75
75
|
* @param {{color: number, norm: number, extinction: number, emission: number}} params.accumulators to add to
|
|
76
76
|
* @param {GPUTextureView} params.atlas
|
|
@@ -93,7 +93,7 @@ export function graph_particle_avboit_draw({ graph, view_ctx, scene_context, cam
|
|
|
93
93
|
volumetrics_irradiance: {
|
|
94
94
|
Y: number;
|
|
95
95
|
CoCg: number;
|
|
96
|
-
uniform
|
|
96
|
+
uniform: number;
|
|
97
97
|
};
|
|
98
98
|
accumulators: {
|
|
99
99
|
color: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_particles_avboit.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/graph_particles_avboit.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_particles_avboit.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/graph_particles_avboit.js"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;;;GAeG;AACH;IARkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IAC/D,MAAM,EAArB,MAAM;IACoB,kBAAkB,EAA5C,UAAU,MAAM,CAAC;IACF,SAAS,EAAxB,MAAM;IACS,gBAAgB,EAA/B,MAAM;IACS,mBAAmB,EAAlC,MAAM;IACJ,MAAM,CA8ClB;AAED;;;;;;;;;;;;;;;GAeG;AACH;IAZkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IAC/D,MAAM,EAArB,MAAM;IACS,IAAI,EAAnB,MAAM;IACwD,MAAM,EAApE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC;IAC9B,KAAK;IACT,aAAa;IACjB,IAAI,EAAnB,MAAM;IACS,KAAK,EAApB,MAAM;IACS,gBAAgB,EAA/B,MAAM;IACS,SAAS,EAAxB,MAAM;IACJ;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CA0EjE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IAnBkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IACnB,QAAQ,EAAnE,OAAO,2BAA2B,EAAE,cAAc;IACnC,MAAM,EAArB,MAAM;IACS,aAAa,EAA5B,MAAM;IACS,IAAI,EAAnB,MAAM;IACS,QAAQ,EAAvB,MAAM;IACS,eAAe,EAA9B,MAAM;IACS,oBAAoB,EAAnC,MAAM;IAC6C,sBAAsB,EAAzE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC;IAEkC,YAAY,EAAxF;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC;IAC5C,KAAK;IACT,aAAa;IACjB,IAAI,EAAnB,MAAM;IACS,KAAK,EAApB,MAAM;IACS,gBAAgB,EAA/B,MAAM;IACS,SAAS,EAAxB,MAAM;IACJ;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CA+H/E"}
|
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
METRO_L1_IRRADIANCE_STRUCT
|
|
8
8
|
} from "../shader/chunk/spherical_harmonics/l1i/chunk_convert_to_irradiance_sh.js";
|
|
9
9
|
import { STATIC_GRAPHICS_ENGINE_ASSETS } from "../STATIC_GRAPHICS_ENGINE_ASSETS.js";
|
|
10
|
-
import { IRRADIANCE_CLIPMAP_STRUCT } from "../volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js";
|
|
11
10
|
import {
|
|
12
11
|
PARTICLE_AVBOIT_DRAW_ADDITIVE_PIPELINE,
|
|
13
12
|
PARTICLE_AVBOIT_DRAW_ALPHA_PIPELINE,
|
|
@@ -205,7 +204,7 @@ export function graph_particle_avboit_splat({
|
|
|
205
204
|
* @param {number} params.integral graph handle of the integral texture
|
|
206
205
|
* @param {number} params.volumetrics_lut graph handle
|
|
207
206
|
* @param {number} params.volumetrics_metadata graph handle
|
|
208
|
-
* @param {{Y: number, CoCg: number, uniform
|
|
207
|
+
* @param {{Y: number, CoCg: number, uniform: number}} params.volumetrics_irradiance graph handles of
|
|
209
208
|
* the world-space irradiance clipmap a lit emitter's particles are lit by
|
|
210
209
|
* @param {{color: number, norm: number, extinction: number, emission: number}} params.accumulators to add to
|
|
211
210
|
* @param {GPUTextureView} params.atlas
|
|
@@ -240,6 +239,7 @@ export function graph_particle_avboit_draw({
|
|
|
240
239
|
assert.isNonNegativeInteger(integral, "integral");
|
|
241
240
|
assert.isNonNegativeInteger(volumetrics_irradiance.Y, "volumetrics_irradiance.Y");
|
|
242
241
|
assert.isNonNegativeInteger(volumetrics_irradiance.CoCg, "volumetrics_irradiance.CoCg");
|
|
242
|
+
assert.isNonNegativeInteger(volumetrics_irradiance.uniform, "volumetrics_irradiance.uniform");
|
|
243
243
|
|
|
244
244
|
function execute(data, resources, context) {
|
|
245
245
|
const encoder = context.encoder;
|
|
@@ -249,10 +249,7 @@ export function graph_particle_avboit_draw({
|
|
|
249
249
|
const depth_view = t_depth.obtainView(DEFAULT_DEPTH_TEXTURE_VIEW);
|
|
250
250
|
const linear_sampler = graphics.samplers.obtain(SAMPLER_LINEAR);
|
|
251
251
|
|
|
252
|
-
const irradiance_clipmap_buffer = data.irradiance_uniform
|
|
253
|
-
? resources.get(data.irradiance_uniform)
|
|
254
|
-
: (view_ctx.volumetrics?.irradiance_clipmap?.uniform
|
|
255
|
-
?? encoder.allocateTransientBuffer(GPUBufferUsage.UNIFORM, IRRADIANCE_CLIPMAP_STRUCT.size));
|
|
252
|
+
const irradiance_clipmap_buffer = resources.get(data.irradiance_uniform);
|
|
256
253
|
|
|
257
254
|
const far_field_sh_buffer = scene_context?.lights?.far_field_irradiance_sh
|
|
258
255
|
?? view_ctx.scene?.lights?.far_field_irradiance_sh
|
|
@@ -326,9 +323,7 @@ export function graph_particle_avboit_draw({
|
|
|
326
323
|
pass_data.volumetrics_metadata = pass.read(volumetrics_metadata);
|
|
327
324
|
pass_data.irradiance_Y = pass.read(volumetrics_irradiance.Y);
|
|
328
325
|
pass_data.irradiance_CoCg = pass.read(volumetrics_irradiance.CoCg);
|
|
329
|
-
|
|
330
|
-
pass_data.irradiance_uniform = pass.read(volumetrics_irradiance.uniform);
|
|
331
|
-
}
|
|
326
|
+
pass_data.irradiance_uniform = pass.read(volumetrics_irradiance.uniform);
|
|
332
327
|
pass_data.pool = pass.read(pool);
|
|
333
328
|
pass_data.alive = pass.read(alive);
|
|
334
329
|
pass_data.emitter_database = pass.read(emitter_database);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment_shader_denoise_ao.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fragment_shader_denoise_ao.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js"],"names":[],"mappings":"AAaA,kDAEG;AAsHH;;;GAGG;AACH,yCAFU,gBAAgB,CAMvB;AAEH,2DAWE;6BAxJ2B,mCAAmC;iCAQ/B,kCAAkC;4BAFvC,6BAA6B"}
|