OpenGL Voxel引擎面合并与每顶点环境遮挡

时间:2016-09-06 13:28:13

标签: c++ opengl voxel voxels

我正在制作一个体素引擎,将每个块分为32 x 32 x 32块。我一直在实现许多渲染优化,例如不渲染由实体体素覆盖的面,或face merging用于相同的相邻体素。

问题是我想实现每顶点环境遮挡,计算来自CPU的遮挡并将其传递给着色器,就像that image一样。它工作得很好但是面部合并会在较大的面上产生更大的渐变,因为OpenGL会对片段的最终颜色进行线性插值。

我想现在,如果有办法解决这个问题,可以通过告诉片段着色器从顶点到这个片段的距离是多远。

1 个答案:

答案 0 :(得分:1)

最好放弃你的“面部合并”系统。虽然不仅仅是因为它可以让你更有效地做这个遮挡物。

面部合并系统的一个问题是,如果两个共享位置是二进制相同的值,则渲染器仅保证两个三角形之间的边不会有间隙 。您的面部合并系统有许多部分共享边缘的三角形。在这些情况下,GPU不保证任何边缘;这可能导致边缘之间出现裂缝。