Onoty3D

Unityに関するメモとか

ステンドグラスシェーダーを作った

ステンドグラスシェーダーを作成しました。唐突に。

f:id:onoty3d:20190428163817p:plainもともとセルラーノイズってのをシェーダーで書いてみようと思ったのがキッカケで、その派生でボロノイ図を知り、それを見てたら「あ、これステンドグラスに使えるじゃん」と思って作った次第です。

作成したシェーダーはBOOTHで販売しております。

onotchi.booth.pm

任意のテクスチャを一枚用意していただくだけで、どれだけ網目を細分化するか等はパラメーターで設定できます。
シェーダーはUnlit系とStandard系の2種類用意しております。

中の処理としては
ボロノイ図の原理でUVを区分け
・各区画の色はボロノイ図の対象となる点での色をテクスチャから抽出
・区分けの境界をソーベルフィルタで線引き
といった感じです。
このあたりのキーワードで検索すると、結構記事がでてくるので、シェーダーが書ける人は自力で実装も可能だと思います。

また当初予定していなかったのですが、Standard Shaderベースで光の反射とかもそれっぽくやってみたらどうだろうという思いもでて、ノーマルマップの自動計算等も実装しています。
セルラーノイズのグラデーションをそのままハイトマップとして扱い、そのハイトマップからノーマルマップを算出しました。
ハイトマップからノーマルマップの算出はよくお世話になるesさんのブログ記事を参考にしました。

esprog.hatenablog.comこちらもぜひ参考にしてみてください。