2实现双线性插值_基于线性采样的高效高斯模糊实现(译)

本文介绍了如何利用高斯滤波器的性质和双线性插值来提高高斯模糊的效率。通过将二维高斯滤波器分解为两个一维滤波器,并结合线性采样,显著减少了贴图读取次数。通过线性采样,实现了更快的实时高斯模糊算法,适用于游戏引擎和其他实时渲染场景。
摘要由CSDN通过智能技术生成

1fd6c7fcb2d78db0f16d53cd643e6b20.png

高斯模糊是一种柔和模糊的图像效果。模糊后的图像可以被更复杂的算法用来产生形如炫光(bloom)、景深、热浪或者磨砂玻璃的效果。在本文中,我将会讲解如何利用高斯滤波器的种种优良特性来提高实现的效率,和利用贴图查找中双线性插值的特点,来大大提高高斯模糊效率的小技巧。虽然本文讲述的重点是高斯模糊滤波器,但其中大部分原理都可以运用在实时渲染中的其他卷积滤波器上。

高斯模糊(Gaussian blur)是图形学中一种常用的技术。不管讨论的是离线渲染器还是游戏引擎,许多渲染技术都需要它来产生可信的照片级效果。既然可编程图形管线早已出现,在片段着色器里采用高斯模糊或其他模糊滤波器俨然已经成为每一个游戏引擎必备的技术。

基础的卷积滤波算法极其消耗性能,然而许多显著降低计算量的优雅技巧,能使高斯模糊即便在老掉牙的硬件上也能流畅运行。这篇文章将会像教程一样,讲解大部分可行的优化技巧。其中一些技巧你可能已经听过,但线性采样(linear sampling)还是能给你一些惊喜。

让我们先从基础部分开始。

术语

为了提前消除你可能产生的疑惑,我会从介绍一些本文中出现术语和概念讲起。

卷积滤波器(Convolution filter)– 融合一组像素的颜色值的算法

NxN-tap滤波器(NxN-tap filter)– 使用NxN个像素的过滤器

N-tap滤波器(N-tap filter)– 使用1xN个像素的过滤器。注意一个N-tap滤波器并不意味着它必须要采样N个纹素,它也可以被实现为采样少于N个纹素。

滤波器核(Filter kernel)– 一组用来采样的相对坐标、权重集合

离散采样(Discrete sampling)– 恰好只读取一个纹素的采样方法(也就是 GL_NEAREST 采样)

线性采样(Linear sampling)– 读取2x2个纹素并双线性插值的采样方法(也就是 GL_LINEAR 采样)

高斯滤波器

图像空间的高斯滤波器是一个 NxN的卷积滤波器,它的采样权重基于高斯函数:

滤波器覆盖的像素将乘以一个有高斯函数得来的权重,来达成模糊的效果。高斯滤波器的空间表示(通常被称为“钟型曲线”),展示了每一个覆盖到的像素如果对最终的像素造成影响。

71161ada7cc0f3f8df20690207e3bf53.png
二维高斯函数的图形表示

看到这个你也许会说:“啊哈,所以我们只需要做NxN次贴图读取然后把它们加权求和就OK了”。虽然是这样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值