うにてぃブログ

UnityやUnreal Engineの記事を書いていきます

Shader

【Unity】Z-Depth が取得できないことがある

カメラの Z-Depth を利用する Shader を記述していると一部オブジェクトで Z-Depthが取得できないことがあった 調べてみると Unlit Shader の場合は Z-Depth が取得できないようでした 理由も調査したのですが、詳しい理由はわかりませんでした・・・ 対応 …

【Unity】vert_img を使った 頂点処理の記述を省略したシェーダー

UnityCG.cginc 内に vert_img という頂点処理用のメソッドが用意されているので 頂点とuvしか利用しない場合こちらを利用したほうが手軽で行数も少なくなる struct appdata_img { float4 vertex : POSITION; half2 texcoord : TEXCOORD0; }; struct v2f_img …

【Unity】ライティングが無効な Surface Shader

Surface Shader でライトを無効にしたいことがあり、作成 左側がライトが有効なもので、左側がライトが無効なものです Shader "Custom/UnlitSurf" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" }…

【Unity】どうぶつの森のような曲がった世界を作る

どうぶつの森のような曲がった世界を Unity で再現してみたかったのでやってみます あつまれ どうぶつの森 | Nintendo Switch | 任天堂 計算式 ある点から進むにつれて頂点の座標を下図グラフのように下げてやれば 同じようにできるはずなので、これをもとに…

【Unity】セピア シェーダー

画像のセピア色への変換(備忘録) 上記記事を参考にポストエフェクトを利用して セピア に変換してみました Shader "Unlit/Sepia" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGP…

【Unity】モザイク シェーダー

SizeXとSizeYを調整することで縦横のモザイクサイズを変更できます 上と左が0.5ずれているのを直したいが直し方が分からなかったため、いつか直します Shader "Unlit/Pixelation" { Properties { [NoScaleOffset] _MainTex ("Main Tex", 2D) = "white" {} _S…

【Unity】グレースケール シェーダー

グレースケール画像のうんちく - Qiita 上記の記事より 「NTSC係数」を利用してグレースケール変換をすることで 下図のようにグレースケールに変換できます ※ポストエフェクト 変換式は以下の通りです col.r * 0.298912 + col.g * 0.586611 + col.b * 0.1144…

【Unity】ShaderLab 条件式置き換え メモ

条件式を if 文を使わないで書く処理をメモしておきます ※define 形式です x >= y #define GREATER_EQUAL(x, y) step(y, x) x <= y #define LESS_EQUAL(x, y) step(x, y) x > y #define GREATER(x, y) 1.0 - step(y, x) x < y #define LESS(x, y) 1.0 - step…

【Unity】RenderType が Opaque の シェーダに アルファ 0を適応する

Opaque のシェーダ に対して アルファを入れても無視されてしまう fixed4 frag (v2f i) : SV_Target { if (i.uv.x < 0.2 || i.uv.x > 0.8 || i.uv.y < 0.2 || i.uv.y > 0.8) { return fixed4(0, 0, 0, 1); } return fixed4(1, 1, 1, 0); } clip を利用するこ…

【Unity】パーリンノイズを使った Dissolve Shader

こちらの記事 nn-hokuson.hatenablog.com を参考にパーリンノイズを利用し Dissovle シェーダーを作成してみました ノイズの値と _Threshold の値を見て そこの ahpha を変えているだけの簡単なシェーダーです Shader "Unlit/Dissolve" { Properties { [NoSc…

【Unity】BaseMeshEffect で UIVertex の color, position, uv0 以外を利用する方法

BaseMeshEffect を利用して Shader側にパラメータを渡すために 下記コードのように uv1 を利用しようとしたがパラメータが渡されない public override void ModifyMesh(VertexHelper vh) { var vertexList = new List<UIVertex>(); vh.GetUIVertexStream(vertexList); </uivertex>…

【Unity】テクスチャを UV スクロールする

テクスチャを UV スクロールする方法として * Shader を使う * スクリプトを使う の2種類がある Shader で UV スクロールしてる記事はあったが、スクリプトで UVスクロールしてる記事は見かけなかった Shader でUVスクロール GPU を利用して UVスクロールを…

【Unity】Shader を用いて 画像を白黒だけで表現する

キャラの輪郭を表示させたり、画像を見せたいけど詳しく見せたく無いから 二色で塗りつぶしたりしたいときがあると思うので、それの対応 正しい名称が分からなかったのでざっくりとした表現 処理 各色味を計算してrgb値によって色を振り分けている fixed tot…

【Unity】Grid Shader

Shader でグリッドを表示させる方法について考える 画像を n分割する グリッドを作成する前に 画像を n分割する方法を考える 画像を分割するためには frac 関数を利用する frac 関数は「小数値の小数部分を返す」関数なので uv に 5を掛けた場合、下図のよう…

【Unity】Splatoon で利用されているような波ゲージ を Shader を用いて作る

静止画ですがゲージの部分が波のように揺れている表現を作ってみます 波 波のような結果を出すものとして sin波とcos波 があるのでこちらを利用する Shader で利用する場合はこれに _Time を食わせることで -1 ~ 1 の間を行き来させることができる 左右に動…

【Unity】Unlit Shader でも 影出したい!

Directional Light を複数置いて Culling Mask で制御するのが面倒な時などに Unlit Shader でも 光の向きを指定したい場合があります。 法線との内積の処理で指定したXYZを利用しているだけで特に特殊な処理はしていません Shader Shader "Custom/Unlit/Dir…

【Unity】画像の HSV 変換シェーダー

シェーダーを用いて色の加算・乗算は容易にできるがHSV変換をする場合変換用のメソッドを容易してやる必要があるため こちらにシェーダをメモ HSVのカラーシフトの式はこちらを参考にしました HSV Shader with Alpha - Unity Answers シェーダー Shader "Cus…

【Unity】オブジェクトの陰色を変更する

オブジェクトの影色を変更する記事はあったが オブジェクトの陰色を変更している記事を見かけなかったため、 調べて色を変更できるようになったのでまとめる 陰とはオブジェクトの光の当たってない部分のことである Vertexだとライトの計算を時前でやる必要…