- Home /
How to fix weird culling problem?
Hello people who know much more than I do,
So I am trying to make an Air elemental dude and am having a problem. I have actually encountered this problem multiple times but could never solve it. The elemental is made up of several tornado things that use a moving texture shader to animate. The problem lies in this weird culling of itself, in that it blocks anything behind it that uses the same shader at certain angles. Here is the coding for the shader:
Shader "Unlit/Moving Texture"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_ScrollSpeeds ("Scroll Speeds", vector) = (-1 , 1 , 0 , 0)
Cutoff("Alpha Cutoff", Range(0,1)) = 0.5
}
SubShader
{
Tags { "Queue"="Transparent" "RenderType"="Transparent" }
Blend SrcAlpha OneMinusSrcAlpha
LOD 100
Pass
{
CGPROGRAM
#define _ALPHABLEND_ON 1
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
UNITY_FOG_COORDS(1)
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float4 _ScrollSpeeds;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
o.uv += _ScrollSpeeds * _Time.x;
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv);
// apply fog
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
}
And here are a couple images depicting the same guy but at different angles: https://imgur.com/XkeHWP8 (this is what I want but it only works at this angle) https://imgur.com/BLW8wE2 (this is what it looks like at most other angles)
Any help would be appreciated, and yes I do need it to be a shader for the purposes I am using this dude for.
Answer by highpockets · Mar 05, 2021 at 09:56 PM
This is likely because the objects are transparent and in the same queue and thus they are rendered based on their distance from the camera. Even if part of the closest object (based on its origin) is further away than another object with the same material from the camera, it will render on top of the part of the second object which has faces which are closer..
Thank you very much, I had not even thought of that. This has solved the problem. Again thank you.
Your answer
Follow this Question
Related Questions
Shader Forge - Stop culling objects that are behind specific objects 0 Answers
Cloth shader disabled? 1 Answer
Shadow-casting issues with two almost identical shaders 0 Answers
UI masking in a jet fighter HUD 0 Answers
Turning Cull Off in rimlight shader makes the 2nd side of mesh the color of the rim 1 Answer