glsl - Webgl:写入 gl_FragDepth 的替代方法

标签 glsl webgl raytracing fragment-shader depth-buffer

在WebGL中,是否可以写入片段的深度值或以其他方式控制片段的深度值?

据我所知,gl_FragDepth 不存在于 webgl 1.x 中,但我想知道是否有其他方法(扩展、浏览器特定支持等)来做到这一点。

我想要归档的是让光线追踪对象与使用常用模型、 View 、投影绘制的其他元素一起播放。

最佳答案

有扩展名 EXT_frag_depth

由于它是一个扩展程序,因此可能并非在所有地方都可用,因此您需要检查它是否存在。

var isFragDepthAvailable = gl.getExtension("EXT_frag_depth");

如果 isFragDepthAvailable 不是 false,那么您可以在着色器中启用它

#extension GL_EXT_frag_depth : enable

否则,您可以在顶点着色器中操作gl_Position.z,尽管我怀疑这对于大多数需求来说并不是一个真正可行的解决方案。

关于glsl - Webgl:写入 gl_FragDepth 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101017/

相关文章:

Java raytracer 增加 CPU 使用率

opengl - 是否有 acos() 函数的精确近似值?

objective-c - OpenGL-ES:如何使用不同的着色器绘制对象两次

java - 使用处理实现用于聚光的 GLSL 着色器

javascript - 场景未渲染(three.js)

webgl - 在 WebGL 中绘制立方体

performance - 通过最小化着色器/状态更改来优化 WebGL 性能的指南

c++ - OpenGL渲染黑色方 block

c++ - 使用光线追踪翻转球体上的 2D 纹理