- Home /
How to apply a color to the second texture in this shader?
This a modification of the built in Transparent Diffuse shader of Unity. I've been trying to set the Color2 as the color of the Tex2. How can I do that?
Shader "Transparent/Diffuse2" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_Color2 ("Main Color2", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_Tex2 ("B", 2D) = "white" {}
}
SubShader {
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
LOD 200
Pass {
Material {
Diffuse [_Tex2]
Diffuse [_MainTex]
}
// Apply base texture
SetTexture [_MainTex] {
combine texture
}
// Blend in the alpha texture using the lerp operator
SetTexture [_Tex2] {
//constantColor [_Color2]
combine texture lerp (texture) previous
}
}
CGPROGRAM
#pragma surface surf Lambert alpha
sampler2D _MainTex;
sampler2D _Tex2;
fixed4 _Color;
fixed4 _Color2;
struct Input {
float2 uv_MainTex;
float2 uv_Tex2;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
fixed4 b = tex2D(_Tex2, IN.uv_Tex2) * _Color2;
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
Fallback "Transparent/VertexLit"
}
My objective is to have a texture with alpha channel, which has its own color, overlaying an opaque texture, which has its own color. Sounds simple, but I couldn't find a single shader that does that.
Answer by ramonfr · Aug 14, 2015 at 01:53 PM
http://forum.unity3d.com/threads/blending-two-colors-with-texture-and-weighting.285974/#post-1888639
Your answer
Follow this Question
Related Questions
How can I edit Material Textures without creating a new Shader?,How to edit Material Texture 1 Answer
What are the difference between between Unlit/color and Sprite/default material shader? 0 Answers
Layered Texture not working properly 0 Answers
Alpha texture overlaying opaque texture, both with colors? 0 Answers
Dynamic batching breaks with the material Mobile/Alpha Blended. 0 Answers