奇怪的人工制品在深度缓冲线上

时间:2014-11-24 03:04:30

标签: opengl opengl-es three.js webgl

我正在从线框模型渲染中提取深度信息,我看到了我无法解释的奇怪的人工制品。为了放大问题,我将模型的线宽设为10.

我们在例子中看到它们看起来像是一个奇怪的小凸起(靠近相机)线。将顶点渲染为点可以完美地工作,也可以渲染为多边形。人工制品的线宽也为1(但你需要放大镜才能看到它们)。

颜色如下:红色是最重要的字节,绿色是下一个最重要的字节(更大的数字更靠近相机),我已经删除蓝色以试图限制幻觉效果。

the little lines are not planned the arrows designate the artefacts

以下是我用于提取深度信息的着色器:

highp float factor = (exp2(24.0) - 1.0) / exp2(24.0);
vec3 EncodeFloatRGB(highp float v) {
    vec3 enc = fract(vec3(1.0, 255.0, 255.0 * 255.0) * factor * v);
    enc -= enc.yzz * vec3(1.0 / 255.0, 1.0 / 255.0, 0.0);
    return enc;
}
highp float DecodeFloatRGB(vec3 rgb) {
    return dot(rgb, vec3(1.0, 1.0 / 255.0, 1.0 / 255.0 / 255.0)) / factor;
}
void main() {
    gl_FragData[0] = vec4(EncodeFloatRGB(1.0 - gl_FragCoord.z).rg, 0.0, 1.0);
}

顶点着色器只是:

void main() {
    gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}

在线文件位于:http://nraynaud.github.io/webgcode/test_wireframe.html 完整的代码在这里:https://gist.github.com/nraynaud/825c62ca2e7ad8155e19

什么可能导致这些文物?

0 个答案:

没有答案