テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル


log

2010.10.18 考察:HLSLの少し役立つ計算式

今回はHLSLでよく使用すると思われる(?)計算式をまとめてみることにしました。
一部以前紹介した式と同じものがありますが、まとめ編ということでご勘弁を苦笑。

・xを1.0以上の場合は0.0にループ丸めしたいとき
 x = frac(x);

・x(>0)のa以下の範囲をb倍する
 x *= b * step(a,x);
・x(>0)のa以下の範囲を滑らかにb倍する
 x *= b * saturate(a-x)/a;

・x(>0)のa以上の範囲をb倍する
 x *= b * step(x,a);
・x(>0)のa以上の範囲を滑らかにb倍する
 x *= b * saturate(x-a)/(1-a);

・ブールbによる値切り替えb ? z=c : z=dをしたいとき
 z = b*c + (1-b)*d;
・ブール演算(等価)a == b ? z=1 : z=0をしたいとき
 z = step(a,b) * step(-a,-b);

・x(RGBA)をモノクロにする
 x = dot(float4(0.299f,0.587f,0.114f,0.0f),x);
・xをaでスクリーン加算する
 x = x + a - x * a;
・xをaでオーバーレイ合成する
 float Switch = round(a);
 x = x * a*2 * (1-Switch)
 + (1 - (1-x) * (1-a)*2 ) * Switch;

comment