Дописать в шейдер поддержку нормалки

Шейдеры и все-все-все.

Дописать в шейдер поддержку нормалки

Сообщение aler 13 дек 2011, 08:07

Есть шейдер, что по альфе красит объект в alpha color, но не пойму как в него дописать поддержку нормалки

Синтаксис:
Используется csharp
Shader "AlphaColor" {
    Properties {
        _Color ("Main Color", Color) = (1,1,1,0)
        _Color2 ("Alpha Color", Color) = (1,1,1,0)
        _SpecColor ("Spec Color", Color) = (1,1,1,1)
        _Emission ("Emmisive Color", Color) = (0,0,0,0)
        _Shininess ("Shininess", Range (0.01, 1)) = 0.7
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _BumpMap ("Bumpmap", 2D) = "bump" {}
    }
    SubShader {
        Pass {
            Material {
                Diffuse [_Color]
                Ambient [_Color]
                Shininess [_Shininess]
                Specular [_SpecColor]
                Emission [_Emission]
            }
            Lighting On
            SeparateSpecular On
                        // 1. combiner: fade RGB from texture to color2 using texture's alpha
                        SetTexture [_MainTex] {
                                combine texture lerp (texture) constant
                                constantColor [_Color2]
                        }
//            SetTexture [_MainTex] {
//                Combine texture * primary DOUBLE, texture * primary
//            }
                        // 2. combiner: get the color calculated above(previous) and multiply that with lighting (primary)
                        SetTexture [_MainTex] {
                                combine primary * previous
                        }
                }
        }
        // Tell this shader to fall back to vertex lit if the user can't run it
        FallBack " VertexLit"
}
 
Аватара пользователя
aler
UNIверсал
 
Сообщения: 351
Зарегистрирован: 20 фев 2011, 17:41

Re: Дописать в шейдер поддержку нормалки

Сообщение magoga 17 дек 2011, 17:37

ну у тебя сейчас шейдер написан на shaderlab а в нем нормаль ты не прикрутишь, нужно написать либо в CG либо SurfaceShader
Аватара пользователя
magoga
UNIт
 
Сообщения: 98
Зарегистрирован: 22 мар 2010, 21:08

Re: Дописать в шейдер поддержку нормалки

Сообщение magoga 17 дек 2011, 18:06

примерно так вот.
правда на мой взгляд довольно корявый метод смешивания текстуры с цветом. но дело твое




Синтаксис:
Используется glsl
Shader "AlphaColor"
{
Properties
{
        _Color ("Main Color", Color) = (1,1,1,0)
        _Color2 ("Alpha Color", Color) = (1,1,1,0)
        _SpecColor ("Spec Color", Color) = (1,1,1,1)
        _Emission ("Emmisive Color", Color) = (0,0,0,0)
        _Shininess ("Shininess", Range (0.01, 1)) = 0.7
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _BumpMap ("Bumpmap", 2D) = "bump" {}
}
       
        SubShader //пиксельный Surface + bump
        {
                Tags { "RenderType"="Opaque" }
                LOD 300
               
        CGPROGRAM
        #pragma surface surf BlinnPhong



                struct Input
                {
                        float2 uv_MainTex;
                        float2 uv_BumpMap;
                };

                sampler2D _MainTex,_BumpMap;
                float4 _Color,_Color2;
                float _Shininess;
               
                void surf (Input IN, inout SurfaceOutput o)
                {
                        half4 c = tex2D(_MainTex, IN.uv_MainTex);
                        c.a = 1-c.a;
                        o.Albedo = lerp(c.rgb * _Color.rgb,_Color2, c.a );
                        o.Alpha = _Color.a;
                        //o.Gloss = c.a;
                        o.Specular = _Shininess;
                        o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
                }
               
        ENDCG
        }  
       
       
       
        SubShader //вертексный шейдер
        {
        Pass
        {
                        Material
                        {
                                Diffuse [_Color]
                                Ambient [_Color]
                                Shininess [_Shininess]
                                Specular [_SpecColor]
                                Emission [_Emission]
                        }
                       
                        Lighting On
                        SeparateSpecular On
                       
                        SetTexture [_MainTex]
                        {
                                combine texture lerp (texture) constant
                                constantColor [_Color2]
                        }
                       
                        SetTexture [_MainTex]
                        {
                                combine primary * previous double
                        }
                }
               
     }
       
       
       
       
       
       
        FallBack "VertexLit"
}

 
Последний раз редактировалось magoga 17 дек 2011, 18:13, всего редактировалось 1 раз.
Аватара пользователя
magoga
UNIт
 
Сообщения: 98
Зарегистрирован: 22 мар 2010, 21:08


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2