一個狀態向量、五層骨架、三段光譜
這套模型存在的目的,是讓一個對象可以被「時間」以外的東西定址。每一層持有不同種類的不變性,因此一個改動可以被施加在它真正該在的層級上。
K0–K4:嵌套骨架
分層是為了讓「運動的改動」不可能無聲地改掉身份。K0 在一個 session 內刻意保持不可變 —— runtime 有一個鎖定它的開關。
K0
身份與拓樸
讓這個對象之所以是這個對象的東西。它不動。
K1
運動與形變
所有會動的東西,疊在 K0 上而不是取代它。
K2
輪廓、遮罩與邊界
一個區域在哪裡結束、下一個從哪裡開始。
K3
語義區域與粗層視覺
各自持有細節預算的區域。
K4
光譜、殘差與高頻
被重生而不是被儲存的細節。
S0–S2:光譜分解
這個切分是預算決策,不是美學決策。壓力之下 runtime 最先丟掉 S2,因為 S2 是「缺席代價最小且無法復原的部分最少」的那一段。
S0
粗層色塊與低頻結構
在任何品質等級下都會留存的結構。
S1
帶號殘差紋理
讓 S0 逼近來源的修正量。這是必須被保留的部分。
S2
頻率細節調制
可以被合成的細節。丟掉它損失的是銳利度,不是身份。
嵌套區域
區域不是一個扁平清單。一張臉包含眼睛與嘴巴;每一個都持有自己的細節預算與 dirty 狀態。當某一軸改變,dirty graph 會解算出受影響的區域與它們的下游閉包 —— 只有那些會被重建。
這正是「局部重建」得以成立的原因。沒有區域所有權,任何改動都是整格改動,那結構相對於一個影片檔就什麼也沒買到。
Dirty 傳播
每一個軸都宣告它會使哪些節點失效。引擎解算遞移閉包,並且只重建那一組。實機 runtime 的 inspector 會逐格顯示這件事:哪些節點變 dirty、哪些表面被重建、花了多久。