GLSL玻璃效果加上深度剥落
GLSL glass effect plus depth peeling
我正在渲染一个场景,可能有多个相交的透明对象。这使得标准的排序和从后向前绘制的方法存在问题(如果三角形相交,甚至对三角形进行排序也无法工作)。所以我已经使用GLSL片段着色器实现深度剥离来进行第二次深度测试。效果很好。
现在我希望能够使用着色器应用某些效果。场景中的一个物体是一个注射器,我想应用一个玻璃效果。如果我是向后画,这将是很容易的-只要启动着色器当我画注射器,因为它后面的一切都已经在帧缓冲区。然而,当使用深度剥离时,这种方法将不起作用。
我的问题是:
- 当使用深度剥离时,我如何将着色器效果应用于场景中的单个对象?
- 我如何结合效果着色器与我的深度剥离着色器(假设他们需要在同一时间运行)?
我应该注意到我在使用着色器方面很新,所以代码示例很受欢迎!
如果没有光线追踪,我将感到惊讶。据我所知,使用折射着色器的方法是在环境地图中进行纹理查找。这个地图既可以预先计算,也可以在单独的渲染通道中动态计算。对于后一种选择,你需要一个单独的环境地图和一个额外的通道为每个对象使用着色器。我有点怀疑,如果物体相互相交,这是不可能的。即使是这样,对于每一个这些通道,你也需要另外几个通道来进行深度剥离。现在,如果你还想让深度剥离着色器通道考虑周围物体的折射,这将很快失控。
相关文章:
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- OpenGL在启用深度测试时不会丢弃我的碎片
- C++尝试深度复制唯一指针时出现内存访问冲突
- 试图找到二叉树的深度
- 操纵安卓相机的深度图导致应用程序崩溃
- 深度值没有意义 R200 相机
- 对如何制作双链表的深度副本感到困惑?
- 以C++访问 HoloLens 2 深度图像
- 在 c++ 中使用深度复制的运算符重载
- 如何深度复制链表对象指针
- 提升图:当我的图使用 listS 作为 VertexList 时,如何调用深度优先搜索()?
- 在 OpenCV 中按深度维度排序,C++
- 如何在编译时获得多维 std::vector 的深度?
- 需要帮助生成C++深度有限的随机表达式树
- C++ 可变参数模板实例化深度超过最大值 900
- C++ - 如何找到 n 元树的给定节点的深度
- 我有两棵二叉树.我想在不更改输入树的情况下深度复制两个二叉树的结果
- 深度缓冲区未填充阴影贴图渲染通道中的数据
- 使用迭代深度优先搜索算法的未加权图的最短路径
- GLSL玻璃效果加上深度剥落