Записать в буфер глубины в неосвещенном шейдере Unity 3D? - PullRequest
0 голосов
/ 14 ноября 2018

Признаюсь, я немного растерялся, когда дело доходит до шейдеров. Ниже мой неосвещенный шейдер. Что я могу добавить к этому, чтобы записать в буфер глубины и текстуру глубины? Кроме того, я делаю что-то неправильно или ненужно в этом шейдере?

Shader "Unlit/Environment Texture" {
Properties {
    _MainTex ("Base (RGB)", 2D) = "white" {}
    _MainTexBias ("Mip Bias (-1 to 1)", float) = -1
}

SubShader {
    Tags { "RenderType"="Opaque" }

    Lighting Off
    Fog { Mode off }

        Pass {  
            CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag

                #include "UnityCG.cginc"

                struct appdata_t {
                    float4 vertex : POSITION;
                    float2 texcoord : TEXCOORD0;
                };

                struct v2f {
                    float4 vertex : SV_POSITION;
                    half2 texcoord : TEXCOORD0;
                };

                sampler2D _MainTex;
                float4 _MainTex_ST;
                half _MainTexBias;

                v2f vert (appdata_t v)
                {
                    v2f o;
                    o.vertex = UnityObjectToClipPos(v.vertex);
                    o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
                    return o;
                }

                fixed4 frag (v2f i) : SV_Target
                {
                    fixed4 col = tex2Dbias(_MainTex, half4(i.texcoord.x,i.texcoord.y,0.0,_MainTexBias));
                    return col;
                }
            ENDCG
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

фрагмент должен иметь семантику SV_Depth

struct fragOutput {
    fixed4 color : SV_Target;
    float depth:SV_Depth;
};

fragOutput frag (v2f i)
{
    fragOutput o;
    o.color = tex2D(_MainTex, i.uv);
    o.depth = i.depth;
    return o;
}
0 голосов
/ 17 января 2019

Хм ... это уже должно записывать в буфер глубины?Вы можете добавить «Queue» = «Непрозрачный» к тегам, чтобы включить сортировку спереди назад, хотя я думаю, что в любом случае это должно быть по умолчанию.Ztest On также неявный.Как это выглядит для вас в Unity?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...