@forgeax/engine-render 0.1.35 → 0.1.36
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 +17 -0
- package/dist/assembly/webgpu-vertex-layouts.d.ts.map +1 -1
- package/dist/{chunk-MXTWKZO4.mjs → chunk-2OZAS3WU.mjs} +225 -4
- package/dist/chunk-2OZAS3WU.mjs.map +1 -0
- package/dist/{chunk-G6HDNGY7.mjs → chunk-BZQ4CDRF.mjs} +24 -230
- package/dist/chunk-BZQ4CDRF.mjs.map +1 -0
- package/dist/{chunk-LNIUIKQ7.mjs → chunk-CJOV2XLO.mjs} +77 -19
- package/dist/chunk-CJOV2XLO.mjs.map +1 -0
- package/dist/{chunk-3XUBWRY2.mjs → chunk-D6WSBXJ2.mjs} +4 -4
- package/dist/{chunk-3XUBWRY2.mjs.map → chunk-D6WSBXJ2.mjs.map} +1 -1
- package/dist/{chunk-LM5IE7GF.mjs → chunk-DRF6OULX.mjs} +3 -3
- package/dist/{chunk-LM5IE7GF.mjs.map → chunk-DRF6OULX.mjs.map} +1 -1
- package/dist/{chunk-SGPUJW3F.mjs → chunk-OB5WAFYH.mjs} +3 -3
- package/dist/{chunk-SGPUJW3F.mjs.map → chunk-OB5WAFYH.mjs.map} +1 -1
- package/dist/{chunk-MZ4C7EHF.mjs → chunk-OEYKKMXG.mjs} +5 -5
- package/dist/{chunk-MZ4C7EHF.mjs.map → chunk-OEYKKMXG.mjs.map} +1 -1
- package/dist/construct-renderer.mjs +130 -71
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/device-scope.d.ts.map +1 -1
- package/dist/features/particle-mesh-layout.d.ts +19 -0
- package/dist/features/particle-mesh-layout.d.ts.map +1 -0
- package/dist/features/types.d.ts +5 -1
- package/dist/features/types.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +1 -1
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/shadow-views.d.ts +1 -1
- package/dist/gpu-driven/shadow-views.d.ts.map +1 -1
- package/dist/gpu-driven/view-gpu.d.ts +1 -1
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/index.mjs +48 -36
- package/dist/index.mjs.map +1 -1
- package/dist/internal.mjs +5 -5
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/publication/publisher.d.ts +1 -0
- package/dist/publication/publisher.d.ts.map +1 -1
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/prepared-material-bindings.d.ts +1 -2
- package/dist/record/prepared-material-bindings.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +2 -0
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts +2 -2
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/recovery/render-system-candidate.d.ts +1 -8
- package/dist/recovery/render-system-candidate.d.ts.map +1 -1
- package/dist/render-system-extract-tail.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts.map +1 -1
- package/dist/temporal/index.mjs +4 -4
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/package.json +21 -21
- package/src/__tests__/device-scope-lifecycle.unit.test.ts +26 -0
- package/src/__tests__/gpu-driven-production.integration.test.ts +18 -1
- package/src/__tests__/gpu-driven-shadow-views.unit.test.ts +23 -0
- package/src/__tests__/material-vertex-texture.browser.test.ts +7 -0
- package/src/__tests__/material-vertex-texture.dawn.test.ts +7 -0
- package/src/__tests__/material-vertex-texture.fixture.ts +31 -0
- package/src/__tests__/recovery-candidate-prepare.contract.test.ts +5 -0
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +106 -4
- package/src/__tests__/runtime-material-program.integration.test.ts +79 -0
- package/src/__tests__/vertex-layouts-ssot.unit.test.ts +23 -3
- package/src/assembly/webgpu-renderer.ts +12 -9
- package/src/assembly/webgpu-vertex-layouts.ts +2 -9
- package/src/device/device-scope.ts +3 -0
- package/src/features/particle-mesh-layout.ts +25 -0
- package/src/features/types.ts +5 -1
- package/src/gpu-driven/production-raster.ts +9 -3
- package/src/gpu-driven/shadow-views.ts +27 -2
- package/src/gpu-driven/view-gpu.ts +5 -0
- package/src/pbr-pipeline.ts +4 -1
- package/src/publication/__tests__/features.integration.test.ts +51 -0
- package/src/publication/__tests__/publication.integration.test.ts +45 -0
- package/src/publication/publisher.ts +56 -29
- package/src/record/__tests__/prepared-runtime-material.integration.test.ts +134 -0
- package/src/record/frame.ts +45 -6
- package/src/record/prepared-material-bindings.ts +11 -37
- package/src/record/render-context.ts +2 -0
- package/src/record/shadow-pass.ts +65 -4
- package/src/record/typed-frame-graph.ts +5 -1
- package/src/recovery/render-system-candidate.ts +1 -9
- package/src/render-system-extract-tail.ts +15 -6
- package/src/render-system-extract.ts +9 -2
- package/src/render-system.ts +0 -1
- package/src/typed-shadow-passes.ts +36 -5
- package/dist/chunk-G6HDNGY7.mjs.map +0 -1
- package/dist/chunk-LNIUIKQ7.mjs.map +0 -1
- package/dist/chunk-MXTWKZO4.mjs.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { DEFAULT_CLUSTER_GRID, DEFAULT_STANDARD_PROFILE, createIblKernelCache, STANDARD_PBR_UBO_SIZE, MATERIAL_PER_ENTITY_STRIDE, MAX_LIGHTS, CLUSTER_GRID_STRIDE_U32, LIGHT_INDEX_LIST_CAPACITY, createStandardClusterLayout } from './chunk-
|
|
1
|
+
import { DEFAULT_CLUSTER_GRID, DEFAULT_STANDARD_PROFILE, createIblKernelCache, STANDARD_PBR_UBO_SIZE, MATERIAL_PER_ENTITY_STRIDE, MAX_LIGHTS, CLUSTER_GRID_STRIDE_U32, LIGHT_INDEX_LIST_CAPACITY, createStandardClusterLayout } from './chunk-OB5WAFYH.mjs';
|
|
2
2
|
import { TRANSPARENT_SORT_MODE_LAYER_Z, TRANSPARENT_SORT_MODE_LAYER_Y, SPRITE_PREMULTIPLIED_ALPHA_BLEND } from './chunk-XSFB7XXQ.mjs';
|
|
3
3
|
import { probeBlendRecordOffset, PROBE_BLEND_RECORD_BYTE_SIZE, PROBE_BLEND_RECORD_STRIDE } from './chunk-RIPAEGI6.mjs';
|
|
4
|
-
import { GPU_TEXTURE_USAGE_RENDER_ATTACHMENT, GPU_TEXTURE_USAGE_COPY_SRC, VertexColorVariantConflictError, GPU_SHADER_STAGE_COMPUTE, GPU_BUFFER_USAGE_STORAGE, GPU_BUFFER_USAGE_COPY_DST, GPU_BUFFER_USAGE_UNIFORM, createHdrpBindGroupLayoutDescriptor, EquirectProjectionFailedError, SHADOW_ATLAS_DEFAULT_LAYERS, COOKIE_MATRIX_BYTES, SHADOW_ATLAS_DEFAULT_FACE_SIZE, ShadowAtlas, PointShadowAtlasUninitializedError, PointShadowAtlasBoundsViolationError, IES_SLICE_WIDTH, IES_SLICE_HEIGHT, COOKIE_SLICE_SIZE, StandardClusterTransportUnavailableError, GPU_SHADER_STAGE_VERTEX, GPU_SHADER_STAGE_FRAGMENT, GPU_TEXTURE_USAGE_RENDER_ATTACHMENT_AND_TEXTURE_BINDING, GPU_TEXTURE_USAGE_COPY_DST, GPU_TEXTURE_USAGE_TEXTURE_BINDING, GPU_BUFFER_USAGE_INDEX, GPU_BUFFER_USAGE_VERTEX, isStandardPbrMaterialShader, worldEntityKey, instanceCollectionCacheKey, instanceUploadRangesForResident, createVisibilityBudget, GPU_BUFFER_USAGE_MAP_READ, getOpaqueResourceIdentity, pbrSkinMeshDynamicOffsets, gpuDrivenShadowDrawKey, SHADOW_CASTER_SHADER_ID, shadowCasterVariantSet, buildPbrMaterialUserRegionEntries, buildBindGroupLayoutDescriptor, STANDARD_OUTPUT_TRANSFORM_FEATURE_ID, GPU_BUFFER_USAGE_COPY_SRC, GPU_BUFFER_USAGE_INDIRECT, StandardLightBudgetExceededError, EXTENDED_LIGHTING_REQUIRED_SAMPLED_TEXTURES, gpuDrivenSourceDrawItemIndex, matchPass, createPbrSkinMeshBindGroupEntries, physicalTextureFields, isCanonicalStandardPbrMaterialShader, RendererOperationError, resolveRenderTargetMaterialSource, VideoUploadUnsupportedError, SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET, StandardClusterIndexOverflowError, isStandardPbrSkinMaterialShader, SKIN_MATERIAL_SHADER_ID, FXAA_POST_PROCESS_ID, gpuDrivenDrawKey, materialBindGroupLayoutIdentity } from './chunk-
|
|
4
|
+
import { GPU_TEXTURE_USAGE_RENDER_ATTACHMENT, GPU_TEXTURE_USAGE_COPY_SRC, VertexColorVariantConflictError, GPU_SHADER_STAGE_COMPUTE, GPU_BUFFER_USAGE_STORAGE, GPU_BUFFER_USAGE_COPY_DST, GPU_BUFFER_USAGE_UNIFORM, createHdrpBindGroupLayoutDescriptor, EquirectProjectionFailedError, SHADOW_ATLAS_DEFAULT_LAYERS, COOKIE_MATRIX_BYTES, SHADOW_ATLAS_DEFAULT_FACE_SIZE, ShadowAtlas, PointShadowAtlasUninitializedError, PointShadowAtlasBoundsViolationError, IES_SLICE_WIDTH, IES_SLICE_HEIGHT, COOKIE_SLICE_SIZE, StandardClusterTransportUnavailableError, GPU_SHADER_STAGE_VERTEX, GPU_SHADER_STAGE_FRAGMENT, GPU_TEXTURE_USAGE_RENDER_ATTACHMENT_AND_TEXTURE_BINDING, GPU_TEXTURE_USAGE_COPY_DST, GPU_TEXTURE_USAGE_TEXTURE_BINDING, GPU_BUFFER_USAGE_INDEX, GPU_BUFFER_USAGE_VERTEX, isStandardPbrMaterialShader, worldEntityKey, instanceCollectionCacheKey, instanceUploadRangesForResident, createVisibilityBudget, GPU_BUFFER_USAGE_MAP_READ, getOpaqueResourceIdentity, pbrSkinMeshDynamicOffsets, gpuDrivenShadowDrawKey, SHADOW_CASTER_SHADER_ID, shadowCasterVariantSet, buildPbrMaterialUserRegionEntries, buildBindGroupLayoutDescriptor, STANDARD_OUTPUT_TRANSFORM_FEATURE_ID, GPU_BUFFER_USAGE_COPY_SRC, GPU_BUFFER_USAGE_INDIRECT, StandardLightBudgetExceededError, EXTENDED_LIGHTING_REQUIRED_SAMPLED_TEXTURES, gpuDrivenSourceDrawItemIndex, matchPass, deriveInstancesUnionBounds, createPbrSkinMeshBindGroupEntries, physicalTextureFields, isCanonicalStandardPbrMaterialShader, RendererOperationError, resolveRenderTargetMaterialSource, VideoUploadUnsupportedError, SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET, StandardClusterIndexOverflowError, isStandardPbrSkinMaterialShader, SKIN_MATERIAL_SHADER_ID, FXAA_POST_PROCESS_ID, gpuDrivenDrawKey, materialBindGroupLayoutIdentity } from './chunk-2OZAS3WU.mjs';
|
|
5
5
|
import { derive, ok, err as err$1, toShared, ASSET_ERROR_HINTS, deriveTextureLayout, handleSlot, resolveMaterialTextureCoordinates, KNOWN_PASS_KINDS } from '@forgeax/engine-types';
|
|
6
6
|
import { RenderGraphError } from '@forgeax/engine-render-graph';
|
|
7
7
|
import { ok as ok$1, err, RhiError } from '@forgeax/engine-rhi';
|
|
8
|
-
import { mat3, vec3, mat4 } from '@forgeax/engine-math';
|
|
8
|
+
import { mat3, vec3, mat4, box3, frustum } from '@forgeax/engine-math';
|
|
9
9
|
import { deriveVertexLayoutProjection, DEFAULT_VERTEX_ATTRIBUTE_MAP, deriveVertexBufferLayout, deriveVertexBufferLayoutFromProjection } from '@forgeax/engine-geometry';
|
|
10
10
|
import { resolveAssetHandle } from '@forgeax/engine-assets-runtime';
|
|
11
11
|
import { probeVideoHighPerfUpload, VIDEO_SOURCE_PROVIDER_KEY, videoSourceExtent } from '@forgeax/engine-graphics-extras';
|
|
@@ -9892,7 +9892,7 @@ var GpuDrivenView = class _GpuDrivenView {
|
|
|
9892
9892
|
mapped.value.unmap();
|
|
9893
9893
|
}
|
|
9894
9894
|
}
|
|
9895
|
-
addPasses(builder, labelPrefix = "gpu-driven", includeCompute = true, surfaceSubmissionObservation) {
|
|
9895
|
+
addPasses(builder, labelPrefix = "gpu-driven", includeCompute = true, surfaceSubmissionObservation, executeIf) {
|
|
9896
9896
|
const buffers = this.buffers;
|
|
9897
9897
|
const bindGroup = this.bindGroup;
|
|
9898
9898
|
const plan = this.plan;
|
|
@@ -10006,6 +10006,7 @@ var GpuDrivenView = class _GpuDrivenView {
|
|
|
10006
10006
|
{ resource: view.value, usage: "uniform-read" },
|
|
10007
10007
|
{ resource: counters.value, usage: "storage-read-write" }
|
|
10008
10008
|
],
|
|
10009
|
+
...executeIf === void 0 ? {} : { executeIf },
|
|
10009
10010
|
encode: ({ pass }) => {
|
|
10010
10011
|
pass.setPipeline(this.resetPipeline);
|
|
10011
10012
|
pass.setBindGroup(0, bindGroup);
|
|
@@ -10023,6 +10024,7 @@ var GpuDrivenView = class _GpuDrivenView {
|
|
|
10023
10024
|
{ resource: counters.value, usage: "storage-read-write" },
|
|
10024
10025
|
{ resource: visible.value, usage: "storage-read-write" }
|
|
10025
10026
|
],
|
|
10027
|
+
...executeIf === void 0 ? {} : { executeIf },
|
|
10026
10028
|
encode: ({ pass }) => {
|
|
10027
10029
|
pass.setPipeline(this.cullPipeline);
|
|
10028
10030
|
pass.setBindGroup(0, bindGroup);
|
|
@@ -10037,6 +10039,7 @@ var GpuDrivenView = class _GpuDrivenView {
|
|
|
10037
10039
|
{ resource: counters.value, usage: "storage-read" },
|
|
10038
10040
|
{ resource: indirect.value, usage: "storage-read-write" }
|
|
10039
10041
|
],
|
|
10042
|
+
...executeIf === void 0 ? {} : { executeIf },
|
|
10040
10043
|
encode: ({ pass }) => {
|
|
10041
10044
|
pass.setPipeline(this.finalizePipeline);
|
|
10042
10045
|
pass.setBindGroup(0, bindGroup);
|
|
@@ -10054,6 +10057,7 @@ var GpuDrivenView = class _GpuDrivenView {
|
|
|
10054
10057
|
{ resource: indirect.value, usage: "copy-src" },
|
|
10055
10058
|
{ resource: lodReadback.value, usage: "copy-dst" }
|
|
10056
10059
|
],
|
|
10060
|
+
...executeIf === void 0 ? {} : { executeIf },
|
|
10057
10061
|
encode: ({ encoder, resources }) => {
|
|
10058
10062
|
const mapState = buffers.lodReadback.mapState;
|
|
10059
10063
|
if (mapState !== void 0 && mapState !== "unmapped") return;
|
|
@@ -10484,14 +10488,29 @@ var ShadowViewStatePool = class _ShadowViewStatePool {
|
|
|
10484
10488
|
view: record.view
|
|
10485
10489
|
});
|
|
10486
10490
|
}
|
|
10487
|
-
project(builder, identity) {
|
|
10491
|
+
project(builder, identity, forceCompute = false) {
|
|
10488
10492
|
const record = this.records.get(identityKey(identity));
|
|
10489
10493
|
if (record === void 0) return err(graphStateError(identity));
|
|
10490
10494
|
const cacheHit = record.cache === "hit" && !record.invalidated;
|
|
10495
|
+
const includeCompute = forceCompute || !cacheHit;
|
|
10496
|
+
let forceComputePending = forceCompute;
|
|
10497
|
+
let lastFrame;
|
|
10498
|
+
let executeForFrame = false;
|
|
10499
|
+
const executeCompute = (frame) => {
|
|
10500
|
+
if (frame !== lastFrame) {
|
|
10501
|
+
lastFrame = frame;
|
|
10502
|
+
const currentRecord = this.records.get(identityKey(record.identity));
|
|
10503
|
+
executeForFrame = forceComputePending || currentRecord === void 0 || currentRecord.cache !== "hit" || currentRecord.invalidated;
|
|
10504
|
+
forceComputePending = false;
|
|
10505
|
+
}
|
|
10506
|
+
return executeForFrame;
|
|
10507
|
+
};
|
|
10491
10508
|
const projected = record.view.addPasses(
|
|
10492
10509
|
builder,
|
|
10493
10510
|
shadowViewLabelPrefix(record.identity),
|
|
10494
|
-
|
|
10511
|
+
includeCompute,
|
|
10512
|
+
void 0,
|
|
10513
|
+
includeCompute ? executeCompute : void 0
|
|
10495
10514
|
);
|
|
10496
10515
|
if (!projected.ok) return projected;
|
|
10497
10516
|
return ok$1({
|
|
@@ -10500,7 +10519,7 @@ var ShadowViewStatePool = class _ShadowViewStatePool {
|
|
|
10500
10519
|
generation: record.generation,
|
|
10501
10520
|
plan: record.plan,
|
|
10502
10521
|
view: record.view,
|
|
10503
|
-
passNames:
|
|
10522
|
+
passNames: includeCompute ? passNames(record.identity) : Object.freeze([]),
|
|
10504
10523
|
graphResources: projected.value
|
|
10505
10524
|
});
|
|
10506
10525
|
}
|
|
@@ -11053,20 +11072,53 @@ function shadowCasterKeys(c) {
|
|
|
11053
11072
|
}
|
|
11054
11073
|
return c.gpuDrivenShadowDrawKeys ?? /* @__PURE__ */ new Set();
|
|
11055
11074
|
}
|
|
11075
|
+
function shadowViewContains(source, planes) {
|
|
11076
|
+
if (planes === void 0 || planes.length === 0 || source.localAabb === void 0) return true;
|
|
11077
|
+
if (source.skin !== void 0) return true;
|
|
11078
|
+
if (source.spriteInstances !== void 0) return true;
|
|
11079
|
+
let worldBounds;
|
|
11080
|
+
if (source.instances !== void 0) {
|
|
11081
|
+
if (source.instances.instanceCount === 0) return false;
|
|
11082
|
+
const derived = deriveInstancesUnionBounds({
|
|
11083
|
+
meshAabb: source.localAabb,
|
|
11084
|
+
entityWorld: source.transform.world,
|
|
11085
|
+
transforms: source.instances.transforms
|
|
11086
|
+
});
|
|
11087
|
+
if (derived === void 0) return true;
|
|
11088
|
+
worldBounds = derived;
|
|
11089
|
+
} else {
|
|
11090
|
+
worldBounds = box3.transformBox3(box3.create(), source.localAabb, source.transform.world);
|
|
11091
|
+
}
|
|
11092
|
+
return frustum.intersectsBox(planes, worldBounds);
|
|
11093
|
+
}
|
|
11056
11094
|
function validateShadowOwnership(c, identity, claimedKeys, recordedKeys) {
|
|
11057
11095
|
if (c.shadowCasterMembership === void 0 && (c.gpuDrivenShadowDrawKeys === void 0 || c.gpuDrivenShadowDrawKeys.size === 0))
|
|
11058
11096
|
return;
|
|
11059
|
-
const
|
|
11097
|
+
const viewPlanes = c.shadowViewPlanesByView?.get(shadowViewIdentityKey(identity));
|
|
11098
|
+
const visibleRenderableIndices = viewPlanes === void 0 ? void 0 : new Set(
|
|
11099
|
+
(c.shadowValidatedOrdered ?? c.validatedOrdered).filter((entry) => shadowViewContains(entry.source, viewPlanes)).map((entry) => entry.renderableIndex)
|
|
11100
|
+
);
|
|
11101
|
+
const allExpectedKeys = shadowCasterKeys(c);
|
|
11102
|
+
const visibleExpectedKeys = visibleRenderableIndices === void 0 || c.shadowCasterMembership === void 0 ? allExpectedKeys : new Set(
|
|
11103
|
+
c.shadowCasterMembership.filter((membership) => visibleRenderableIndices.has(membership.renderableIndex)).map(
|
|
11104
|
+
(membership) => gpuDrivenShadowDrawKey(
|
|
11105
|
+
membership.worldEntity,
|
|
11106
|
+
membership.materialHandle,
|
|
11107
|
+
membership.drawItemIndex,
|
|
11108
|
+
membership.passIndex
|
|
11109
|
+
)
|
|
11110
|
+
)
|
|
11111
|
+
);
|
|
11060
11112
|
const claimed = claimedKeys ?? /* @__PURE__ */ new Set();
|
|
11061
11113
|
const overlap = [...claimed].filter((key) => recordedKeys.has(key));
|
|
11062
11114
|
const union = /* @__PURE__ */ new Set([...claimed, ...recordedKeys]);
|
|
11063
|
-
const missing = [...
|
|
11064
|
-
const unexpectedClaims = [...claimed].filter((key) => !
|
|
11115
|
+
const missing = [...visibleExpectedKeys].filter((key) => !union.has(key));
|
|
11116
|
+
const unexpectedClaims = [...claimed].filter((key) => !allExpectedKeys.has(key));
|
|
11065
11117
|
if (overlap.length === 0 && missing.length === 0 && unexpectedClaims.length === 0) return;
|
|
11066
11118
|
throw new RhiError({
|
|
11067
11119
|
code: "internal-error",
|
|
11068
11120
|
expected: `disjoint ShadowCaster ownership for ${shadowViewIdentityKey(identity)}`,
|
|
11069
|
-
hint: `claimed=${[...claimed].sort().join(",")} recorded=${[...recordedKeys].sort().join(",")} missing=${missing.sort().join(",")} unexpectedClaims=${unexpectedClaims.sort().join(",")}`
|
|
11121
|
+
hint: `expected=${[...allExpectedKeys].sort().join(",")} visibleExpected=${[...visibleExpectedKeys].sort().join(",")} claimed=${[...claimed].sort().join(",")} recorded=${[...recordedKeys].sort().join(",")} missing=${missing.sort().join(",")} unexpectedClaims=${unexpectedClaims.sort().join(",")}`
|
|
11070
11122
|
});
|
|
11071
11123
|
}
|
|
11072
11124
|
function hasUnclaimedShadowCasters(c, claimedKeys) {
|
|
@@ -11200,9 +11252,9 @@ function recordGpuDrivenShadowIfPublished(c, pass, identity) {
|
|
|
11200
11252
|
claimedKeys: viewClaims === void 0 ? c.gpuDrivenShadowDrawKeys ?? /* @__PURE__ */ new Set() : viewClaims.get(viewKey) ?? /* @__PURE__ */ new Set()
|
|
11201
11253
|
};
|
|
11202
11254
|
}
|
|
11203
|
-
function encodeDirectionalShadowPass(c, pass, cascadeIndex, viewport, drawFeatures) {
|
|
11255
|
+
function encodeDirectionalShadowPass(c, pass, cascadeIndex, viewport, drawFeatures, forceRaster = false) {
|
|
11204
11256
|
const directionalIdentity = { kind: "directional", index: cascadeIndex };
|
|
11205
|
-
if ((c.gpuDrivenShadowViews?.cacheHit(directionalIdentity) === true || c.gpuDrivenShadowViews === void 0 && c.directionalShadowCacheReuse) && drawFeatures === void 0)
|
|
11257
|
+
if (!forceRaster && (c.gpuDrivenShadowViews?.cacheHit(directionalIdentity) === true || c.gpuDrivenShadowViews === void 0 && c.directionalShadowCacheReuse) && drawFeatures === void 0)
|
|
11206
11258
|
return;
|
|
11207
11259
|
const pipeline = shadowPipeline(c);
|
|
11208
11260
|
const viewBg = ensureTypedShadowViewBg(
|
|
@@ -11294,7 +11346,9 @@ function encodeDirectionalShadowPass(c, pass, cascadeIndex, viewport, drawFeatur
|
|
|
11294
11346
|
LightMode: ["ShadowCaster"]
|
|
11295
11347
|
}),
|
|
11296
11348
|
shadowShaderMap(c),
|
|
11297
|
-
claimedKeys
|
|
11349
|
+
claimedKeys,
|
|
11350
|
+
false,
|
|
11351
|
+
c.shadowViewPlanesByView?.get(shadowViewIdentityKey(directionalIdentity))
|
|
11298
11352
|
);
|
|
11299
11353
|
validateShadowOwnership(c, directionalIdentity, claimedKeys, recordedKeys);
|
|
11300
11354
|
c.frameState.directionalShadowCacheRecorded = cascadeIndex === 0 ? true : c.frameState.directionalShadowCacheRecorded;
|
|
@@ -11392,7 +11446,8 @@ function encodePointShadowPass(c, pass, snapshotIndex, face, drawFeatures) {
|
|
|
11392
11446
|
}),
|
|
11393
11447
|
shadowShaderMap(c),
|
|
11394
11448
|
claimedKeys,
|
|
11395
|
-
true
|
|
11449
|
+
true,
|
|
11450
|
+
c.shadowViewPlanesByView?.get(shadowViewIdentityKey(pointIdentity))
|
|
11396
11451
|
);
|
|
11397
11452
|
validateShadowOwnership(c, pointIdentity, claimedKeys, recordedKeys);
|
|
11398
11453
|
}
|
|
@@ -11502,7 +11557,9 @@ function encodeSpotShadowPass(c, pass, snapshotIndex, drawFeatures) {
|
|
|
11502
11557
|
LightMode: ["ShadowCaster"]
|
|
11503
11558
|
}),
|
|
11504
11559
|
shadowShaderMap(c),
|
|
11505
|
-
claimedKeys
|
|
11560
|
+
claimedKeys,
|
|
11561
|
+
false,
|
|
11562
|
+
c.shadowViewPlanesByView?.get(shadowViewIdentityKey(spotIdentity))
|
|
11506
11563
|
);
|
|
11507
11564
|
validateShadowOwnership(c, spotIdentity, claimedKeys, recordedKeys);
|
|
11508
11565
|
}
|
|
@@ -11546,7 +11603,7 @@ function buildMatchedMaterialHandlesByRenderable(dispatch, selector, excludeSele
|
|
|
11546
11603
|
}
|
|
11547
11604
|
return handlesByRenderable;
|
|
11548
11605
|
}
|
|
11549
|
-
function recordShadowCasterDraws(c, shadowPass, shadowPipeline2, shadowMeshBindGroup, matchedIndices, matchedMaterialHandles, shadowDispatchByRenderableIdx, gpuDrivenShadowDrawKeys, reflected = false) {
|
|
11606
|
+
function recordShadowCasterDraws(c, shadowPass, shadowPipeline2, shadowMeshBindGroup, matchedIndices, matchedMaterialHandles, shadowDispatchByRenderableIdx, gpuDrivenShadowDrawKeys, reflected = false, viewPlanes) {
|
|
11550
11607
|
const {
|
|
11551
11608
|
runtime,
|
|
11552
11609
|
pipelineState,
|
|
@@ -11563,6 +11620,7 @@ function recordShadowCasterDraws(c, shadowPass, shadowPipeline2, shadowMeshBindG
|
|
|
11563
11620
|
for (let i = 0; i < validatedOrdered.length; i++) {
|
|
11564
11621
|
const entry = validatedOrdered[i];
|
|
11565
11622
|
if (entry === void 0) continue;
|
|
11623
|
+
if (!shadowViewContains(entry.source, viewPlanes)) continue;
|
|
11566
11624
|
if (matchedIndices !== null && !matchedIndices.has(entry.renderableIndex)) continue;
|
|
11567
11625
|
const drawIndices = shadowDrawIndicesBySubmesh(entry.source, entry.mesh);
|
|
11568
11626
|
const shadowSubmeshes = entry.mesh.submeshes.flatMap((submesh, submeshIndex) => {
|
|
@@ -14814,5 +14872,5 @@ function addTaaResolvePass(graph, current, currentTemporal, previousColor, previ
|
|
|
14814
14872
|
}
|
|
14815
14873
|
|
|
14816
14874
|
export { BLOOM_COMPOSITE_PARAMS_BYTES, BLOOM_DOWNSAMPLE_PARAMS_BYTES, BLOOM_UPSAMPLE_PARAMS_BYTES, BYTES_PER_DIRECT_LIGHT_SLOT, BatchTopology, CAPTURE_VIEW_PROJS, CLOUD_HISTORY_FORMATS, 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, GpuResourceAllocationLedger, GpuTexture, HDR_COLOR_ATTACHMENT_FORMAT, MESH_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, ShadowViewStatePool, SurfaceSubmissionObservationOwner, 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, combineGpuResourceAllocationInspections, commitTemporalGpuSubmit, computeProjectionMatrix, computeSplitLdrSprite, computeViewMatrix, 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, ensureProbeBlendRecordBuffer, entryHasDepthRead, evaluateFoldBucketUniformCap, foldDispatchBuckets, geometryRenderStateForPass, geometryRenderStateForTopology, getIblProbeBackgroundSource, getOrBuildPipeline, getOrCreateFromChain, getOrCreateHdrpBuffers, getOrCreateIblCache, getTemporalBindGroupResources, getTemporalGpuState, getTemporalParamsBuffer, gpuSceneFieldOffset, hasPendingTemporalGpuSubmit, importRenderPipelineSurface, incrementFoldedDrawsMetric, inspectResourceClassSplits, isTemporalFullscreenBinding, packInstanceStorageBuffer, passKindPolicyTable, postProcessShaderEntrySignature, postProcessShaderModuleLabel, postProcessShaderPipelineLabel, prepareFrameLighting, prepareMaterialSkylight, prewarmMaterialShaderVariants, projectedHeightForCandidate, renderExtentSize, renderPipelineCloudHistoryTargets, resetHdrpBuffers, resetSsaoResources, residentTextureView, resolveGeometryInstanceBuffer, resolveMaterialSkylight, resolveOutputDither, resolveReflectionProbeBinding, resolveSkyboxActive, resolveSsaoParameters, retireTemporalGpuState, retireTemporalGpuStateAfterFence, runIblPrecompute, selectGpuDrivenSceneIndexVariant, selectGpuLodLane, selectHdrpPbrPrewarmVariants, selectLazyEquirectHandle, selectLod, selectProbePrewarmVariants, selectSkinPrewarmVariants, selectStandardPbrTransmissionPrewarmVariants, setIblComposedShaders, shadowViewIdentityKey, shadowViewRasterAccesses, shouldIssueRetest, stageTemporalGpuSubmit, standardBloomAdmitted, standardStorageVariantSet, standardTemporalLaneAdmission, standardTemporalPostOrder, standardTopologyVariantSet, temporalReadIndex, temporalWriteIndex, transmissionBackdropAvailable, uploadMeshSsboBatch, variantSetFromDefines, variantSetFromVertexLayoutProjection, warnMultiSkybox, warnMultiSkylight, warnZeroLightStandard, writeHdrpClusterAndSsaoBuffers, writePbrMaterialUboPayload, writePointsLinesViewUbo, writeShadowCasterUniforms, writeShadowParamsBuffer, writeSpotModifierTextures, writeViewUbo };
|
|
14817
|
-
//# sourceMappingURL=chunk-
|
|
14818
|
-
//# sourceMappingURL=chunk-
|
|
14875
|
+
//# sourceMappingURL=chunk-CJOV2XLO.mjs.map
|
|
14876
|
+
//# sourceMappingURL=chunk-CJOV2XLO.mjs.map
|