- Home /
Visual Artifacts from my Custom Transparent Shader
I found an awesome shader online for mapping UV coordinates to world coordinates and it worked great. Now I've been trying to make it so the materials with that shader can be transparent. My end goal is to make the walls transparent when they are in between the camera and player. Here's the edited shader:
Shader "Custom/NewSurfaceShader" {
Properties{
_Color("Main Color", Color) = (1,1,1,1)
_MainTexWall2("Wall Side Texture (RGB)", 2D) = "surface" {}
_MainTexWall("Wall Front Texture (RGB)", 2D) = "surface" {}
_MainTexFlr2("Flr Texture", 2D) = "surface" {}
_Scale("Texture Scale", Float) = 1.0
}
SubShader{
Tags{"Queue"="Transparent" "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert alpha
struct Input {
float3 worldNormal;
float3 worldPos;
};
sampler2D _MainTexWall;
sampler2D _MainTexWall2;
sampler2D _MainTexFlr2;
float4 _Color;
float _Scale;
void surf(Input IN, inout SurfaceOutput o) {
float2 UV;
fixed4 c;
if (abs(IN.worldNormal.x)>0.5) {
UV = IN.worldPos.yz; // side
c = tex2D(_MainTexWall2, UV* _Scale); // use WALLSIDE texture
}
else if (abs(IN.worldNormal.z)>0.5) {
UV = IN.worldPos.xy; // front
c = tex2D(_MainTexWall, UV* _Scale); // use WALL texture
}
else {
UV = IN.worldPos.xz; // top
c = tex2D(_MainTexFlr2, UV* _Scale); // use FLR texture
}
o.Albedo = c.rgb * _Color;
o.Alpha = _Color.a;
}
ENDCG
}
Fallback "VertexLit"
}
The problem is, I get weird artifacts when looking at the intersections of separate game objects from certain angles (see attached photo). I've tried messing around a little bit with the SubShader Tags, but I'm not well versed in shaders. Hopefully someone here has some advice for me?
Your answer
Follow this Question
Related Questions
Shader to turn materials transparent based on y axis 0 Answers
How can i add transparency to this shader? 1 Answer
See backside of a transparent emissive shader? 0 Answers
Help Adding Transparency to Shader 1 Answer
Silhouette overlay shader 0 Answers