@forgeax/engine-render 0.1.3 → 0.1.4
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/dist/.tsbuildinfo +1 -1
- package/dist/authoring.mjs +2 -2
- package/dist/{chunk-YAKEQPWO.mjs → chunk-DJIMFYX6.mjs} +2 -2
- package/dist/{chunk-YAKEQPWO.mjs.map → chunk-DJIMFYX6.mjs.map} +1 -1
- package/dist/{chunk-33UF5SAO.mjs → chunk-F2SIOCRM.mjs} +36 -10
- package/dist/chunk-F2SIOCRM.mjs.map +1 -0
- package/dist/{chunk-QRXPSX4X.mjs → chunk-KHI6K4C6.mjs} +3 -3
- package/dist/{chunk-QRXPSX4X.mjs.map → chunk-KHI6K4C6.mjs.map} +1 -1
- package/dist/{chunk-LXNGO6AO.mjs → chunk-PORZOL2V.mjs} +3 -3
- package/dist/{chunk-LXNGO6AO.mjs.map → chunk-PORZOL2V.mjs.map} +1 -1
- package/dist/{chunk-A5QCJSNL.mjs → chunk-UOJGMDGP.mjs} +3 -3
- package/dist/{chunk-A5QCJSNL.mjs.map → chunk-UOJGMDGP.mjs.map} +1 -1
- package/dist/components/environment.d.ts +4 -5
- package/dist/components/environment.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +4 -4
- package/dist/index.mjs +3 -3
- package/dist/internal.mjs +6 -6
- package/dist/renderer/material/assembly.d.ts +1 -1
- package/dist/renderer/material/assembly.d.ts.map +1 -1
- package/dist/renderer/renderer-factory.d.ts +6 -0
- package/dist/renderer/renderer-factory.d.ts.map +1 -1
- package/package.json +22 -22
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +50 -3
- package/src/components/environment.ts +4 -5
- package/src/renderer/material/assembly.ts +1 -1
- package/src/renderer/renderer-factory.ts +47 -4
- package/dist/chunk-33UF5SAO.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { tilemapChunkExtractSystem } from './chunk-
|
|
2
|
-
import { GpuBuffer, GpuTexture, getOrCreateMipmapPipeline, deriveRenderDataTexture, deriveRenderDataMesh, blitMipmapsSync, deriveMipUploadLayout, deriveRenderDataCubemap, createIblPipelines, GPU_TEXTURE_USAGE_TEXTURE_BINDING, GPU_TEXTURE_USAGE_COPY_DST, CUBEMAP_FACE_VERTICES, GPU_BUFFER_USAGE_VERTEX, GPU_BUFFER_USAGE_COPY_DST, runIblPrecompute, MeshUpdateError, GPU_BUFFER_USAGE_INDEX, colorFormatsForPassKind, buildPipelineDescriptor, createMembershipTiming, createRenderFeatureHost, createParamSchemaProjectionCensus, SKIN_MATERIAL_SHADER_ID, createRenderSystem, URP_PIPELINE_ID, urpPipeline, HDRP_PIPELINE_ID, hdrpPipeline, assertStorageBufferCap, GPU_BUFFER_USAGE_UNIFORM, CAPTURE_VIEW_PROJS, PREFILTER_MIP_LEVELS, RENDER_FEATURE_VERTEX_LAYOUTS, cacheKeyOf, RecoverError, clearIblCacheForDevice, GPU_BUFFER_USAGE_STORAGE, setIblComposedShaders, TONEMAP_POST_PROCESS_ID, HDRP_DEFERRED_LIGHTING_POST_PROCESS_ID, createTaaResolvePipelineResources, createHdrpBindGroupLayoutDescriptor, createHdrpClusterMembershipBindGroupLayoutDescriptor, MATERIAL_PER_ENTITY_STRIDE, createSkylightFallback, buildSpecConstTable, buildLinearLdrMaterialSpecTable, getOrBuildPipeline, PipelineSpecError, buildBindGroupLayoutDescriptor, directionalCascadeAtlasSize, GPU_BUFFER_USAGE_MAP_READ, configureSurface, GPU_SHADER_STAGE_VERTEX, GPU_SHADER_STAGE_FRAGMENT, ATMOSPHERE_PARAMS_BYTES, ATMOSPHERE_PARAMS_SLOT_BYTES, ATMOSPHERE_PARAMS_SLOT_COUNT, buildPbrPipelineLayouts, buildPbrSkinLayouts, VIEW_UNIFORM_BUFFER_SIZE, SHADOW_CASTER_BUFFER_SIZE, FALLBACK_BYTES_PER_ROW, GPU_TEXTURE_USAGE_RENDER_ATTACHMENT_AND_TEXTURE_BINDING, LIGHT_ARRAY_HEADER_BYTES, POINT_LIGHT_STD430_BYTES, LIGHT_ARRAY_MAX_SLOTS, SPOT_LIGHT_STD430_BYTES, GPU_TEXTURE_USAGE_COPY_SRC, PREFILTER_SIZE } from './chunk-
|
|
3
|
-
import { MeshSsboCeilingReachedError, MeshSsboCapacityExceededError, glyphTextLayoutSystem, RenderFeatureStageFailedError, RenderFeatureCapabilityMissingError, SkinPaletteOverflowError } from './chunk-
|
|
1
|
+
import { tilemapChunkExtractSystem } from './chunk-KHI6K4C6.mjs';
|
|
2
|
+
import { GpuBuffer, GpuTexture, getOrCreateMipmapPipeline, deriveRenderDataTexture, deriveRenderDataMesh, blitMipmapsSync, deriveMipUploadLayout, deriveRenderDataCubemap, createIblPipelines, GPU_TEXTURE_USAGE_TEXTURE_BINDING, GPU_TEXTURE_USAGE_COPY_DST, CUBEMAP_FACE_VERTICES, GPU_BUFFER_USAGE_VERTEX, GPU_BUFFER_USAGE_COPY_DST, runIblPrecompute, MeshUpdateError, GPU_BUFFER_USAGE_INDEX, colorFormatsForPassKind, buildPipelineDescriptor, createMembershipTiming, createRenderFeatureHost, createParamSchemaProjectionCensus, SKIN_MATERIAL_SHADER_ID, createRenderSystem, URP_PIPELINE_ID, urpPipeline, HDRP_PIPELINE_ID, hdrpPipeline, assertStorageBufferCap, GPU_BUFFER_USAGE_UNIFORM, CAPTURE_VIEW_PROJS, PREFILTER_MIP_LEVELS, RENDER_FEATURE_VERTEX_LAYOUTS, cacheKeyOf, RecoverError, clearIblCacheForDevice, GPU_BUFFER_USAGE_STORAGE, setIblComposedShaders, TONEMAP_POST_PROCESS_ID, HDRP_DEFERRED_LIGHTING_POST_PROCESS_ID, createTaaResolvePipelineResources, createHdrpBindGroupLayoutDescriptor, createHdrpClusterMembershipBindGroupLayoutDescriptor, MATERIAL_PER_ENTITY_STRIDE, createSkylightFallback, buildSpecConstTable, buildLinearLdrMaterialSpecTable, getOrBuildPipeline, PipelineSpecError, buildBindGroupLayoutDescriptor, directionalCascadeAtlasSize, GPU_BUFFER_USAGE_MAP_READ, configureSurface, GPU_SHADER_STAGE_VERTEX, GPU_SHADER_STAGE_FRAGMENT, ATMOSPHERE_PARAMS_BYTES, ATMOSPHERE_PARAMS_SLOT_BYTES, ATMOSPHERE_PARAMS_SLOT_COUNT, buildPbrPipelineLayouts, buildPbrSkinLayouts, VIEW_UNIFORM_BUFFER_SIZE, SHADOW_CASTER_BUFFER_SIZE, FALLBACK_BYTES_PER_ROW, GPU_TEXTURE_USAGE_RENDER_ATTACHMENT_AND_TEXTURE_BINDING, LIGHT_ARRAY_HEADER_BYTES, POINT_LIGHT_STD430_BYTES, LIGHT_ARRAY_MAX_SLOTS, SPOT_LIGHT_STD430_BYTES, GPU_TEXTURE_USAGE_COPY_SRC, PREFILTER_SIZE } from './chunk-UOJGMDGP.mjs';
|
|
3
|
+
import { MeshSsboCeilingReachedError, MeshSsboCapacityExceededError, glyphTextLayoutSystem, RenderFeatureStageFailedError, RenderFeatureCapabilityMissingError, SkinPaletteOverflowError } from './chunk-DJIMFYX6.mjs';
|
|
4
4
|
import { halfFloat, mat4 } from '@forgeax/engine-math';
|
|
5
5
|
import { err, RhiError, ok, validateDrawArgs } from '@forgeax/engine-rhi';
|
|
6
6
|
import { handleSlot, ASSET_ERROR_HINTS, AssetError, ok as ok$1, err as err$1, derive, IMAGE_ERROR_HINTS } from '@forgeax/engine-types';
|
|
@@ -2187,6 +2187,12 @@ function selectHdrpPbrPrewarmVariants(manifestEntry, storageBufferCapable) {
|
|
|
2187
2187
|
(variant) => variant.defines.STORAGE_BUFFER_AVAILABLE === storageBufferCapable && variant.defines.CLUSTER_FORWARD_AVAILABLE === true
|
|
2188
2188
|
) ?? [];
|
|
2189
2189
|
}
|
|
2190
|
+
function selectNoColorPbrVariant(manifestEntry, storageBufferCapable, variantSet) {
|
|
2191
|
+
const hdrpRequested = variantSet === "" || variantSet?.includes("CLUSTER_FORWARD_AVAILABLE=true") === true;
|
|
2192
|
+
return manifestEntry?.variants.find(
|
|
2193
|
+
(variant) => variant.defines.STORAGE_BUFFER_AVAILABLE === storageBufferCapable && variant.defines.VERTEX_COLOR_AVAILABLE === false && (!("CLUSTER_FORWARD_AVAILABLE" in variant.defines) || variant.defines.CLUSTER_FORWARD_AVAILABLE === hdrpRequested)
|
|
2194
|
+
);
|
|
2195
|
+
}
|
|
2190
2196
|
function resolveMaterialShaderBindingContract(source) {
|
|
2191
2197
|
const withoutComments = source.replace(/\/\*[\s\S]*?\*\//gu, "").replace(/\/\/.*$/gmu, "");
|
|
2192
2198
|
const groups = [...withoutComments.matchAll(/@group\s*\(\s*(\d+)\s*\)/gu)].map(
|
|
@@ -2874,11 +2880,31 @@ async function makeWebGPURenderer(internals) {
|
|
|
2874
2880
|
);
|
|
2875
2881
|
}
|
|
2876
2882
|
);
|
|
2877
|
-
const findStandardPbrEntry = () => {
|
|
2883
|
+
const findStandardPbrEntry = (variantSet) => {
|
|
2884
|
+
let standardEntry;
|
|
2878
2885
|
for (const entry of getShader().entries()) {
|
|
2879
|
-
if (entry.wgsl.includes("f_schlick"))
|
|
2886
|
+
if (entry.wgsl.includes("f_schlick")) {
|
|
2887
|
+
standardEntry = entry;
|
|
2888
|
+
break;
|
|
2889
|
+
}
|
|
2880
2890
|
}
|
|
2881
|
-
return void 0;
|
|
2891
|
+
if (standardEntry === void 0) return void 0;
|
|
2892
|
+
const pbrManifestEntry = [...getShader().materialShaderManifestEntries()].find(
|
|
2893
|
+
(entry) => entry.identifier === "forgeax::default-standard-pbr"
|
|
2894
|
+
);
|
|
2895
|
+
const noColorVariant = selectNoColorPbrVariant(
|
|
2896
|
+
pbrManifestEntry,
|
|
2897
|
+
internals.device.caps.storageBuffer,
|
|
2898
|
+
variantSet
|
|
2899
|
+
);
|
|
2900
|
+
if (noColorVariant !== void 0 && noColorVariant.composedWgsl !== standardEntry.wgsl) {
|
|
2901
|
+
return { ...standardEntry, wgsl: noColorVariant.composedWgsl };
|
|
2902
|
+
}
|
|
2903
|
+
const runtimePbr = getShader().findMaterialArtifact("forgeax::default-standard-pbr");
|
|
2904
|
+
if (runtimePbr.ok && runtimePbr.value.source !== standardEntry.wgsl) {
|
|
2905
|
+
return { ...standardEntry, wgsl: runtimePbr.value.source };
|
|
2906
|
+
}
|
|
2907
|
+
return standardEntry;
|
|
2882
2908
|
};
|
|
2883
2909
|
const buildPipelineContext = (variantSet, materialShaderId, meshAttributes, vertexLayout, vertexLayoutProjection) => {
|
|
2884
2910
|
const layoutKind = materialShaderId === SKIN_MATERIAL_SHADER_ID ? "pbr-skin" : materialShaderId === "forgeax::sprite" || materialShaderId === "forgeax::sprite-lit" ? "sprite-urp" : materialShaderId === "forgeax::default-unlit" ? "unlit-urp" : void 0;
|
|
@@ -3078,7 +3104,7 @@ async function makeWebGPURenderer(internals) {
|
|
|
3078
3104
|
vertexLayoutProjection
|
|
3079
3105
|
);
|
|
3080
3106
|
}
|
|
3081
|
-
const pbrEntry = findStandardPbrEntry();
|
|
3107
|
+
const pbrEntry = findStandardPbrEntry(effectiveVariantSet);
|
|
3082
3108
|
if (pbrEntry === void 0) return null;
|
|
3083
3109
|
return buildAndCachePipeline(
|
|
3084
3110
|
cacheKey,
|
|
@@ -7392,6 +7418,6 @@ async function runShimStep(fn, fallbackCode, expected, hint) {
|
|
|
7392
7418
|
}
|
|
7393
7419
|
}
|
|
7394
7420
|
|
|
7395
|
-
export { EngineEnvironmentError, GpuResourceStore, HealthListenerRegistry, LostListenerRegistry, RhiErrorListenerRegistry, SHADOW_PROBE_WGSL, assembleMaterialProjection, buildPipelineForMaterialShader, createEngineMetrics, createMaterialAssetService, createMeshSsboGrowController, createRenderer, createSkinPaletteAllocator, deriveRecoverable, deriveStorageBufferCeiling, loadRhiPack2 as loadRhiPack, resolveMaterialShaderBindingContract, resolveMaterialShaderVariantSet, resolveMaterialShaderVertexInputContract, selectHdrpPbrPrewarmVariants, selectPipelineLayoutForVariant };
|
|
7396
|
-
//# sourceMappingURL=chunk-
|
|
7397
|
-
//# sourceMappingURL=chunk-
|
|
7421
|
+
export { EngineEnvironmentError, GpuResourceStore, HealthListenerRegistry, LostListenerRegistry, RhiErrorListenerRegistry, SHADOW_PROBE_WGSL, assembleMaterialProjection, buildPipelineForMaterialShader, createEngineMetrics, createMaterialAssetService, createMeshSsboGrowController, createRenderer, createSkinPaletteAllocator, deriveRecoverable, deriveStorageBufferCeiling, loadRhiPack2 as loadRhiPack, resolveMaterialShaderBindingContract, resolveMaterialShaderVariantSet, resolveMaterialShaderVertexInputContract, selectHdrpPbrPrewarmVariants, selectNoColorPbrVariant, selectPipelineLayoutForVariant };
|
|
7422
|
+
//# sourceMappingURL=chunk-F2SIOCRM.mjs.map
|
|
7423
|
+
//# sourceMappingURL=chunk-F2SIOCRM.mjs.map
|