因此,我制作了带有jpg的材料,因此整个内容都是黑白的。有没有办法将黑色部分更改为任何颜色,然后将白色部分更改为任何颜色?
那么黑白材料可以是红色和蓝色等任意两种颜色吗?
答案 0 :(得分:0)
最简单的方法是使用图像的红色/绿色/蓝色通道。然后创建一个着色器,使您可以为这些通道重新着色。您需要的精确着色器取决于您使用它的用途-但要点是,您只需要将每个通道乘以要为其着色的颜色即可。
这是一个使用此方法的简单的漫反射曲面着色器。您可以为UI等其他目的创建类似的着色器。
只需将此着色器放入您的项目中,将纹理修改为红色和绿色,然后将此着色器应用于用于渲染纹理的材质即可。然后,您可以修改材质上的属性,以修改两种颜色呈现为哪种颜色。
还有其他方法可以混合这两个通道-此着色器会进行相加混合,这可能并不是您想要的。
Shader "Custom/Recolourable" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_RedChannelColor ("Red Channel Color", Color) = (1,0,0,1)
_GreenChannelColor ("Green Channel Color", Color) = (0,1,0,1)
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 150
Cull Off
CGPROGRAM
#pragma surface surf Lambert noforwardadd
sampler2D _MainTex;
fixed4 _RedChannelColor;
fixed4 _GreenChannelColor;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = c.r * _RedChannelColor + c.g * _GreenChannelColor;
o.Alpha = c.a;
}
ENDCG
}
Fallback "Mobile/VertexLit"
}