问题标签 [depth-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
176 浏览

opengl - 在OpenGL中反转深度测试?

如果希望正常渲染,即渲染离相机最近的对象,您可以按如下方式设置 OpenGL 标志:

所以我会假设这样做:

也可以让我渲染离相机最远的片段。但是,在设置这样的标志时,我看不到任何输出。(我的申请没有做其他修改)

如何渲染离相机最远的片段?

0 投票
1 回答
146 浏览

fbo - 如何使用 sharpgl 将深度缓冲区附加到 FBO 上下文

因此,在尝试使用 SharpGL 在 WPF 中使用 FBO 渲染上下文进行深度测试后,我明白这并不像使用老式 OpenGL 那样设置 gl.Enable(GL_DEPTH_TEST) 那么简单,而且我必须附加一个深度缓冲区到渲染上下文。我不知道如何使用我构建我的应用程序的 WPF/SharpGL 配对来实现这一点。

有关如何执行此操作的所有指南都从创建缓冲区开始,这一切都发生在后台,可以说是在将其声明为 WPF 表单中的控件时。有什么方法可以重置它的创建方式或事后附加深度缓冲区?

我能得到的任何帮助将不胜感激。

0 投票
1 回答
366 浏览

android - 深度测试无法与模板测试一起正常工作

我需要使用模板缓冲区在 3D 表面上切割孔。目前,一切都按预期工作,但主要问题是通过山丘也可以看到洞。如果它们在山后,如何防止这种行为并隐藏洞?

当前代码:

在此处输入图像描述

0 投票
1 回答
143 浏览

c++ - Depth test with two transparent images causes strange artifacts

I am rendering a bush composed of two same images crossed as you can see on the image underneath : enter image description here

But when we turn around the bush, on of the two images has visibly big problems with it's depth test : enter image description here

I tried disabling the depth test but it was even worse(background bushes overlapping the front one). I simply use this code to render a bush (with m_tex and m_vertex the coordinates of a bush loaded in a file):

How can I manage to fix this bug and have a relevant depth test working with the two images?

0 投票
1 回答
117 浏览

opengl-es-2.0 - 开启深度测试,还是不行?

//节目 在此处输入图像描述

开启深度测试,还是不行?可以正常显示,但是我打开深度测试,红色三角Z设置为0.5,蓝色设置为0.8,但它们的渲染顺序没有变化?

0 投票
2 回答
293 浏览

opengl - OpenGL - 有没有办法将深度值存储在 1 以上?

我正在尝试像这篇文章一样在 GPU 上实现碰撞检测:

https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch29.html

在第 2 步 - 网格生成中,我们使用深度测试来确保我们只编写大于前一个的粒子 ID。

我现在可以通过将 ID 号除以粒子总数来进行此操作:

gl_FragDepth = v_ID/u_totalParticleCount;

但我担心如果我到达一个有很多粒子的点,我将没有足够的准确性。

我尝试将 RGBA32F 纹理附加到我的帧缓冲区深度附件,但我猜这是不允许的。

有没有办法做到这一点?还是将我的 ID 放入 0-1 空间是唯一的方法?

非常感谢!

0 投票
1 回答
3141 浏览

unity3d - Unity3d移动着色器透明度问题

在 Unity3D(Unlit 版本)中使用自定义着色器时,我的 3D 对象与 alpha 重叠:

截图1

它应该看起来像这样:

截图2

我错过了什么吗?透明度 alpha 似乎与自身重叠。

编辑 1 我删除了第一遍,然后启用了 Zbuffer 并删除了if (col.a < _Cutoff)并根据其纹理让它成为动态的,但我仍然得到与第一张图像相同的结果。

0 投票
2 回答
837 浏览

opengl - glReadPixels() 如何获取实际深度而不是标准化值?

我正在使用 pyopengl 来获取深度图。

我可以使用glReadPixels(). 如何将标准化值恢复为世界坐标中的实际深度?

我试过玩glDepthRange(),但它总是执行一些规范化。我可以完全禁用标准化吗?

0 投票
1 回答
364 浏览

opengl - 在延迟渲染中使用深度缓冲区进行线框渲染

我有一个小的 OpenGL 应用程序,用于一些带有延迟渲染管道的科学可视化。我有 2 个通道:几何通道,我在其中渲染具有位置、法线、反照率、分割等的纹理;和照明通道,我只是将一些数据映射到四边形并在屏幕上渲染,甚至将一些图像保存在硬盘上。所以,经典的延迟渲染。

现在我需要将线框渲染添加到附加纹理中。我想过在几何着色器中做,但它似乎有点复杂,性能不是问题,所以我只设置了第三个通道,glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);将它渲染到纹理,然后将它与光照通道一起传递其他的东西。

它工作正常,但我想知道是否有可能以某种方式使用深度缓冲区而不是在模型后面渲染线框?我的意思是,我当然可以剔除背面多边形,但是正面多边形后面仍然会有一些线,它们也是正面的。我想要的是像填充多边形一样剔除它,但只渲染线框。

渲染模型然后在其上渲染线框也可以,但我不能这样做,因为我在几何通道中将模型渲染到纹理,glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);而在另一个通道中渲染线框,glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);所以我有点不能使用默认深度缓冲区。

那么,大家有什么想法吗?

0 投票
1 回答
314 浏览

unity3d - 即使在自定义深度蒙版着色器 UNITY 中的 z-test lequal 之后,某些模型也是可见的。

在使用某些 3D 模型时,z-test 为“LEqual”的深度遮罩着色器需要正常执行,如 screenshot1

截图1

但它给出的结果显示了需要隐藏的 3d 模型部分的灰度轮廓。[参考截图2]

截图2

我们尝试将 ZTest 从 LEqual 更改为 Always,这稍微解决了问题,但该对象再次部分可见。