質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.58%

ToonLitシェーダでテクスチャの透過がされない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,862

lamp

score 31

Unity標準のToon/Litシェーダを改変したものを使っているのですが
テクスチャに使っているpng画像のアルファ値が反映されなくなってしまいました。

どうしたら良いでしょうか。

Shader "ToonLitRemake" {
    Properties {
        _Color ("Main Color", Color) = (0.5,0.5,0.5,1)
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _Ramp ("Toon Ramp (RGB)", 2D) = "gray" {} 
    }

    SubShader {
        Tags { "IgnoreProjector"="True"  "RenderType" = "Transparent" }
        Blend SrcAlpha OneMinusSrcAlpha
        LOD 200
    Pass
        {
            ZWrite ON
            ColorMask 0

        }

    Pass{
            Name "BASE"
            //Cull Off

    }

        CGPROGRAM
        #pragma surface surf ToonRamp

        sampler2D _Ramp;

        // custom lighting function that uses a texture ramp based
        // on angle between light direction and normal
        #pragma lighting ToonRamp exclude_path:prepass
        inline half4 LightingToonRamp (SurfaceOutput s, half3 lightDir, half atten)
        {
            #ifndef USING_DIRECTIONAL_LIGHT
            lightDir = normalize(lightDir);
            #endif

            half d = dot (s.Normal, lightDir)*0.5 + 0.5;
            half3 ramp = tex2D (_Ramp, float2(d,d)).rgb;

            half4 c;
            c.rgb = s.Albedo * _LightColor0.rgb * ramp * (atten * 2);
            c.a = 0;
            return c;
        }


        sampler2D _MainTex;
        float4 _Color;

        struct Input {
            float2 uv_MainTex : TEXCOORD0;
        };

        void surf (Input IN, inout SurfaceOutput o) {
            half4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG


    } 

    Fallback "Diffuse"
}

【追記】
閲覧してくださった方ありがとうございます。
こちらを参考に自分で作ってみました。リンク内容
・PNGテクスチャのアルファ有効
・前後関係の正しい半透明処理有効

Shader "ToonLitRemake" {

         Properties {
             _Color ("Main Color", Color) = (0.5,0.5,0.5,1)
        _MainTex ("Alpha Blended (RGBA) ", 2D) = "white" {}
             _Ramp ("Toon Ramp (RGB)", 2D) = "gray" {} 
         }

         SubShader {
             Tags {"Queue"="Transparent" "RenderType"="Transparent"}
             Blend SrcAlpha OneMinusSrcAlpha
             LOD 200

        Pass{
            ZWrite ON
            ColorMask 0
        }



     CGPROGRAM
     #pragma surface surf ToonRamp  alpha:fade

     sampler2D _Ramp;

     // custom lighting function that uses a texture ramp based
     // on angle between light direction and normal
     #pragma lighting ToonRamp exclude_path:prepass
     inline half4 LightingToonRamp (SurfaceOutput s, half3 lightDir, half atten)
     {
         #ifndef USING_DIRECTIONAL_LIGHT
         lightDir = normalize(lightDir);
         #endif

         half d = dot (s.Normal, lightDir)*0.5 + 0.5;
         half3 ramp = tex2D (_Ramp, float2(d,d)).rgb;

         half4 c;
         c.rgb = s.Albedo * _LightColor0.rgb * ramp * (atten * 2);
         c.a = s.Alpha;
         return c;
     }


     sampler2D _MainTex;
     float4 _Color;

     struct Input {
         float2 uv_MainTex : TEXCOORD0;
     };

     void surf (Input IN, inout SurfaceOutput o) {
         half4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
         o.Albedo = c.rgb;
         o.Alpha = c.a;
     }
     ENDCG

         } 

         Fallback "Diffuse"
     }
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

上記の通りでうまくいきました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る