# `ShadingValue`

> 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 { ShadingValue } from '@holostep-configurators/runtime-client/contract';` · labs, `@experimental` · since 2.0.0 · section 20. Labs

What [`Shading.set`](Shading.set.md) takes for a uniform of type `T`: a number for 'float', a [`Point2`](Point2.md) for
'vector2', a [`Point3`](Point3.md) for 'vector3', a [`ColorValue`](ColorValue.md) or linear components for 'color3', and for
'texture' the image's URL or `{ url }` (the graph places it: the 'image' node's `texcoord` input).

## Declaration

```ts
export type ShadingValue<T extends ShadingUniformType> = T extends 'float' ? number : T extends 'vector2' ? Point2 : T extends 'vector3' ? Point3 : T extends 'color3' ? ColorValue | Point3 : string | {
  url: string;
};
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `ShadingValue` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | labs (`@experimental` at a stable path, reached through `has()` or `supports()`): it graduates when a second app uses it |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
