はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】ShaderGraphでゲームボーイ風の色合いを作ってみる

はじめに

今回はShaderGraphを使ってゲームボーイ風の色合いを作ってみる記事になります!

先日こんなツイートをしてみました。

この色合いに注目してみていきたいと思います。

仕組みについて

ざっくりと調べたところ、ゲームボーイは画面を4色で表現しているみたいです(もしかしたら間違っているかも)。

というわけで色分けをしなければならないのですが、そこで用いるのは前回の記事で紹介したグレースケールです。
www.hanachiru-blog.com

グレースケールにより色(RGB)から色の濃淡の明暗(0~1)に変換し、0~0.250.25~0.500.50~0.750.75~1にそれぞれ色を割り当てます。

f:id:hanaaaaaachiru:20191210203145p:plain

ShaderGraphで表現する

さきほどの仕組みをシェーダーグラフのノードで表現してみます。

グレースケールについては前回の記事に書いたので、是非そちらを参照してみてください。
www.hanachiru-blog.com

グレースケールのノードはこちら↓↓
f:id:hanaaaaaachiru:20191210203817p:plain

次にグレースケールが0~0.250.25~0.500.50~0.750.75~1の箇所だけ抽出します。

そのためにstepノードを用いましょう。

stepノードとは、Edgeに入力された値以上の時は1,それ以外は0を出力するノードのことです。

f:id:hanaaaaaachiru:20191210204859p:plain

これを使って以下のようなノードを組んでみてください。

f:id:hanaaaaaachiru:20191210210014p:plain

さいごに

最初に貼ったツイッターの奴は、これらのノードにテクスチャを動的にカメラが描画したものに変えて、モザイクをかければできます。

暇があれば詳細を書きたいと思います。

では。