feat(web): wire Blender light shadow controls
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-08-30 18:56:28 +08:00
parent 8bc5d61b75
commit 4ce5581bc3
46 changed files with 2018 additions and 49 deletions

View File

@@ -256,6 +256,10 @@ export interface LightIR {
specularFactor?: number;
transmissionFactor?: number;
volumeFactor?: number;
attenuationDistance?: number;
shadowFilterRadius?: number;
shadowMaximumResolution?: number;
shadowJitterOverblur?: number;
exposure?: number;
temperature?: number;
useTemperature?: boolean;
@@ -1548,7 +1552,7 @@ export function parseSceneSnapshotIR(value: unknown): SceneSnapshotIR {
for (const field of ["energy", "radius", "spotAngle", "spotBlend", "areaShape", "areaSize", "areaSizeY", "sunAngle"]) {
requireNumber(light[field], `lights[${index}].${field}`);
}
for (const field of ["exposure", "temperature", "areaSpread", "diffuseFactor", "specularFactor", "transmissionFactor", "volumeFactor"] as const) if (light[field] !== undefined) requireNumber(light[field], `lights[${index}].${field}`);
for (const field of ["exposure", "temperature", "areaSpread", "diffuseFactor", "specularFactor", "transmissionFactor", "volumeFactor", "attenuationDistance", "shadowFilterRadius", "shadowMaximumResolution", "shadowJitterOverblur"] as const) if (light[field] !== undefined) requireNumber(light[field], `lights[${index}].${field}`);
for (const field of ["useTemperature", "castsShadow"] as const) if (light[field] !== undefined) requireBoolean(light[field], `lights[${index}].${field}`);
}
for (const [index, world] of (value.worlds as unknown[]).entries()) {