CN104392478B - 一种屏幕空间中的体积雾的操作方法 - Google Patents

一种屏幕空间中的体积雾的操作方法 Download PDF

Info

Publication number
CN104392478B
CN104392478B CN201410607219.8A CN201410607219A CN104392478B CN 104392478 B CN104392478 B CN 104392478B CN 201410607219 A CN201410607219 A CN 201410607219A CN 104392478 B CN104392478 B CN 104392478B
Authority
CN
China
Prior art keywords
mist
depth
scene
volume
color
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201410607219.8A
Other languages
English (en)
Other versions
CN104392478A (zh
Inventor
张翼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Of Ancient India Day Infotech Share Co Ltd In Wuxi
Original Assignee
Of Ancient India Day Infotech Share Co Ltd In Wuxi
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Of Ancient India Day Infotech Share Co Ltd In Wuxi filed Critical Of Ancient India Day Infotech Share Co Ltd In Wuxi
Priority to CN201410607219.8A priority Critical patent/CN104392478B/zh
Publication of CN104392478A publication Critical patent/CN104392478A/zh
Application granted granted Critical
Publication of CN104392478B publication Critical patent/CN104392478B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Generation (AREA)
  • Display Devices Of Pinball Game Machines (AREA)

Abstract

本发明公开了一种屏幕空间中体积雾的算法,包括:利用MRT技术渲染所有场景的物体,把场景的深度信息渲染到一张纹理上;基于渲染得到的场景信息的纹理,分别渲染体积雾模型的背面和正面,得到体积雾的正、背面深度并保存到两张渲染目标中同时结合场景的深度值计算得到可见像素的混合因子;基于计算得到的可见像素的混合因子,把场景颜色和雾的颜色以混合因子进行混合,然后投射到屏幕空间最终颜色。本发明所述屏幕空间中体积雾的算法,可以克服现有技术中模拟效果差、适用场景少等缺陷,以实现模拟效果好、适用场景多的优点。

Description

一种屏幕空间中的体积雾的操作方法
技术领域
本发明涉及计算机图形学技术领域,具体地,涉及一种屏幕空间中体积雾的算法。
背景技术
自然现象有很多,像云,雾等更能给人带来如临仙境的感受,在虚拟的3D场景中,游戏中运用大量的雾化来模拟现实中的一种大气现象,用来营造一种氛围来增强场景的真实性和距离感,雾中包含成千上万的小粒子,不仅吸收来自场景的光线,他们还要反射一部分的光线到场景中,粒子之间还存在反射、散射、吸收等问题,不是用一个简单的模型就能表示出来的,在游戏中,可以尝试关闭、打开雾效,打开雾效以后,场景显得更加逼真,而游戏反而更加流畅,是因为开启雾效后其实对雾模型后的物体进行优化,从而能提高渲染速率。
在游戏中目前是在游戏中目前是利用场景的深度(即场景到摄像机的距离)来计算雾化的系数,这种方法可以快速生成雾的效果,复杂度比较低,整个雾是充满场景的,无法体现真实雾效果。
在实现本发明的过程中,发明人发现现有技术中至少存在模拟效果差和适用场景少等缺陷。
发明内容
本发明的目的在于,针对上述问题,提出一种屏幕空间中体积雾的算法,以实现模拟效果好和适用场景多的优点。
为实现上述目的,本发明采用的技术方案是:一种屏幕空间中体积雾的算法,包括:
a、利用MRT技术渲染所有场景的物体,把场景的深度信息渲染到一张纹理上;
b、基于渲染得到的场景信息的纹理,分别渲染体积雾模型的背面和正面,得到体积雾的正、背面深度并保存到两张渲染目标中同时结合场景的深度值计算得到可见像素的混合因子;
c、基于计算得到的可见像素的混合因子,把场景颜色和雾的颜色以混合因子进行混合,然后投射到屏幕空间最终颜色。
进一步地,所述步骤a,具体包括:
在场景中,各点相对于摄像机的距离可以用深度图来表示,即深度图中的每一个像素值表示场景中某一点与摄像机之间的距离;
在未放置雾模型之前,通过渲染场景的所有物体,利用多重渲染目标MRT技术渲染场景同时把深度信息保存到一张纹理中;MRT是GPU编程中的像素着色器支持的渲染方式,通过像素着色器能够返回多个渲染目标。
进一步地,所述步骤b,具体包括:
⑴为了计算可见像素的混合因子,在放置体积雾模型之后,首先渲染不包含任何物体的体积雾模型:
先渲染体积雾的正面,并把体积雾正面像素的深度保存到渲染目标中;再渲染体积雾的背面,把体积雾的背面像素的深度保存到另一张渲染目标中,那么体积雾背面像素深度和前面像素深度的差近似为屏幕空间上该像素点的雾的浓度,对于屏幕上的任意一点的像素用同样的方式计算;
⑵视点与目标对象的距离简称视点距离,即:场景深度,能够从步骤a得到的纹理即场景深度图中获取,它与体积雾模型正、背深度之间有着阶梯关系,且在体积雾的正面深度值、背面深度值都小于1的条件下,有以下三种情况表示场景中可见像素的混合因子:
其中,Dback为体积雾背面像素深度值,Dfront为体积雾正面像素深度值,Dsence场景像素深度值,Dfog-back为体积雾背面深度,Dfog-front为体积雾正面深度,D为视点距离。
进一步地,在步骤b中,视点距离和雾模型的正背面的深度关系包括:
当视点距离小于体积雾的正面深度时,混合系数为0,结果为物体本身的渲染结果;
当视点距离大于雾的背面深度时,混合系数为1;结果使用雾的颜色值。
当视点距离不小于雾的正面深度且小于雾的背面深度时,混合系数范围(0,1);。
进一步地,所述体积雾模型具体是闭合的凸面体,是因为当光线进出凸面体的次数不会大于两次。
进一步地,所述步骤c,具体包括:
⑴基于计算得到的可见像素的混合因子,将场景颜色和雾的颜色进行混合,那么在场景编辑器中,雾的颜色是一个可调参数,是已知量,同时设置调节雾的浓度系数,以控制雾的厚薄,将上步得到λ和该浓度系数相乘得到最后的混合系数,这个系数就是输入屏幕之前在帧缓冲中雾的可见像素的混合系数η,能够用以下公式表示:
η=λ*d (2);
其中,η表示最后的混合系数,d为编辑器中雾的浓度系数;
⑵然后利用clamp函数把最后的混合因子约束在[0,1]之间,实现场景中的物体逐渐融入雾中的渐变效果;
基于上述最后的混合系数,把场景颜色和雾颜色进行混合,得到输入屏幕上最终的场景颜色,其混合公式为:
Cfinal=η*Cfog+(1-η)*Cs
其中,Cfinal为场景的最终颜色值,Cfog为雾的颜色值,Cs为场景颜色。
本发明各实施例的屏幕空间中体积雾的算法,由于包括:利用MRT技术渲染所有场景的物体,把场景的深度信息渲染到一张纹理上;基于渲染得到的场景信息的纹理,分别渲染体积雾模型的背面和正面,得到体积雾的正、背面深度并保存到两张渲染目标中同时结合场景的深度值计算得到可见像素的混合因子;、基于计算得到的可见像素的混合因子,把场景颜色和雾的颜色以混合因子进行混合,然后投射到屏幕空间最终颜色;可以利用基于屏幕空间的体积雾模拟场景中具有体积且任意形状的雾的效果;从而可以克服现有技术中模拟效果差和适用场景少的缺陷,以实现模拟效果好和适用场景多的优点。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明中场景深度和体积雾正、背深度之间关系示意图;
图2为本发明中基于屏幕空间体积雾的算法流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
为了表现现有技术中这种复杂的模型,根据本发明实施例,如图1和图2所示,提供了一种屏幕空间中体积雾的算法,利用基于屏幕空间的体积雾模拟场景中具有体积且任意形状的雾的效果,当观察者从近到远的场景中物体会逐渐的“朦胧”化,超过一定的距离后完全与背景融合在一起。
在游戏场景中的体积雾,就是被限制了形状的雾,为了加快开发进度,每个游戏开发架构中被置入了模型编辑器,场景编辑器,动作编辑器等工具辅助开发,首先利用场景编辑器置入一个闭合凸面体模型,这个模型用来模拟体积雾影响范围。其原理为:根据屏幕空间场景中UV像素信息和该位置的深度信息,然后结合场景中雾模型的正面和背面的深度信息和根据相机位置的不同得到该场景的可见像素的混合系数,然后将雾的颜色和场景颜色进行混合得到最终场景。
本发明技术方案的具体实施方案为:
第一:首先利用MRT技术渲染所有场景的物体,把场景的深度信息渲染到一张纹理上。
在场景中,各点相对于摄像机的距离可以用深度图来表示,即深度图中的每一个像素值表示场景中某一点与摄像机之间的距离。在未放置雾模型之前,通过渲染场景的所有物体,利用多重渲染目标(MultiRenderTarget,简称MRT)技术渲染场景同时把深度信息保存到一张纹理中,MRT是GPU编程中的像素着色器支持的渲染方式,通过像素着色器可以返回多个渲染目标。
第二:分别渲染体积雾模型的背面和正面,得到体积雾的正、背面深度并保存到两张渲染目标中同时结合场景的深度值计算得到可见像素的混合因子。
为了计算可见像素的混合因子,在放置体积雾模型之后,这个体积雾模型最好是一个闭合的凸面体,是因为当光线进出凸面体的次数不会大于两次,首先渲染不包含任何物体的体积雾模型,先渲染体积雾的正面,并把体积雾正面像素的深度保存到渲染目标中,再渲染体积雾的背面,把体积雾的背面像素的深度保存到另一张渲染目标中,那么体积雾背面像素深度和前面像素深度的差近似为屏幕空间上该像素点的雾的 浓度,对于屏幕上的任意一点像素用同样的方式计算。如图所示1。
从图1中可以看出视点与目标对象的距离简称:视点距离,即:场景深度,可从第一步得到的场景深度图中获取,它与体积雾模型正、背深度之间有着阶梯关系,且在体积雾的正面(fogstart)、背面(fogend)深度值(深度值都是小于1)都小于1的条件下,有以下三种情况表示场景中可见像素的混合因子:
其中,Dback为体积雾背面像素深度值,Dfront为体积雾正面像素深度值,Dsence场景像素深度值,Dfog-back为体积雾背面深度,Dfog-front为体积雾正面深度,D为视点距离。
那么视点距离和雾模型的正背面的深度关系为:
当视点距离小于体积雾的正面深度时,混合系数为0,结果为物体本身的渲染结果。
当视点距离大于雾的背面深度时,混合系数为1;结果使用雾的颜色值。
当视点距离不小于雾的正面深度且小于雾的背面深度时,混合系数范围(0,1);
第三:把场景颜色和雾的颜色以混合因子进行混合,然后投射到屏幕空间最终颜色。
有上述步骤2得到的混合因子,将场景颜色和雾的颜色进行混合,那么在场景编辑器中,雾的颜色是一个可调参数,是已知量,同时设置调节雾的浓度系数,以控制雾的厚薄,将上步得到λ和该浓度系数相乘得到最后的混合系数,这个系数就是输入屏幕之前在帧缓冲中雾的可见像素的混合系数η,可用以下公式表示:
η=λ*d (2)
其中,η可以表示最后的混合系数,d为编辑器中雾的浓度系数。
然后利用clamp函数把最后的混合因子约束在[0,1]之间,从而实现了场景中的物体逐渐融入雾中的渐变效果;
有了上述的最后的混合系数,把场景颜色和雾颜色进行混合,得到输入屏幕上最终的场景颜色,其混合公式为:
Cfinal=η*Cfog+(1-η)*Cs
其中,Cfinal为场景的最终颜色值,Cfog为雾的颜色值,Cs为场景颜色。
与现有技术相比,本发明的技术方案,具有以下优点:
⑴利用雾化优化场景渲染,在观察的范围到物体会被限制在一定距离内,超过一定的距离,渲染远处的物体没有价值,从而可以有效的把这种物体剔除掉,造成不必要的资源浪费;
⑵对场景增加氛围,引入雾效,从近到远的场景中物体会逐渐“朦胧”,在超过一段距离后会完全和背景融在一起。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种屏幕空间中的体积雾的操作方法,其特征在于,包括:
a、利用MRT技术渲染所有场景的物体,把场景的深度信息渲染到一张纹理上;
b、基于渲染得到的场景的深度信息的纹理,分别渲染体积雾模型的背面和正面,得到体积雾的正、背面深度并保存到两张渲染目标中同时结合场景的深度值计算得到可见像素的混合因子;
c、基于计算得到的可见像素的混合因子,把场景颜色和雾的颜色以混合因子进行混合,然后投射到屏幕空间最终颜色;
所述步骤a,具体包括:
在场景中,各点相对于摄像机的距离用深度图来表示,即深度图中的每一个像素值表示场景中某一点与摄像机之间的距离;
在未放置雾模型之前,通过渲染场景的所有物体,利用多重渲染目标MRT技术渲染场景同时把深度信息保存到一张纹理中;MRT是GPU编程中的像素着色器支持的渲染方式,通过像素着色器能够返回多个渲染目标。
所述步骤b,具体包括:
⑴为了计算可见像素的混合因子,在放置体积雾模型之后,首先渲染不包含任何物体的体积雾模型:
先渲染体积雾的正面,并把体积雾正面深度保存到渲染目标中;再渲染体积雾的背面,把体积雾背面深度保存到另一张渲染目标中,那么体积雾背面像素深度值和正面像素深度值的差近似为屏幕空间上可见像素的雾的浓度,对于屏幕上的任意一点的像素用同样的方式计算;
⑵视点与目标对象的距离简称视点距离,即:场景深度,能够从步骤a得到的纹理即场景深度图中获取,它与体积雾模型正、背面深度之间有着阶梯关系,且在体积雾的正面像素深度值、背面像素深度值都小于1的条件下,有以下三种情况表示场景中可见像素的混合因子:
其中,Dback为体积雾背面像素深度值,Dfront为体积雾正面像素深度值,Dsence场景像素深度值,Dfog-back为体积雾背面深度,Dfog-front为体积雾正面深度,D为视点距离。
2.根据权利要求1所述的一种屏幕空间中的体积雾的操作方法,其特征在于,在步骤b中,视点距离和体积雾的正背面的深度关系包括:
当视点距离小于体积雾的正面深度时,混合系数为0,结果为物体本身的渲染结果;
当视点距离大于雾的背面深度时,混合系数为1;结果使用雾的颜色值;
当视点距离不小于雾的正面深度且小于雾的背面深度时,混合系数范围为(0,1)。
3.根据权利要求1所述的一种屏幕空间中的体积雾的操作方法,其特征在于,所述体积雾模型具体是闭合的凸面体,是因为当光线进出凸面体的次数不会大于两次。
4.根据权利要求1-3中任一项所述的一种屏幕空间中的体积雾的操作方法,其特征在于,所述步骤c,具体包括:
⑴基于计算得到的可见像素的混合因子,将场景颜色和雾的颜色进行混合,那么在场景编辑器中,雾的颜色是一个可调参数,是已知量,同时设置调节雾的浓度系数,以控制雾的厚薄,将上步得到λ和该浓度系数相乘得到最后的混合系数,这个系数就是输入屏幕之前在帧缓冲中雾的可见像素的混合系数η,能够用以下公式表示:
η=λ*d (2);
其中,η表示最后的混合系数,d为编辑器中雾的浓度系数;
⑵然后利用clamp函数把最后的混合因子约束在[0,1]之间,实现场景中的物体逐渐融入雾中的渐变效果;
基于上述最后的混合系数,把场景颜色和雾颜色进行混合,得到输入屏幕上场景的最终颜色值,其混合公式为:
Cfinal=η*Cfog+(1-η)*Cs
其中,Cfinal为场景的最终颜色值,Cfog为雾的颜色值,Cs为场景颜色。
CN201410607219.8A 2014-10-31 2014-10-31 一种屏幕空间中的体积雾的操作方法 Expired - Fee Related CN104392478B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410607219.8A CN104392478B (zh) 2014-10-31 2014-10-31 一种屏幕空间中的体积雾的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410607219.8A CN104392478B (zh) 2014-10-31 2014-10-31 一种屏幕空间中的体积雾的操作方法

Publications (2)

Publication Number Publication Date
CN104392478A CN104392478A (zh) 2015-03-04
CN104392478B true CN104392478B (zh) 2017-12-05

Family

ID=52610376

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410607219.8A Expired - Fee Related CN104392478B (zh) 2014-10-31 2014-10-31 一种屏幕空间中的体积雾的操作方法

Country Status (1)

Country Link
CN (1) CN104392478B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104751509A (zh) * 2015-03-31 2015-07-01 克拉玛依红有软件有限责任公司 一种实时体积雾化效果算法
CN106780642B (zh) * 2016-11-15 2020-07-10 网易(杭州)网络有限公司 迷雾遮罩贴图的生成方法及装置
CN108031117B (zh) * 2017-12-06 2021-03-16 北京像素软件科技股份有限公司 区域雾效实现方法及装置
CN115115747A (zh) * 2021-03-09 2022-09-27 网易(杭州)网络有限公司 光照渲染方法、装置、电子设备及存储介质
CN113470161B (zh) * 2021-06-30 2022-06-07 完美世界(北京)软件科技发展有限公司 虚拟环境中容积云的光照确定方法、相关设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6940501B2 (en) * 2001-03-28 2005-09-06 Intel Corporation Tiled display
CN104091363A (zh) * 2014-07-09 2014-10-08 无锡梵天信息技术股份有限公司 一种基于屏幕空间实时的体积云计算方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6940501B2 (en) * 2001-03-28 2005-09-06 Intel Corporation Tiled display
CN104091363A (zh) * 2014-07-09 2014-10-08 无锡梵天信息技术股份有限公司 一种基于屏幕空间实时的体积云计算方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
体积雾(dx9);oayx;《http://www.cnblogs.com/lancidie/archive/2011/02/23/1962538.html》;20110223;1-6 *
体积雾(dx9);第九道;《http://blog.sina.com.cn/s/blog_6ee567910100uwhl.html》;20111212;1-5 *
基于3D图形引擎的雾化渲染方法及实现;熊西满;《万方学位论文数据库》;20080428;正文第27-29页 *
生成多层雾化效果技术的研究;唐为;《万方学位论文数据库》;20080428;正文第2-5页 *
真实感三维场景中实时渲染特效的研究与实现;张毓茜;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130115(第01期);正文第55-62页 *
虚拟环境中自然景物模拟研究;刘芳;《中国优秀硕士学位论文全文数据库 信息科技辑》;20100415(第04期);正文第22-24页 *

Also Published As

Publication number Publication date
CN104392478A (zh) 2015-03-04

Similar Documents

Publication Publication Date Title
CN104392478B (zh) 一种屏幕空间中的体积雾的操作方法
CN107204029B (zh) 渲染方法和装置
CN108986232B (zh) 一种在vr显示设备中呈现ar环境画面的方法
CN104091363A (zh) 一种基于屏幕空间实时的体积云计算方法
US6828969B2 (en) Game system, program and image generating method
CN106384376B (zh) 雾效模拟方法及装置
Aitken et al. The Lord of the Rings: the visual effects that brought middle earth to the screen
Xu et al. Fast modeling of realistic clouds
Ryder et al. A framework for real-time virtual crowds in cultural heritage environments
Babić Volumetric Atmospheric Effects Rendering
KR20150020437A (ko) 건축물 디자인의 프로세싱하는 프로그램이 저장된 기록매체 및 이를 이용한이미지, 동영상 및 가상 현실의 트리플 프리젠테이션
Gawron et al. Heterogeneous fog generated with the effect of light scattering and blur
Luque The cel shading technique
Sobota et al. 3D Computer Graphics and Virtual Reality
Kubota Real-Time Screen Space Cloud Lighting
Raudsepp Volumetric Fog Rendering
Konttinen et al. The future of mixed reality: issues in illumination and shadows
Ryder et al. High Quality Shadows for Real-Time Crowds.
Guan et al. Modeling and rendering of realistic waterfall scenes with dynamic texture sprites
Chandler et al. Procedural window lighting effects for real-time city rendering
Lisitsa Influence of light on realism in computer graphics.
Paquette et al. Rendering a CG Scene
Foster et al. 3D Design and Photogrammetry
JP2022030845A (ja) 仮想視点映像レンダリング装置、方法およびプログラム
Bernik et al. TEHNIKE RENDERIRANJA I RAČUNALNOG OSVJETLJENJA.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20171205