從一個影片檔到一份串流結構
每一個階段都是 repo 裡真實存在的腳本,每一個中間產物都在磁碟上、可以打開檢查。這條鏈裡沒有黑箱。
- 來源媒體一個 mp4。其餘一切由它推導而來。
- 影格、遮罩、骨架逐格抽取區域與運動結構。
- 時間平滑骨架跨影格平滑,讓相鄰狀態之間的運動不會抖動。
- S0 粗層紋理每一格的低頻結構。
- S1 帶號殘差修正層。因為無法重生,所以必須儲存。
- S2 係數頻率細節,以係數而非像素保存。
- 自適應語義網格L0/L1/L2 三種網格,20、42、110 個頂點,依品質與失真選擇。
- Registry 驅動的 bundle一個可部署目錄,runtime 與測試消費的是同一份。
P0–P4:降級到可檢查的東西
後端延遲初始化,失敗時降級而不是壞掉。啟動不了的後端會把自己的按鈕藏起來,而不是留下一個沒反應的控制項,runtime 則掉到下一條路徑。
P4
結構化 GPU 串流
Streamed textures, adaptive mesh, S0+S1+S2 on the GPU.
P3
程序化 WebGL
Shader reconstruction without the streamed asset package.
P2
結構化 CPU/Canvas
Same structure, drawn on a 2D canvas. Inspectable.
P1
Sprite Atlas 尋址
Pre-rendered states in an atlas.
P0
線性影片尋址
The baseline the whole project is arguing with.
怎麼驗證的
11 組測試涵蓋狀態儲存、dirty graph、光譜佈局的確定性、結構化管線、時間平滑、形變與殘差編解碼、GPU 網格路徑、串流與自適應 LOD。
視覺回歸會重新算出 golden 參考圖,並以**容差**比對而不是雜湊。逐位元組比對在這裡不可能成立:renderer 用的是平台 rasterizer,換一個 build 會畫出同一張圖但反鋸齒不同。實測的合法差異是 0.55% 的像素差異超過 24,平均色完全相同。容差設在那之上約四倍,並且用真的回歸驗證過 —— 位移六個像素、色相偏移十二度,兩個都會失敗。