isClip()——计算是否需要被裁剪
bool isClip()
{
vec4 plane1 = vec4(1.0,0.0,0.0,1.0);
vec4 plane2 = vec4(1.0,0.0,0.0,-1.0);
float dist1 = dot(v_position,vec3(plane1)) + plane1.w;
float dist2 = dot(v_position,vec3(plane2)) + plane2.w;
return !(dist1 >= 0.0&&dist2 <= 0.0);
}
如果返回true,则使用discard将其裁剪掉
vec4类型的plane1与plane2是两个裁剪平面的参数
平面方程:Ax+By+Cz+D=0
(A,B,C)是平面的法向量(大概),D是离原点的距离(???反正效果是这样)
最后返回的离平面的距离(???大概),如果大于0,就说明在平面上(大概是与法向量同方向)
最后两个平面就是这样