luvcraft/quantities.lisp
A material's own micro-surface height, retained in the generated normal atlas alongside the unit normal derived from it.
The normal atlas stores a tangent-space unit normal in unsigned texture channels. Sampling produces this encoded control value; the block shader recentres it before placing it in the face's world-space tangent frame.
Per-face edge shaping: what the mesher knows about a block face's four in-plane boundaries. Signed, because a concave edge and a convex one are opposite shapings of the same surface rather than different amounts of one.
An animal is measured in the same lattice as the player it shares the world with, but its own dimensions and gait are its own quantities: a turtle's walking speed is not a slow player's.
The sky's own clock: a bounded elapsed time the cloud deck drifts with.
It is a point on a wrapped timeline rather than a duration measured
between two events, which is why it is not :frame-duration.
The software cursor's own design grid: an offset from the pointer hotspot measured in the units the arrow outline is drawn in, which the vertex stage scales into framebuffer pixels.
Units and quantities the knobs (KNOBS.LISP) present values in. A knob's unit is the same vocabulary the arithmetic checks, so the metabar prints the unit the shader would have typed.
The render target's extent in pixels, carried in the frame uniform so a vertex stage can size a pixel (the world text's dilation).
What an embodied agent's figure measures. A gnome is laid out in his own upright frame -- feet at zero, hat tip near one and three quarters -- and the lengths in that layout are cells like any other world length. The proportions beside them are the dimensionless ones: how far apart his eyes are set on his head, how much colour is in his cheeks.
What the reworked sky and surface materials measure. Cloud cover and star and moon radiance are sky facts; detail, roughness, and bounce are facts about a surface's micro-structure and the light it gathers from everything that is not the sun. The grading pair at the end are the two display controls the filmic curve leaves to art direction.
(name &key dimension parent)(name &key kind components non-negative-p
(character nil character-supplied-p))Define quantity NAME and any homogeneous COMPONENTS as members of KIND. NON-NEGATIVE-P declares a non-negative amount and defaults its character to :ABSOLUTE. CHARACTER may state :POINT, :ABSOLUTE, or :DIFFERENCE explicitly. Components inherit both.
(name &rest options)Division of two represented quantities.
Semantic quantities shared by luvcraft's CPU and GPU arithmetic.
These definitions describe the block-world domain, not an execution backend. Their EQL methods are available after loading :LUV/LUVCRAFT/QUANTITIES without loading the shader or SPIR-V systems.