feat(render3d): a bole that does not quake, leaves out of the lens, a light with a reach
layer_flutter's mask was the vertex's height alone, so on a ten metre aspen every part of the trunk above 1.2 m trembled with the leaves and the bole read as cloth. What separates a leaf from a bole is distance from the model's centre line, not height; the mask is radial now, and small plants keep the old one because a flower is all leaf. NEAR_FADE dithers tree foliage out inside arm's length of the camera, in the depth prepass, so the lit pass never sees those pixels and the equal-depth optimisation is untouched. gl_Position.w is the view depth, so it costs one varying and no uniform. Blades, cards and flowers are excluded - they live at the player's feet - and the shadow pass keeps every leaf. daylight_hand takes a reach in metres. The falloff was an inverse square windowed between 26 and 6 with both numbers hard-coded: two per cent of its own near field at ten metres, so a torch lit your boots. It is a gentle power out to the reach now. Measured in Maroon Lake, twice per side: the crown mask moves 1.7% of an aspen frame and nothing at all in the meadow under it; the near fade moves 7.1% of a first-person frame at a conifer and 0% where there is no foliage in the lens; the torch's reach lifts the lit ground 20 to 45% and leaves the sky bit-identical. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
a88aecb993
commit
18d23ca20d
8 changed files with 97 additions and 8 deletions
32
changes/leaves-light-and-the-bole.md
Normal file
32
changes/leaves-light-and-the-bole.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
bump: minor
|
||||
type: feat
|
||||
Three things a crown and a hand light were getting wrong.
|
||||
|
||||
**An aspen's trunk quaked with its leaves.** `layer_flutter`'s mask was the vertex's
|
||||
HEIGHT alone — anything more than 1.2 m up trembled — so on a ten metre aspen the whole
|
||||
bole moved, and a tree that is supposed to shiver read as a column of cloth. What
|
||||
separates a leaf from a bole is not height, it is distance from the model's own centre
|
||||
line: the leaves are out at the edge of the crown and the trunk is on the axis. The mask
|
||||
is radial now, and small plants keep the old one, because a flower is all leaf.
|
||||
|
||||
**Foliage in the camera's face.** A third-person camera walks into a crown and the branch
|
||||
between it and the body is an opaque wall a metre from the lens; in first person it is the
|
||||
whole screen. `#define NEAR_FADE` dithers tree foliage out inside arm's length of the
|
||||
camera — in the depth PREPASS, so the lit pass never sees those pixels either and the
|
||||
equal-depth optimisation is untouched. `gl_Position.w` is the view depth for a perspective
|
||||
projection, so it costs one varying and no uniform. Blades, cards and flowers are left
|
||||
alone on purpose: they live at the player's feet, they are always that close, and fading
|
||||
them opens a hole in the meadow. Nor is the BOLE ever faded: a trunk and its needle cards
|
||||
are one mesh drawn by one program, so the first cut dissolved the trunk into a dither
|
||||
pattern as you walked up to it - a solid tree you can see through reads as a fault, where
|
||||
a branch getting out of your way reads as the camera being polite. The mask is the same
|
||||
signal the quake uses. The shadow pass keeps every leaf, or a tree would stop shading the
|
||||
ground it stands on as you walked up to it.
|
||||
|
||||
**A hand light had the reach of a candle, whatever it was meant to be.** `handLight`'s
|
||||
falloff was an inverse square windowed off between 26 and 6 metres, with both numbers
|
||||
hard-coded: two per cent of its own near field by ten metres out, so carrying a torch at
|
||||
night lit your boots and nothing else. `daylight_hand` takes a `reach` in metres now and
|
||||
the falloff is a gentle power out to it — about nine tenths at a metre, half at half the
|
||||
reach, a tenth at nine tenths of it, nothing past it. A pool of light with a gradient in
|
||||
it rather than a hotspot with a cliff.
|
||||
Loading…
Add table
Add a link
Reference in a new issue