如果您使用基于冒名顶替者的光线追踪方法绘制球体,例如此处所述
http://www.arcsynthesis.org/gltut/Illumination/Tutorial%2013.html
您通常会绘制一个四边形然后使用“discard”来跳过距离四边形中心的距离大于球体半径的像素。
当您打开消除锯齿时,GLSL将对您绘制的图元的边框进行反锯齿 - 在本例中为四边形 - 但不是绘制和丢弃像素之间的边框。
我附上两个屏幕截图,显示球体和边界的爆炸。除了位于四边形边界的最顶部像素外,球体边界显然没有消除锯齿。
有什么技巧可以让冒名顶替球体有一个很好的抗锯齿边界?
最好的考虑,
的Mads
答案 0 :(得分:1)
不要只丢弃像素,而是将球体设置为具有内半径和外半径。 内半径内的所有内容都是完全不透明的,外半径之外的所有内容都被丢弃,中间的任何内容都在0到1个alpha值之间进行线性插值。
float alpha = (position - inner) / (outer - inner);
答案 1 :(得分:1)
Kneejerk反应将为您自己进行多重采样:渲染到例如纹理。是实际输出的四倍,然后确保生成mip贴图并从该纹理渲染回屏幕。
或者直接在着色器中执行此操作,让OpenGL继续担心几何边缘:每个像素采样四条光线并对它们求平均值。