我可以在哪些情况下忽略透视划分?

时间:2014-11-17 07:10:39

标签: opengl graphics voxel rasterizing homogenous-transformation

我想在执行透视划分后恢复同质转换。更具体地说,我正在使用conservative rasterization实现基于GPU的体素化算法。总的来说,这些是我到目前为止实现的步骤(VS =顶点着色器,GS =几何着色器):

  1. 将模型变换应用于顶点(VS)。
  2. 将正交投影变换应用于每个顶点(GS)的副本。
  3. 将视图转换应用于副本(GS)。
  4. 对副本(GS)执行透视分割。
  5. 根据屏幕坐标(GS)翻译复制的顶点。
  6. 接下来,我想从(3)恢复视图变换,并使用不同的视图矩阵变换顶点。现在,我的问题是它是否像应用逆视图矩阵一样容易?当我只使用正交投影和仿射(旋转,平移,缩放)变换时,我是否需要担心齐次坐标?在我看来,只有正常的变换,我需要担心它,因为转置的逆不是仿射变换。我既没有找到关于这个主题的网络资源也没有找到反例,所以我在这里问。

1 个答案:

答案 0 :(得分:3)

当查看正交投影矩阵时,

     2/(r - l)    0        0       tx
        0     2/(t - b)    0       ty
M =     0         0    -2/(f - n)  tz 
        0         0        0       1

可以注意到,最后一行是[0,0,0,1]。这意味着,当将M与向量[x1,y1,z1,1]相乘时,结果将为[x2,y2,z2,1]。因此,当执行透视偏差时,系统将始终除以1.在实践中,这意味着,只要您仅使用正交投影,就不必担心透视偏差。