Unity1Week参加作品「ソード・フルスウィング」で使用したシェーダー達の使い方です
こちらのゲームでは以下のシェーダーを作成してます
・二値化シェーダー
・レトロゲーム風シェーダー
・グリッジシェーダー(今回は配布なし)
・スクロールトランジションシェーダー
全部URP(v12.1)に対応しているポストエフェクトです。ビルトインは気が向いたら配布します(勝手にビルトイン用に改変して使ってもらってもいいです)
スクロールトランジションシェーダーとそれ以外で使い方が異なります
スクロールトランジションシェーダー以外の使い方
二値化シェーダー、レトロゲーム風シェーダーの方。
最初にRender Dataに、「Add Render Feature」からRender Featureをつけておきます。
二値化シェーダーを使うときはTwo Tone Post Process Render Featureを、レトロゲーム風シェーダーを使うときはRetro Game Post Process Render Featureを追加します
追加したRender Featureのシェーダーのところに、シェーダーを設定します
Two Tone Post Process Render FeatureならTwoToneShaderを、
Retro Game Post Process Render FeatureならRetroGameShaderを設定
あとは普通にVolumeのAdd Overrideからエフェクトを追加してあげるだけです
スクロールトランジションシェーダーの使い方
こっちはちょっとめんどくさいかも
Volumeに追加してあげるまでは上二つと同じです。
最初にRender Dataに、「Add Render Feature」からScroll Transition Render Featureをつけて、シェーダーにScrollTransitionShaderを設定しておきます。
あとはVolumeに追加しておきます。
パラメーターについては後述…
このScrollTransitionPostProcessVolumeを取得して、SetメソッドとPlayメソッド以下のように読んであげると画面がくるくると切り替わります。
using System.Collections;
using UnityEngine;
using UnityEngine.Rendering;
using usagiMeteor.ScrollTransitionShader;
using usagiMeteor.ShaderUtility;
public class ScrollTest : MonoBehaviour
{
[SerializeField] private Volume _volume;
IEnumerator Start()
{
ScrollTransitionPostProcessVolume _scroll;
if (!_volume.profile.TryGet<ScrollTransitionPostProcessVolume>(out _scroll))
{
_scroll = _volume.profile.Add<ScrollTransitionPostProcessVolume>();
}
//カメラを移動する前に今の画面で停止させる
yield return StartCoroutine(_scroll.Set());
// カメラを切り替えたり移動させたり
Camera.main.transform.position = new Vector3(50, 3, 0);
//スクロールにかかる秒数とイージングを指定
StartCoroutine(_scroll.Play(1.5f,Easing.easeIn));
}
}
もし、Setメソッドを呼んだけどやっぱり切り替えをやめるなどの処理をしたかったらResetメソッドを呼んでください
二値化シェーダーのパラメーター
Is Tone
閾値で黒か白かに分けます。チェックを外すとただの白黒になります
Darkness
暗さを増します
Threadhold
どのくらい暗いと黒にするかを変えます
レトロゲームシェーダーのパラメーター
Filter
画面にかかる色
Resolution Coarseness
ドット絵っぽくします。低いほど粗い
スクロールトランジションシェーダーのパラメーター
Reverse
スクロールする方向を逆にします
Before Tex Scroll Num
画面切り替え前の画面を何回表示するか
After Tex Scroll Num
画面切り替え後の画面を何回表示するか
Vignette Power
周辺減光の強さ、なくてもいいかも
ちなみにソード・フルスウィングでは画面切り替えはなかったので、Before Tex Scroll Numを0にしていました