OpenGL核心技术之SSAO讲解(四)

本文深入探讨了在OpenGL中如何通过深度缓冲重构视图空间位置来优化SSAO技术,详细阐述了从深度缓冲计算视口空间位置的过程,包括矩阵变换、NDC空间、Z缓冲处理和坐标恢复等关键步骤,适合对SSAO和OpenGL有基础的读者阅读。
摘要由CSDN通过智能技术生成

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。

CSDN视频网址:http://edu.csdn.net/lecturer/144

在前面几篇博客介绍了SSAO的系列讲解,下面再给读者介绍深度值重构SSAO技术,也是在原有SSAO实现的基础上进行技术优化,首先我们使用包含视图空间位置像素的几何G缓冲作为计算的第一步,本篇博文我们将挑战一下直接从深度缓冲中计算视口空间位置。这么做的好处是可以使用更少的内存因为我们仅需要一个浮点数表示每个像素值代替通常的三个数值。本篇博文的讲解需要读者把前面讲解的SSAO技术系列文章理解了再继续,本篇博文实现的代码是在以前实现的SSAO技术的基础上进行的算法改变。

在SSAO算法中我们逐像素的扫描整个窗口,在视图空间中围绕着每个像素会产生任意的点,将这些点映射到视图空间中的近裁减面上并且与在此位置的实际像素值比较它们的Z值大小。视图空间位置是在渲染循环开始的几何通道中产生的,为了正确的填充G缓冲与视图空间位置我们还需要一个深度缓冲。我们可以使用深度缓冲来构建整个视图空间的位置向量,从而减少它所需要的空间(尽管需要更多的逐像素计算)。

我们现在做一个局部空间的顶点位置变换,在前面的博文中给读者介绍过关于固定流水线中涉及到矩阵的变换操作,在这里可以直接使用通过与WVP矩阵相乘得到,WVP是一个组合变换,将局部空间的物体首先转换到世界坐标,再转换到视口坐标,最后到投影坐标也就是在近裁剪面的投影。它得到的结果是一个4D向量,我们可以说这个向量是在裁剪空间中对应的点,裁剪空间向量是在顶点着色器中计算得到输出gl_Position表示的,接下来GPU执行投影,它的运算公式就是其它三个值除以第四个分量W。我们可以得到4D向量的前三个值是在-1和1之间,最后的值W简单就是1,我们可以说得到的点向量是在NDC空间中(标准设备坐标&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海洋_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值