シェーダーのデバッグ用の値視覚化関数の作成 - Yumuru/YuzuServer_ShaderWiki GitHub Wiki
座標の視覚化じゃなくて値の視覚化
色は自由に変えてよい。
float4 debug_value(float v) {
float d = -.01 + abs(-.5+abs(-.5+frac(v*10.)));
float ll = d <= 0 ? 1: 0;
// プラスの値の色
float3 pc = float3(1., 0., 1.);
// マイナスの値の色
float3 mc = float3(0, 1, 1);
float cl = frac(v*2.)*.5 + frac(v*10.)*.5;
float3 col = pc * (v>=0) * cl + mc * (v<0) * (1-cl);
col *= .5;
//col = max(col, ll); // 境界の白線。(追記:いらない。)
return float4(col, 1);
}
次は画像の中心からの距離を可視化した例
0.1間隔の白い等高線(追記:いらない)と0.1間隔と0.5間隔の色のグラデーションがある。
value = length(x);
次は -0.25 + 中心からの距離 を可視化
紫色がプラス、水色がマイナス。
len = 中心からの距離
abs(-0.25 + len)
ここで、absは絶対値をとる関数
-0.1 + abs(-0.25 + len)
abs(-0.1 + abs(-0.25 + len))
0.01 / abs(-0.1 + abs(-0.25 + len))
上の値をそのまま出力するとこうなる。