笔记部分>>

实现Bloom效果

一、什么是Bloom?

一种模拟摄像机的辉光效果,让物体产生像现实生活中真实的明亮。

二、相关的概念:HDR和LDR;

HDR:高动态范围图像

LDR:低动态范围图像

LDR

·8位精度

·范围在(0,1)之间

·常见格式:PNG,JPG;

HDR

·超过8位精度 >256

·范围超过1

·常见格式:HDR,EXR;

因为计算机只有(0,1)的可视范围,而为了更好的呈现和更丰富的细节,只有HDR才会有超过1的范围和Bloom效果

三、如何实现Bloom?

概述:用一个阈值提取出当前渲染图像中较亮的部分,对该区域进行高斯模糊操作,用于模拟光的扩散,叠加到当前图像上。

四、Bloom的应用

1.配合自发光贴图,实现自发光的辉光。

2.配合特效、提升视觉效果。

3.配合ToneMapping色调映射,保留辉光的同时能增加更多细节。

4.配合GodRay 径向模糊。

5.以上都可以混合使用。

作业部分>>

如何实现Bloom Mask,让Bloom只在想要的地方作用?

思路:本来Bloom的区域是根据明度的阈值提取的,且作用在最后的屏幕空间,如果自定义的话,最开始的思路就是将自定义的Mask/渲染图替换或者乘以原来的亮度提取结果。

①自发光贴图和Emissive:似乎是最简单的想法,就是从源头控制:有的角色Shader会有自发光贴图,用一个自定义的Emissive控制自发光的强度。调整阈值,就可以实现针对某个Material的Bloom控制。

②渲染一张特定图,作为黑白Mask乘原本的阈值图:

1.在MainCamera下新建一个子相机,挂载脚本。

2.在脚本里设置当前Camera的camera组件信息,即继承Main Camera的属性,position,rotation等,设置背景为纯黑色。

3.逐帧更新,替换渲染Shader;

4.编辑渲染Shader,设置渲染标签和对应的输出,"BloomEffect"返回1,"NoEffect"返回0,子相机渲染的结果输出到一张RT中,

由之前的Bloom脚本传给BloomShader,作为Mask*第一个Pass里提取出来的亮度阈值。

[测试了一下用Layer的方法,似乎是不行,因为会完全剔除,不会保留遮挡关系,不知道如果设置多个Layer会不会不太现实,Layer涉及到的问题感觉还挺多的)]

结果是可行的。但是缺点也挺明显:因为返回值是固定的,所以这张遮罩图并不能控制Bloom Mask的大小,细致点来说就是不能在屏幕空间控制Bloom的强弱。

③用自定义Alpha通道做Mask:

上面的缺陷是不能在屏幕空间控制Bloom的强弱,但如果用自定义值Alpha通道的结果输出成RT,就能很好控制Bloom的强弱了,有些地方不需要完全丢失Bloom效果。而且Alpha通道如果不做半透明混合,一般都不会占用,还是很实用的。

Debug的结果如下:

上面是Alpha通道还没被占用的情况,如果用半透明渲染Alpha通道是会被占用的。解决方法是崩崩崩的处理,参考了下面这个博客:大致就是用一个额外的Pass来存储Alpha通道。

(5条消息) Unity 关于仿崩坏3部分Bloom(部分泛光)效果实现原理(附源码)_SnoopyNa2Co3的博客-CSDN博客

一些额外的:

之前在PS有个比较常用的功能是吸取颜色,然后取该颜色的一定阈值范围内进行调色/范围选择。想了想这个需求应该也同样适用于Bloom。就试了试实现。

在C#中新增一个Public Select Color,传入Shade中,更改第一个Pass的阈值计算。

(从某种程度上也可以作为让某种颜色单独产生Bloom的方法)

实现GodRay:

1.和Bloom同样的思路,根据颜色/亮度提取出阈值,即要进行模糊的部分。

2.模糊的原理是径向模糊,通过光在屏幕空间中的位置计算出模糊的方向,将每一个采样的uv沿着模糊的方向进行偏移,达到有方向的模糊的效果。

3.照常将模糊后的图片和原图进行叠加。

[看了示例的Shader,用的好像是光的Transform组件,通过Camera.WorldToViewportPoint拿到光在屏幕空间中的位置]

【百人计划】图形4.1 Bloom算法相关推荐

  1. 百人计划 图形2.1 色彩空间

    色彩发送器 色彩认知:光源是出生点,光源发出光线,光线通过直射反射折射等路径最终进入人眼.在接收到光线后,人眼产生了一系列化学反应.由此把产生的信号传入大脑,大脑对颜色产生了认知感知. 光的要素: 光 ...

  2. 百人计划 图形1.4 PC手机图形API介绍

    前言 电脑工作原理:电脑是有各种不同的硬件组成,由驱动软件驱使硬件进行工作.所有的如软件工程师都会直接或间接使用到驱动. 定义:是一个针对GPU的图形库,用于渲染2D.3D矢量图形的跨语言.跨平台的应 ...

  3. 百人计划 图形2.2 模型与材质基础

    渲染流水线大致过程 1.顶点数据输入到顶点着色器中进行相关的顶点计算,然后进行图元装配,通过点与点之间的关系将点进行连接.2.再到几何着色器(可选着色器)进行图元的增加,再到光栅化通过遍历像素点将一个 ...

  4. 百人计划 图形 2.5 BUMP图改进

    基础感念 凹凸贴图技术是对物体表面贴图进行变化然后再进行光照计算的一种技术.例如给法线分量添加噪音,或者在一个保存扰动值的纹理图中进行查找,这是一种提升物体真实感的有效办法,但却不需要额外的提升物体的 ...

  5. 【TA-霜狼_may-《百人计划》】图形4.2 SSAO算法 屏幕空间环境光遮蔽

    [TA-霜狼_may-<百人计划>]图形4.2 SSAO算法 屏幕空间环境光遮蔽 @[TOC]([TA-霜狼_may-<百人计划>]图形4.2 SSAO算法 屏幕空间环境光遮蔽 ...

  6. 技美 百人计划 (图形)1.1渲染流程

    技美 百人计划 (图形) 图形 1.1 渲染流水管线2.1数学基础 很早之前就有关注百人计划这个系列的课程,也跟着看到了2.几的教学但是一直没有写笔记,最近看到百人计划已经快更新完毕了,决定从头看一遍 ...

  7. 【TA-霜狼_may-《百人计划》】图形3.6 纹理压缩——包体瘦身术

    [TA-霜狼_may-<百人计划>]图形3.6 纹理压缩--包体瘦身术 @[TOC]([TA-霜狼_may-<百人计划>]图形3.6 纹理压缩--包体瘦身术 3.6.1 纹理压 ...

  8. 【TA-霜狼_may-《百人计划》】图形5.2 光线追踪、路径追踪、光线投射、光线步进介绍

    [TA-霜狼_may-<百人计划>]图形5.2 光线追踪.路径追踪.光线投射.光线步进介绍 @[TOC]([TA-霜狼_may-<百人计划>]图形5.2 光线追踪.路径追踪.光 ...

  9. 【TA-霜狼_may-《百人计划》】图形3.4 延迟渲染管线介绍

    [TA-霜狼_may-<百人计划>]图形3.4 延迟渲染管线介绍 @[TOC]([TA-霜狼_may-<百人计划>]图形3.4 延迟渲染管线介绍 3.4.1 渲染路径 3.4. ...

  10. 【TA-霜狼_may-《百人计划》】图形3.7.2 command buffer简

    [TA-霜狼_may-<百人计划>]图形3.72command buffer 及urp概述 @[TOC]([TA-霜狼_may-<百人计划>]图形3.72command buf ...

最新文章

  1. LightOJ1245-Harmonic Number (II) 【数学调和级数】
  2. Robotium只有apk文件测试实例
  3. js 算法排序总结
  4. Java中intern()方法的作用
  5. 百度平台K12人群洞察报告
  6. 对今天下午的工作内容的反思
  7. KVM之一:安装准备(基于CentOS6.7)
  8. MySQL 客户端工具
  9. Q144:FS,求解流体方程(逻辑总结)
  10. 最近好闷,什么时候才有需求啊,很郁闷
  11. 从零基础入门Tensorflow2.0 ----二、4.2 wide deep 模型(子类API)
  12. JAVA NP插件,特定的宽度600,插件就不显示
  13. 京瓷1125打印机清零_京瓷1125驱动下载
  14. MySQl查询前三名(包括并列)
  15. java近义词,虚拟的近义词
  16. ERA5气象数据 :数据中相对湿度、边界层高度、温度、风向、地面气压等参数下载详细教程
  17. easyui textbox onblur失效
  18. 安卓模拟位置之夜神模拟器
  19. [NXP.iMX6UL] NFS服务器
  20. 软著申请时提取60页代码shell命令解析

热门文章

  1. 微信小程序如何同时获取用户信息和用户手机号
  2. csdn新手上路,多多关照
  3. 用户使用手册与测试报告(团队作业)
  4. XXX售后服务解决方案
  5. go-micro 安装
  6. 学习mongo系列(四) find().pretty() remove() 查询
  7. GALAXY OJ NOIP2019联合测试2-普及组
  8. bios密码解锁软件_YOGA14S解锁BIOS后进阶玩法—包含性能提升10%—20%
  9. 2022年十大数据泄露事件
  10. python里不能调用random库_Python标准库教程—random模块