【发布时间】:2016-05-06 07:33:05
【问题描述】:
当我注意到我的结果不正确时,我需要对 gl_Position 以外的东西进行手动透视划分,因此我做了一些实验。
我注意到,如果我让它使用默认转换,则生成的深度值 (gl_Position.z) 是正确的:
void main()
{
gl_Position = MVP *vertexPosition;
}
但是,当尝试手动进行透视分割时,深度值不相同,即使它应该是等效的(?):
void main()
{
gl_Position = MVP *vertexPosition;
gl_Position.xyz /= gl_Position.w;
gl_Position.w = 1.0;
}
那么,透视分割在 Vulkan 中的工作方式是否有所不同?如果有,怎么做?
视口的深度范围设置为 [0,1],以防对此有任何影响。
【问题讨论】:
-
听起来有点像透视正确插值和屏幕空间插值之间的区别。在 opengl 中也是一样的
-
定义“不一样”。您是否尝试在这两种情况之间进行浮点比较?
标签: glsl perspective vertex-shader vulkan