Expand description
linear-gradient のラスタライズ補助(LUT の段数決定と軸判定)。
仕様は spec/gradient_raster.md。
§なぜ必要か
実測で描画 1 フレーム 300 tick のうち 112 tick(37%) が
グラデーションだった。現行実装は 1 ピクセルごとに
sample_gradient_stops(ストップ配列の線形走査+4 チャンネルの
浮動小数補間)を呼んでおり、924×600 なら 55 万回になる。
t から色への写像はピクセル位置に依存しないので、
軸方向の長さぶんの LUT を先に作れば呼び出し回数は length 回で済む。
§不変条件(G-1〜G-4)
- G-1: 軸平行(0/90/180/270deg)は現行と厳密に同一の出力
- G-2: 斜めのずれは軸方向 1 段(1 ピクセル相当)以内
- G-3: ストップ 0 個/1 個の挙動は現行のまま
- G-4: アルファはピクセル単位で合成(LUT には合成前の色を入れる)
Enums§
- Axis
- グラデーション軸の向き。
Constants§
Functions§
- classify_
axis dx,dyから軸平行かどうかを判定する。- lut_
index t(0.0〜1.0 想定)を LUT の添字へ変換する。- lut_
size - 射影長
length(ピクセル)から LUT の段数を決める。