I have some big areas so when I apply a substance it has a obvious repeating pattern.
I would like to merge two substances using a mask that I can tile and rotate independently to add some variation in a similar way the Terrain Toolkit does. Is there a simple way to do this? A special shader maybe? Any push to the right direction?
Actually here is what i wrote for my game. it blends three textures on a surface. you have to make a map texture in paint. Use black red and blue color on the map to assign where the textures go. hopefully it helps
Shader "todds/3Textures" {
Properties {
// _Color ("Overall Color", Color) = (1,0.5,0.5,1)
_t1 ("texture in white", 2D) = "white" {}
_tint1 ("Tint1", Color) = (1.0, 0.6, 0.6, 1.0)
_t2 ("texture in red", 2D) = "white" {}
_tint2 ("Tint2", Color) = (1.0, 0.6, 0.6, 1.0)
_rc ("low cutoff", Range(1,80)) = 0.0
_t3 ("texture in blue", 2D) = "white" {}
_tint3 ("Tint3", Color) = (1.0, 0.6, 0.6, 1.0)
_rb ("low cutoff", Range(1,80)) = 0.0
_t4 ("texture map", 2D) = "white" {}
}
SubShader {
//Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
float _rc;
float _rb;
sampler2D _t1;
sampler2D _t2;
sampler2D _t3;
sampler2D _t4;
fixed4 _tint1;
fixed4 _tint2;
fixed4 _tint3;
struct Input {
float2 uv_t1;
float2 uv_t2;
float2 uv_t3;
float2 uv_t4;
};
void surf (Input IN, inout SurfaceOutput o) {
float f;
half4 pix = tex2D (_t1, IN.uv_t1)*_tint1;
half4 map = tex2D (_t4, IN.uv_t4);
f=map.r;
f=f*_rc;
if(f>1){f=1;}
f=1-f;
pix=pix*f;
f=1-f;
pix=pix+tex2D (_t2, IN.uv_t2)*f*_tint2;
f=map.b;
f=f*_rb;
if(f>1){f=1;}
f=1-f;
pix=pix*f;
f=1-f;
pix=pix+tex2D (_t3, IN.uv_t3)*f*_tint3;
o.Albedo = pix.rgb;
}
ENDCG
}
FallBack "Diffuse"
}