【Unity】頂点カラーをSceneビューで可視化する

f:id:halya_11:20180202004034p:plain:w300

下記の記事で頂点を可視化したので、次に頂点色を可視化してみます。

light11.hatenadiary.com

頂点カラーを可視化する

といっても、仕組みはほぼ前回の記事で出来上がっています。
変更点はシェーダの色に頂点カラーを適用するだけです。

Shader "MeshInfo"
{
    SubShader
    {
        Tags { "RenderType"="Opaque" "Queue"="Geometry"}

        Pass
        {
            ZWrite Off
            ZTest Always
            Blend SrcAlpha OneMinusSrcAlpha

            CGPROGRAM
           #pragma vertex vert
           #pragma fragment frag
           #pragma target 3.0

           #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                half3 normal : NORMAL;
                half4 color : COLOR;
            };

            struct v2f
            {
                float4 vertex : SV_POSITION;
                half size: PSIZE;
                half faceSign: TEXCOORD0;
                half4 color : COLOR;
            };

            half _PointSize;
            half _Alpha;
            float4x4 _TransformMatrix;
            
            v2f vert (appdata v)
            {
                v2f o;
                v.vertex = mul(_TransformMatrix, v.vertex);
                o.vertex = UnityObjectToClipPos(v.vertex);
                half3 viewDir = ObjSpaceViewDir(v.vertex);
                o.faceSign = dot(viewDir, v.normal);
                o.size = _PointSize;
                o.color = v.color;
                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target
            {
                half alpha = step(0, i.faceSign);
                half4 color = i.color;
                color.a = alpha * _Alpha;
                return color;
            }
            ENDCG
        }
    }
}

これで頂点カラーが表示されるようになりました。 今回は適当に頂点を着色したトーラスを使っています。

f:id:halya_11:20180202004034p:plain:w300