Unity Days ときどき blender

Unity や VR/AR に関すること。たまにblender。

Shader 勉強メモ 「定義済値と組み込み関数」

前回まででシェーダーの扱いがなんとなくわかってきたので、次のサンプルをやる前に少し遊びます。 UnityのシェーダーはHLSLの組み込み関数を利用でき、Unity独自の定義済みの値も使えます。

組み込み関数 (DirectX HLSL)

[Unity] シェーダで使える定義済値 - Qiita

これらを使って、グニャーと変形させるシェーダーを作りました。前回のものに二行加えただけです。

Shader "Tutorial/DisplayNormalTransform"
{
    SubShader
    {
        Pass{

        CGPROGRAM

        #pragma vertex vert
        #pragma fragment frag
        #include "UnityCG.cginc"

        struct v2f {
            float4 pos : SV_POSITION;
            fixed3 color : COLOR0;
        };

        v2f vert(appdata_base v) {
            v2f o;
            v.vertex.x *= 1 + pow(sin(_CosTime*v.vertex.y), 2);    // 追加
            v.vertex.z *= 1 + pow(sin(_CosTime*v.vertex.y), 2);    // 追加
            o.pos = UnityObjectToClipPos(v.vertex);
            o.color = v.normal * 0.5 + 0.5;
            return o;
        }

        fixed4 frag(v2f i) : SV_Target{
            return fixed4(i.color,1);
        }
        ENDCG
        }
    }
}