@forgeax/engine-render 0.1.32 → 0.1.33
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/README.md +379 -33
- package/dist/assembly/analytic-fog-registration.d.ts +3 -0
- package/dist/assembly/analytic-fog-registration.d.ts.map +1 -0
- package/dist/assembly/fxaa-registration.d.ts +4 -0
- package/dist/assembly/fxaa-registration.d.ts.map +1 -0
- package/dist/assembly/lod-observation.d.ts +4 -0
- package/dist/assembly/lod-observation.d.ts.map +1 -0
- package/dist/assembly/motion-blur-registration.d.ts +3 -0
- package/dist/assembly/motion-blur-registration.d.ts.map +1 -0
- package/dist/assembly/renderer-facade.d.ts.map +1 -1
- package/dist/assembly/temporal-post-process-prewarm.d.ts +13 -0
- package/dist/assembly/temporal-post-process-prewarm.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready-contract.d.ts +4 -3
- package/dist/assembly/webgpu-ready-contract.d.ts.map +1 -1
- package/dist/assembly/webgpu-ready.d.ts +1 -1
- package/dist/assembly/webgpu-ready.d.ts.map +1 -1
- package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
- package/dist/bloom-admission.d.ts +13 -0
- package/dist/bloom-admission.d.ts.map +1 -0
- package/dist/{chunk-DRR7D3KX.mjs → chunk-3RTCJTH4.mjs} +12 -9
- package/dist/chunk-3RTCJTH4.mjs.map +1 -0
- package/dist/{chunk-S665NJNF.mjs → chunk-LEAXOMYJ.mjs} +3 -3
- package/dist/{chunk-S665NJNF.mjs.map → chunk-LEAXOMYJ.mjs.map} +1 -1
- package/dist/{chunk-6TFBXLRJ.mjs → chunk-NB2S7ZRX.mjs} +155 -11
- package/dist/chunk-NB2S7ZRX.mjs.map +1 -0
- package/dist/{chunk-LULCA3OF.mjs → chunk-NNQL7CB3.mjs} +4 -4
- package/dist/{chunk-LULCA3OF.mjs.map → chunk-NNQL7CB3.mjs.map} +1 -1
- package/dist/{chunk-4NNZQCL3.mjs → chunk-OO3DRYK7.mjs} +66 -200
- package/dist/chunk-OO3DRYK7.mjs.map +1 -0
- package/dist/{chunk-GWCEMDVR.mjs → chunk-PLAXOOX5.mjs} +232 -7
- package/dist/chunk-PLAXOOX5.mjs.map +1 -0
- package/dist/{chunk-JRIPCMYC.mjs → chunk-VOZWDM3L.mjs} +283 -193
- package/dist/chunk-VOZWDM3L.mjs.map +1 -0
- package/dist/{chunk-JCIRYQ4V.mjs → chunk-ZDQWGQW7.mjs} +10 -4
- package/dist/chunk-ZDQWGQW7.mjs.map +1 -0
- package/dist/components/atmosphere.d.ts +2 -0
- package/dist/components/atmosphere.d.ts.map +1 -1
- package/dist/components/camera.d.ts +20 -4
- package/dist/components/camera.d.ts.map +1 -1
- package/dist/components/mesh-filter.d.ts +6 -5
- package/dist/components/mesh-filter.d.ts.map +1 -1
- package/dist/components/motion-blur.d.ts +1 -0
- package/dist/components/motion-blur.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +2865 -526
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/gpu-residency.d.ts +6 -0
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/environment/analytic-fog.d.ts +6 -0
- package/dist/environment/analytic-fog.d.ts.map +1 -0
- package/dist/errors/render.d.ts +6 -2
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/camera.d.ts.map +1 -1
- package/dist/extract/contracts.d.ts +7 -0
- package/dist/extract/contracts.d.ts.map +1 -1
- package/dist/extract/environment.d.ts +2 -0
- package/dist/extract/environment.d.ts.map +1 -1
- package/dist/features/error-reporting.d.ts +13 -0
- package/dist/features/error-reporting.d.ts.map +1 -0
- package/dist/features/host.d.ts +5 -0
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-feature.d.ts +20 -2
- package/dist/features/motion-blur/motion-blur-feature.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-params.d.ts +21 -0
- package/dist/features/motion-blur/motion-blur-params.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-runtime.d.ts +54 -0
- package/dist/features/motion-blur/motion-blur-runtime.d.ts.map +1 -0
- package/dist/features/plan.d.ts +7 -4
- package/dist/features/plan.d.ts.map +1 -1
- package/dist/features/prepared-gpu-work.d.ts +9 -5
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/render-graph-compute.d.ts.map +1 -1
- package/dist/features/render-graph-contribution.d.ts.map +1 -1
- package/dist/gpu-driven/material-artifacts.d.ts.map +1 -1
- package/dist/gpu-driven/prepared-draw.d.ts +7 -0
- package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +3 -1
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/view-gpu.d.ts +9 -0
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +6 -1
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/inspection-types.d.ts +43 -2
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/instances.d.ts +8 -1
- package/dist/instances.d.ts.map +1 -1
- package/dist/internal.mjs +6 -6
- package/dist/pipeline/standard-post.d.ts +28 -19
- package/dist/pipeline/standard-post.d.ts.map +1 -1
- package/dist/pipeline-spec.d.ts +2 -2
- package/dist/record/frame-snapshot.d.ts +3 -0
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame-targets.d.ts.map +1 -1
- package/dist/record/frame.d.ts +5 -2
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +6 -5
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +12 -28
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +5 -3
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +1 -1
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/recovery/render-system-candidate.d.ts.map +1 -1
- package/dist/render-contract.d.ts +24 -4
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +3 -1
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract-tail.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +8 -1
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +7 -1
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +2 -0
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/temporal/frame-coordinator.d.ts.map +1 -1
- package/dist/temporal/frame.d.ts +7 -0
- package/dist/temporal/frame.d.ts.map +1 -1
- package/dist/temporal/index.mjs +5 -5
- package/dist/temporal/view.d.ts +6 -1
- package/dist/temporal/view.d.ts.map +1 -1
- package/dist/typed-render-graph-primitives.d.ts +10 -7
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/volume/component.d.ts +0 -1
- package/dist/volume/component.d.ts.map +1 -1
- package/dist/volume/passes.d.ts.map +1 -1
- package/dist/volume/temporal.d.ts +3 -1
- package/dist/volume/temporal.d.ts.map +1 -1
- package/package.json +21 -21
- package/src/__tests__/analytic-fog-graph.unit.test.ts +199 -0
- package/src/__tests__/analytic-fog-optics.unit.test.ts +38 -0
- package/src/__tests__/bloom-exact-zero.unit.test.ts +112 -18
- package/src/__tests__/bloom-lifecycle.integration.test.ts +17 -4
- package/src/__tests__/dynamic-resolution-plugin.integration.test.ts +20 -0
- package/src/__tests__/environment-fog-lanes.integration.test.ts +14 -0
- package/src/__tests__/environment-selection.unit.test.ts +12 -0
- package/src/__tests__/factory-contract.integration.test.ts +331 -68
- package/src/__tests__/frame-camera-selection.unit.test.ts +39 -1
- package/src/__tests__/frame-plan-contract.unit.test.ts +2 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +2 -1
- package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +1 -1
- package/src/__tests__/gpu-driven-shadow-views.integration.test.ts +1 -1
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +11 -0
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +12 -0
- package/src/__tests__/gpu-scene.unit.test.ts +91 -0
- package/src/__tests__/instances-store.unit.test.ts +75 -0
- package/src/__tests__/mesh-submission-lifetime.unit.test.ts +31 -0
- package/src/__tests__/motion-blur-compute.dawn.test.ts +583 -0
- package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +21 -0
- package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +86 -0
- package/src/__tests__/public-surface.test-d.ts +8 -0
- package/src/__tests__/render-error-code-owner.test-d.ts +2 -0
- package/src/__tests__/render-feature-error-reporting.unit.test.ts +24 -0
- package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +23 -0
- package/src/__tests__/render-scene-temporal-retry.unit.test.ts +31 -0
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +7 -1
- package/src/__tests__/shader-manifest-fixture.ts +4 -4
- package/src/__tests__/skinned-shadow-caster.test.ts +2 -0
- package/src/__tests__/standard-lighting-write.unit.test.ts +2 -1
- package/src/__tests__/standard-pipeline.dawn.test.ts +1 -1
- package/src/__tests__/standard-pipeline.integration.test.ts +18 -8
- package/src/__tests__/temporal-reset-matrix.unit.test.ts +10 -0
- package/src/__tests__/temporal-view.unit.test.ts +2 -1
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +20 -4
- package/src/__tests__/volume-optics-oracle.unit.test.ts +3 -1
- package/src/__tests__/volumetric-fog-budget-recovery.integration.test.ts +177 -13
- package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +447 -61
- package/src/__tests__/volumetric-fog-temporal.unit.test.ts +27 -0
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +19 -3
- package/src/assembly/analytic-fog-registration.ts +14 -0
- package/src/assembly/fxaa-registration.ts +17 -0
- package/src/assembly/lod-observation.ts +12 -0
- package/src/assembly/motion-blur-registration.ts +17 -0
- package/src/assembly/renderer-facade.ts +2 -0
- package/src/assembly/temporal-post-process-prewarm.ts +40 -0
- package/src/assembly/webgpu-ready-contract.ts +8 -3
- package/src/assembly/webgpu-ready.ts +181 -245
- package/src/assembly/webgpu-renderer.ts +16 -31
- package/src/bloom-admission.ts +21 -0
- package/src/components/__tests__/motion-blur.unit.test.ts +1 -0
- package/src/components/atmosphere.ts +4 -0
- package/src/components/camera.ts +66 -10
- package/src/components/mesh-filter.ts +11 -9
- package/src/components/motion-blur.ts +1 -0
- package/src/device/gpu-residency.ts +56 -12
- package/src/environment/analytic-fog.ts +44 -0
- package/src/environment/background.ts +2 -2
- package/src/errors/render.ts +14 -1
- package/src/extract/camera.ts +20 -7
- package/src/extract/contracts.ts +7 -0
- package/src/extract/environment.ts +4 -0
- package/src/features/error-reporting.ts +78 -0
- package/src/features/host.ts +25 -12
- package/src/features/motion-blur/__tests__/motion-blur-feature.unit.test.ts +111 -1
- package/src/features/motion-blur/__tests__/motion-blur-params.unit.test.ts +58 -3
- package/src/features/motion-blur/motion-blur-feature.ts +1519 -15
- package/src/features/motion-blur/motion-blur-params.ts +70 -2
- package/src/features/motion-blur/motion-blur-runtime.ts +176 -0
- package/src/features/plan.ts +25 -8
- package/src/features/prepared-gpu-work.ts +86 -35
- package/src/features/render-graph-compute.ts +13 -5
- package/src/features/render-graph-contribution.ts +2 -0
- package/src/gpu-driven/material-artifacts.ts +2 -7
- package/src/gpu-driven/prepared-draw.ts +15 -10
- package/src/gpu-driven/production-raster.ts +83 -7
- package/src/gpu-driven/view-gpu.ts +17 -0
- package/src/gpu-scene.ts +188 -21
- package/src/index.ts +32 -0
- package/src/inspection-types.ts +60 -2
- package/src/instances.ts +80 -1
- package/src/pipeline/standard-post.ts +307 -78
- package/src/pipeline-spec.ts +5 -5
- package/src/points-lines/__tests__/view-ubo.unit.test.ts +2 -1
- package/src/record/__tests__/temporal-payload.unit.test.ts +2 -1
- package/src/record/frame-snapshot.ts +5 -1
- package/src/record/frame-targets.ts +10 -6
- package/src/record/frame.ts +163 -22
- package/src/record/main-pass-geometry.ts +30 -1
- package/src/record/main-pass-sprite-draws.ts +6 -1
- package/src/record/mesh-ssbo.ts +43 -6
- package/src/record/render-context.ts +12 -28
- package/src/record/shadow-pass.ts +6 -1
- package/src/record/skybox-post-pass.ts +122 -196
- package/src/record/typed-frame-graph.ts +153 -9
- package/src/recovery/render-system-candidate.ts +22 -10
- package/src/render-contract.ts +23 -4
- package/src/render-pipeline.ts +6 -1
- package/src/render-system-extract-tail.ts +16 -0
- package/src/render-system-extract.ts +45 -13
- package/src/render-system.ts +255 -120
- package/src/scene/render-scene.ts +85 -4
- package/src/temporal/__tests__/temporal-frame-transaction.unit.test.ts +36 -0
- package/src/temporal/frame-coordinator.ts +8 -1
- package/src/temporal/frame.ts +20 -0
- package/src/temporal/view.ts +13 -2
- package/src/typed-render-graph-primitives.ts +121 -48
- package/src/volume/component.ts +0 -1
- package/src/volume/passes.ts +8 -4
- package/src/volume/resources.ts +1 -1
- package/src/volume/temporal.ts +11 -0
- package/dist/chunk-4NNZQCL3.mjs.map +0 -1
- package/dist/chunk-6TFBXLRJ.mjs.map +0 -1
- package/dist/chunk-DRR7D3KX.mjs.map +0 -1
- package/dist/chunk-GWCEMDVR.mjs.map +0 -1
- package/dist/chunk-JCIRYQ4V.mjs.map +0 -1
- package/dist/chunk-JRIPCMYC.mjs.map +0 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { TRANSPARENT_SORT_MODE_LAYER_Z, TRANSPARENT_SORT_MODE_LAYER_Y } from './chunk-RXZ3RGOU.mjs';
|
|
2
|
-
import { DEFAULT_CLUSTER_GRID, DEFAULT_STANDARD_PROFILE, createIblKernelCache, MAX_LIGHTS, CLUSTER_GRID_STRIDE_U32, LIGHT_INDEX_LIST_CAPACITY, createStandardClusterLayout } from './chunk-
|
|
2
|
+
import { DEFAULT_CLUSTER_GRID, DEFAULT_STANDARD_PROFILE, createIblKernelCache, MAX_LIGHTS, CLUSTER_GRID_STRIDE_U32, LIGHT_INDEX_LIST_CAPACITY, createStandardClusterLayout } from './chunk-LEAXOMYJ.mjs';
|
|
3
3
|
import { SPRITE_PREMULTIPLIED_ALPHA_BLEND } from './chunk-BLXGONR2.mjs';
|
|
4
|
-
import { GPU_SHADER_STAGE_COMPUTE, GPU_BUFFER_USAGE_STORAGE, GPU_BUFFER_USAGE_COPY_DST, GPU_BUFFER_USAGE_UNIFORM, createHdrpBindGroupLayoutDescriptor, COOKIE_MATRIX_BYTES, IES_SLICE_WIDTH, IES_SLICE_HEIGHT, COOKIE_SLICE_SIZE, GPU_SHADER_STAGE_VERTEX, GPU_SHADER_STAGE_FRAGMENT, GPU_BUFFER_USAGE_INDEX, GPU_BUFFER_USAGE_VERTEX, isStandardPbrMaterialShader, GPU_BUFFER_USAGE_MAP_READ, pbrSkinMeshDynamicOffsets, instanceCollectionCacheKey, worldEntityKey, gpuDrivenShadowDrawKey, SHADOW_CASTER_SHADER_ID, shadowCasterVariantSet, buildPbrMaterialUserRegionEntries, buildBindGroupLayoutDescriptor, GPU_BUFFER_USAGE_COPY_SRC, GPU_BUFFER_USAGE_INDIRECT, EXTENDED_LIGHTING_REQUIRED_SAMPLED_TEXTURES, gpuDrivenSourceDrawItemIndex, matchPass, createPbrSkinMeshBindGroupEntries, physicalTextureFields, isCanonicalStandardPbrMaterialShader, getOpaqueResourceIdentity, resolveRenderTargetMaterialSource, SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET, isStandardPbrSkinMaterialShader, SKIN_MATERIAL_SHADER_ID, PROBE_BLEND_RECORD_BYTE_SIZE, gpuDrivenDrawKey, probeBlendRecordOffset, PROBE_BLEND_RECORD_STRIDE, materialBindGroupLayoutIdentity } from './chunk-
|
|
5
|
-
import { GPU_TEXTURE_USAGE_RENDER_ATTACHMENT, GPU_TEXTURE_USAGE_COPY_SRC, VertexColorVariantConflictError, EquirectProjectionFailedError, SHADOW_ATLAS_DEFAULT_LAYERS, SHADOW_ATLAS_DEFAULT_FACE_SIZE, ShadowAtlas, PointShadowAtlasUninitializedError, PointShadowAtlasBoundsViolationError, StandardClusterTransportUnavailableError, GPU_TEXTURE_USAGE_RENDER_ATTACHMENT_AND_TEXTURE_BINDING, GPU_TEXTURE_USAGE_COPY_DST, GPU_TEXTURE_USAGE_TEXTURE_BINDING, createVisibilityBudget, instanceUploadRangesForResident, STANDARD_OUTPUT_TRANSFORM_FEATURE_ID, StandardLightBudgetExceededError, RendererOperationError, VideoUploadUnsupportedError, StandardClusterIndexOverflowError, FXAA_POST_PROCESS_ID } from './chunk-
|
|
4
|
+
import { GPU_SHADER_STAGE_COMPUTE, GPU_BUFFER_USAGE_STORAGE, GPU_BUFFER_USAGE_COPY_DST, GPU_BUFFER_USAGE_UNIFORM, createHdrpBindGroupLayoutDescriptor, COOKIE_MATRIX_BYTES, IES_SLICE_WIDTH, IES_SLICE_HEIGHT, COOKIE_SLICE_SIZE, GPU_SHADER_STAGE_VERTEX, GPU_SHADER_STAGE_FRAGMENT, GPU_BUFFER_USAGE_INDEX, GPU_BUFFER_USAGE_VERTEX, isStandardPbrMaterialShader, GPU_BUFFER_USAGE_MAP_READ, pbrSkinMeshDynamicOffsets, instanceCollectionCacheKey, worldEntityKey, gpuDrivenShadowDrawKey, SHADOW_CASTER_SHADER_ID, shadowCasterVariantSet, buildPbrMaterialUserRegionEntries, buildBindGroupLayoutDescriptor, GPU_BUFFER_USAGE_COPY_SRC, GPU_BUFFER_USAGE_INDIRECT, EXTENDED_LIGHTING_REQUIRED_SAMPLED_TEXTURES, gpuDrivenSourceDrawItemIndex, matchPass, createPbrSkinMeshBindGroupEntries, physicalTextureFields, isCanonicalStandardPbrMaterialShader, getOpaqueResourceIdentity, resolveRenderTargetMaterialSource, SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET, isStandardPbrSkinMaterialShader, SKIN_MATERIAL_SHADER_ID, PROBE_BLEND_RECORD_BYTE_SIZE, gpuDrivenDrawKey, probeBlendRecordOffset, PROBE_BLEND_RECORD_STRIDE, materialBindGroupLayoutIdentity } from './chunk-3RTCJTH4.mjs';
|
|
5
|
+
import { GPU_TEXTURE_USAGE_RENDER_ATTACHMENT, GPU_TEXTURE_USAGE_COPY_SRC, VertexColorVariantConflictError, EquirectProjectionFailedError, SHADOW_ATLAS_DEFAULT_LAYERS, SHADOW_ATLAS_DEFAULT_FACE_SIZE, ShadowAtlas, PointShadowAtlasUninitializedError, PointShadowAtlasBoundsViolationError, StandardClusterTransportUnavailableError, GPU_TEXTURE_USAGE_RENDER_ATTACHMENT_AND_TEXTURE_BINDING, GPU_TEXTURE_USAGE_COPY_DST, GPU_TEXTURE_USAGE_TEXTURE_BINDING, createVisibilityBudget, instanceUploadRangesForResident, STANDARD_OUTPUT_TRANSFORM_FEATURE_ID, StandardLightBudgetExceededError, RendererOperationError, VideoUploadUnsupportedError, StandardClusterIndexOverflowError, FXAA_POST_PROCESS_ID } from './chunk-NB2S7ZRX.mjs';
|
|
6
6
|
import { derive, ok, err as err$1, toShared, ASSET_ERROR_HINTS, deriveTextureLayout, handleSlot, resolveMaterialTextureCoordinates, KNOWN_PASS_KINDS } from '@forgeax/engine-types';
|
|
7
|
+
import { RenderGraphError } from '@forgeax/engine-render-graph';
|
|
7
8
|
import { ok as ok$1, err, RhiError } from '@forgeax/engine-rhi';
|
|
8
9
|
import { mat3, vec3, mat4 } from '@forgeax/engine-math';
|
|
9
10
|
import { deriveVertexLayoutProjection, DEFAULT_VERTEX_ATTRIBUTE_MAP, deriveVertexBufferLayout, deriveVertexBufferLayoutFromProjection } from '@forgeax/engine-geometry';
|
|
@@ -11,7 +12,6 @@ import { resolveAssetHandle } from '@forgeax/engine-assets-runtime';
|
|
|
11
12
|
import { probeVideoHighPerfUpload, VIDEO_ELEMENT_PROVIDER_KEY } from '@forgeax/engine-graphics-extras';
|
|
12
13
|
import { DEFAULT_STANDARD_PBR_PARAM_SCHEMA, STANDARD_PIPELINE_PARAM_SCHEMA, GPU_DRIVEN_MATERIAL_ROW_BYTES, findVariantByKey, DEFAULT_MSDF_TEXT_PARAM_SCHEMA, DEFAULT_SPRITE_PARAM_SCHEMA, DEFAULT_UNLIT_PARAM_SCHEMA, STANDARD_PHYSICAL_TEXTURE_FIELDS, STANDARD_TEXTURE_MASK_OVERRIDE } from '@forgeax/engine-shader';
|
|
13
14
|
import { isCompressedFormat, bytesPerRow, blockParamsForFormat } from '@forgeax/engine-codec';
|
|
14
|
-
import { RenderGraphError } from '@forgeax/engine-render-graph';
|
|
15
15
|
|
|
16
16
|
// src/pipeline/render-extent.ts
|
|
17
17
|
function renderExtentSize(extent, domain) {
|
|
@@ -449,7 +449,7 @@ var passKindPolicyTable = {
|
|
|
449
449
|
},
|
|
450
450
|
defaultDepthOps: void 0
|
|
451
451
|
},
|
|
452
|
-
"bloom-
|
|
452
|
+
"bloom-downsample": {
|
|
453
453
|
shape: "color-only",
|
|
454
454
|
defaultColorOps: {
|
|
455
455
|
loadOp: "clear",
|
|
@@ -458,7 +458,7 @@ var passKindPolicyTable = {
|
|
|
458
458
|
},
|
|
459
459
|
defaultDepthOps: void 0
|
|
460
460
|
},
|
|
461
|
-
"bloom-
|
|
461
|
+
"bloom-upsample": {
|
|
462
462
|
shape: "color-only",
|
|
463
463
|
defaultColorOps: {
|
|
464
464
|
loadOp: "clear",
|
|
@@ -780,7 +780,7 @@ function buildSpecConstTable(ldrViewFormat) {
|
|
|
780
780
|
// has sampleCount=4. Both use empty vertexLayout (fullscreen triangle, no
|
|
781
781
|
// attributes) and cullMode='none' (forward cull for fullscreen-quad passthrough).
|
|
782
782
|
//
|
|
783
|
-
// Shadow-probe / fxaa /
|
|
783
|
+
// Shadow-probe / fxaa / Bloom 10-pass / SSAO 2-stage are lazy-build — not in
|
|
784
784
|
// SPEC_CONST_TABLE (R-D4 decision: only entries that are always-present on
|
|
785
785
|
// every boot).
|
|
786
786
|
// tonemap LDR S1 (writes to runtime-resolved swap-chain LDR view format)
|
|
@@ -853,16 +853,34 @@ var MESH_UBO_FULL_ARRAY_BYTES = 112 * 128;
|
|
|
853
853
|
var INSTANCE_UBO_FULL_ARRAY_BYTES = 80 * 128;
|
|
854
854
|
var MAX_UNIFORM_INSTANCES = 128;
|
|
855
855
|
var INSTANCE_STORAGE_STRIDE_FLOATS = 32;
|
|
856
|
-
function
|
|
856
|
+
function hasStableGenerationColumn(generations, count) {
|
|
857
|
+
if (generations === void 0 || generations.length !== count) return false;
|
|
858
|
+
const seen = /* @__PURE__ */ new Set();
|
|
859
|
+
for (const generation of generations) {
|
|
860
|
+
if (generation === 0 || seen.has(generation)) return false;
|
|
861
|
+
seen.add(generation);
|
|
862
|
+
}
|
|
863
|
+
return true;
|
|
864
|
+
}
|
|
865
|
+
function packInstanceStorageBuffer(transforms, previousTransforms = transforms, generations, previousGenerations) {
|
|
857
866
|
const count = Math.floor(transforms.length / 16);
|
|
858
867
|
const out = new Float32Array(count * INSTANCE_STORAGE_STRIDE_FLOATS);
|
|
868
|
+
const previousCount = Math.floor(previousTransforms.length / 16);
|
|
869
|
+
const generationInput = generations !== void 0 || previousGenerations !== void 0;
|
|
870
|
+
const identityProof = hasStableGenerationColumn(generations, count) && hasStableGenerationColumn(previousGenerations, previousCount);
|
|
871
|
+
const previousIndexByGeneration = identityProof ? new Map(
|
|
872
|
+
Array.from(previousGenerations ?? [], (generation, index) => [generation, index])
|
|
873
|
+
) : void 0;
|
|
859
874
|
for (let i = 0; i < count; i++) {
|
|
860
875
|
const sourceBase = i * 16;
|
|
861
876
|
const targetBase = i * INSTANCE_STORAGE_STRIDE_FLOATS;
|
|
877
|
+
const previousIndex = identityProof ? previousIndexByGeneration?.get(generations?.[i] ?? 0) : !generationInput && previousCount === count ? i : void 0;
|
|
878
|
+
const sameIdentity = previousIndex !== void 0 && previousIndex < previousCount;
|
|
879
|
+
const previousBase = (previousIndex ?? i) * 16;
|
|
862
880
|
for (let k = 0; k < 16; k++) {
|
|
863
881
|
const value = transforms[sourceBase + k] ?? 0;
|
|
864
882
|
out[targetBase + k] = value;
|
|
865
|
-
out[targetBase + 16 + k] = value;
|
|
883
|
+
out[targetBase + 16 + k] = sameIdentity ? previousTransforms[previousBase + k] ?? value : value;
|
|
866
884
|
}
|
|
867
885
|
}
|
|
868
886
|
return out;
|
|
@@ -1008,6 +1026,7 @@ function uploadMeshSsboBatch(queue, meshStorageBuffer, validatedOrdered, foldDis
|
|
|
1008
1026
|
_meshSsboScratchFloats[slot + 38] = 1;
|
|
1009
1027
|
_meshSsboScratchFloats[slot + 43] = 1;
|
|
1010
1028
|
_meshSsboScratchFloats[slot + 44] = 1;
|
|
1029
|
+
_meshSsboScratchFloats[slot + 45] = 1;
|
|
1011
1030
|
} else {
|
|
1012
1031
|
const worldFromLocal = entry.source.transform.world;
|
|
1013
1032
|
for (let k = 0; k < 16; k++) _meshSsboScratchFloats[slot + k] = worldFromLocal[k] ?? 0;
|
|
@@ -1034,6 +1053,7 @@ function uploadMeshSsboBatch(queue, meshStorageBuffer, validatedOrdered, foldDis
|
|
|
1034
1053
|
}
|
|
1035
1054
|
}
|
|
1036
1055
|
_meshSsboScratchFloats[slot + 44] = entry.source.temporal?.reactive === true || reactiveMaterial ? 1 : 0;
|
|
1056
|
+
_meshSsboScratchFloats[slot + 45] = entry.source.temporal?.motionValid === false ? 0 : 1;
|
|
1037
1057
|
}
|
|
1038
1058
|
}
|
|
1039
1059
|
if (neededBytes > 0) {
|
|
@@ -6354,7 +6374,7 @@ function recordGeometryDraws(c, pass, matchedMaterials, materialSlotIndices, sam
|
|
|
6354
6374
|
}
|
|
6355
6375
|
}
|
|
6356
6376
|
}
|
|
6357
|
-
function uploadInstanceRanges(c, inst, buffer, ranges, storageBacked, sourceOffsetInstances = 0) {
|
|
6377
|
+
function uploadInstanceRanges(c, inst, buffer, ranges, storageBacked, sourceOffsetInstances = 0, previousInst = void 0) {
|
|
6358
6378
|
const strideBytes = (storageBacked ? INSTANCE_STORAGE_STRIDE_FLOATS : 16) * Float32Array.BYTES_PER_ELEMENT;
|
|
6359
6379
|
const uploadedRanges = [];
|
|
6360
6380
|
let uploadedBytes = 0;
|
|
@@ -6366,7 +6386,20 @@ function uploadInstanceRanges(c, inst, buffer, ranges, storageBacked, sourceOffs
|
|
|
6366
6386
|
(sourceOffsetInstances + start) * 16,
|
|
6367
6387
|
(sourceOffsetInstances + end) * 16
|
|
6368
6388
|
);
|
|
6369
|
-
const
|
|
6389
|
+
const hasIdentityProof = inst.generations !== void 0 && previousInst?.generations !== void 0;
|
|
6390
|
+
const previousSource = hasIdentityProof ? previousInst?.transforms : previousInst?.transforms.subarray(
|
|
6391
|
+
(sourceOffsetInstances + start) * 16,
|
|
6392
|
+
(sourceOffsetInstances + end) * 16
|
|
6393
|
+
);
|
|
6394
|
+
const currentGenerations = inst.generations?.subarray(
|
|
6395
|
+
sourceOffsetInstances + start,
|
|
6396
|
+
sourceOffsetInstances + end
|
|
6397
|
+
);
|
|
6398
|
+
const previousGenerations = hasIdentityProof ? previousInst?.generations : previousInst?.generations?.subarray(
|
|
6399
|
+
sourceOffsetInstances + start,
|
|
6400
|
+
sourceOffsetInstances + end
|
|
6401
|
+
);
|
|
6402
|
+
const payload = storageBacked ? packInstanceStorageBuffer(source, previousSource, currentGenerations, previousGenerations) : source;
|
|
6370
6403
|
const written = c.runtime.device.queue.writeBuffer(buffer, start * strideBytes, payload);
|
|
6371
6404
|
if (!written.ok) {
|
|
6372
6405
|
c.runtime.errorRegistry.fire(written.error);
|
|
@@ -6504,7 +6537,8 @@ function resolveStorageInstanceChunks(c, entry, inst, cap, probeBuffer, probeOff
|
|
|
6504
6537
|
active.buffer.handle,
|
|
6505
6538
|
rangesToUpload,
|
|
6506
6539
|
true,
|
|
6507
|
-
start
|
|
6540
|
+
start,
|
|
6541
|
+
entry.source.temporal?.previousInstances
|
|
6508
6542
|
);
|
|
6509
6543
|
for (const range of upload.ranges) {
|
|
6510
6544
|
uploadedRanges.push({ start: range.start + start, end: range.end + start });
|
|
@@ -6661,7 +6695,8 @@ function resolveGeometryInstanceBuffer(c, entry, identityInstanceDraws, useProbe
|
|
|
6661
6695
|
active.buffer.handle,
|
|
6662
6696
|
rangesToUpload,
|
|
6663
6697
|
false,
|
|
6664
|
-
start
|
|
6698
|
+
start,
|
|
6699
|
+
entry.source.temporal?.previousInstances
|
|
6665
6700
|
);
|
|
6666
6701
|
for (const range of upload.ranges) {
|
|
6667
6702
|
uploadedRanges.push({ start: range.start + start, end: range.end + start });
|
|
@@ -6781,7 +6816,9 @@ function resolveGeometryInstanceBuffer(c, entry, identityInstanceDraws, useProbe
|
|
|
6781
6816
|
inst,
|
|
6782
6817
|
active.buffer.handle,
|
|
6783
6818
|
ranges,
|
|
6784
|
-
!uniformFallback
|
|
6819
|
+
!uniformFallback,
|
|
6820
|
+
0,
|
|
6821
|
+
entry.source.temporal?.previousInstances
|
|
6785
6822
|
);
|
|
6786
6823
|
uploadRanges = upload.ranges;
|
|
6787
6824
|
uploadedBytes = upload.bytes;
|
|
@@ -7257,7 +7294,12 @@ function recordSpriteEntityDraws(c, spritePass, matchedIndices, resolveMaterialB
|
|
|
7257
7294
|
spriteBufUsage = GPU_BUFFER_USAGE_UNIFORM | GPU_BUFFER_USAGE_COPY_DST;
|
|
7258
7295
|
}
|
|
7259
7296
|
{
|
|
7260
|
-
const instancePayload = uniformFallback ? spriteInst.transforms : packInstanceStorageBuffer(
|
|
7297
|
+
const instancePayload = uniformFallback ? spriteInst.transforms : packInstanceStorageBuffer(
|
|
7298
|
+
spriteInst.transforms,
|
|
7299
|
+
spriteEntry.source.temporal?.previousInstances?.transforms,
|
|
7300
|
+
spriteInst.generations,
|
|
7301
|
+
spriteEntry.source.temporal?.previousInstances?.generations
|
|
7302
|
+
);
|
|
7261
7303
|
const requestedBytes = instancePayload.byteLength;
|
|
7262
7304
|
const cap = runtime.device.limits.maxStorageBufferBindingSize;
|
|
7263
7305
|
if (typeof cap === "number" && requestedBytes > cap) {
|
|
@@ -8733,9 +8775,14 @@ var GpuDrivenView = class _GpuDrivenView {
|
|
|
8733
8775
|
resourceGeneration = 0;
|
|
8734
8776
|
/** The last readback copy that was actually encoded and is not consumed. */
|
|
8735
8777
|
telemetryPending;
|
|
8778
|
+
/** Receipt identity for the copy pass encoded by the current frame. */
|
|
8779
|
+
telemetrySubmit;
|
|
8736
8780
|
/** Coalesce observers while the readback buffer is map-pending. */
|
|
8737
8781
|
lodSelectionReadback;
|
|
8738
8782
|
lodSelection;
|
|
8783
|
+
setTelemetrySubmit(identity) {
|
|
8784
|
+
this.telemetrySubmit = identity;
|
|
8785
|
+
}
|
|
8739
8786
|
static create(input) {
|
|
8740
8787
|
const { device, shaderModuleFactory } = input;
|
|
8741
8788
|
const labelPrefix = input.labelPrefix ?? "gpu-driven-view";
|
|
@@ -9073,7 +9120,8 @@ var GpuDrivenView = class _GpuDrivenView {
|
|
|
9073
9120
|
})
|
|
9074
9121
|
),
|
|
9075
9122
|
geometryWork,
|
|
9076
|
-
rootGeometryWork
|
|
9123
|
+
rootGeometryWork,
|
|
9124
|
+
...copy.submit === void 0 ? {} : { submit: copy.submit }
|
|
9077
9125
|
});
|
|
9078
9126
|
this.telemetryPending = void 0;
|
|
9079
9127
|
return this.lodSelection;
|
|
@@ -9252,7 +9300,8 @@ var GpuDrivenView = class _GpuDrivenView {
|
|
|
9252
9300
|
this.telemetryPending = {
|
|
9253
9301
|
buffers,
|
|
9254
9302
|
plan: submittedPlan,
|
|
9255
|
-
resourceGeneration: graphResourceGeneration
|
|
9303
|
+
resourceGeneration: graphResourceGeneration,
|
|
9304
|
+
...this.telemetrySubmit === void 0 ? {} : { submit: this.telemetrySubmit }
|
|
9256
9305
|
};
|
|
9257
9306
|
}
|
|
9258
9307
|
}
|
|
@@ -9284,6 +9333,7 @@ var GpuDrivenView = class _GpuDrivenView {
|
|
|
9284
9333
|
this.sceneMaterial = void 0;
|
|
9285
9334
|
this.sceneCapacity = 0;
|
|
9286
9335
|
this.telemetryPending = void 0;
|
|
9336
|
+
this.telemetrySubmit = void 0;
|
|
9287
9337
|
this.lodSelectionReadback = void 0;
|
|
9288
9338
|
this.lodSelection = void 0;
|
|
9289
9339
|
this.destroyAfterSubmittedWork(buffers);
|
|
@@ -10853,7 +10903,12 @@ function recordShadowCasterDraws(c, shadowPass, shadowPipeline2, shadowMeshBindG
|
|
|
10853
10903
|
}
|
|
10854
10904
|
} else {
|
|
10855
10905
|
const bufUsage = uniformFallback ? GPU_BUFFER_USAGE_UNIFORM | GPU_BUFFER_USAGE_COPY_DST : GPU_BUFFER_USAGE_STORAGE | GPU_BUFFER_USAGE_COPY_DST;
|
|
10856
|
-
const instancePayload = uniformFallback ? shadowInst.transforms : packInstanceStorageBuffer(
|
|
10906
|
+
const instancePayload = uniformFallback ? shadowInst.transforms : packInstanceStorageBuffer(
|
|
10907
|
+
shadowInst.transforms,
|
|
10908
|
+
entry.source.temporal?.previousInstances?.transforms,
|
|
10909
|
+
shadowInst.generations,
|
|
10910
|
+
entry.source.temporal?.previousInstances?.generations
|
|
10911
|
+
);
|
|
10857
10912
|
const requestedBytes = instancePayload.byteLength;
|
|
10858
10913
|
const cap = runtime.device.limits.maxStorageBufferBindingSize;
|
|
10859
10914
|
if (!uniformFallback && typeof cap === "number" && cap > 0 && requestedBytes > cap) {
|
|
@@ -11660,6 +11715,27 @@ function recordMainPass(c, selector, options, graphPass) {
|
|
|
11660
11715
|
function encodeMainPass(c, pass, selector, options) {
|
|
11661
11716
|
return recordMainPass(c, selector, options, pass);
|
|
11662
11717
|
}
|
|
11718
|
+
|
|
11719
|
+
// src/assembly/webgpu-ready-contract.ts
|
|
11720
|
+
var VIEW_UBO_BYTES = VIEW_UNIFORM_BUFFER_SIZE;
|
|
11721
|
+
var MIPMAP_PREWARM_FORMATS = [
|
|
11722
|
+
"rgba8unorm-srgb",
|
|
11723
|
+
"rgba8unorm",
|
|
11724
|
+
"rgba16float"
|
|
11725
|
+
];
|
|
11726
|
+
var BLOOM_UNIFORM_PARAMS_STRIDE_BYTES = 256;
|
|
11727
|
+
var BLOOM_DOWNSAMPLE_PARAMS_BYTES = 5 * BLOOM_UNIFORM_PARAMS_STRIDE_BYTES;
|
|
11728
|
+
var BLOOM_UPSAMPLE_PARAMS_BYTES = 4 * BLOOM_UNIFORM_PARAMS_STRIDE_BYTES;
|
|
11729
|
+
var BLOOM_COMPOSITE_PARAMS_BYTES = 16;
|
|
11730
|
+
var HDR_COLOR_ATTACHMENT_FORMAT = "rgba16float";
|
|
11731
|
+
var DEPTH_TEXTURE_FORMAT = "depth24plus-stencil8";
|
|
11732
|
+
|
|
11733
|
+
// src/bloom-admission.ts
|
|
11734
|
+
function standardBloomAdmitted(camera) {
|
|
11735
|
+
return camera !== void 0 && camera.bloom === "on" && camera.bloomIntensity > 0 && camera.tonemap !== "none";
|
|
11736
|
+
}
|
|
11737
|
+
|
|
11738
|
+
// src/record/skybox-post-pass.ts
|
|
11663
11739
|
function recordSkyboxPass(c, graphPass) {
|
|
11664
11740
|
if (!c.skyboxActive) return;
|
|
11665
11741
|
const skyboxSnapshot = c.skybox;
|
|
@@ -11767,179 +11843,138 @@ function throwBloomRecordFailure(expected) {
|
|
|
11767
11843
|
hint: "repair the Bloom candidate resources before retrying the frame"
|
|
11768
11844
|
});
|
|
11769
11845
|
}
|
|
11770
|
-
function
|
|
11771
|
-
|
|
11772
|
-
const pp = _c.bloomResources;
|
|
11773
|
-
if (camera.bloom !== "on" || !tonemapActive) return;
|
|
11774
|
-
if (pp === null || pp === void 0) {
|
|
11775
|
-
throwBloomRecordFailure("Bloom persistent resources are ready before bright-pass encoding");
|
|
11776
|
-
}
|
|
11777
|
-
if (pp.bloomBrightPipeline === null || pp.bloomBrightBindGroupLayout === null || pp.bloomSampler === null || pp.bloomBrightParamsBuffer === null) {
|
|
11778
|
-
throwBloomRecordFailure("Bloom bright pass has pipeline, layout, sampler, and params buffer");
|
|
11779
|
-
}
|
|
11780
|
-
const bloomBrightView = resolve?.resolve("bloomBright");
|
|
11781
|
-
const hdrColorView = resolve?.resolve("hdrColor");
|
|
11782
|
-
if (!bloomBrightView || !hdrColorView) {
|
|
11783
|
-
throwBloomRecordFailure("Bloom bright pass resolves its source and target views");
|
|
11784
|
-
}
|
|
11785
|
-
const bglBright = pp.bloomBrightBindGroupLayout;
|
|
11786
|
-
const bloomSampler = pp.bloomSampler;
|
|
11787
|
-
const paramsBuffer = pp.bloomBrightParamsBuffer;
|
|
11788
|
-
const brightParams = new Float32Array(4);
|
|
11789
|
-
brightParams[0] = camera.bloomThreshold;
|
|
11790
|
-
brightParams[1] = 0;
|
|
11791
|
-
brightParams[2] = 0;
|
|
11792
|
-
brightParams[3] = 0;
|
|
11793
|
-
const paramsWrite = runtime.device.queue.writeBuffer(paramsBuffer, 0, brightParams);
|
|
11794
|
-
if (!paramsWrite.ok) throw paramsWrite.error;
|
|
11795
|
-
stageBloomUpload(_c);
|
|
11796
|
-
const bindGroup = getOrCreateFromChain(
|
|
11797
|
-
frameState.postProcessBgCache,
|
|
11798
|
-
[hdrColorView],
|
|
11799
|
-
"bloom-bright",
|
|
11800
|
-
() => {
|
|
11801
|
-
const bgRes = runtime.device.createBindGroup({
|
|
11802
|
-
label: "bloom-bright-bg",
|
|
11803
|
-
layout: bglBright,
|
|
11804
|
-
entries: [
|
|
11805
|
-
{ binding: 0, resource: { kind: "textureView", value: hdrColorView } },
|
|
11806
|
-
{ binding: 1, resource: { kind: "sampler", value: bloomSampler } },
|
|
11807
|
-
{ binding: 2, resource: { kind: "buffer", value: { buffer: paramsBuffer } } }
|
|
11808
|
-
]
|
|
11809
|
-
});
|
|
11810
|
-
if (!bgRes.ok) throw bgRes.error;
|
|
11811
|
-
return bgRes.value;
|
|
11812
|
-
},
|
|
11813
|
-
bindGroupCounts
|
|
11814
|
-
);
|
|
11815
|
-
const pass = graphPass ?? encoder.beginRenderPass(
|
|
11816
|
-
buildBeginRenderPassDescriptor(
|
|
11817
|
-
{ depthFormat: void 0},
|
|
11818
|
-
{ colorViews: [bloomBrightView] },
|
|
11819
|
-
"bloom-bright"
|
|
11820
|
-
)
|
|
11821
|
-
);
|
|
11822
|
-
pass.setPipeline(pp.bloomBrightPipeline);
|
|
11823
|
-
pass.setBindGroup(0, bindGroup);
|
|
11824
|
-
stageBloomBindGroup(_c);
|
|
11825
|
-
pass.draw(3, 1, 0, 0);
|
|
11826
|
-
stageBloomEncode(_c);
|
|
11827
|
-
if (graphPass === void 0) pass.end();
|
|
11846
|
+
function bloomRecordActive(c) {
|
|
11847
|
+
return standardBloomAdmitted(c.camera) && c.tonemapActive;
|
|
11828
11848
|
}
|
|
11829
|
-
function
|
|
11830
|
-
const { runtime, encoder, camera,
|
|
11849
|
+
function recordBloomDownsamplePass(_c, resolve, graphPass, level = 0, destinationSize) {
|
|
11850
|
+
const { runtime, encoder, camera, frameState, bindGroupCounts } = _c;
|
|
11831
11851
|
const pp = _c.bloomResources;
|
|
11832
|
-
if (
|
|
11833
|
-
if (pp === null || pp ===
|
|
11834
|
-
throwBloomRecordFailure("Bloom
|
|
11835
|
-
}
|
|
11836
|
-
if (pp.bloomBlurHPipeline === null || pp.bloomBlurBindGroupLayout === null || pp.bloomSampler === null || pp.bloomBlurHParamsBuffer === null) {
|
|
11837
|
-
throwBloomRecordFailure("Bloom blur-H pass has pipeline, layout, sampler, and params buffer");
|
|
11852
|
+
if (!bloomRecordActive(_c)) return;
|
|
11853
|
+
if (pp === void 0 || pp === null || pp.bloomDownsamplePipeline === null || pp.bloomDownsampleBindGroupLayout === null || pp.bloomSampler === null || pp.bloomDownsampleParamsBuffer === null) {
|
|
11854
|
+
throwBloomRecordFailure("Bloom downsample resources are ready before encoding");
|
|
11838
11855
|
}
|
|
11839
|
-
const
|
|
11840
|
-
const
|
|
11841
|
-
if (!bloomBlurHView || !bloomBrightView) {
|
|
11842
|
-
throwBloomRecordFailure("Bloom blur-H pass resolves its source and target views");
|
|
11843
|
-
}
|
|
11844
|
-
const bglBlur = pp.bloomBlurBindGroupLayout;
|
|
11856
|
+
const downsamplePipeline = pp.bloomDownsamplePipeline;
|
|
11857
|
+
const downsampleLayout = pp.bloomDownsampleBindGroupLayout;
|
|
11845
11858
|
const bloomSampler = pp.bloomSampler;
|
|
11846
|
-
const
|
|
11847
|
-
const
|
|
11848
|
-
const
|
|
11849
|
-
|
|
11850
|
-
|
|
11851
|
-
|
|
11852
|
-
|
|
11853
|
-
|
|
11854
|
-
|
|
11859
|
+
const downsampleParamsBuffer = pp.bloomDownsampleParamsBuffer;
|
|
11860
|
+
const sourceName = level === 0 ? "hdrColor" : `bloomDownsample${level - 1}`;
|
|
11861
|
+
const targetName = `bloomDownsample${level}`;
|
|
11862
|
+
const sourceView = resolve?.resolve(sourceName);
|
|
11863
|
+
const targetView = resolve?.resolve(targetName);
|
|
11864
|
+
if (sourceView === void 0 || targetView === void 0) {
|
|
11865
|
+
throwBloomRecordFailure(`Bloom downsample level ${level} resolves source and target views`);
|
|
11866
|
+
}
|
|
11867
|
+
const size = destinationSize ?? {
|
|
11868
|
+
width: Math.max(1, Math.ceil(_c.targetW / 2)),
|
|
11869
|
+
height: Math.max(1, Math.ceil(_c.targetH / 2))
|
|
11870
|
+
};
|
|
11871
|
+
const params = new Float32Array([
|
|
11872
|
+
camera.bloomThreshold,
|
|
11873
|
+
camera.bloomSoftKnee,
|
|
11874
|
+
size.width,
|
|
11875
|
+
size.height,
|
|
11876
|
+
level,
|
|
11877
|
+
0,
|
|
11878
|
+
0,
|
|
11879
|
+
0
|
|
11880
|
+
]);
|
|
11881
|
+
const offset = level * BLOOM_UNIFORM_PARAMS_STRIDE_BYTES;
|
|
11882
|
+
const upload = runtime.device.queue.writeBuffer(pp.bloomDownsampleParamsBuffer, offset, params);
|
|
11883
|
+
if (!upload.ok) throw upload.error;
|
|
11855
11884
|
stageBloomUpload(_c);
|
|
11856
11885
|
const bindGroup = getOrCreateFromChain(
|
|
11857
11886
|
frameState.postProcessBgCache,
|
|
11858
|
-
[
|
|
11859
|
-
|
|
11887
|
+
[sourceView, downsampleParamsBuffer],
|
|
11888
|
+
`bloom-downsample-${level}`,
|
|
11860
11889
|
() => {
|
|
11861
|
-
const
|
|
11862
|
-
label:
|
|
11863
|
-
layout:
|
|
11890
|
+
const created = runtime.device.createBindGroup({
|
|
11891
|
+
label: `bloom-downsample-${level}-bg`,
|
|
11892
|
+
layout: downsampleLayout,
|
|
11864
11893
|
entries: [
|
|
11865
|
-
{ binding: 0, resource: { kind: "textureView", value:
|
|
11894
|
+
{ binding: 0, resource: { kind: "textureView", value: sourceView } },
|
|
11866
11895
|
{ binding: 1, resource: { kind: "sampler", value: bloomSampler } },
|
|
11867
|
-
{
|
|
11896
|
+
{
|
|
11897
|
+
binding: 2,
|
|
11898
|
+
resource: {
|
|
11899
|
+
kind: "buffer",
|
|
11900
|
+
value: { buffer: downsampleParamsBuffer, offset, size: 32 }
|
|
11901
|
+
}
|
|
11902
|
+
}
|
|
11868
11903
|
]
|
|
11869
11904
|
});
|
|
11870
|
-
if (!
|
|
11871
|
-
return
|
|
11905
|
+
if (!created.ok) throw created.error;
|
|
11906
|
+
return created.value;
|
|
11872
11907
|
},
|
|
11873
11908
|
bindGroupCounts
|
|
11874
11909
|
);
|
|
11875
11910
|
const pass = graphPass ?? encoder.beginRenderPass(
|
|
11876
11911
|
buildBeginRenderPassDescriptor(
|
|
11877
11912
|
{ depthFormat: void 0},
|
|
11878
|
-
{ colorViews: [
|
|
11879
|
-
"bloom-
|
|
11913
|
+
{ colorViews: [targetView] },
|
|
11914
|
+
"bloom-downsample"
|
|
11880
11915
|
)
|
|
11881
11916
|
);
|
|
11882
|
-
pass.setPipeline(
|
|
11917
|
+
pass.setPipeline(downsamplePipeline);
|
|
11883
11918
|
pass.setBindGroup(0, bindGroup);
|
|
11884
11919
|
stageBloomBindGroup(_c);
|
|
11885
11920
|
pass.draw(3, 1, 0, 0);
|
|
11886
11921
|
stageBloomEncode(_c);
|
|
11887
11922
|
if (graphPass === void 0) pass.end();
|
|
11888
11923
|
}
|
|
11889
|
-
function
|
|
11890
|
-
const { runtime, encoder,
|
|
11924
|
+
function recordBloomUpsamplePass(_c, resolve, graphPass, level = 0) {
|
|
11925
|
+
const { runtime, encoder, frameState, bindGroupCounts } = _c;
|
|
11891
11926
|
const pp = _c.bloomResources;
|
|
11892
|
-
if (
|
|
11893
|
-
if (pp === null || pp ===
|
|
11894
|
-
throwBloomRecordFailure("Bloom
|
|
11895
|
-
}
|
|
11896
|
-
if (pp.bloomBlurVPipeline === null || pp.bloomBlurBindGroupLayout === null || pp.bloomSampler === null || pp.bloomBlurVParamsBuffer === null) {
|
|
11897
|
-
throwBloomRecordFailure("Bloom blur-V pass has pipeline, layout, sampler, and params buffer");
|
|
11927
|
+
if (!bloomRecordActive(_c)) return;
|
|
11928
|
+
if (pp === void 0 || pp === null || pp.bloomUpsamplePipeline === null || pp.bloomUpsampleBindGroupLayout === null || pp.bloomSampler === null || pp.bloomUpsampleParamsBuffer === null) {
|
|
11929
|
+
throwBloomRecordFailure("Bloom upsample resources are ready before encoding");
|
|
11898
11930
|
}
|
|
11899
|
-
const
|
|
11900
|
-
const
|
|
11901
|
-
if (!bloomBlurVView || !bloomBlurHView) {
|
|
11902
|
-
throwBloomRecordFailure("Bloom blur-V pass resolves its source and target views");
|
|
11903
|
-
}
|
|
11904
|
-
const bglBlur = pp.bloomBlurBindGroupLayout;
|
|
11931
|
+
const upsamplePipeline = pp.bloomUpsamplePipeline;
|
|
11932
|
+
const upsampleLayout = pp.bloomUpsampleBindGroupLayout;
|
|
11905
11933
|
const bloomSampler = pp.bloomSampler;
|
|
11906
|
-
const
|
|
11907
|
-
const
|
|
11908
|
-
const
|
|
11909
|
-
|
|
11910
|
-
|
|
11911
|
-
|
|
11912
|
-
|
|
11913
|
-
|
|
11914
|
-
|
|
11934
|
+
const upsampleParamsBuffer = pp.bloomUpsampleParamsBuffer;
|
|
11935
|
+
const currentView = resolve?.resolve(`bloomDownsample${level}`);
|
|
11936
|
+
const nextUpsampleView = resolve?.resolve(`bloomUpsample${level + 1}`);
|
|
11937
|
+
const coarseView = nextUpsampleView ?? resolve?.resolve(`bloomDownsample${level + 1}`);
|
|
11938
|
+
const targetView = resolve?.resolve(`bloomUpsample${level}`);
|
|
11939
|
+
if (currentView === void 0 || coarseView === void 0 || targetView === void 0) {
|
|
11940
|
+
throwBloomRecordFailure(`Bloom upsample level ${level} resolves adjacent pyramid views`);
|
|
11941
|
+
}
|
|
11942
|
+
const params = new Float32Array([_c.camera.bloomScatter, 0, 0, 0]);
|
|
11943
|
+
const offset = level * BLOOM_UNIFORM_PARAMS_STRIDE_BYTES;
|
|
11944
|
+
const upload = runtime.device.queue.writeBuffer(pp.bloomUpsampleParamsBuffer, offset, params);
|
|
11945
|
+
if (!upload.ok) throw upload.error;
|
|
11915
11946
|
stageBloomUpload(_c);
|
|
11916
11947
|
const bindGroup = getOrCreateFromChain(
|
|
11917
11948
|
frameState.postProcessBgCache,
|
|
11918
|
-
[
|
|
11919
|
-
|
|
11949
|
+
[currentView, coarseView, upsampleParamsBuffer],
|
|
11950
|
+
`bloom-upsample-${level}`,
|
|
11920
11951
|
() => {
|
|
11921
|
-
const
|
|
11922
|
-
label:
|
|
11923
|
-
layout:
|
|
11952
|
+
const created = runtime.device.createBindGroup({
|
|
11953
|
+
label: `bloom-upsample-${level}-bg`,
|
|
11954
|
+
layout: upsampleLayout,
|
|
11924
11955
|
entries: [
|
|
11925
|
-
{ binding: 0, resource: { kind: "textureView", value:
|
|
11926
|
-
{ binding: 1, resource: { kind: "
|
|
11927
|
-
{ binding: 2, resource: { kind: "
|
|
11956
|
+
{ binding: 0, resource: { kind: "textureView", value: currentView } },
|
|
11957
|
+
{ binding: 1, resource: { kind: "textureView", value: coarseView } },
|
|
11958
|
+
{ binding: 2, resource: { kind: "sampler", value: bloomSampler } },
|
|
11959
|
+
{
|
|
11960
|
+
binding: 3,
|
|
11961
|
+
resource: { kind: "buffer", value: { buffer: upsampleParamsBuffer, offset, size: 16 } }
|
|
11962
|
+
}
|
|
11928
11963
|
]
|
|
11929
11964
|
});
|
|
11930
|
-
if (!
|
|
11931
|
-
return
|
|
11965
|
+
if (!created.ok) throw created.error;
|
|
11966
|
+
return created.value;
|
|
11932
11967
|
},
|
|
11933
11968
|
bindGroupCounts
|
|
11934
11969
|
);
|
|
11935
11970
|
const pass = graphPass ?? encoder.beginRenderPass(
|
|
11936
11971
|
buildBeginRenderPassDescriptor(
|
|
11937
11972
|
{ depthFormat: void 0},
|
|
11938
|
-
{ colorViews: [
|
|
11939
|
-
"bloom-
|
|
11973
|
+
{ colorViews: [targetView] },
|
|
11974
|
+
"bloom-upsample"
|
|
11940
11975
|
)
|
|
11941
11976
|
);
|
|
11942
|
-
pass.setPipeline(
|
|
11977
|
+
pass.setPipeline(upsamplePipeline);
|
|
11943
11978
|
pass.setBindGroup(0, bindGroup);
|
|
11944
11979
|
stageBloomBindGroup(_c);
|
|
11945
11980
|
pass.draw(3, 1, 0, 0);
|
|
@@ -11947,9 +11982,9 @@ function recordBloomBlurVPass(_c, resolve, graphPass) {
|
|
|
11947
11982
|
if (graphPass === void 0) pass.end();
|
|
11948
11983
|
}
|
|
11949
11984
|
function recordBloomCompositePass(_c, resolve, graphPass) {
|
|
11950
|
-
const { runtime, encoder, camera,
|
|
11985
|
+
const { runtime, encoder, camera, frameState, bindGroupCounts } = _c;
|
|
11951
11986
|
const pp = _c.bloomResources;
|
|
11952
|
-
if (
|
|
11987
|
+
if (!bloomRecordActive(_c)) return;
|
|
11953
11988
|
if (pp === null || pp === void 0) {
|
|
11954
11989
|
throwBloomRecordFailure("Bloom persistent resources are ready before composite encoding");
|
|
11955
11990
|
}
|
|
@@ -11959,10 +11994,11 @@ function recordBloomCompositePass(_c, resolve, graphPass) {
|
|
|
11959
11994
|
);
|
|
11960
11995
|
}
|
|
11961
11996
|
const hdrColorView = resolve?.resolve("hdrColor");
|
|
11962
|
-
const
|
|
11997
|
+
const bloomView = resolve?.resolve("bloomUpsample0");
|
|
11998
|
+
const finestBloomView = bloomView ?? resolve?.resolve("bloomDownsample0");
|
|
11963
11999
|
const hdrCompositedView = resolve?.resolve("hdrComposited");
|
|
11964
|
-
if (!hdrColorView || !
|
|
11965
|
-
throwBloomRecordFailure("Bloom composite pass resolves
|
|
12000
|
+
if (!hdrColorView || !finestBloomView || !hdrCompositedView) {
|
|
12001
|
+
throwBloomRecordFailure("Bloom composite pass resolves scene, finest Bloom, and target views");
|
|
11966
12002
|
}
|
|
11967
12003
|
const bglComposite = pp.bloomCompositeBindGroupLayout;
|
|
11968
12004
|
const bloomSampler = pp.bloomSampler;
|
|
@@ -11977,7 +12013,7 @@ function recordBloomCompositePass(_c, resolve, graphPass) {
|
|
|
11977
12013
|
stageBloomUpload(_c);
|
|
11978
12014
|
const bindGroup = getOrCreateFromChain(
|
|
11979
12015
|
frameState.postProcessBgCache,
|
|
11980
|
-
[hdrColorView,
|
|
12016
|
+
[hdrColorView, finestBloomView],
|
|
11981
12017
|
"bloom-composite",
|
|
11982
12018
|
() => {
|
|
11983
12019
|
const bgRes = runtime.device.createBindGroup({
|
|
@@ -11985,7 +12021,7 @@ function recordBloomCompositePass(_c, resolve, graphPass) {
|
|
|
11985
12021
|
layout: bglComposite,
|
|
11986
12022
|
entries: [
|
|
11987
12023
|
{ binding: 0, resource: { kind: "textureView", value: hdrColorView } },
|
|
11988
|
-
{ binding: 1, resource: { kind: "textureView", value:
|
|
12024
|
+
{ binding: 1, resource: { kind: "textureView", value: finestBloomView } },
|
|
11989
12025
|
{ binding: 2, resource: { kind: "sampler", value: bloomSampler } },
|
|
11990
12026
|
{
|
|
11991
12027
|
binding: 3,
|
|
@@ -13232,46 +13268,32 @@ function addReflectionFallbackObservationPass(graph, target) {
|
|
|
13232
13268
|
});
|
|
13233
13269
|
}
|
|
13234
13270
|
var TYPED_BLOOM_PASS_NAMES = {
|
|
13235
|
-
|
|
13236
|
-
|
|
13237
|
-
blurV: "bloom-blur-v",
|
|
13271
|
+
downsample: "bloom-downsample",
|
|
13272
|
+
upsample: "bloom-upsample",
|
|
13238
13273
|
composite: "bloom-composite"
|
|
13239
13274
|
};
|
|
13275
|
+
function typedBloomLevelPassName(kind, level) {
|
|
13276
|
+
return `${TYPED_BLOOM_PASS_NAMES[kind]}-${level}`;
|
|
13277
|
+
}
|
|
13240
13278
|
function addTypedBloomPasses(graph, targets) {
|
|
13241
13279
|
const named = {
|
|
13242
13280
|
hdrColor: targets.scene,
|
|
13243
|
-
hdrComposited: targets.composited
|
|
13244
|
-
bloomBright: targets.bright,
|
|
13245
|
-
bloomBlurH: targets.blurH,
|
|
13246
|
-
bloomBlurV: targets.blurV
|
|
13281
|
+
hdrComposited: targets.composited
|
|
13247
13282
|
};
|
|
13248
|
-
|
|
13249
|
-
{
|
|
13250
|
-
|
|
13251
|
-
|
|
13252
|
-
|
|
13253
|
-
|
|
13254
|
-
|
|
13255
|
-
{
|
|
13256
|
-
name
|
|
13257
|
-
reads
|
|
13258
|
-
write
|
|
13259
|
-
encode
|
|
13260
|
-
|
|
13261
|
-
|
|
13262
|
-
name: TYPED_BLOOM_PASS_NAMES.blurV,
|
|
13263
|
-
reads: [targets.blurH],
|
|
13264
|
-
write: targets.blurV,
|
|
13265
|
-
encode: recordBloomBlurVPass
|
|
13266
|
-
},
|
|
13267
|
-
{
|
|
13268
|
-
name: TYPED_BLOOM_PASS_NAMES.composite,
|
|
13269
|
-
reads: [targets.scene, targets.blurV],
|
|
13270
|
-
write: targets.composited,
|
|
13271
|
-
encode: recordBloomCompositePass
|
|
13272
|
-
}
|
|
13273
|
-
];
|
|
13274
|
-
for (const descriptor of descriptors) {
|
|
13283
|
+
targets.downsample.forEach((target, level) => {
|
|
13284
|
+
named[`bloomDownsample${level}`] = target;
|
|
13285
|
+
});
|
|
13286
|
+
targets.upsample.forEach((target, level) => {
|
|
13287
|
+
named[`bloomUpsample${level}`] = target;
|
|
13288
|
+
});
|
|
13289
|
+
const add = (name, reads, write, encode, level) => {
|
|
13290
|
+
const descriptor = {
|
|
13291
|
+
name,
|
|
13292
|
+
reads,
|
|
13293
|
+
write,
|
|
13294
|
+
encode,
|
|
13295
|
+
level
|
|
13296
|
+
};
|
|
13275
13297
|
const added = graph.addRasterPass(descriptor.name, {
|
|
13276
13298
|
accesses: [
|
|
13277
13299
|
...descriptor.reads.map((target) => ({
|
|
@@ -13291,12 +13313,80 @@ function addTypedBloomPasses(graph, targets) {
|
|
|
13291
13313
|
encode: ({ pass, frame, resources }) => descriptor.encode(
|
|
13292
13314
|
frame,
|
|
13293
13315
|
legacyResolver(resources, named),
|
|
13294
|
-
pass
|
|
13316
|
+
pass,
|
|
13317
|
+
descriptor.level,
|
|
13318
|
+
descriptor.level === void 0 ? void 0 : targets.levelDimensions[descriptor.level]
|
|
13295
13319
|
)
|
|
13296
13320
|
});
|
|
13321
|
+
return added.ok ? ok(void 0) : added;
|
|
13322
|
+
};
|
|
13323
|
+
for (const [level, write] of targets.downsample.entries()) {
|
|
13324
|
+
const source = level === 0 ? targets.scene : targets.downsample[level - 1];
|
|
13325
|
+
if (source === void 0) {
|
|
13326
|
+
return err$1(
|
|
13327
|
+
new RenderGraphError({
|
|
13328
|
+
code: "resource-resolution-failed",
|
|
13329
|
+
expected: "Bloom downsample levels form one adjacent pyramid",
|
|
13330
|
+
hint: "rebuild the Standard Bloom target declaration from one level list",
|
|
13331
|
+
detail: { resourceLabel: `bloom-level-${level}` }
|
|
13332
|
+
})
|
|
13333
|
+
);
|
|
13334
|
+
}
|
|
13335
|
+
const added = add(
|
|
13336
|
+
typedBloomLevelPassName("downsample", level),
|
|
13337
|
+
[source],
|
|
13338
|
+
write,
|
|
13339
|
+
(frame, resolve, pass, passLevel) => recordBloomDownsamplePass(
|
|
13340
|
+
frame,
|
|
13341
|
+
resolve,
|
|
13342
|
+
pass,
|
|
13343
|
+
passLevel ?? level,
|
|
13344
|
+
targets.levelDimensions[passLevel ?? level]
|
|
13345
|
+
),
|
|
13346
|
+
level
|
|
13347
|
+
);
|
|
13297
13348
|
if (!added.ok) return added;
|
|
13298
13349
|
}
|
|
13299
|
-
|
|
13350
|
+
for (let level = targets.upsample.length - 1; level >= 0; level -= 1) {
|
|
13351
|
+
const current = targets.downsample[level];
|
|
13352
|
+
const coarse = level === targets.downsample.length - 2 ? targets.downsample[level + 1] : targets.upsample[level + 1];
|
|
13353
|
+
const write = targets.upsample[level];
|
|
13354
|
+
if (current === void 0 || coarse === void 0 || write === void 0) {
|
|
13355
|
+
return err$1(
|
|
13356
|
+
new RenderGraphError({
|
|
13357
|
+
code: "resource-resolution-failed",
|
|
13358
|
+
expected: "Bloom downsample and upsample levels form one adjacent pyramid",
|
|
13359
|
+
hint: "rebuild the Standard Bloom target declaration from one level list",
|
|
13360
|
+
detail: { resourceLabel: `bloom-level-${level}` }
|
|
13361
|
+
})
|
|
13362
|
+
);
|
|
13363
|
+
}
|
|
13364
|
+
const added = add(
|
|
13365
|
+
typedBloomLevelPassName("upsample", level),
|
|
13366
|
+
[current, coarse],
|
|
13367
|
+
write,
|
|
13368
|
+
(frame, resolve, pass, passLevel) => recordBloomUpsamplePass(frame, resolve, pass, passLevel ?? level),
|
|
13369
|
+
level
|
|
13370
|
+
);
|
|
13371
|
+
if (!added.ok) return added;
|
|
13372
|
+
}
|
|
13373
|
+
const finest = targets.upsample[0] ?? targets.downsample[0];
|
|
13374
|
+
if (finest === void 0) {
|
|
13375
|
+
return err$1(
|
|
13376
|
+
new RenderGraphError({
|
|
13377
|
+
code: "resource-resolution-failed",
|
|
13378
|
+
expected: "Bloom has at least one downsample level",
|
|
13379
|
+
hint: "derive Bloom levels from a positive output extent",
|
|
13380
|
+
detail: { resourceLabel: "bloom-downsample-0" }
|
|
13381
|
+
})
|
|
13382
|
+
);
|
|
13383
|
+
}
|
|
13384
|
+
return add(
|
|
13385
|
+
TYPED_BLOOM_PASS_NAMES.composite,
|
|
13386
|
+
[targets.scene, finest],
|
|
13387
|
+
targets.composited,
|
|
13388
|
+
(frame, resolve, pass) => recordBloomCompositePass(frame, resolve, pass)
|
|
13389
|
+
);
|
|
13300
13390
|
}
|
|
13301
13391
|
function addTypedSsaoPasses(graph, targets) {
|
|
13302
13392
|
const calc = graph.addRasterPass("ssao-calc", {
|
|
@@ -13707,6 +13797,6 @@ function addTaaResolvePass(graph, current, currentTemporal, previousColor, previ
|
|
|
13707
13797
|
});
|
|
13708
13798
|
}
|
|
13709
13799
|
|
|
13710
|
-
export { BYTES_PER_DIRECT_LIGHT_SLOT, BatchTopology, CAPTURE_VIEW_PROJS, CUBEMAP_FACE_VERTICES, CUBE_CAPTURE_VIEW_SLOT_BASE, DEFERRED_COLOR_FORMATS, DEPTH_MIN_PARAMS_BYTE_SIZE, FALLBACK_BYTES_PER_ROW, GPU_DRIVEN_VIEW_WGSL, GPU_SCENE_LAYOUTS, GpuBuffer, GpuDrivenView, GpuTexture, MATERIAL_PER_ENTITY_STRIDE, MESH_SSBO_BYTES, OcclusionConfidenceScheduler, POINTS_LINES_MATERIAL_SHADER_ID, POINTS_LINES_VIEW_BUFFER_SIZE, PREFILTER_MIP_LEVELS, PREFILTER_SIZE, PipelineSpecError, PostProcessError, REFLECTION_PROBE_VIEW_SLOT_BASE, SHADOW_CASTER_BUFFER_SIZE, STANDARD_PBR_REQUIRED_SAMPLED_TEXTURES, STANDARD_PBR_UBO_SIZE, ShadowViewStatePool, TEMPORAL_HISTORY_FORMATS, TYPED_BLOOM_PASS_NAMES,
|
|
13711
|
-
//# sourceMappingURL=chunk-
|
|
13712
|
-
//# sourceMappingURL=chunk-
|
|
13800
|
+
export { BLOOM_COMPOSITE_PARAMS_BYTES, BLOOM_DOWNSAMPLE_PARAMS_BYTES, BLOOM_UPSAMPLE_PARAMS_BYTES, BYTES_PER_DIRECT_LIGHT_SLOT, BatchTopology, CAPTURE_VIEW_PROJS, CUBEMAP_FACE_VERTICES, CUBE_CAPTURE_VIEW_SLOT_BASE, DEFERRED_COLOR_FORMATS, DEPTH_MIN_PARAMS_BYTE_SIZE, DEPTH_TEXTURE_FORMAT, FALLBACK_BYTES_PER_ROW, GPU_DRIVEN_VIEW_WGSL, GPU_SCENE_LAYOUTS, GpuBuffer, GpuDrivenView, GpuTexture, HDR_COLOR_ATTACHMENT_FORMAT, MATERIAL_PER_ENTITY_STRIDE, MESH_SSBO_BYTES, MIPMAP_PREWARM_FORMATS, OcclusionConfidenceScheduler, POINTS_LINES_MATERIAL_SHADER_ID, POINTS_LINES_VIEW_BUFFER_SIZE, PREFILTER_MIP_LEVELS, PREFILTER_SIZE, PipelineSpecError, PostProcessError, REFLECTION_PROBE_VIEW_SLOT_BASE, SHADOW_CASTER_BUFFER_SIZE, STANDARD_PBR_REQUIRED_SAMPLED_TEXTURES, STANDARD_PBR_UBO_SIZE, ShadowViewStatePool, TEMPORAL_HISTORY_FORMATS, TYPED_BLOOM_PASS_NAMES, VIEW_UBO_BYTES, VIEW_UNIFORM_BYTES, VIEW_UNIFORM_SLOT_STRIDE, abortTemporalGpuSubmit, addReflectionFallbackObservationPass, addStandardSceneDataPass, addTaaResolvePass, addTypedBloomPasses, addTypedCompositePostEffects, addTypedFrameObservationPass, addTypedFullscreenPass, addTypedOutputTransformPass, addTypedScenePass, addTypedSkyboxPass, addTypedSsaoPasses, addTypedTemporalResolvePass, aggregateTemporalDemand, applyMaterialTextureUvScales, applyParamSchemaDefaultsToUbo, applyParamSnapshotToUbo, assembleMaterialWithSkylightEntries, assertStorageBufferCap, buildFoldDispatchPlan, buildFullscreenPostProcessPass, buildLinearLdrMaterialSpecTable, buildPerFrameBindGroups, buildSpecConstTable, cacheKeyOf, cleanPerEntityCache, colorFormatsForPassKind, commitTemporalGpuSubmit, computeProjectionMatrix, computeSplitLdrSprite, computeViewMatrix, configureSurface, createClusterBinScratch, createFullscreenBindGroup, createHdrpClusterMembershipBindGroupLayoutDescriptor, createIblPipelines, createPointsLinesLaneAdapter, createPointsLinesLaneContract, createRenderPipelineTarget, createSkylightFallback, createStandardSceneDataTarget, createStandardSurfaceLightingBindGroup, decideVisibility, defaultViewForUserRegionField, deriveRenderDataCubemap, deriveRenderDataMesh, deriveRenderDataTexture, deriveRenderExtent, describeTemporalDemand, detectNineSliceScaleTooSmall, deviceOptionsForAdapter, driveLazyEquirectProjection, encodeDirectionalShadowPass, encodeMainPass, encodePointShadowPass, encodeSpotShadowPass, ensureMeshSsboCapacity, entryHasDepthRead, evaluateFoldBucketUniformCap, foldDispatchBuckets, geometryRenderStateForPass, geometryRenderStateForTopology, getIblProbeBackgroundSource, getOrBuildPipeline, getOrCreateFromChain, getOrCreateHdrpBuffers, getOrCreateIblCache, getTemporalBindGroupResources, getTemporalGpuState, getTemporalParamsBuffer, gpuSceneFieldOffset, hasPendingTemporalGpuSubmit, importRenderPipelineSurface, incrementFoldedDrawsMetric, isTemporalFullscreenBinding, packInstanceStorageBuffer, passKindPolicyTable, postProcessShaderEntrySignature, postProcessShaderModuleLabel, postProcessShaderPipelineLabel, prepareFrameLighting, prepareMaterialSkylight, prewarmMaterialShaderVariants, projectedHeightForCandidate, renderExtentSize, resetHdrpBuffers, residentTextureView, resolveMaterialSkylight, resolveOutputDither, resolveReflectionProbeBinding, resolveSkyboxActive, resolveSsaoParameters, resolveSurfaceFormatPair, resolveSurfaceProfile, retireTemporalGpuState, retireTemporalGpuStateAfterFence, runIblPrecompute, selectGpuDrivenSceneIndexVariant, selectGpuLodLane, selectHdrpPbrPrewarmVariants, selectLazyEquirectHandle, selectLod, selectProbePrewarmVariants, selectSkinPrewarmVariants, selectStandardPbrTransmissionPrewarmVariants, selectSwapChainFormat, setIblComposedShaders, shadowViewIdentityKey, shadowViewRasterAccesses, shouldIssueRetest, standardBloomAdmitted, standardStorageVariantSet, standardTemporalLaneAdmission, standardTemporalPostOrder, standardTopologyVariantSet, temporalReadIndex, temporalWriteIndex, transmissionBackdropAvailable, uploadMeshSsboBatch, variantSetFromDefines, variantSetFromVertexLayoutProjection, warnMultiSkybox, warnMultiSkylight, warnZeroLightStandard, writeHdrpClusterAndSsaoBuffers, writePbrMaterialUboPayload, writePointsLinesViewUbo, writeShadowCasterUniforms, writeShadowParamsBuffer, writeSpotModifierTextures, writeViewUbo };
|
|
13801
|
+
//# sourceMappingURL=chunk-VOZWDM3L.mjs.map
|
|
13802
|
+
//# sourceMappingURL=chunk-VOZWDM3L.mjs.map
|