【技美百人计划】图形 4.1 Bloom算法 游戏中的辉光效果实现(& 径向模糊、GodRay)

本文介绍了Bloom效果的原理,包括LDR和HDR的区别,以及在Unity3D中实现Bloom的步骤,涉及到高斯模糊和卷积核的计算。同时讨论了高斯模糊的切边问题和解决方案,并提到了Bloom效果的其他应用,如GodRay效果和色调映射。作业部分探讨了如何实现特定颜色的Bloom效果、Bloom的mask效果以及径向模糊和GodRay的结合应用。
摘要由CSDN通过智能技术生成

笔记

Bloom效果描述

发光的区域足够亮,看上去像溢出/扩散到周围的效果

LDR(Low Dynamic Range, 低动态范围)

● 应用于JPG,PNG以及日常生活中的手机显示器,摄像机
● RGB范围在[0, 1]之内

HDR(High Dynamic Range, 高动态范围)

● 应用于HDR、EXR格式图片
● RGB范围在[0, 1]之外

高斯模糊

● 一种图像模糊
● 减少图像噪声、降低细节层次
通过一个高斯函数去定义一个卷积核,得到一个高斯核,然后再利用这个高斯核去对图像进行卷积运算
请添加图片描述
● 缺点:
切边问题,红色虚线部分超出图像范围,无法进行卷积
在这里插入图片描述
处理方法:1. 虚线部分不参与计算 2. 完全不计算该像素点 3.将虚线部分设为0进行卷积计算

卷积过程

请添加图片描述

计算高斯核

请添加图片描述

二维高斯核——可分离性(一维高斯核有对称性)

可拆成两个一维高斯核
把原本 N * N * W * H次纹理采样,降至2 * N * W * H请添加图片描述

Unity实现Bloom效果

● C#:调用OnRenderImage函数
● Shader:为了方便理解,使用了4个Pass完成Bloom效果。实际可以一个Pass完成
1Pass:设置阈值提取纹理中较亮的区域
2Pass 3Pass:分别的对竖直方向上和水平方向上的高斯模糊
4Pass:将模糊后的图像与原图像进行一个叠加,得到最终的效果

参数:
iteration:迭代次数。越大越模糊
blurSpread:高斯模糊范围。越大越模糊
downSample:下采样次数。出于性能的考虑,去控制渲染纹理的大小。越大渲染纹理越小,需要模糊的像素也就越少
luminanceThreshold:阈值

其它应用

GodRay效果、

基于径向模糊地后处理
请添加图片描述

配合色调映射(Tonemapping)

较好地保留暗处和亮处的一些细节
请添加图片描述

作业

实现Bloom效果

请添加图片描述

如果只想bloom黄光的话,白光不想Bloom太明显的话

fixed luminance(fixed4 color){
			 return  0.3* color.r + 0.7 * color.g - 1 * color.b; 
        }

请添加图片描述

反向Bloom(第一步提取较暗部分,第四步相减)

请添加图片描述

思考如何实现Bloom的mask效果(把某块区域某块内容抹掉)

  1. 用alpha通道来做,来判断是否需要bloom
  2. 上文作业中只选取 黄色来Bloom,应该也可以算一种方法

实现径向模糊效果

原理:距离冲击点越远越模糊
请添加图片描述

实现基于径向模糊的GodRay

原理:径向模糊+Bloom,相对指定点有方向地Bloom请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值