Страница 1 из 1

альфа канал, прозрачность материала

СообщениеДобавлено: 22 окт 2015, 21:42
egoded
есть шейдер, он обьеденяет цвета текстуры согласно альфаканалу. При этом сам альфа канал теряется. Как получить тоже самое, но что бы альфа канал влиял на прозрачность материала в самой игре?

Синтаксис:
Используется csharp
Shader "Custom/NewShader" {
        Properties {
                _MainTex ("Base (RGB A-mask)", 2D) = "white" {}
                _SecondTex ("Base (RGB)", 2D) = "white" {}
                _Threshold ("Threshold", Range(0,1))=0.5
        }
        SubShader
        {
                Tags { "RenderType"="Opaque" }
                LOD 200
               
                CGPROGRAM
                #pragma surface surf Lambert

                sampler2D _MainTex;
                sampler2D _SecondTex;
                fixed _Threshold;

                struct Input
                {
                        float2 uv_MainTex;
                };

                void surf (Input IN, inout SurfaceOutput o)
                {
                        fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
                        fixed4 c1 = tex2D (_SecondTex, IN.uv_MainTex);

                        if(c.a>_Threshold) c=c1;

                        o.Albedo = c.rgb;
                        o.Alpha = c.a;
                }
                ENDCG
        }
        FallBack "Diffuse"
}

Re: альфа канал, прозрачность материала

СообщениеДобавлено: 22 окт 2015, 21:59
Paul Siberdt
Tags { "RenderType"="Opaque" }

Это ни что иное, как маркер о непрозрачности материала. :)

Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
Blend SrcAlpha OneMinusSrcAlpha

Re: альфа канал, прозрачность материала

СообщениеДобавлено: 22 окт 2015, 23:00
egoded
получилось! спасибо!

Re: альфа канал, прозрачность материала

СообщениеДобавлено: 23 окт 2015, 16:01
egoded
блин, в Unity3d 5 перестало работать. Хотя на четвёрке всё ок.