シェーダでトランジション(ノイズ)

シェーダでトランジション(ノイズ)

 トランジションとは場面転換をする際に使用される演出効果のことです。このトランジションはグレースケールのルール画像からアルファ値を決定することで作成できます。この記事ではルール画像を使用せずに、シェーダによりアルファ値を決定し、UIのPanelにトランジション用のシェーダを設定したマテリアルをアタッチすることでトランジションを行います。このトランジションシェーダにシェーダでノイズ1シェーダでノイズ2(パーリンノイズ)シェーダでノイズ3(セルノイズ)で紹介したノイズを利用しました。

ブロックノイズ

 ブロックノイズを利用したトランジションです。ブロックノイズについてはここに掲載しています。

shader

 ブロックノイズを利用したトランジションのシェーダは以下の通りです。ブッロックノイズによって得られる値を利用し、アルファ値を決定しています。_Valueを大きくするとランダムな位置の四角い領域が透明になります。また、_Smoothingを大きくすると徐々に消えるようになります。_Smoothingの下限値が0ではありませんが、これはrandom(i_st, _Seed)=0でval=0、sm=0とした場合にc=0となるため、これを回避するために小さな値を下限値としています。さらに、_Valueの最大値が_Smoothingの値によって変わらないように処理をしています。

実行結果

 上記シェーダの実行結果は以下の通りです。scriptによって_Valueを変更しています。

また、以下の画像は_Smoothing=0.5のときの実行結果です。

パーリンノイズ

 パーリンノイズを利用したトランジションです。パーリンノイズについてはに掲載しています。

shader

 先ほどのブロックノイズを利用したトランジションシェーダのブロックノイズを求める箇所をパーリンノイズへ変更しています。画面は正方形ではないのでuv座標値をそのまま利用すると横に伸びてしまいます。そこで、_ScreenParamsによってアスペクト比を求め、uv座標値を調整しています。

実行結果

 上記シェーダの実行結果は以下の通りです。scriptによって_Valueを変更しています。

また、以下の画像は_Smoothing=0.5のときの実行結果です。

セルラーノイズ

 セルラーノイズを利用したトランジションです。 セルラー ノイズについてはここに掲載しています。

shader

  セルラーノイズを利用したトランジションのシェーダは以下の通りです。 セルラーノイズによって得られる値をアルファ値を求めるために使用しています。その他の部分はブロックノイズやパーリンノイズの場合と同様です。

実行結果

 上記シェーダの実行結果は以下の通りです。scriptによって_Valueを変更しています。

また、以下の画像は_Smoothing=0.5のときの実行結果です。

ボロノイ図

 ボロノイ図を利用したトランジションです。 ボロノイ図についてはここに掲載しています。

shader

  ボロノイ図をノイズを利用したトランジションのシェーダは以下の通りです。 ボロノイ図を利用して得られる値をアルファ値を求めるために使用しています。
その他の部分は以上のシェーダと同様です。

実行結果

 上記シェーダの実行結果は以下の通りです。 scriptによって_Valueを変更しています。

また、以下の画像は_Smoothing=0.5のときの実行結果です。