Unity3d 统一相机剪辑

Unity3d 统一相机剪辑,unity3d,graphics,glsl,shader,clip,Unity3d,Graphics,Glsl,Shader,Clip,我在Unity中创建了一个正交摄影机,并尝试渲染一个四边形。下面是一个着色器: Shader "TestShader" { Properties { } SubShader { Pass { GLSLPROGRAM #include "UnityCG.glslinc" #ifdef VERTEX void main()

我在Unity中创建了一个正交摄影机,并尝试渲染一个四边形。下面是一个着色器:

Shader "TestShader"
{
    Properties
    {
    }

    SubShader
    {
        Pass
        {
            GLSLPROGRAM
            #include "UnityCG.glslinc"

            #ifdef VERTEX

            void main()
            {
                gl_Position = gl_Vertex;
            }

            #endif

            #ifdef GEOMETRY

            layout(triangles) in;
            layout(triangle_strip, max_vertices = 15) out;

            void main()
            {
                gl_Position = vec4(-1, -1, 0, 1); EmitVertex();
                gl_Position = vec4(-1, 1, 0, 1); EmitVertex();
                gl_Position = vec4(1, 1, 0, 1); EmitVertex();
                EndPrimitive();

                gl_Position = vec4(-1, -1, 0, 1); EmitVertex();
                gl_Position = vec4(1, 1, 0, 1); EmitVertex();
                gl_Position = vec4(1, -1, 0, 1); EmitVertex();
                EndPrimitive();
            }


            #endif

            #ifdef FRAGMENT

            void main()
            {
                gl_FragColor = vec4(0.5);
                gl_FragDepth = 0.5;
            }

            #endif

            ENDGLSL
        }
    }
}
所以,我希望这台相机总是用灰色填满所有的屏幕空间,而不受四边形在世界空间中的位置的影响

但看起来,如果世界空间中的四边形没有(camera.nearClipPlane,camera.farClipPlane)剪裁平面,我在屏幕上看不到任何东西

我总是在几何体着色器中设置z坐标=0(规格化设备坐标)!看起来Unity在将顶点发送到OpenGL之前会执行自己的剪辑。。但这是胡说八道