ShadowSpec ​

Contract 2.0.0 · package sha256 a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e · generated from configurator-runtime.d.ts by services/onsite-scripter/scripts/build-contract-docs.mjs; edit the source, not this file.

Type · import type { ShadowSpec } from '@holostep-configurators/runtime-client/contract'; · stable · since 2.0.0 · section 7. Collections and shapes

The runtime owns the shadow map and its filter per quality tier (info().renderer.tier): high 2048 px, medium 1024 px, low 1024 px with a tighter filter (today's live tiers). No tier drops the shadow. The filter and bias also follow the receivers. While a part of role 'product' receives this shadow, the filter narrows to about 3 shadow-map texels, so on a 1024 px map a lit face that receives it shows no screen-fixed self-shadow grain and the floor no smeared blotch; with only the ground and scenery receiving, it stays at 14 texels, today's soft default. A scene model's parts receive only through a receive: true rule (PartState.shadows), so with no such rule and no receiving product item the base stays 14. softness scales that base: the filter radius is max(1, base × softness / 0.3) shadow-map texels, so the default 0.3 is the base and 0 the hardest the tier draws; the low tier's tighter filter applies on top. A tier or receiver change re-applies them; apps write no tier or filter code.

Declaration ​

ts
export type ShadowSpec = boolean | {
  softness?: number;
  strength?: number;
  thinParts?: boolean;
  covers?: Query;
};

Generic-API test (spec 3.1) ​

Rule Result
1. Neutral name pass: ShadowSpec names no product
2. A precedent pass: Unity Light.shadows (row K27); Babylon.js ShadowGenerator (row K27)
3. Two apps, or labs pass: 10 apps (ledger: app-378d190f1b, app-4f16d2f6da, app-510d750508, app-59c5b5751e, app-ceb4eccc72, app-fc07850558, app-fc306ec3dc; fleet cross-check: app-04c2774145, app-4762caacdc, app-4f16d2f6da, app-59c5b5751e, app-ceb4eccc72, app-e61a0b42ad, app-fc306ec3dc)
4. The cheaper fix first decided per need in Appendix B: rows K27 at tier stable (a member only where no rule, data, asset or app code serves the need)