gaussianblur - woodelf-treetop/rcwiki GitHub Wiki
实现代码:VirtualEffectScr.cs 与 virtualEffectShader.shader
-
-
降低屏幕分辨率:
该shader不是真的在整张图上做高斯模糊,是先从整图上取出1/2或者1/4小图,进行高斯模糊,再拉伸到原有分辨率
每个像素的色值,取原图中改点位置,取左上、左下、右上、右下各偏移半像素(原图比例)位置,求平均值(在shader的第一个Pass中执行)
-
先竖后横执行高斯模糊:
第二、三个Pass分别执行纵向和横向的高斯模糊
是7*7的高斯卷积核
以纵向为例,在某点的上下方,按照固定间隔,各取3个点(假如间隔为1,就是 -3 到 3,共7个点)。取到7个点的色值,按照高斯参数加权求和,得到当前色值(此色值的透明度,仍然取当前点的原透明度)
高斯模糊有可能执行多次,每次以上次的结果为输入
-
-
DownSampleNum:对整图进行压缩的比例,如果是1就压缩到1/2,是2就压缩到1/4
BlurSpreadSize:对一个点进行高斯采样时,偏移的间隔
BlurIterations:高斯模糊迭代次数
-
a、在cs文件的循环中,多次用到 ReleaseTemporary 和 GetTemporary
注意这里 ReleaseTemporary 并不会马上释放内存,几帧内若有申请可以直接用,所以这里不会存在大的内存分配释放消耗
但仍可以做个测试,如果不Release,直接用两个RenderTexture相互接力,是否有效率的提升
b、可以考虑把7x7高斯卷积核降低到5x5