第四章 高级扩展
一、Bloom算法
-
Bloom算法介绍
1.Bloom概述:Bloom效果可以用来模拟真实世界中,摄像机的一种图像效果,它可以让画面中比较亮的区域扩散到周围的区域中,来达到一种朦胧的效果,并且能让我们的眼睛感知到这些区域是比较亮的。
2.实现思路:
①通过一个预先设定的阈值去提取原图像中比较亮的区域
②利用高斯模糊对提取后的图像进行模糊处理
③将模糊后的图像与原图像进行一个混合,得到最终的Bloom效果
3.前置知识:
①HDR与LDR
(1)LDR(Low Dynamic Range,低动态范围):JPG、PNG等格式的图片,以及日常生活中使用的手机、显示器、摄像机这些设备的输入与输出均为LDR,因为LDR只能存储RGB范围在0到1之间的值,但在现实世界中,只用0到1范围内的值去表达真实世界中的色彩是远远不够的,意味着会存在精度的丢失。
(2)HDR(High Dynamic Range,高动态范围):HDR允许我们表示超过0到1之间的亮度值,进而可以更加精确地反映真实的光照效果,实现Bloom效果的第一步就是利用阈值去提取原图像中比较亮的区域,如果不使用HDR的话,我们就只能提取亮度小于1的区域,并且像路灯发亮的亮度值可能会与某个区域的亮度值一致,这样就会导致这个区域也出现Bloom效果;但如果使用HDR的话,则可以提取亮度大于1的区域,这样就能让更亮的区域产生Bloom效果,所以,提取较亮区域有时候是针对开启HDR来实现的。
②高斯模糊
高斯模糊(Gaussian Blur):它是实现图像模糊的一种方式,它的本质是通过高斯函数去定义一个卷积核,这个卷积核叫做高斯核,再利用这个高斯核对图像进行卷积运算,得到“平滑”后的图像,也就是俗称的模糊。(图像处理课设)
-
Bloom算法实现
-
Bloom算法应用
二、SSAO算法:屏幕空间环境光遮蔽算法
-
SSAO介绍和原理
1.AO:即环境光遮蔽,全称Ambient Occlusion,是计算机图形学中的一种着色和渲染
技术,模拟光线达到物体的能力的粗略的全局方法,描述光线到达物体表面的能力。
2.SSAO:屏幕空间环境光遮蔽,全称Screen Space Ambient Occlusion,一种用于计
算机图形中实时实现近似环境光遮蔽效果的渲染技术。通过获取像素的深度缓冲、
法线缓冲来计算实现,来近似的表现物体在间接光下产生的阴影。
3.SSAO原理:
①获取屏幕中像素的深度缓冲(用于重构像素相机空间中的坐标(Z),来近似重构该视
点下的三维场景)、法线缓冲(相机空间中的法线信息,用于重构每个像素的“法线-切线-副法线”
构成的坐标轴,用于计算法线半球中的采样随机向量)
②通过深度缓冲值计算像素坐标
③在着色点法线方向的上半部分随机采样点(随机向量用于判断和描述该像素的AO强度)
④计算随机后的坐标信息(多次采样),并比较随机采样点的深度值和着色点的深度值,对AO进行加权计算
⑤合成AO,后期处理优化(模糊等)
*法线半球(图1):黑色表示我们需要计算的样本;蓝色向量表示样本的法向量;白色、灰色为采样点(很明显,采样点的多少影响最后的渲染的效果),其中灰色表示被挡采样点(深度大于周围,说明采样点被遮蔽的光的部分比较多),据此判断最终Ao的强度。
图2表示法向球形采样(后背抛弃),原因是该方式采样导致平整的墙面也会显得灰蒙蒙的,因为核心中一半的样本都会在墙这个几何体上。
![](https://img-blog.csdnimg.cn/ebd2c34462374182afb638e8ab3923c7.png)
![](https://img-blog.csdnimg.cn/908ac6f5a03e47c69de28d0b0cb40b11.png)
补充:游戏后期特效第四发 -- 屏幕空间环境光遮蔽(SSAO) - 知乎 (zhihu.com)
-
SSAO算法实现*
1.获取深度&法线缓冲数据:
2.重建相机空间坐标:
PS:重建方法较多,附上参考链接:https://zhuanlan.zhihu.com/p/92315967
本例实现使用其中的“从NDC空间中重建”方法得到样本在相机空间中的向量,乘以深度值得到样本的坐标。
3.构建法向量正交基:
4.AO采样核心:
-
SSAO效果改进
1.随机正交基(增加随机性):
2.