Ios GLSL ES将顶点剪裁到远平面

Ios GLSL ES将顶点剪裁到远平面,ios,opengl-es,glsl,opengl-es-2.0,opengl-es-lighting,Ios,Opengl Es,Glsl,Opengl Es 2.0,Opengl Es Lighting,我在玩iPhone上的阴影音量,如果阴影音量上限被远平面截取,则一切正常 由于GLSL ES中没有gl_ClipVertex,如何将gl_Position.z剪裁到远平面?我已经尝试使用了gl_Position.z=gl_Position.w,但结果是错误的,阴影体积似乎与相机方向一致。还有其他方法吗?为了使阴影体积正常工作,您可能需要避免盖被远平面夹住。为此,可以增加“深度范围”(将平面移动得更远),也可以减少拉伸量 有许多阴影体积技术,其中一些是专门为避免深度封顶而设计的。我最喜欢的是Car

我在玩iPhone上的阴影音量,如果阴影音量上限被远平面截取,则一切正常


由于GLSL ES中没有
gl_ClipVertex
,如何将
gl_Position.z
剪裁到远平面?我已经尝试使用了
gl_Position.z=gl_Position.w
,但结果是错误的,阴影体积似乎与相机方向一致。还有其他方法吗?

为了使阴影体积正常工作,您可能需要避免盖被远平面夹住。为此,可以增加“深度范围”(将平面移动得更远),也可以减少拉伸量

有许多阴影体积技术,其中一些是专门为避免深度封顶而设计的。我最喜欢的是Carmack的反转,只要知道几何体的边界框(Carmack使用BSP树,所以对他来说很容易),效果就很好,因为这样你就可以确切地知道挤出阴影体积所需的距离。此外,如果灯光非常接近阴影投射对象,则可能需要进行一些剪裁(否则,不是远帽,而是体积的角将被剪裁)。虽然这很容易解释,但很难实现。还有一些其他算法,更适合在GPU上简单实现(请参见此处)

我希望这将帮助您,如果您需要进一步的帮助,请随时发表评论