Unity3d 统一相机剪辑
我在Unity中创建了一个正交摄影机,并尝试渲染一个四边形。下面是一个着色器: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()
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之前会执行自己的剪辑。。但这是胡说八道