Unity++blog.

UnityやC#とかについて学習したことを書いてます

Unity シェードプログラミングでステンドグラス風のテクスチャを作成する

今回はいつものサイトよりステンドグラス風のテクスチャを作成するシェードプログラミングを学習しました。

【Unityシェーダ入門】ステンドグラスのシェーダを作る - おもちゃラボ

 

左が元テクスチャで右が今回作成したShaderを適用したものです。

f:id:nabesi777:20181011114923j:plain

 

テクスチャはグーグルで拾ってきたものですが、元々ステンドグラスっぽいので画像選びに失敗した感があるのですが、とにかく右側の色の薄い部分はガラスっぽくなっています。

 

 

▶理屈としてはこんな感じです

 

テクスチャの色を取得

黒に近い場合は透明度1、それ以外は透明度を下げて半透明にする

しかし、テクスチャの色の取得はRGBAの情報なので、黒色かどうか判定が面倒

なのでテクスチャをグレースケール化(モノクロにする)

グレースケール化の計算式→grayscale = 0.3 * R + 0.6 * G + 0.1 * B

モノクロの明度によって透明度を変える

例)上計算式のgrayscaleの値が黒色付近(0.2以下)であれば透明度を1に、grayscale > 0.2であれば透明度を0.7にする(上記サイトより抜粋)

 

 コードです(サイトにいけばコピペできます)

f:id:nabesi777:20181011120102j:plain

 

 なるほど~