Непонятный порядок Opaque Unlit шейдера
Добавлено: 29 мар 2018, 17:41
Накладываю на камеру Replacement-shader и его порядок ведет себя крайне странно. Такая сцена:
Дает такой результат:
Видно, что цилиндр отрисовался корректно относительно человека - за ним, в то время как сфера отрисовалась за ним, хотя должна была перед ним, а капсула - наоборот отрисовалась перед человеком, хотя должна была уйти за него.
Подскажите, пожалуйста, в чем моя ошибка?
Дает такой результат:
Видно, что цилиндр отрисовался корректно относительно человека - за ним, в то время как сфера отрисовалась за ним, хотя должна была перед ним, а капсула - наоборот отрисовалась перед человеком, хотя должна была уйти за него.
Синтаксис:
Используется csharp
Shader "ColorReplacement" {
Properties {
ReplacementColor ("ReplacementColor", Color) = (0,0,0,1)
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
struct appdata
{
float4 vertex : POSITION;
};
struct v2f
{
float4 vertex : SV_POSITION;
};
float4 ReplacementColor;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return ReplacementColor;
}
ENDCG
}
}
}
Properties {
ReplacementColor ("ReplacementColor", Color) = (0,0,0,1)
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
struct appdata
{
float4 vertex : POSITION;
};
struct v2f
{
float4 vertex : SV_POSITION;
};
float4 ReplacementColor;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return ReplacementColor;
}
ENDCG
}
}
}
Подскажите, пожалуйста, в чем моя ошибка?