百人计划(程序)3

第四章 高级扩展

一、Bloom算法

  • Bloom算法介绍

        1.Bloom概述:Bloom效果可以用来模拟真实世界中,摄像机的一种图像效果,它可以让画面中比较亮的区域扩散到周围的区域中,来达到一种朦胧的效果,并且能让我们的眼睛感知到这些区域是比较亮的。

        2.实现思路

                ①通过一个预先设定的阈值去提取原图像中比较亮的区域

                ②利用高斯模糊对提取后的图像进行模糊处理

                ③将模糊后的图像与原图像进行一个混合,得到最终的Bloom效果

百人计划(程序)3_第1张图片

         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_第2张图片百人计划(程序)3_第3张图片

        3.SSAO原理

百人计划(程序)3_第4张图片

                ①获取屏幕中像素的深度缓冲(用于重构像素相机空间中的坐标(Z),来近似重构该视

点下的三维场景)、法线缓冲(相机空间中的法线信息,用于重构每个像素的“法线-切线-副法线”

构成的坐标轴,用于计算法线半球中的采样随机向量)

                ②通过深度缓冲值计算像素坐标

                ③在着色点法线方向的上半部分随机采样点(随机向量用于判断和描述该像素的AO强度)

                ④计算随机后的坐标信息(多次采样),并比较随机采样点的深度值和着色点的深度值,对AO进行加权计算

                ⑤合成AO,后期处理优化(模糊等)

*法线半球(图1):黑色表示我们需要计算的样本;蓝色向量表示样本的法向量;白色、灰色为采样点(很明显,采样点的多少影响最后的渲染的效果),其中灰色表示被挡采样点(深度大于周围,说明采样点被遮蔽的光的部分比较多),据此判断最终Ao的强度。

        图2表示法向球形采样(后背抛弃),原因是该方式采样导致平整的墙面也会显得灰蒙蒙的因为核心中一半的样本都会在墙这个几何体上

百人计划(程序)3_第5张图片 图1 百人计划(程序)3_第6张图片 图2

补充:游戏后期特效第四发 -- 屏幕空间环境光遮蔽(SSAO) - 知乎 (zhihu.com)

  • SSAO算法实现*

        1.获取深度&法线缓冲数据:

百人计划(程序)3_第7张图片

        2.重建相机空间坐标

百人计划(程序)3_第8张图片

百人计划(程序)3_第9张图片

         PS:重建方法较多,附上参考链接:https://zhuanlan.zhihu.com/p/92315967         

        本例实现使用其中的“从NDC空间中重建”方法得到样本在相机空间中的向量,乘以深度值得到样本的坐标。

        3.构建法向量正交基

百人计划(程序)3_第10张图片

         4.AO采样核心

百人计划(程序)3_第11张图片

  • SSAO效果改进

        1.随机正交基(增加随机性)

百人计划(程序)3_第12张图片

         2.AO累加平滑优化

百人计划(程序)3_第13张图片

百人计划(程序)3_第14张图片

百人计划(程序)3_第15张图片

         3.模糊(该方面只展示下前后效果对比)

百人计划(程序)3_第16张图片

  • 比对模型烘焙AO

        1.三维建模软件烘焙AO方式:通过三维建模软件(如3DMax),设定好渲染参数,对模型(单一选择模型实体),烘焙AO到纹理。

                ①优点:

        (1)单一物体可控性强(通过单一物体的材质球上的AO纹理贴图),可以控制单一物体的AO的强弱;

        (2)弥补场景烘焙的细节,整体场景的烘焙(包含AO信息),并不能完全包含单一物体细节上的AO,而通过三维建模软件烘焙到纹理的方式,增加物体的AO细节;

        (3)不影响其(Unity场景中)静态或者动态;

                ②缺点:

        (1)操作较其他方式繁琐,需要对模型进行UW处理,再进行烘焙到纹理;

        (2)不利于整体场景的整合(如3DMax烘焙到纹理,只能选择单一物体,针对整体场景的处理工作量巨大);

        (3)增加AO纹理贴图,不利于资源优化(后期可通过其他纹理通道利用整合资源);

        (4)只有物体本身具有AO信息,获取物体之间的AO信息工作量巨大(不是不可能)。

        2.游戏引擎烘焙AO方式(Unity3D Lighting):通过Unity的Lighting功能(主菜单/Window/Rendering/Lighting Settings)进行整体场景的烘焙,AO信息包含于此。

                ①优点:

        (1)操作简易,整体场景的烘焙,包含AO的选择;

        (2)不受物体本身的UW影响,Unity通过Generate Lightmap UVs生成模型第二个纹理坐标数据;

        (3)可生成场景中物体与物体之间的AO信息;

                ②缺点:

        (1)缺少单一物体的细节(可调整参数提高烘焙细节,但换之将增加烘焙纹理数量和尺寸,以及烘焙时间);

        (2)受物体是否静态影响,动态物体无法进行烘焙,获得AO信息。

        3.SSAO方式:

                ①优点:

        (1)不依赖场景的复杂度,其效果质量依赖于最终图片像素大小;

        (2)实时计算,可用于动态场景;

        (3)可控性强,灵活性强,操作简单;

                ②缺点:

        (1)性能消耗较之上述2种方式更多,计算非常昂贵;

        (2)AO质量上要比较离线式烘焙(上述2种)不佳(理论上)。

  • SSAO性能消耗

        1.AO法向半球的随机采样:

百人计划(程序)3_第17张图片

        2.双边滤波的多重采样:

百人计划(程序)3_第18张图片

百人计划(程序)3_第19张图片

你可能感兴趣的:(技术美术,unity)