Shader Minifier
#Minification #GLSL #シェーダー #Demotool
https://github.com/laurentlb/Shader_Minifier
GLSL・HLSLのMinifier
LLB / Ctrl-Alt-Testがオーナー
Leviathan (framework)・Blossomなどのフレームワークをはじめ、多くの64k・4k等で利用されている
Crinklerと一緒に使われる
Webで動くデモもあるよ!
BlazorのWebAssemblyで動いているっぽい
https://ctrl-alt-test.fr/minifier/
できること
Ref: https://github.com/laurentlb/Shader_Minifier/blob/master/TRANSFORMATIONS.md
Whitespaceとコメントの削除
演算子の優先順位を考慮した括弧の除去
(x * x) * (x + 1) → x * x * (x + 1)
不要な波括弧の除去
リテラル数字の書き換え・事前計算
0.4 → .4
5*2 → 10
条件文の事前計算・三項演算子への変換
変数定義のマージ
int a = 1; int b; → int a = 1, b;
ベクトルの最適化
添字の統一
col.rgb → col.xyz
使う添字を --field-names で指定可能
コンストラクタ
vec3(1.0, 1.0, 1.0) → vec3(1.0)
インライン化
ある程度の自動インライン
--aggressive-inlining でより激しくインライン化
(超重要) i_ から始まる変数・関数を自動でインライン化
Dead Code Elimination
IQ's smoothstep trick
変数のリネーム