- Home /
Question by
KNorbert98 · Nov 22, 2021 at 02:16 PM ·
shadertextureblending
Blending normal texture and texture made with shader
So, I've made this stripe shader, and there are these noise like textures which are attached to standard shader as albedo. On the wall edges the two different textures turn into each other with a sharp edge and I want it to be smooth transition, like on the second image. The pictures show the issue.
The shader code is the following:
Shader "Unlit/Stripes_45"
{
Properties
{
_Stripenumber("Stripenumber", Range(0,30)) = 0
_Direction("Direction", Range(0, 90)) = 0
_Color1("Color 1", Color) = (0.5, 0.5, 0.5, 1)
_Color2("Color 2", Color) = (0, 0, 0, 1)
}
SubShader
{
Tags { "RenderType" = "Opaque" }
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
float _Stripenumber;
float _Direction;
float pos;
float sn1;
float sn2;
float dir;
fixed4 _Color1;
fixed4 _Color2;
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
fixed4 frag(v2f i) : SV_Target
{
dir = _Direction / 90;
sn1 = _Stripenumber / cos(dir * 3.1415926535897931 / 2);
sn2 = _Stripenumber / sin(dir * 3.1415926535897931 / 2);
if (dir < 0.5)
{
pos = lerp(i.uv.x * sn1, i.uv.y * sn1 / 5, dir);
}
else
{
pos = lerp(i.uv.x * sn2, i.uv.y * sn2 / 5, dir);
}
fixed value = floor(frac(pos) + 0.5);
return lerp(_Color1, _Color2, value);
}
ENDCG
}
}
}
screenshot.png
(182.3 kB)
screenshot-final.png
(179.5 kB)
Comment
Your answer
Follow this Question
Related Questions
Shader for texture blending with a sharp outline. 1 Answer
Iphone - Blend two textures + Additive blending 3 Answers
cg shader blend textures in between two planes/tiles 0 Answers
How do you turn off terrain blending? 1 Answer
Torchlight effect in 2D 3 Answers