@driftengine/core 4.5.0 → 4.6.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/CHANGELOG.json +51 -0
- package/README.md +1 -1
- package/dist/geometry/boxCsg.d.ts +28 -0
- package/dist/geometry/boxCsg.js +139 -0
- package/dist/geometry/csg.d.ts +36 -0
- package/dist/geometry/csg.js +329 -0
- package/dist/geometry/meshBuilder.js +13 -0
- package/dist/geometry/meshConcat.js +1 -0
- package/dist/geometry/pixelFont.js +2 -0
- package/dist/geometry/solid.d.ts +61 -0
- package/dist/geometry/solid.js +152 -0
- package/dist/geometry/solidFlat.d.ts +35 -0
- package/dist/geometry/solidFlat.js +428 -0
- package/dist/geometry/solidHarness.d.ts +19 -0
- package/dist/geometry/solidHarness.js +66 -0
- package/dist/geometry/solidNormals.d.ts +17 -0
- package/dist/geometry/solidNormals.js +86 -0
- package/dist/geometry/solidRound.d.ts +41 -0
- package/dist/geometry/solidRound.js +323 -0
- package/dist/geometry/solidWriter.d.ts +16 -0
- package/dist/geometry/solidWriter.js +42 -0
- package/dist/index.d.ts +23 -2
- package/dist/index.js +13 -1
- package/dist/render/backend/api.d.ts +17 -3
- package/dist/render/backend/drawFog.d.ts +26 -0
- package/dist/render/backend/drawFog.js +30 -0
- package/dist/render/backend/materialChanges.d.ts +2 -1
- package/dist/render/backend/materialChanges.js +6 -1
- package/dist/render/backend/webgl2/instanced.d.ts +24 -5
- package/dist/render/backend/webgl2/instanced.js +72 -15
- package/dist/render/backend/webgl2/renderer.d.ts +122 -8
- package/dist/render/backend/webgl2/renderer.js +238 -121
- package/dist/render/backend/webgpu/buffers.d.ts +10 -0
- package/dist/render/backend/webgpu/buffers.js +34 -3
- package/dist/render/backend/webgpu/depthPass.js +5 -1
- package/dist/render/backend/webgpu/drawCommand.d.ts +5 -0
- package/dist/render/backend/webgpu/drawCommand.js +1 -0
- package/dist/render/backend/webgpu/flatPass.d.ts +4 -1
- package/dist/render/backend/webgpu/flatPass.js +38 -9
- package/dist/render/backend/webgpu/glassTintPass.js +2 -1
- package/dist/render/backend/webgpu/instanceCullPass.d.ts +34 -0
- package/dist/render/backend/webgpu/instanceCullPass.js +144 -0
- package/dist/render/backend/webgpu/instanced.d.ts +11 -1
- package/dist/render/backend/webgpu/instanced.js +21 -3
- package/dist/render/backend/webgpu/latePass.d.ts +6 -2
- package/dist/render/backend/webgpu/latePass.js +11 -4
- package/dist/render/backend/webgpu/postPass.d.ts +1 -1
- package/dist/render/backend/webgpu/renderer.d.ts +100 -10
- package/dist/render/backend/webgpu/renderer.js +462 -201
- package/dist/render/backend/webgpu/sdfTextPass.js +6 -1
- package/dist/render/backend/webgpu/shaders/instanceCull.wgsl.d.ts +18 -0
- package/dist/render/backend/webgpu/shaders/instanceCull.wgsl.js +59 -0
- package/dist/render/backend/webgpu/surfaceTexturePass.d.ts +17 -3
- package/dist/render/backend/webgpu/surfaceTexturePass.js +77 -38
- package/dist/render/driftLight/bake.d.ts +7 -0
- package/dist/render/driftLight/bake.js +61 -56
- package/dist/render/driftLight/denseField.d.ts +46 -0
- package/dist/render/driftLight/denseField.js +109 -0
- package/dist/render/driftLight/lightField.d.ts +10 -5
- package/dist/render/driftLight/lightField.js +25 -19
- package/dist/render/driftLight/presence.d.ts +50 -0
- package/dist/render/driftLight/presence.js +43 -0
- package/dist/render/driftLight/uniforms.d.ts +3 -3
- package/dist/render/driftLight/uniforms.js +5 -6
- package/dist/render/driftLight/worldLightField.d.ts +41 -0
- package/dist/render/driftLight/worldLightField.js +66 -0
- package/dist/render/fixtureAtlas.d.ts +20 -0
- package/dist/render/fixtureAtlas.js +49 -0
- package/dist/render/instanceCull.d.ts +63 -0
- package/dist/render/instanceCull.js +160 -0
- package/dist/render/instances.d.ts +15 -0
- package/dist/render/lightBudget.d.ts +22 -33
- package/dist/render/lightBudget.js +24 -35
- package/dist/render/lightGrid.d.ts +42 -0
- package/dist/render/lightGrid.js +87 -0
- package/dist/render/mesh.d.ts +18 -24
- package/dist/render/mesh.js +51 -68
- package/dist/render/occlusion.d.ts +10 -0
- package/dist/render/occlusion.js +36 -7
- package/dist/render/pointLightSelection.d.ts +7 -0
- package/dist/render/pointLightSelection.js +29 -4
- package/dist/render/rainField.d.ts +13 -0
- package/dist/render/rainField.js +27 -5
- package/dist/render/recon/lateDepth.d.ts +11 -0
- package/dist/render/recon/lateDepth.js +70 -0
- package/dist/render/recon/resolve.d.ts +34 -4
- package/dist/render/recon/resolve.js +161 -20
- package/dist/render/rendererHarness.js +4 -0
- package/dist/render/sceneTarget.d.ts +2 -0
- package/dist/render/sceneTarget.js +2 -0
- package/dist/render/shaders/depth.js +12 -9
- package/dist/render/shaders/flat/driftLight.d.ts +1 -1
- package/dist/render/shaders/flat/driftLight.js +32 -7
- package/dist/render/shaders/flat/index.js +5 -3
- package/dist/render/shaders/flat/main.d.ts +1 -1
- package/dist/render/shaders/flat/main.js +75 -23
- package/dist/render/shaders/flat/preamble.js +75 -20
- package/dist/render/shaders/flat/surfaceEffects.d.ts +29 -0
- package/dist/render/shaders/flat/surfaceEffects.js +152 -0
- package/dist/render/shaders/generated/depth.wgsl.d.ts +8 -8
- package/dist/render/shaders/generated/depth.wgsl.js +8 -8
- package/dist/render/shaders/generated/flat.wgsl.d.ts +1320 -1320
- package/dist/render/shaders/generated/flat.wgsl.js +1359 -1345
- package/dist/render/shaders/generated/lightVolume.wgsl.js +18 -4
- package/dist/render/shaders/generated/rush.wgsl.d.ts +21 -16
- package/dist/render/shaders/generated/rush.wgsl.js +21 -16
- package/dist/render/shaders/generated/sdfText.wgsl.d.ts +2 -2
- package/dist/render/shaders/generated/sdfText.wgsl.js +2 -2
- package/dist/render/shaders/generated/text.wgsl.d.ts +1 -1
- package/dist/render/shaders/generated/text.wgsl.js +1 -1
- package/dist/render/shaders/gi/driftLight.wgsl.d.ts +1 -1
- package/dist/render/shaders/gi/driftLight.wgsl.js +27 -4
- package/dist/render/shaders/recon/lateDepth.wgsl.js +38 -13
- package/dist/render/shaders/recon/resolve.wgsl.d.ts +8 -7
- package/dist/render/shaders/recon/resolve.wgsl.js +161 -27
- package/dist/render/shaders/rush.js +11 -1
- package/dist/render/shaders/sdfText.d.ts +1 -1
- package/dist/render/shaders/sdfText.js +3 -2
- package/dist/render/shaders/text.d.ts +1 -1
- package/dist/render/shaders/text.js +18 -9
- package/dist/render/surfaceEffects.d.ts +83 -0
- package/dist/render/surfaceEffects.js +75 -0
- package/dist/render/surfaceScene.d.ts +8 -0
- package/dist/render/surfaceScene.js +8 -0
- package/dist/render/surfaceTexture.d.ts +18 -2
- package/dist/render/surfaceTexture.js +68 -15
- package/dist/render/temporalAa.d.ts +25 -6
- package/dist/render/temporalAa.js +45 -15
- package/dist/render/textureSource.d.ts +30 -0
- package/dist/render/textureSource.js +53 -0
- package/dist/render/vertexDefaults.js +2 -0
- package/dist/world/hlod.d.ts +104 -0
- package/dist/world/hlod.js +214 -0
- package/package.json +6 -6
- package/src/geometry/boxCsg.ts +186 -0
- package/src/geometry/csg.ts +384 -0
- package/src/geometry/meshBuilder.ts +15 -0
- package/src/geometry/meshConcat.ts +1 -0
- package/src/geometry/pixelFont.ts +2 -0
- package/src/geometry/solid.ts +189 -0
- package/src/geometry/solidFlat.ts +522 -0
- package/src/geometry/solidHarness.ts +83 -0
- package/src/geometry/solidNormals.ts +103 -0
- package/src/geometry/solidRound.ts +443 -0
- package/src/geometry/solidWriter.ts +58 -0
- package/src/index.ts +51 -1
- package/src/render/backend/api.ts +21 -2
- package/src/render/backend/drawFog.ts +31 -0
- package/src/render/backend/materialChanges.ts +9 -2
- package/src/render/backend/webgl2/instanced.ts +80 -14
- package/src/render/backend/webgl2/renderer.ts +300 -143
- package/src/render/backend/webgpu/buffers.ts +42 -3
- package/src/render/backend/webgpu/depthPass.ts +5 -1
- package/src/render/backend/webgpu/drawCommand.ts +6 -0
- package/src/render/backend/webgpu/flatPass.ts +41 -11
- package/src/render/backend/webgpu/glassTintPass.ts +2 -1
- package/src/render/backend/webgpu/instanceCullPass.ts +165 -0
- package/src/render/backend/webgpu/instanced.ts +21 -3
- package/src/render/backend/webgpu/latePass.ts +12 -3
- package/src/render/backend/webgpu/renderer.ts +540 -226
- package/src/render/backend/webgpu/sdfTextPass.ts +6 -1
- package/src/render/backend/webgpu/shaders/instanceCull.wgsl.ts +61 -0
- package/src/render/backend/webgpu/surfaceTexturePass.ts +90 -50
- package/src/render/driftLight/bake.ts +85 -62
- package/src/render/driftLight/denseField.ts +149 -0
- package/src/render/driftLight/lightField.ts +33 -18
- package/src/render/driftLight/presence.ts +69 -0
- package/src/render/driftLight/uniforms.ts +8 -9
- package/src/render/driftLight/worldLightField.ts +83 -0
- package/src/render/fixtureAtlas.ts +63 -0
- package/src/render/instanceCull.ts +205 -0
- package/src/render/instances.ts +16 -0
- package/src/render/lightBudget.ts +25 -36
- package/src/render/lightGrid.ts +130 -0
- package/src/render/mesh.ts +59 -72
- package/src/render/occlusion.ts +51 -7
- package/src/render/pointLightSelection.ts +72 -4
- package/src/render/rainField.ts +39 -5
- package/src/render/recon/lateDepth.ts +83 -0
- package/src/render/recon/resolve.ts +206 -20
- package/src/render/rendererHarness.ts +4 -0
- package/src/render/sceneTarget.ts +4 -0
- package/src/render/shaders/depth.ts +12 -9
- package/src/render/shaders/flat/driftLight.ts +32 -7
- package/src/render/shaders/flat/index.ts +5 -3
- package/src/render/shaders/flat/main.ts +75 -23
- package/src/render/shaders/flat/preamble.ts +75 -20
- package/src/render/shaders/flat/surfaceEffects.ts +152 -0
- package/src/render/shaders/generated/depth.wgsl.ts +8 -8
- package/src/render/shaders/generated/flat.wgsl.ts +1361 -1345
- package/src/render/shaders/generated/lightVolume.wgsl.ts +20 -4
- package/src/render/shaders/generated/rush.wgsl.ts +21 -16
- package/src/render/shaders/generated/sdfText.wgsl.ts +2 -2
- package/src/render/shaders/generated/text.wgsl.ts +1 -1
- package/src/render/shaders/gi/driftLight.wgsl.ts +27 -4
- package/src/render/shaders/recon/lateDepth.wgsl.ts +38 -13
- package/src/render/shaders/recon/resolve.wgsl.ts +161 -27
- package/src/render/shaders/rush.ts +11 -1
- package/src/render/shaders/sdfText.ts +3 -2
- package/src/render/shaders/text.ts +18 -9
- package/src/render/surfaceEffects.ts +132 -0
- package/src/render/surfaceScene.ts +16 -0
- package/src/render/surfaceTexture.ts +110 -19
- package/src/render/temporalAa.ts +78 -14
- package/src/render/textureSource.ts +72 -0
- package/src/render/vertexDefaults.ts +2 -0
- package/src/world/hlod.ts +290 -0
|
@@ -55,9 +55,12 @@ import type { Bounds } from '../../../math/bounds.ts';
|
|
|
55
55
|
import { type ComputeDefinition, type ComputeHandle } from '../../compute.ts';
|
|
56
56
|
import type { PassDefinition, PassHandle } from '../../pass.ts';
|
|
57
57
|
import { GpuInstancedBatch } from './instanced.ts';
|
|
58
|
-
import type { MeshInstances } from '../../instances.ts';
|
|
58
|
+
import type { InstancedOptions, MeshInstances } from '../../instances.ts';
|
|
59
59
|
import { LightField } from '../../driftLight/lightField.ts';
|
|
60
60
|
import type { LightFieldOptions, LightFieldSource } from '../../driftLight/lightField.ts';
|
|
61
|
+
import type { DenseLightVolume } from '../../driftLight/denseField.ts';
|
|
62
|
+
import { WorldLightField } from '../../driftLight/worldLightField.ts';
|
|
63
|
+
import type { WorldLightFieldOptions } from '../../driftLight/worldLightField.ts';
|
|
61
64
|
/** Which directional shadow map a pass is filling, matching `renderer.ts`. */
|
|
62
65
|
type ShadowLayer = 'static' | 'static-peel' | 'dynamic';
|
|
63
66
|
export declare class WebGPURenderer implements RendererApi {
|
|
@@ -513,6 +516,12 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
513
516
|
* what the layout already declares.
|
|
514
517
|
*/
|
|
515
518
|
private bloomGroups;
|
|
519
|
+
/**
|
|
520
|
+
* The picture the bloom reads, and its size: the scene target, or while reconstructing the
|
|
521
|
+
* resolved picture at the drawing buffer's size. See `rebuildBloomGroups`.
|
|
522
|
+
*/
|
|
523
|
+
private bloomSourceWidth;
|
|
524
|
+
private bloomSourceHeight;
|
|
516
525
|
private frameWidth;
|
|
517
526
|
private frameHeight;
|
|
518
527
|
/**
|
|
@@ -671,6 +680,18 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
671
680
|
*/
|
|
672
681
|
private reconHistories;
|
|
673
682
|
private reconHistoryViews;
|
|
683
|
+
/**
|
|
684
|
+
* Each output pixel's flicker record, a pair swapped with the histories: the temporal resolve's
|
|
685
|
+
* anti-flicker, over the reconstruction's own period (`recon/resolve.ts`).
|
|
686
|
+
*/
|
|
687
|
+
private reconFlickers;
|
|
688
|
+
private reconFlickerViews;
|
|
689
|
+
/** Each output pixel's held depth swing, a pair of its own: see `recon/resolve.ts`. */
|
|
690
|
+
private reconSwings;
|
|
691
|
+
private reconSwingViews;
|
|
692
|
+
/** The anti-flicker's rule for the period last asked for, kept so a frame makes none. */
|
|
693
|
+
private reconFlickerPhases;
|
|
694
|
+
private reconFlickerRule;
|
|
674
695
|
private reconWrite;
|
|
675
696
|
private reconHasHistory;
|
|
676
697
|
private reconShown;
|
|
@@ -704,6 +725,9 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
704
725
|
/** Last frame's raw view-projection and its inverse, and the two eyes. */
|
|
705
726
|
private readonly reconPreviousRawViewProj;
|
|
706
727
|
private readonly reconInverseViewProj;
|
|
728
|
+
/** The inverse and the reprojection, multiplied in double precision. See `runReconstruction`. */
|
|
729
|
+
private readonly reconInverse64;
|
|
730
|
+
private readonly reconReprojection64;
|
|
707
731
|
private readonly reconPreviousInverseViewProj;
|
|
708
732
|
private readonly reconEye;
|
|
709
733
|
private readonly reconPreviousEye;
|
|
@@ -831,6 +855,8 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
831
855
|
/** Said once for the whole renderer. See `refuseOitMultisampled`. */
|
|
832
856
|
private oitMultisampleRefused;
|
|
833
857
|
private oitReplaying;
|
|
858
|
+
/** `uSurfaceScene`, resolved once a pass. See `surfaceScene.ts`. */
|
|
859
|
+
private readonly surfaceScene;
|
|
834
860
|
/** Which buffer the replay is filling, which the pipeline key must carry. */
|
|
835
861
|
private oitMode;
|
|
836
862
|
/**
|
|
@@ -1061,6 +1087,8 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
1061
1087
|
/** Whether the bound material is seen from both faces. See `SurfaceMaterial.doubleSided`. */
|
|
1062
1088
|
private materialDoubleSided;
|
|
1063
1089
|
createSurfaceTexture(source: TexImageSource, options?: SurfaceTextureOptions): GpuSurfaceTexture;
|
|
1090
|
+
/** Several images of one size as an array's layers. See `RendererApi.createSurfaceTextureArray`. */
|
|
1091
|
+
createSurfaceTextureArray(sources: readonly TexImageSource[], options?: SurfaceTextureOptions): GpuSurfaceTexture;
|
|
1064
1092
|
/**
|
|
1065
1093
|
* GPU textures an `updateSurfaceTexture` replaced, destroyed when the next frame begins.
|
|
1066
1094
|
*
|
|
@@ -1139,6 +1167,13 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
1139
1167
|
/** How bright the environment the surfaces drawn next reflect is. See `renderer.ts`. */
|
|
1140
1168
|
setEnvironmentGain(gain: number): void;
|
|
1141
1169
|
setSurfaceGrain(amount: number): void;
|
|
1170
|
+
/**
|
|
1171
|
+
* How much of the surfaces drawn next survives a screen-door dither. See `renderer.ts`.
|
|
1172
|
+
*
|
|
1173
|
+
* Written straight into the scratch block rather than through `material()`'s callback, because
|
|
1174
|
+
* this one is called per crossfading region per frame and a closure per call is an allocation.
|
|
1175
|
+
*/
|
|
1176
|
+
setDitherFade(amount: number): void;
|
|
1142
1177
|
/**
|
|
1143
1178
|
* How strong the microscopic relief on the surfaces drawn next is, and how coarse.
|
|
1144
1179
|
*
|
|
@@ -1479,6 +1514,8 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
1479
1514
|
private readonly waterLayout;
|
|
1480
1515
|
/** The one-pixel stand-in, kept so the water bind group can be rebuilt without one. */
|
|
1481
1516
|
private readonly blankView;
|
|
1517
|
+
/** The blank texel as a one-layer array: the stand-in every surface-texture binding takes. */
|
|
1518
|
+
private readonly blankSurfaceView;
|
|
1482
1519
|
private readonly blankSampler;
|
|
1483
1520
|
/**
|
|
1484
1521
|
* A slot per body, not one buffer rewritten before each draw.
|
|
@@ -2142,9 +2179,11 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
2142
2179
|
* anyway, because WebGL2 *cannot* and a capability one backend has and the other does not is
|
|
2143
2180
|
* the shape this repository spent a week removing.
|
|
2144
2181
|
*/
|
|
2145
|
-
createInstanced(mesh: GpuMesh, capacity: number): GpuInstancedBatch;
|
|
2146
|
-
/**
|
|
2147
|
-
private
|
|
2182
|
+
createInstanced(mesh: GpuMesh, capacity: number, options?: InstancedOptions): GpuInstancedBatch;
|
|
2183
|
+
/** The device instance culls, built on the first culling draw. See `InstanceCullPass`. */
|
|
2184
|
+
private instanceCulls;
|
|
2185
|
+
/** Counts frames, so a batch knows when its cull slots were last taken. */
|
|
2186
|
+
private cullFrame;
|
|
2148
2187
|
/** Push placement and colour. Only the live prefix; see `GpuInstancedBatch.upload`. */
|
|
2149
2188
|
uploadInstanced(batch: GpuInstancedBatch, data: MeshInstances): void;
|
|
2150
2189
|
/** Draw every live instance, opaque. */
|
|
@@ -2177,6 +2216,12 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
2177
2216
|
* **What it gives up** against `drawMesh` is skinning and morphing, refused where the variant
|
|
2178
2217
|
* is built, and a per-instance opacity: `opacity` here dims the whole batch.
|
|
2179
2218
|
*/
|
|
2219
|
+
/**
|
|
2220
|
+
* The next of a batch's cull slots this frame, with its cull queued against the current view; null
|
|
2221
|
+
* when the batch has drawn from `MAX_CULL_SLOTS` views already or the frame's job ring is full,
|
|
2222
|
+
* and the draw then takes every instance.
|
|
2223
|
+
*/
|
|
2224
|
+
private takeCullSlot;
|
|
2180
2225
|
private submitInstanced;
|
|
2181
2226
|
/** Upload a base mesh and size its per-instance buffers. See `createGpuScatter`. */
|
|
2182
2227
|
createScatter(base: MeshData, data: InstanceData): GpuScatter;
|
|
@@ -2541,6 +2586,8 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
2541
2586
|
* called whenever any of them is replaced.
|
|
2542
2587
|
*/
|
|
2543
2588
|
private rebuildReconGroups;
|
|
2589
|
+
/** This frame's jitter and temporal frame, decided where its scene camera is bound. See `bindMeshPass`. */
|
|
2590
|
+
private jitterFrame;
|
|
2544
2591
|
/**
|
|
2545
2592
|
* Whether a blended draw recorded now lands after the upscale. See `lateRouting.ts`.
|
|
2546
2593
|
*
|
|
@@ -3056,6 +3103,8 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
3056
3103
|
* declares nothing behaves exactly as it did before. Read it beside `visible`, which answers the
|
|
3057
3104
|
* other half of the same question.
|
|
3058
3105
|
*/
|
|
3106
|
+
/** Whether a world-space box is wholly behind the declared occluders. See `Renderer.occludedBox`. */
|
|
3107
|
+
occludedBox(min: ArrayLike<number>, max: ArrayLike<number>): boolean;
|
|
3059
3108
|
occluded(bounds: Bounds, model: ReadonlyMat4): boolean;
|
|
3060
3109
|
private readonly passes;
|
|
3061
3110
|
/** Each registered pass's declared reads, as a mask, resolved once at registration. */
|
|
@@ -3240,6 +3289,13 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
3240
3289
|
beginInset(rect: InsetRect, clearColor: Vec3 | null): number;
|
|
3241
3290
|
/** Give the whole canvas back. Safe to call without a matching `beginInset`. */
|
|
3242
3291
|
endInset(): void;
|
|
3292
|
+
/**
|
|
3293
|
+
* The size of the attachment the open pass draws into: the swap image — the drawing buffer —
|
|
3294
|
+
* in the overlay after the present, the scene's render size in the frame's own pass. A tuple
|
|
3295
|
+
* held once rather than a new array a call.
|
|
3296
|
+
*/
|
|
3297
|
+
private passSize;
|
|
3298
|
+
private readonly passSizeOut;
|
|
3243
3299
|
/**
|
|
3244
3300
|
* Copy a rectangle of the frame into a 2D canvas, pixel for pixel.
|
|
3245
3301
|
*
|
|
@@ -3476,8 +3532,12 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
3476
3532
|
private probeView;
|
|
3477
3533
|
private readonly probeSize;
|
|
3478
3534
|
private readonly probeMipLayout;
|
|
3479
|
-
/** The
|
|
3480
|
-
private
|
|
3535
|
+
/** The fixture atlas — cookies over profiles — built on first use. See `fixtureAtlas.ts`. */
|
|
3536
|
+
private fixtureTexture;
|
|
3537
|
+
private fixtureView;
|
|
3538
|
+
/** The profiles as packed and the cookie images, kept so either can rebuild the atlas. */
|
|
3539
|
+
private iesAtlas;
|
|
3540
|
+
private cookieImages;
|
|
3481
3541
|
/** The scene's DriftLight field, and its two volumes once it is whole. See `createLightField`. */
|
|
3482
3542
|
private lightField;
|
|
3483
3543
|
private driftIndex;
|
|
@@ -3491,10 +3551,7 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
3491
3551
|
/** The frame's exact lights packed for the traced bake. See `gi/bounceLights.ts`. */
|
|
3492
3552
|
private readonly bounceLights;
|
|
3493
3553
|
private readonly bakeLamps;
|
|
3494
|
-
|
|
3495
|
-
private cookieTexture;
|
|
3496
|
-
private cookieView;
|
|
3497
|
-
/** Tiles in the cookie atlas. 0 is the white placeholder and the whole off path. */
|
|
3554
|
+
/** Cookie tiles in the atlas. 0 is none, and the whole off path. */
|
|
3498
3555
|
private cookieTiles;
|
|
3499
3556
|
/** Rows in that atlas. One until a consumer loads a profile, which is the row of ones. */
|
|
3500
3557
|
private iesRows;
|
|
@@ -3644,11 +3701,30 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
3644
3701
|
* call a tile fills the row without a canvas in between.
|
|
3645
3702
|
*/
|
|
3646
3703
|
setSpotCookies(images: readonly TexImageSource[]): void;
|
|
3704
|
+
/** Let the atlas go, to be built again from what is in hand the next time it is bound. */
|
|
3705
|
+
private forgetFixtureAtlas;
|
|
3706
|
+
/**
|
|
3707
|
+
* The fixture atlas's view, built from the profiles and cookies in hand if it is not already: the
|
|
3708
|
+
* profiles' rows at the bottom, the cookies' tiles on top. See `renderer.ts` and `fixtureAtlas.ts`.
|
|
3709
|
+
*
|
|
3710
|
+
* **`rgba16float`, not `rgba32float`**: a 32-bit float texture is not filterable in core WebGPU,
|
|
3711
|
+
* and binding one to a filtering sampler takes the whole bind group with it. Both tables want
|
|
3712
|
+
* linear filtering. `RENDER_ATTACHMENT` because `copyExternalImageToTexture` writes through one.
|
|
3713
|
+
*/
|
|
3714
|
+
private fixtureAtlasView;
|
|
3647
3715
|
/**
|
|
3648
3716
|
* Sum a scene's many fixed lights into a DriftLight field. The same contract as
|
|
3649
3717
|
* `Renderer.createLightField`; see `driftLight/lightField.ts`.
|
|
3650
3718
|
*/
|
|
3651
3719
|
createLightField(lights: readonly LightFieldSource[], options?: Omit<LightFieldOptions, 'falloff'>): LightField;
|
|
3720
|
+
/**
|
|
3721
|
+
* Hand a world's DriftLight volume to the renderer: every fixed light of a city, summed offline by
|
|
3722
|
+
* `bakeDenseField`, standing in past the frame's exact choice. Replaces any field made before, of
|
|
3723
|
+
* either kind; the scene calls `field.follow(buffer.complete, ...)` each frame as it would for
|
|
3724
|
+
* `createLightField`, and marks the lights the volume summed `inLightField` so none is counted
|
|
3725
|
+
* twice. See `driftLight/worldLightField.ts`.
|
|
3726
|
+
*/
|
|
3727
|
+
createWorldLightField(volume: DenseLightVolume, options?: WorldLightFieldOptions): WorldLightField;
|
|
3652
3728
|
/** Let go of the field and its volumes; the scene's lights are all exact again. */
|
|
3653
3729
|
disposeLightField(): void;
|
|
3654
3730
|
private forgetLightFieldVolumes;
|
|
@@ -3694,6 +3770,20 @@ export declare class WebGPURenderer implements RendererApi {
|
|
|
3694
3770
|
*/
|
|
3695
3771
|
private buildMediumBindGroup;
|
|
3696
3772
|
private ensureComposite;
|
|
3773
|
+
/**
|
|
3774
|
+
* One group per source the bloom chain reads, in the order `runBloom` indexes them: the picture
|
|
3775
|
+
* first, then every level. The prefilter reads the picture; the downsample into level `i` reads
|
|
3776
|
+
* level `i - 1`, which is group `i`; the upsample into level `i - 1` reads level `i`, which is
|
|
3777
|
+
* group `i + 1`.
|
|
3778
|
+
*
|
|
3779
|
+
* **While reconstructing the picture is the resolved one**, which `ensureReconstruction` makes
|
|
3780
|
+
* after this runs and rebuilds these over. The scene target is the jittered render then: a bright
|
|
3781
|
+
* thing smaller than a render texel is caught in some phases and missed in others, and its halo,
|
|
3782
|
+
* wide and over everything round it, flashed with it — a night street's panels breathing a few
|
|
3783
|
+
* levels of luma frame to frame. Built at the drawing buffer's size, which `ensureComposite`
|
|
3784
|
+
* already sized the pyramid for.
|
|
3785
|
+
*/
|
|
3786
|
+
private rebuildBloomGroups;
|
|
3697
3787
|
/**
|
|
3698
3788
|
* Every bloom stage's uniform block, written once per size rather than once per frame.
|
|
3699
3789
|
*
|