暗黑三泛光算法研究

 

GPA过好几次暗黑三的绘制,曾经对其绘制某些物体两遍的操作感到不解,这两天又看了一眼,知道,其是为了绘制GLOW。

暗黑三中并没有使用浮点精度贴图格式,其泛光计算与UE3的浮点溢出算法不一样。一般的使用8位图的游戏,是全部全屏处理查找亮色来计算泛光区域,我搞过类似的效果给美术查看,不尽人意。瀑布就是发白啊,就是不想泛光啊之类的。

暗黑三是比较取巧的方法,其首先将需要泛光的物体绘制了两遍,其渲染系统为,第一遍绘制,与大部分的物体的绘制方式一样,只是颜色只写到RenderTarget的RGB通道内(通过设置RenderState的ColorWriteEnable)。对于泛光的物体,有第二遍绘制,此时会往RenderTarget的Alpha通道中绘制遮罩信息。

 

一、泛光绘制第一步,执行down sample和high-pass filter。通过采样刚才生成的RenderTarget,并通过检测其Alpha通道,将颜色图中颜色计算亮度,将亮度较大的颜色输出到新的四分之一的RT上。

 

 

二、对刚才的图像进行高斯Blur

三、将Blur图像叠加到原图中,公式一般自由发挥。暗黑计算中比较诡异(配合第一步计算中的潜规则),,其Bloom颜色乘以了4.5。。

 

 

posted @ 2013-12-23 22:24  Conster康  阅读(1021)  评论(0编辑  收藏  举报