氷シェーダや七色シェーダを作って遊ぶ
2020-06-19
(Updated : 2020-08-10)
URP の勉強用にシェーダを書いて遊んでいた時の記録。
(コードは公開用には整ってないので動画だけ…)
氷シェーダ
- リムライトと色味、スペキュラの調整で結構氷っぽく見える
- 透明なところはリムが一定値以下のところで
discard
してるだけ
ホログラム風?シェーダ
- 上記の氷シェーダの応用で違う見た目が作れないか試していたもの
- 頂点シェーダにパーリンノイズをかましてブルブルさせてみた。微妙。
七色ゲーミングシェーダ
- HSV(色相、彩度、明度)をずらす関数と法線ベクトルであれやこれやしたやつ
- 結構メタリック感が出ていて面白い
- HSV をずらす関数は定型化されているので調べれば出てくると思うが、こんな感じの実装:
// RGB を HSV 値でずらした色を返す
half3 shiftColor(half3 rgb, half3 hsv)
{
half3 color = half3(rgb);
float VSU = hsv.z * hsv.y * cos(hsv.x * 3.14159265 / 180);
float VSW = hsv.z * hsv.y * sin(hsv.x * 3.14159265 / 180);
color.x = (.299 * hsv.z + .701 * VSU + .168 * VSW) * rgb.x
+ (.587 * hsv.z - .587 * VSU + .330 * VSW) * rgb.y
+ (.114 * hsv.z - .114 * VSU - .497 * VSW) * rgb.z;
color.y = (.299 * hsv.z - .299 * VSU - .328 * VSW) * rgb.x
+ (.587 * hsv.z + .413 * VSU + .035 * VSW) * rgb.y
+ (.114 * hsv.z - .114 * VSU + .292 * VSW) * rgb.z;
color.z = (.299 * hsv.z - .300 * VSU + 1.25 * VSW) * rgb.x
+ (.587 * hsv.z - .588 * VSU - 1.05 * VSW) * rgb.y
+ (.114 * hsv.z + .886 * VSU - .203 * VSW) * rgb.z;
return color;
}
シェーダ楽しい!