技术美术知识学习4100:Bloom算法

学习教程来自:【技术美术百人计划】图形 4.1 Bloom算法 游戏中的辉光效果实现

笔记总结

Bloom算法介绍

模拟光辉效果的算法
简单思路:提取较亮的部分进行模糊,然后与原图叠加后输出
HDR:使用HDR可以使提取到亮度大于1的区域
高斯模糊:使用高斯函数得到的高斯核去卷积图像
二维高斯核:将运算的复杂度从 N x N x W x H 减少到了 2 x N x W x H (对称性使N可减少到N/2+1)

Bloom算法实现(Unity)

C#部分

调用OnRenderImage函数获取纹理和传输参数给Shader:

Shader部分

使用4个Pass计算Bloom效果:

  1. 第一个Pass提取较量区域
  2. 第二个、第三个Pass分别在竖直和水平方向上计算高斯模糊
  3. 最后一个Pass将计算的结果与原图像进行混合

Bloom算法应用

  1. 配合自发光贴图使用
  2. 配合特效(如烟花)
  3. GodRay(基于径向的后处理)
  4. 配合Tonemapping(配合色调映射的bloom效果更加柔和)

课后作业

1. 实现Bloom效果

注:图片来自网络,侵删

无Bloom效果

开启Bloom效果

2. 实现Bloom中Mask效果

接着上次的建模,做了一个钢铁侠眼睛发光的效果,用Alpha通道,Mask掉了脑阔的部分,因此在上面产生的泛光效果可以通过一个参数去控制。

眼睛部分使用了HDR的自发光,又提高了Bloom效果亮度提取的阈值到1以上,脑壳高光部分不会进行Bloom计算。

思路参考了这2篇链接,使用一个0-1的Alpha值存储Mask,0代表Bloom效果最强,1代表不计算Bloom效果(大部分场景中的部分Alpha值为1)。
Unity 关于仿崩坏3部分Bloom(部分泛光)效果实现原理(附源码)
unity 特效shader下载_二十:Unity 后处理 Bloom mask,基于深度和单个物件的Bloom

return tex2D(_MainTex, i.uv.xy) + tex2D(_Bloom, i.uv.zw) * (1-clamp(tex2D(_MainTex, i.uv.xy).a,0,1));
Alpha通道


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值