Softanza
StartFrançais
Softanza
The library documents itself · Graphics

stzMaterialGraph

20 own methods · 5 forms written with extensions, listed under their method

the source: base/graphics/stzMaterialGraph.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; 6 were composed from each method's signature and run for this page, on a fresh object, for example o1 = new stzMaterialGraph() o1.TakesColor(:warm) o1.TakesColor(:cool) o1.TakesScalar(:sharp) o1.AddNode(:final, [ :Op = :Mix, :In = [ :shaded, :warm, :rim ] ]) o1.AddNode(:rim, [ :Op = :Fresnel, :In = [ :sharp ] ]) o1.AddNode(:shaded, [ :Op = :Multiply, :In = [ :cool, :lit ] ]) o1.AddNode(:lit, [ :Op = :Lit, :In = [ 0.25 ] ]) o1.Emits(:final) o1.Compile(). 14 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
what the material takes from outsideQCSXTZZZIBWU
TakesScalar
(no comment in the source: the name reads as a sentence) takes scalarQCSXTZZZIBWU
TakesTexture
(no comment in the source: the name reads as a sentence) takes textureQCSXTZZZIBWU
AddNode
declaring the graph ------------------------------------------------- paSpec: [ :Op = :Mix, :In = [ ... ] ] An input is a NODE name, a declared colour/scalar/texture name, a builtin written "@normal.y", or a plain NUMBER.QCSXTZZZIBWU
Emits
The node whose value becomes @out.QCSXTZZZIBWU
NodeCount
(no comment in the source: the name reads as a sentence) node count
composed example
o1 = new stzMaterialGraph()
o1.TakesColor(:warm)
o1.TakesColor(:cool)
o1.TakesScalar(:sharp)
o1.AddNode(:final, [ :Op = :Mix, :In = [ :shaded, :warm, :rim ] ])
o1.AddNode(:rim, [ :Op = :Fresnel, :In = [ :sharp ] ])
o1.AddNode(:shaded, [ :Op = :Multiply, :In = [ :cool, :lit ] ])
o1.AddNode(:lit, [ :Op = :Lit, :In = [ 0.25 ] ])
o1.Emits(:final)
o1.Compile()
? o1.NodeCount()
#--> 4
composed from the signature, run for this page
no extension
OutputNode
(no comment in the source: the name reads as a sentence) output node
composed example
o1 = new stzMaterialGraph()
o1.TakesColor(:warm)
o1.TakesColor(:cool)
o1.TakesScalar(:sharp)
o1.AddNode(:final, [ :Op = :Mix, :In = [ :shaded, :warm, :rim ] ])
o1.AddNode(:rim, [ :Op = :Fresnel, :In = [ :sharp ] ])
o1.AddNode(:shaded, [ :Op = :Multiply, :In = [ :cool, :lit ] ])
o1.AddNode(:lit, [ :Op = :Lit, :In = [ 0.25 ] ])
o1.Emits(:final)
o1.Compile()
? o1.OutputNode()
#--> final
composed from the signature, run for this page
no extension
Compile
compilingno extension
Order
(no comment in the source: the name reads as a sentence) orderno extension
Uses
[ nodeName, nConsumers ] -- how many nodes read each one.
composed example
o1 = new stzMaterialGraph()
o1.TakesColor(:warm)
o1.TakesColor(:cool)
o1.TakesScalar(:sharp)
o1.AddNode(:final, [ :Op = :Mix, :In = [ :shaded, :warm, :rim ] ])
o1.AddNode(:rim, [ :Op = :Fresnel, :In = [ :sharp ] ])
o1.AddNode(:shaded, [ :Op = :Multiply, :In = [ :cool, :lit ] ])
o1.AddNode(:lit, [ :Op = :Lit, :In = [ 0.25 ] ])
o1.Emits(:final)
o1.Compile()
? @@( o1.Uses() )
#--> [ [ "final", 0 ], [ "rim", 1 ], [ "shaded", 1 ], [ "lit", 1 ] ]
composed from the signature, run for this page
no extension
ReuseSaved
How many `let` bindings the emission SAVED over expanding the graph as a tree: every extra consumer of a node is a subtree not re-emitted.no extension
Affects
Reachability, answered by the same stzGraph the rest of the plane uses. Affects() lists them, ImpactOf() counts them -- the house convention, where ImpactOf is a NUMBER and ReachableFrom is a LIST that includes the node itself.
composed example
o1 = new stzMaterialGraph()
o1.TakesColor(:warm)
o1.TakesColor(:cool)
o1.TakesScalar(:sharp)
o1.AddNode(:final, [ :Op = :Mix, :In = [ :shaded, :warm, :rim ] ])
o1.AddNode(:rim, [ :Op = :Fresnel, :In = [ :sharp ] ])
o1.AddNode(:shaded, [ :Op = :Multiply, :In = [ :cool, :lit ] ])
o1.AddNode(:lit, [ :Op = :Lit, :In = [ 0.25 ] ])
o1.Emits(:final)
o1.Compile()
? @@( o1.Affects(:rim) )
#--> [ "final" ]
composed from the signature, run for this page
no extension
ImpactOf
(no comment in the source: the name reads as a sentence) impact of
composed example
o1 = new stzMaterialGraph()
o1.TakesColor(:warm)
o1.TakesColor(:cool)
o1.TakesScalar(:sharp)
o1.AddNode(:final, [ :Op = :Mix, :In = [ :shaded, :warm, :rim ] ])
o1.AddNode(:rim, [ :Op = :Fresnel, :In = [ :sharp ] ])
o1.AddNode(:shaded, [ :Op = :Multiply, :In = [ :cool, :lit ] ])
o1.AddNode(:lit, [ :Op = :Lit, :In = [ 0.25 ] ])
o1.Emits(:final)
o1.Compile()
? o1.ImpactOf(:rim)
#--> 1
composed from the signature, run for this page
no extension
Findings
the proofsno extension
IsSound
SOUND IS NO ERROR -- the house's one answer, as in stzFrameGraph, and for the same reason: the findings are NAMED now, so the report that ingests them can read a severity at all.
composed example
o1 = new stzMaterialGraph()
o1.TakesColor(:warm)
o1.TakesColor(:cool)
o1.TakesScalar(:sharp)
o1.AddNode(:final, [ :Op = :Mix, :In = [ :shaded, :warm, :rim ] ])
o1.AddNode(:rim, [ :Op = :Fresnel, :In = [ :sharp ] ])
o1.AddNode(:shaded, [ :Op = :Multiply, :In = [ :cool, :lit ] ])
o1.AddNode(:lit, [ :Op = :Lit, :In = [ 0.25 ] ])
o1.Emits(:final)
o1.Compile()
? o1.IsSound()
#--> 1
composed from the signature, run for this page
no extension
Report
(no comment in the source: the name reads as a sentence) reportno extension
ToW
emitting ------------------------------------------------------------ The material-language BODY, in the derived order. This is the artefact: a graph that emitted text you can read is a graph you can debug.no extension
ToMaterial
The material itself, ready for stzScene.SetMaterial.no extension
ToWGSL
(no comment in the source: the name reads as a sentence) to wgslno extension