Shader (PictureTessellationLit):
- Lighting parity with URP Lit: lightmaps, shadowmask/mixed, APV, DBuffer
decals, vertex additional lights, rendering layers, fragment fog
- UniversalGBuffer pass (with tessellation + graded albedo) so HTrace WSGI
composes correct GI instead of a cyan veil over pictures
- Skip GPU tessellation entirely when strength/displacement is 0
- Inspector ranges matched to builder (-3..3 bump, -10..10 tessellation)
Builder:
- Frame Thickness & Padding are now absolute meters (size-independent)
instead of fractions of the picture size
- Tooltip updates for the new default/range semantics
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Optional Picture Normal Map + Height Map fields on the per-frame material
instance (_BumpMap/_NORMALMAP keyword, _HeightMap; height doubles as
occlusion map when the material has none)
- Sliders: Normal Map Strength, Occlusion Strength, Tessellation Strength
(0-3, default 1), Occlusion Contrast (-1-3), Brightness (0-3)
- Picture Crop left/right/top/bottom via UV window remap; aspect follows
the cropped pixel dimensions
- Picture Subdivisions (1-64): picture surface as triangle grid for
tessellation displacement
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Assigned texture drives the picture material BaseMap via a per-frame
material instance (asset untouched, frames sharing a material stay
independent) and takes priority for aspect resolution. New default
picture material Frame Picture.mat wired in the script defaults.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Frame thickness, corner radius, padding, inner depth and picture depth
are now normalized factors (scale with Size, no dead clamp zones).
Picture aspect is computed inside-out so padding and frame thickness
no longer distort the image. New Frame Inner.mat as inner default.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace Width/Height with a single Size (longer side); the shorter side
follows the picture material's base map source-image aspect (editor-
resolved, serialized for builds, 1:1 fallback). Add Range attributes on
all frame parameters and default material references (new Frame.mat).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rebuild now runs once per frame via ExecuteAlways Update (OnValidate only
sets a dirty flag + QueuePlayerLoopUpdate), fixing inspector drag stutter
from stacked delayCalls. Adds automatic BoxCollider generation (4 frame
bars, opening slab, optional pedestal box for raised pictures) with an
ownership list so manual colliders stay untouched. Corner radius is
intentionally ignored for colliders.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>