泛光是由于人眼晶状体散射产生的视觉效果,用于产生如梦似幻,朦朦胧胧的感觉。Unity中自带的图像效果中,有两种实现方式,Bloom 和 BloomOptimized,单就泛光来说,两者差不多。不过前者兼顾了HDR和Flare比较复杂,而后者只是单纯的Bloom,下面就BloomOptimized简单分析一下。
同颜色校正一样,Bloom也通过重写OnRenderImage方法,来进行图像处理。首先,对原图像进行DownSample
1 2 3 4 5 6 7 8 9 10 |
fastBloomMaterial.SetVector ("_Parameter", new Vector4 (blurSize , 0.0f, threshold, intensity)); source.filterMode = FilterMode.Bilinear; var rtW= source.width/2; var rtH= source.height/2; // downsample RenderTexture rt = RenderTexture.GetTemporary (rtW, rtH, 0, source.format); rt.filterMode = FilterMode.Bilinear; Graphics.Blit (source, rt, fastBloomMaterial, 1); |
这里传入Shader的几个参数分别是:
blurSize:模糊尺寸,用于后面模糊算法的直径。
threshold:泛光阈值,颜色亮度超过这个阈值的像素才进行泛光处理。
intensity:泛光强度。