Не изменять цвет текстуры

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

Не изменять цвет текстуры

Сообщение Kayler 27 окт 2012, 19:31

Здрасте, в шейдерах я не силен, в прочем чего скромничать, в шейдерах я полный ноль 8-| , пробовал, экспериментировал, перепиливал
вобщем суть такая, нужно изменить стандартный шейдер Reflective/Bumped Specular так, что бы цвет текстуры _MainTex ("Base (RGB) RefStrGloss (A)"~
не менялся вместе с цветом _ReflectColor и _SpecColor, а всегда был одного цвета

проще говоря мне нужно как бы наложить на модель "царапины, ржавчину" не затрагивая основной цвет...
мои попытки:
Синтаксис:
Используется csharp
Shader "Reflective/Bumped Specular" {
Properties {
        _Color ("Main Color", Color) = (1,1,1,1)
        _SpecColor ("Specular Color", Color) = (0.5,0.5,0.5,1)
        _Shininess ("Shininess", Range (0.01, 1)) = 0.078125
        _ReflectColor ("Reflection Color", Color) = (1,1,1,0.5)
        _MainTex ("Base (RGB) RefStrGloss (A)", 2D) = "white" {}
        _Cube ("Reflection Cubemap", Cube) = "" { TexGen CubeReflect }
        _BumpMap ("Normalmap", 2D) = "bump" {}
        _DopColor ("RjavchinaColor", Color) = (1,1,1,1)
}

SubShader {
        Tags { "RenderType"="Opaque" }
        LOD 400
CGPROGRAM
#pragma surface surf BlinnPhong
#pragma target 3.0

sampler2D _MainTex;
sampler2D _BumpMap;
samplerCUBE _Cube;

fixed4 _DopColor;

fixed4 _Color;
fixed4 _ReflectColor;
half _Shininess;

struct Input {
        float2 uv_MainTex;
        float2 uv_BumpMap;
        float3 worldRefl;
        INTERNAL_DATA
};

void surf (Input IN, inout SurfaceOutput o) {
        fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
        fixed4 c = tex * _DopColor;
        o.Albedo = c.rgb;
       
       
        o.Gloss = tex.a;
        o.Specular = _Shininess;
       
        o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
       
        float3 worldRefl = WorldReflectionVector (IN, o.Normal);
        fixed4 reflcol = texCUBE (_Cube, worldRefl);
        reflcol *= tex.a;
        o.Emission = reflcol.rgb * _ReflectColor.rgb;
        o.Alpha = reflcol.a * _ReflectColor.a;
}
ENDCG
}

FallBack "Reflective/Bumped Diffuse"
}
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия

Re: Не изменять цвет текстуры

Сообщение Kayler 27 окт 2012, 23:22

ап.. ниужели никто не поможет
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия

Re: Не изменять цвет текстуры

Сообщение Kayler 28 окт 2012, 19:04

еще ап.. неужели такой сложный вопросец, или нет тех кто разбирается в шейдерах
Скрытый текст:
последний раз апаю..
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия

Re: Не изменять цвет текстуры

Сообщение Battle Angel Alita 29 окт 2012, 12:02

по моему ты пользуешь явно не тем методом. спекКолор и рефКолор отвечают за подкрашивание отражения, при чём тут ржавчина совсем непонятно
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Не изменять цвет текстуры

Сообщение magoga 29 окт 2012, 13:44

есть в стандартынх шейдерах, шейдер Decal, для царапин и пр. его юзать надо ))
Аватара пользователя
magoga
UNIт
 
Сообщения: 98
Зарегистрирован: 22 мар 2010, 21:08

Re: Не изменять цвет текстуры

Сообщение Kayler 01 ноя 2012, 04:21

Нашел на ассет сторе нужный шейдер, осталось только прикрутить кубемап и будет то что нужно
помогите разобраться :ymhug:
Синтаксис:
Используется csharp
Shader "WetSpecular"
{
        Properties
        {
_DiffuseIntensity("_DiffuseIntensity", Range(0,1) ) = 0.5
_DiffuseColor("_DiffuseColor", Color) = (1,1,1,1)
_WetIntensity("_WetIntensity", Range(0,1) ) = 0.5
_SpecularIntensity("_SpecularIntensity", Range(0,1) ) = 0.5
_SpecularColor("_SpecularColor", Color) = (1,1,1,1)
_SpecularPower("_SpecularPower", Range(0,1) ) = 0.5
_DiffuseTexture("_DiffuseTexture", 2D) = "black" {}
_WetMap("_WetMap", 2D) = "black" {}

        }
       
        SubShader
        {
                Tags
                {
"Queue"="Geometry"
"IgnoreProjector"="False"
"RenderType"="Opaque"

                }

               
Cull Back
ZWrite On
ZTest LEqual
ColorMask RGBA
Fog{
}


                CGPROGRAM
#pragma surface surf BlinnPhongEditor  vertex:vert
#pragma target 2.0


float _DiffuseIntensity;
float4 _DiffuseColor;
float _WetIntensity;
float _SpecularIntensity;
float4 _SpecularColor;
float _SpecularPower;
sampler2D _DiffuseTexture;
sampler2D _WetMap;

                        struct EditorSurfaceOutput {
                                half3 Albedo;
                                half3 Normal;
                                half3 Emission;
                                half3 Gloss;
                                half Specular;
                                half Alpha;
                                half4 Custom;
                        };
                       
                        inline half4 LightingBlinnPhongEditor_PrePass (EditorSurfaceOutput s, half4 light)
                        {
half3 spec = light.a * s.Gloss;
half4 c;
c.rgb = (s.Albedo * light.rgb + light.rgb * spec);
c.a = s.Alpha;
return c;

                        }

                        inline half4 LightingBlinnPhongEditor (EditorSurfaceOutput s, half3 lightDir, half3 viewDir, half atten)
                        {
                                half3 h = normalize (lightDir + viewDir);
                               
                                half diff = max (0, dot ( lightDir, s.Normal ));
                               
                                float nh = max (0, dot (s.Normal, h));
                                float spec = pow (nh, s.Specular*128.0);
                               
                                half4 res;
                                res.rgb = _LightColor0.rgb * diff;
                                res.w = spec * Luminance (_LightColor0.rgb);
                                res *= atten * 2.0;

                                return LightingBlinnPhongEditor_PrePass( s, res );
                        }
                       
                        struct Input {
                                float2 uv_DiffuseTexture;
float2 uv_WetMap;

                        };

                        void vert (inout appdata_full v, out Input o) {
float4 VertexOutputMaster0_0_NoInput = float4(0,0,0,0);
float4 VertexOutputMaster0_1_NoInput = float4(0,0,0,0);
float4 VertexOutputMaster0_2_NoInput = float4(0,0,0,0);
float4 VertexOutputMaster0_3_NoInput = float4(0,0,0,0);


                        }
                       

                        void surf (Input IN, inout EditorSurfaceOutput o) {
                                o.Normal = float3(0.0,0.0,1.0);
                                o.Alpha = 1.0;
                                o.Albedo = 0.0;
                                o.Emission = 0.0;
                                o.Gloss = 0.0;
                                o.Specular = 0.0;
                                o.Custom = 0.0;
                               
float4 Tex2D1=tex2D(_DiffuseTexture,(IN.uv_DiffuseTexture.xyxy).xy);
float4 Tex2D0=tex2D(_WetMap,(IN.uv_WetMap.xyxy).xy);
float4 Multiply3=Tex2D0 * _WetIntensity.xxxx;
float4 Subtract0=Tex2D1 - Multiply3;
float4 Multiply1=Subtract0 * _DiffuseColor;
float4 Multiply2=_DiffuseIntensity.xxxx * Multiply1;
float4 Tex2D2=tex2D(_WetMap,(IN.uv_WetMap.xyxy).xy);
float4 Multiply4=_SpecularIntensity.xxxx * Tex2D2;
float4 Multiply0=_SpecularColor * Multiply4;
float4 Master0_1_NoInput = float4(0,0,1,1);
float4 Master0_2_NoInput = float4(0,0,0,0);
float4 Master0_5_NoInput = float4(1,1,1,1);
float4 Master0_7_NoInput = float4(0,0,0,0);
float4 Master0_6_NoInput = float4(1,1,1,1);
o.Albedo = Multiply2;
o.Specular = _SpecularPower.xxxx;
o.Gloss = Multiply0;

                                o.Normal = normalize(o.Normal);
                        }
                ENDCG
        }
        Fallback ""
}
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия


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

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

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