The library documents itself · Graphics
stzMaterialMaker
12 own methods · 4 forms written with extensions, listed under their method
the source: base/graphics/stzMaterialMaker.ring(opens in a new tab) · All classes · The area reference: Graphics
Under each method, its extensions (Q CS XT Z ZZ IB W U): bold and ticked, it exists; struck, it does not. The extensions and what they mean
Examples: 0 come from the library's tests; 2 were composed from each method's signature and run for this page, on a fresh object, for example o1 = new stzMaterialMaker() o1.TakesColor(:tint) o1.ForEachFragment('{ @out = tint * @lambert }'). 10 methods have none yet. Examples run on 2026-10-04 07:31 inside the library at commit 0e72e2e2c.
Method
Explanation, as the source carries it
init
(no comment in the source: the name reads as a sentence) initno extension
TakesColor
(no comment in the source: the name reads as a sentence) takes colorQCSXTZZZIBWU
composed example
o1 = new stzMaterialMaker()
o1.TakesColor(:tint)
o1.ForEachFragment('{ @out = tint * @lambert }')
o1.TakesColor(:accent)
? @@( o1.ColorNames() )
#--> [ "tint", "accent" ]composed from the signature, run for this pageTakesScalar
(no comment in the source: the name reads as a sentence) takes scalarQCSXTZZZIBWU
TakesTexture
A texture is a PICTURE the material reads, not a value it carries: declared here, bound to an image at SetMaterial time, and read in the body with sample(name, @uv). The sampler is never named, because a sampler is not a surface property.QCSXTZZZIBWU
ForEachFragment
(no comment in the source: the name reads as a sentence) for each fragmentQCSXTZZZIBWU
ColorNames
(no comment in the source: the name reads as a sentence) color namesno extension
ScalarNames
(no comment in the source: the name reads as a sentence) scalar namesno extension
TextureNames
(no comment in the source: the name reads as a sentence) texture namesno extension
Spec
The engine's spec format -- the declarations, collapsed. Exposed for transparency and for the guard.no extension
composed example
o1 = new stzMaterialMaker()
o1.TakesColor(:tint)
o1.ForEachFragment('{ @out = tint * @lambert }')
? o1.Spec()
#--> color tint
#--> body { @out = tint * @lambert }composed from the signature, run for this pageToWGSL
Transpile (engine-side) and cache. Raises with the engine's refusal message on a bad description -- the transpile is documented BY ITS OUTPUT, so nothing about the shader is hidden.no extension
ParamsFrom
The declared values, flattened the way the shader's struct expects: every colour as four numbers in declaration order, then every scalar. A missing binding RAISES by name -- a Haro hashlist answers 0 for an absent key, and a material silently shaded with black is worse than one that refuses.no extension
TexturesFrom
The declared TEXTURES as engine handles, in declaration order -- the order the shader's bindings were laid out in. Same refusal discipline as the values: a missing texture RAISES by name rather than binding handle 0, which would report as a panic at submit.no extension

