Unity ShaderとBitwise

オブジェクトをレンダ―するとき、一つ主には使わないデータ値、RGB「A」 がある。それを活用したい。

例えば、イメージ効果で、この部分だけをぼかすとかは、その部分のAを0.5にするとか。(前提はシーン内Aを使うシェーダーはない)

しかし、効果が増えると、一つの値は足りない。なんで、floatをbyteとして使おう。

 

例として、0~1のAを4ビットのデータを入れる。

10012は910、上限は15、つまり値を20に割って/かけて、Aにぶち込む。

全部のプロジェクトがつかえるように、cgincludeを使う。

Capture

これを(インストールフォルダー)Unity\Editor\Data\CGIncludesに入れればいい。

*実際に使うときは、#cginclude “UnityBitwise.cginc”をかけば、関数は使える。

使いかたはさまざまが、関数読めば一目瞭然。

 

シェーダーの例

Capture

イメージ効果の例

Capture

 

使えると嬉しい。では。

Posted on