技术美术百人计划 | 《4.1 Bloom算法》笔记

1. Bloom算法介绍

1.1. Bloom效果

实际拍摄照片与游戏画面Bloom效果对比,Bloom模拟了真实世界图片的效果

Bloom流程图

1.2. 前置知识:HDR和LDR,高斯模糊

1.2.1. HDR和LDR

LDR颜色范围太少,精度不够,往往会存在颜色精度范围的丢失。

1.2.2. 高斯模糊

1.2.2.1. 卷积与卷积核

首先了解卷积是什么?

图像卷积操作(convolution),或称为核操作(kernel),是进行图像处理的一种常用手段。图像卷积操作的目的是利用像素点和其邻域像素之前的空间关系,通过加权求和的操作,实现模糊(blurring),锐化(sharpening),边缘检测(edge detection)等功能。图像卷积的计算过程就是卷积核按步长对图像局部像素块进行加权求和的过程。

卷积核实质上是一个固定大小的权重数组,该数组中的锚点通常位于中心。通常情况下,选取卷积核大小为1x1,3x3,5x5,7x7等。取奇数大小的目的是为了设置卷积核中心为锚点,方便卷积核和图像的对齐处理。设置卷积核大小对称的目的是为了在空间域中充分利用像素点和其领域像素间的关系。当然这不是必须的,如果需要针对某一轴进行处理,可以设置1x3或3x1大小。

卷积计算过程

1.2.2.2. 高斯核

高斯核是通过高斯函数定义的卷积核。核中心:(0,0),核大小:3x3,标准方差σ:1.5

计算步骤:

  1. 将(x,y)带入高斯计算公式中,计算出权重值G(x,y)(权重值代表当前处理像素的影响程度,离中心越近权重越大)
  1. 为了保证卷积后图像不变暗,需要对高斯核进行归一化处理(每个权重除以所有权重的和)

但是二维高斯核的计算量大,N×N的高斯核需要N*N*W*H次纹理采样。怎么办?

分离高斯核。二维高斯核具有可分离性,可以拆成两个一维高斯核。

利用可分离性,我们就可以优化算法。可以用两个一维高斯核先后对图像进行两次卷积操作,这样一来,结果一样,采样次数为2*N*W*H。

再进一步,分离出来的一维高斯核中包括了很多重复的权重。下例中大小为5的高斯核,实际上只需要记录三个权重值即可(0.0545、0.2442、0.4026)。

2. Bloom算法实现

  1. 脚本:采用OnRenderImage()函数执行四个pass,进行后处理

注意采用双缓冲,创建中间纹理

  1. Shader部分:

使用4个pass完成bloom效果,对应bloom的实现步骤

  • pass1:提取亮部区域
  • pass2:实现竖直方向的高斯模糊
  • pass3:实现水平方向的高斯模糊
  • pass4:模糊后的高亮区域叠加到原图
相关推荐
YueJoy.AI几秒前
数据埋点驱动的高并发产品转化率分析实战
人工智能·ai·语言模型
星辰AI1 分钟前
拒绝带病上线:在 GitHub Actions 中自动探测并阻断依赖库逻辑漏洞
人工智能·ai·语言模型
手写码匠3 分钟前
华为云Flexus+DeepSeek征文|基于华为云Flexus X实例 + Dify + DeepSeek 构建企业级智能知识库问答系统实战
人工智能·深度学习·算法·aigc
lqqjuly7 分钟前
语音识别:隐马尔可夫模型、深度学习与序列转导
人工智能·深度学习·语音识别
码农小白AI8 分钟前
实验室数智化转型的真正起点:AI 报告审核如何成为第一道“质量闸门”,IACheck重构审核逻辑
人工智能·重构
中屹指纹浏览器13 分钟前
2026指纹浏览器行为指纹对抗技术详解:从算法识别到真人模拟全方案
经验分享·笔记
PNP机器人19 分钟前
基于视觉运动扩散与 AR 遥操作的多指灵巧手在手操控学习研究
人工智能·遥操作·灵巧手
一点一木19 分钟前
让 Codex 用上 DeepSeek:Moon Bridge 配置完全指南「零门槛上手」
人工智能·ai编程·deepseek
AI搅拌机23 分钟前
提示词大师全新升级——无论Ollama、远程API还是本地模型,都能反推、扩写你的提示词!
人工智能
是有头发的程序猿25 分钟前
AI Agent电商自动化实战:淘宝商品详情API无人化采集与分析教程
运维·人工智能·自动化