投稿者 tel | 2015年6月10日

Unityでマテリアルからカリングモードを変える

Unityでポリゴンのカリングモードを設定するにはシェーダファイル(.shader)に Cull を書く必要がある。
例えば、エフェクトなどで両面表示にしたい場合は Cull Off にする。
http://docs.unity3d.com/ja/current/Manual/SL-Pass.html

同じシェーダだけどカリングモードだけ表面表示と両面表示で分けたい場合、シェーダを2つ作るのではなく、
マテリアルのプロパティから変更できるようにする。

シェーダのプロパティにカリング用のモードの値を設定してCullに[]つきで設定する。

Cull [_Cull]

プロパティの数値をリストで設定できるようにする。(実際はfloatの値になっているみたい)
http://docs.unity3d.com/ja/current/ScriptReference/MaterialPropertyDrawer.html

実際に設定したシェーダのサンプル。

Shader "Custom/Vlit Textured Shader"
{
    Properties {
        _MainTex ("Texture", 2D) = "white" {}
        _Color ("Color", Color) = (1,1,1,1)
        [KeywordEnum(None, Front, Back)] _Cull("Culling", Int) = 2
    }
    SubShader {
        Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
        Lighting Off
        Cull [_Cull]
        ZTest Always ZWrite Off Fog { Mode Off }
        Blend SrcAlpha OneMinusSrcAlpha
        Pass {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma fragmentoption ARB_precision_hint_fastest
            #include "UnityCG.cginc"

            struct appdata_t {
                float4 vertex : POSITION;
                fixed4 color : COLOR;
                float2 texcoord : TEXCOORD0;
            };

            struct v2f {
                float4 vertex : POSITION;
                fixed4 color : COLOR;
                float2 texcoord : TEXCOORD0;
            };

            sampler2D _MainTex;
            uniform float4 _MainTex_ST;
            uniform fixed4 _Color;

            v2f vert (appdata_t v)
            {
                v2f o;
                o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
                o.color = v.color * _Color;
                o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
                return o;
            }

            fixed4 frag (v2f i) : COLOR
            {
                fixed4 col = i.color * tex2D(_MainTex, i.texcoord);
                return col;
            }
            ENDCG
        }
    }
}

cull_mode_ss

マテリアルからドロップダウンリストで選択できるようになった。


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。