CN104751509A - 一种实时体积雾化效果算法 - Google Patents

一种实时体积雾化效果算法 Download PDF

Info

Publication number
CN104751509A
CN104751509A CN201510150654.7A CN201510150654A CN104751509A CN 104751509 A CN104751509 A CN 104751509A CN 201510150654 A CN201510150654 A CN 201510150654A CN 104751509 A CN104751509 A CN 104751509A
Authority
CN
China
Prior art keywords
mist
depth
value
result
real
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.)
Pending
Application number
CN201510150654.7A
Other languages
English (en)
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.)
KARAMAY HONGYOU SOFTWARE CO Ltd
Original Assignee
KARAMAY HONGYOU SOFTWARE CO Ltd
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 KARAMAY HONGYOU SOFTWARE CO Ltd filed Critical KARAMAY HONGYOU SOFTWARE CO Ltd
Priority to CN201510150654.7A priority Critical patent/CN104751509A/zh
Publication of CN104751509A publication Critical patent/CN104751509A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Abstract

本发明公开了一种实时体积雾化效果算法,涉及计算机图形学领域。本发明实施例提供的实时体积雾化效果算法,基于Z轴深度雾化,从观察点到顶点的有效距离计算,得到的雾化效果会随着两点间距离的增大而增加,符合真实的云雾、水汽或灰尘存在的场景,因此,在利用3D图形引擎进行渲染时,能够更好的表现复杂的雾化效果,而无需再构建其他公式或算法,且场景雾化效果更真实,更具有沉浸感和纵深感;同时,本发明实施例中,使用HLSL极大的提高了3D程序设计的灵活性,实现了许多固定功能流水线所不能实现的功能,从而提高了该算法在图形系统中的应用率。

Description

一种实时体积雾化效果算法
技术领域
本发明涉及计算机图形学领域,尤其涉及一种实时体积雾化效果算法。
背景技术
在雾气比较严重的地区,往往距离观察点很近的物体比较清晰,而远处的物体随着距离的增加会变得越来越模糊。在计算机绘图中,一般使用雾化在三维显示中模拟真实世界的云雾、水汽和灰尘等自然景观,增加三维场景的真实感。目前,像素雾化和顶点雾化由可以实现真实而高效的雾化渲染效果,能够大大增强虚拟现实、3D视频游戏、飞行仿真等实时图形系统场景的真实感、沉浸感和纵深感,所以,得到了较多的关注和广泛的使用。
在Direct3D图形系统中,雾化是通过将景物颜色与雾的颜色,以混合因子混合而实现的,其中,混合因子随物体到观察点距离的增加而衰减。计算雾化的公式为:
color=f*colorscene+(1-f)*colorfog
其中,colorscene为物体的颜色,colorfog为雾的颜色,f为混合因子,color为雾化后的颜色,即雾化效果。
从公式中可以看出,影响雾化效果的因素主要包括混合因子和雾的颜色,一般情况下,雾的颜色为白色或背景色,所以,影响雾化效果的因素主要是混合因子,这样,雾化效果算法的关键点就是如何确定混合因子。
目前,Direct3D提供的确定混合因子的方法主要包括以下三种:
(1.D3DFOG_LINEAR
F=(end-d)/(end-start)
其中,F表示混合因子,start表示雾起始的深度,end表示雾终止的深度,d表示当前点距观测点的距离;
(2.D3DFOG_EXP
F=e-d*density
其中,F表示混合因子,d表示当前点距观测点的距离,density表示雾的密度;
(3.D3DFOG_EXP2
F=e-(d*density)2
其中,F表示混合因子,d表示当前点距观测点的距离,density表示雾的密度。
但是,上述3种方法得到的混合因子,应用于雾化中,仅仅能够实现基本的雾化效果,如果需要模拟更复杂的、更真实自然的效果,往往还需要根据应用需求的不同,另外构建其他公式或算法,因此,在图形系统的雾化渲染技术中应用率很低。
发明内容
本发明的目的在于提供一种实时体积雾化效果算法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种实时体积雾化效果算法,包括如下步骤:
S1,从Z-Buffer与Frame-Buffer中,获取每个像素点的深度信息,所述深度信息包括场景深度信息、雾正面深度信息和雾背面深度信息;
S2,将所述深度信息保存到深度纹理图片上,具体包括:将所述场景深度信息保存到场景深度纹理图片上;将所述雾正面深度信息保存到雾正面深度纹理图片上;将所述雾背面深度信息保存到雾背面深度纹理图片上;
S3,在可编程流水线中,调用HLSL取样函数,从所述深度纹理图片中调取深度值,具体包括:从所述场景深度纹理图片中调取场景深度值,从所述雾正面深度纹理图片中调取雾正面深度值,从所述雾背面深度纹理图片中调取雾背面深度值;
S4,根据所述深度值计算雾所占距离,即视点与目标象素点的距离上雾所占的距离;所述深度值包括所述场景深度值、所述雾正面深度值和所述雾背面深度值
S5,根据所述雾所占距离和雾的浓度,利用如下公式计算混合因子:
float Disfactor=clamp(dis/FogDensity,0,1);
式中,
Disfactor,混合因子,其取值区间为(0,1);
dis,雾所占距离;
FogDensity,雾的浓度;
S6,根据所述混合因子、模型纹理颜色值和雾的浓度,计算并返回混合后的颜色值;
S7,在3D图形渲染中,根据所述返回的混合后的颜色值雾化渲染场景,得到实时体积雾化效果。
进一步地,S1之前,还包括步骤S0,获取Z-Buffer与Frame-Buffer。
优选地,S2中所述将所述深度信息保存到深度纹理图片上,使用MultiRenderTarget技术。
优选地,S3中,所述取样函数为HLSL内置函数tex2D(s,t)。
进一步地,S3和S4之间还包括步骤:
按照设定的第一规则,将float类型的深度值转换成float4类型的A\R\G\B颜色值并进行保存,其中,透明度值A为不透明,R、G、B的数值均小于1大于等于0;
按照设定的第二规则将float4类型的A\R\G\B颜色值转换成float类型的深度值并进行调用,其中,所述第二规则为所述第一规则的相反的逻辑规则。
优选地,所述设定的第一规则为:
将所述深度值除以设定的系数,得到第一结果,如果所述第一结果包括整数部分和小数部分,则将所述第一结果中的小数部分做为R的数值予以保存,将所述第一结果中的整数部分除以所述设定的系数,得到第二结果;如果所述第二结果包括整数部分和小数部分,则将所述第二结果中的小数部分做为G的数值予以保存,将所述第二结果中的整数部分除以所述设定的系数,得到第三结果;如果所述第三结果包括整数部分和小数部分,则将所述第三结果中的小数部分做为B的数值予以保存,并结束;
如果所述第一结果只包括整数部分,则将0做为R的数值予以保存;将所述第一结果的整数部分除以所述设定的系数,得到第二结果,将所述第二结果中的小数部分作为G的数值予以保存;将所述第二结果中的整数部分除以所述设定系数,得到第三结果,将所述第三结果中的小数部分作为B的数值值予以保存,并结束;
如果所述第一结果只包括小数部分,则将该小数部分做为R的数值予以保存,将0做为G、B的数值予以保存,并结束。
其中,S4具体为:
如果所述场景深度值介于所述雾正面深度值与所述雾背面深度值之间,则按照如下公式进行计算:雾所占距离=场景深度值-雾正面深度值;
如果所述场景深度值大于所述雾背面深度值,则按照如下公式进行计算:雾所占距离=雾背面深度值-雾正面深度值;
否则,雾所占距离等于0。
优选地,S6按照如下公式计算混合后的颜色值:
Color=sceneColor*(1-Disfactor)+fogColor*Disfactor
式中,
Color,混合后的颜色值;
sceneColor,模型纹理颜色值;
Disfactor,混合因子;
fogColor,雾颜色值。
进一步地,S5和S6之间还包括步骤,获取模型纹理颜色值和雾颜色值。
优选地,所述模型的颜色根据如下方法获取:利用HLSL内置函数tex2D(s,t)获取模型的纹理信息,所述纹理信息包括采样器和纹理坐标,根据所述采样器和所述纹理坐标,获取所述模型纹理颜色值。
本发明的有益效果是:本发明实施例提供的实时体积雾化效果算法,基于Z轴深度雾化,从观察点到顶点的有效距离计算,得到的雾化效果会随着两点间距离的增大而增加,符合真实的云雾、水汽或灰尘存在的场景,因此,在利用3D图形引擎进行渲染时,能够更好的表现复杂的雾化效果,而无需再构建其他公式或算法,且场景雾化效果更真实,更具有沉浸感和纵深感;同时,本发明实施例中,使用HLSL极大的提高了3D程序设计的灵活性,实现了许多固定功能流水线所不能实现的功能,从而可以提高该算法在图形系统中的应用率。
附图说明
图1是本发明实施例提供的实时体积雾化效果算法流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明实施例提供了一种实时体积雾化效果算法,包括如下步骤:
S1,从Z-Buffer与Frame-Buffer中,获取每个像素点的深度信息,所述深度信息包括场景深度信息、雾正面深度信息和雾背面深度信息;
S2,将所述深度信息保存到深度纹理图片上,具体包括:将所述场景深度信息保存到场景深度纹理图片上;将所述雾正面深度信息保存到雾正面深度纹理图片上;将所述雾背面深度信息保存到雾背面深度纹理图片上;
S3,在可编程流水线中,调用HLSL取样函数,从所述深度纹理图片中调取深度值,具体包括:从所述场景深度纹理图片中调取场景深度值,从所述雾正面深度纹理图片中调取雾正面深度值,从所述雾背面深度纹理图片中调取雾背面深度值;
S4,根据所述深度值计算雾所占距离,即视点与目标象素点的距离上雾所占的距离;所述深度值包括所述场景深度值、所述雾正面深度值和所述雾背面深度值
S5,根据所述雾所占距离和雾的浓度,利用如下公式计算混合因子:
float Disfactor=clamp(dis/FogDensity,0,1);
式中,
Disfactor,混合因子,其取值区间为(0,1);
dis,雾所占距离;
FogDensity,雾的浓度;
S6,根据所述混合因子、模型纹理颜色值和雾的浓度,计算并返回混合后的颜色值;
S7,在3D图形渲染中,根据所述返回的混合后的颜色值雾化渲染场景,得到实时体积雾化效果。
本发明实施例中,首先从Z-Buffer与Frame-Buffer中获取深度信息,并保存成纹理,然后在可编程流水线中,调用深度值,并计算混合因子和混合后的颜色值,得到混合后的颜色值后,可编程流水线就会将混合后的颜色值返回给3D图形渲染系统,则3D图形渲染系统就会根据该混合后的颜色值进行图形雾化渲染,得到雾化效果,这是此雾化图形渲染流程。而流程中所需要的一系列的算法存放在特效文件中,而可编程流水线利用特效文件中的算法得出混合后的颜色值,3D图形渲染引擎直接使用进行渲染。
上述实时体积雾化效果算法,是基于Z轴深度雾化,从观察点到顶点的有效距离计算,得到的雾化效果会随着两点间距离的增大而增加,符合真实的云雾、水汽或灰尘存在的场景,因此,在利用3D图形引擎进行渲染时,能够更好的表现复杂的雾化效果,而无需再构建其他公式或算法,且场景雾化效果更真实,更具有沉浸感和纵深感。
本发明实施例中,使用HLSL极大的提高了3D程序设计的灵活性,实现了许多固定功能流水线所不能实现的功能,从而可以提高该算法在图形系统中的应用率。
本发明实施例中,S1之前,还包括步骤S0,获取Z-Buffer与Frame-Buffer。
其中,Z buffer的原理非常简单。在绘制3D场景时,除了存放绘制结果的frame buffer外,另外再使用一个额外的空间,也就是Z buffer。Z buffer记录frame buffer上,每个pixel和观察者的距离,也就是Z值。
本发明实施例中,S2中所述将所述深度信息保存到深度纹理图片上,可以使用MultiRenderTarget技术。
本发明实施例中,S3中,所述取样函数为HLSL内置函数tex2D(s,t)。
因为深度信息(包括场景深度信息、雾正面深度信息和雾背面深度信息)在S2中都已经保存到了深度纹理图片上,即保存成了texture形式,所以,当利用HLSL调用内置函数tex2D(s,t)从中取值时,取出的值就是深度值(包括场景深度值、雾正面深度值和雾背面深度值)。
由于特效文件中只能保存0~1之间的值,而如果调取出来的深度值大于1,则无法保存,则为了保存深度值,本发明实施例中,S3和S4之间还包括步骤:
按照设定的第一规则,将float类型的深度值转换成float4类型的A\R\G\B颜色值并进行保存,其中,透明度值A为不透明,R、G、B的数值均小于1大于等于0;
按照设定的第二规则将float4类型的A\R\G\B颜色值转换成float类型的深度值并进行调用,其中,所述第二规则为所述第一规则的相反的逻辑规则。
通过采用上述方法,就可以把大于1的深度值转换成小于1大于等于0的颜色值进行保存,当使用深度值计算混合因子时,再使用相反的逻辑规则将保存保存的颜色值转换成深度值。
其中,所述设定的第一规则为:
将所述深度值除以设定的系数,得到第一结果,如果所述第一结果包括整数部分和小数部分,则将所述第一结果中的小数部分做为R的数值予以保存,将所述第一结果中的整数部分除以所述设定的系数,得到第二结果;如果所述第二结果包括整数部分和小数部分,则将所述第二结果中的小数部分做为G的数值予以保存,将所述第二结果中的整数部分除以所述设定的系数,得到第三结果;如果所述第三结果包括整数部分和小数部分,则将所述第三结果中的小数部分做为B的数值予以保存,并结束;
如果所述第一结果只包括整数部分,则将0做为R的数值予以保存;将所述第一结果的整数部分除以所述设定的系数,得到第二结果,将所述第二结果中的小数部分作为G的数值予以保存;将所述第二结果中的整数部分除以所述设定系数,得到第三结果,将所述第三结果中的小数部分作为B的数值值予以保存,并结束;
如果所述第一结果只包括小数部分,则将该小数部分做为R的数值予以保存,将0做为G、B的数值予以保存,并结束。
采用这种规则将深度值转换成A\R\G\B颜色值予以保存,可以提高转换的精度。而且,为了使用第二规则将颜色值反转换成深度值时,转换比较方便,每次使用的除数都选用同一个设定的系数。
下面通过具体数值说明根据第一规则将深度值转换成颜色值的过程。
例1,深度值s=20000,设定的系数=255,
20000/255=78.43137254901961,则
R=0.43137254901961,
78/255=0.3058823529411765,则
G=0.3058823529411765,
B=0。
则数值为20000的深度值可以保存成
0.43137254901961\0.3058823529411765\0的不透明的R\G\B颜色值。
例2,深度值s=15300,设定的系数=255,则
15300/255=60,则
R=0,
60/255=0.2352941176470588,则
G=0.2352941176470588,
B=0。
则数值为15300的深度值可以保存成0\0.2352941176470588\0的不透明的R\G\B颜色值。
下面通过具体数值说明根据第二规则将颜色值转换成深度值的过程,可以采用如下公式:R*pow(L,1)+G*pow(L,2)+B*pow(L,3)。
在上述例1的基础上,通过如下方法将0.4314\0.3059\0的不透明的R\G\B颜色值转换成20000的深度值:
0.43137254901961*2551+0.3058823529411765*2552+0*2553=110.0000000000006+119890+0=20000
在上述例2的基础上,通过如下方法将0\0.2352941176470588\0的不透明的R\G\B颜色值转换成15300的深度值:
0*2551+0.2352941176470588*2552+0*2553=15300
本发明实施例中,S4具体为:
如果所述场景深度值介于所述雾正面深度值与所述雾背面深度值之间,则可以按照如下公式进行计算:雾所占距离=场景深度值-雾正面深度值;
如果所述场景深度值大于所述雾背面深度值,则可以按照如下公式进行计算:雾所占距离=雾背面深度值-雾正面深度值;
否则,雾所占距离等于0。
通过上述方法计算雾所占距离,即视点与目标象素点的距离上雾所占的距离。
得到雾所占距离后,可以再利用如下公式计算混合因子:
float Disfactor=clamp(dis/FogDensity,0,1)
式中,
Disfactor,混合因子,其取值区间为(0,1);
dis,雾所占距离;
FogDensity,雾的浓度;
与现有技术提供的混合因子的计算方法相比,根据上述方法计算得到的混合因子,用于雾化效果计算时,可以使表现的雾化效果更符合真实的云雾、水汽或灰尘存在的场景,在利用3D图形引擎进行渲染时,能够更好的表现复杂的雾化效果,而无需再构建其他公式或算法,且场景雾化效果更真实,更具有沉浸感和纵深感。
本发明实施例中,S6可以按照如下公式计算混合后的颜色值:
Color=sceneColor*(1-Disfactor)+fogColor*Disfactor
式中,
Color,混合后的颜色值;
sceneColor,模型纹理颜色值;
Disfactor,混合因子;
fogColor,雾颜色值。
利用上述方法,当模型纹理颜色值、雾颜色值和混合因子三个决定混合后的颜色值的因素确定后,混合后的颜色值就是确定的,即雾化效果就是确定的。
本发明实施例中,S5和S6之间还包括步骤,获取模型纹理颜色值和雾颜色值。其中,所述模型的颜色可以根据如下方法获取:利用HLSL内置函数tex2D(s,t)获取模型的纹理信息,所述纹理信息包括采样器和纹理坐标,根据所述采样器和所述纹理坐标,获取所述模型纹理颜色值。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明实施例提供的实时体积雾化效果算法,基于Z轴深度雾化,从观察点到顶点的有效距离计算,得到的雾化效果会随着两点间距离的增大而增加,符合真实的云雾、水汽或灰尘存在的场景,因此,在利用3D图形引擎进行渲染时,能够更好的表现复杂的雾化效果,而无需再构建其他公式或算法,且场景雾化效果更真实,更具有沉浸感和纵深感;同时,本发明实施例中,使用HLSL极大的提高了3D程序设计的灵活性,实现了许多固定功能流水线所不能实现的功能,从而可以提高该算法在图形系统中的应用率。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域人员应该理解的是,上述实施例提供的方法步骤的时序可根据实际情况进行适应性调整,也可根据实际情况并发进行。
上述实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,例如:个人计算机、服务器、网络设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,例如:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

Claims (10)

1.一种实时体积雾化效果算法,其特征在于,包括如下步骤:
S1,从Z-Buffer与Frame-Buffer中,获取每个像素点的深度信息,所述深度信息包括场景深度信息、雾正面深度信息和雾背面深度信息;
S2,将所述深度信息保存到深度纹理图片上,具体包括:将所述场景深度信息保存到场景深度纹理图片上;将所述雾正面深度信息保存到雾正面深度纹理图片上;将所述雾背面深度信息保存到雾背面深度纹理图片上;
S3,在可编程流水线中,调用HLSL取样函数,从所述深度纹理图片中调取深度值,具体包括:从所述场景深度纹理图片中调取场景深度值,从所述雾正面深度纹理图片中调取雾正面深度值,从所述雾背面深度纹理图片中调取雾背面深度值;
S4,根据所述深度值计算雾所占距离,即视点与目标象素点的距离上雾所占的距离;所述深度值包括所述场景深度值、所述雾正面深度值和所述雾背面深度值
S5,根据所述雾所占距离和雾的浓度,利用如下公式计算混合因子:
float Disfactor=clamp(dis/FogDensity,0,1);
式中,
Disfactor,混合因子,其取值区间为(0,1);
dis,雾所占距离;
FogDensity,雾的浓度;
S6,根据所述混合因子、模型纹理颜色值和雾的浓度,计算并返回混合后的颜色值;
S7,在3D图形渲染中,根据所述返回的混合后的颜色值雾化渲染场景,得到实时体积雾化效果。
2.根据权利要求1所述的实时体积雾化效果算法,其特征在于,S1之前,还包括步骤S0,获取Z-Buffer与Frame-Buffer。
3.根据权利要求1所述的实时体积雾化效果算法,其特征在于,S2中所述将所述深度信息保存到深度纹理图片上,使用MultiRenderTarget技术。
4.根据权利要求1所述的实时体积雾化效果算法,其特征在于,S3中,所述取样函数为HLSL内置函数tex2D(s,t)。
5.根据权利要求1所述的实时体积雾化效果算法,其特征在于,S3和S4之间还包括步骤:
按照设定的第一规则,将float类型的深度值转换成float4类型的A\R\G\B颜色值并进行保存,其中,透明度值A为不透明,R、G、B的数值均小于1大于等于0;
按照设定的第二规则将float4类型的A\R\G\B颜色值转换成float类型的深度值并进行调用,其中,所述第二规则为所述第一规则的相反的逻辑规则。
6.根据权利要求5所述的实时体积雾化效果算法,其特征在于,所述设定的第一规则为:
将所述深度值除以设定的系数,得到第一结果,如果所述第一结果包括整数部分和小数部分,则将所述第一结果中的小数部分做为R的数值予以保存,将所述第一结果中的整数部分除以所述设定的系数,得到第二结果;如果所述第二结果包括整数部分和小数部分,则将所述第二结果中的小数部分做为G的数值予以保存,将所述第二结果中的整数部分除以所述设定的系数,得到第三结果;如果所述第三结果包括整数部分和小数部分,则将所述第三结果中的小数部分做为B的数值予以保存,并结束;
如果所述第一结果只包括整数部分,则将0做为R的数值予以保存;将所述第一结果的整数部分除以所述设定的系数,得到第二结果,将所述第二结果中的小数部分作为G的数值予以保存;将所述第二结果中的整数部分除以所述设定系数,得到第三结果,将所述第三结果中的小数部分作为B的数值值予以保存,并结束;
如果所述第一结果只包括小数部分,则将该小数部分做为R的数值予以保存,将0做为G、B的数值予以保存,并结束。
7.根据权利要求1所述的实时体积雾化效果算法,其特征在于,S4具体为:
如果所述场景深度值介于所述雾正面深度值与所述雾背面深度值之间,则按照如下公式进行计算:雾所占距离=场景深度值-雾正面深度值;
如果所述场景深度值大于所述雾背面深度值,则按照如下公式进行计算:雾所占距离=雾背面深度值-雾正面深度值;
否则,雾所占距离等于0。
8.根据权利要求1所述的实时体积雾化效果算法,其特征在于,S6按照如下公式计算混合后的颜色值:
Color=sceneColor*(1-Disfactor)+fogColor*Disfactor
式中,
Color,混合后的颜色值;
sceneColor,模型纹理颜色值;
Disfactor,混合因子;
fogColor,雾颜色值。
9.根据权利要求1所述的实时体积雾化效果算法,其特征在于,S5和S6之间还包括步骤,获取模型纹理颜色值和雾颜色值。
10.根据权利要求9所述的实时体积雾化效果算法,其特征在于,所述模型的颜色根据如下方法获取:利用HLSL内置函数tex2D(s,t)获取模型的纹理信息,所述纹理信息包括采样器和纹理坐标,根据所述采样器和所述纹理坐标,获取所述模型纹理颜色值。
CN201510150654.7A 2015-03-31 2015-03-31 一种实时体积雾化效果算法 Pending CN104751509A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510150654.7A CN104751509A (zh) 2015-03-31 2015-03-31 一种实时体积雾化效果算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510150654.7A CN104751509A (zh) 2015-03-31 2015-03-31 一种实时体积雾化效果算法

Publications (1)

Publication Number Publication Date
CN104751509A true CN104751509A (zh) 2015-07-01

Family

ID=53591127

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510150654.7A Pending CN104751509A (zh) 2015-03-31 2015-03-31 一种实时体积雾化效果算法

Country Status (1)

Country Link
CN (1) CN104751509A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106023294A (zh) * 2016-05-05 2016-10-12 广东小天才科技有限公司 一种基于OpenGL的雾化方法和系统
CN107899240A (zh) * 2017-12-06 2018-04-13 北京像素软件科技股份有限公司 水底雾效实现方法及装置
CN108031117A (zh) * 2017-12-06 2018-05-15 北京像素软件科技股份有限公司 区域雾效实现方法及装置
CN116168587A (zh) * 2023-02-21 2023-05-26 北京千种幻影科技有限公司 一种驾驶模拟场景生成方法、装置及显示设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6940504B1 (en) * 2000-11-21 2005-09-06 Microsoft Corporation Rendering volumetric fog and other gaseous phenomena using an alpha channel
CN104091363A (zh) * 2014-07-09 2014-10-08 无锡梵天信息技术股份有限公司 一种基于屏幕空间实时的体积云计算方法
CN104392478A (zh) * 2014-10-31 2015-03-04 无锡梵天信息技术股份有限公司 一种屏幕空间中体积雾的算法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6940504B1 (en) * 2000-11-21 2005-09-06 Microsoft Corporation Rendering volumetric fog and other gaseous phenomena using an alpha channel
CN104091363A (zh) * 2014-07-09 2014-10-08 无锡梵天信息技术股份有限公司 一种基于屏幕空间实时的体积云计算方法
CN104392478A (zh) * 2014-10-31 2015-03-04 无锡梵天信息技术股份有限公司 一种屏幕空间中体积雾的算法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
OAYX: "体积雾(dx9)", 《HTTP://WWW.CNBLOGS.COM/LANCIDIE/ARCHIVE/2011/02/23/1962538.HTML》 *
徐成虎 等: "DirectX3D中的雾化效果及其实现", 《陕西科技大学学报(自然科学版)》 *
熊西满: "基于3D图形引擎的雾化渲染方法及实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
王彦: "基于顶点着色器的雾化因子定义方法", 《计算机工程》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106023294A (zh) * 2016-05-05 2016-10-12 广东小天才科技有限公司 一种基于OpenGL的雾化方法和系统
CN107899240A (zh) * 2017-12-06 2018-04-13 北京像素软件科技股份有限公司 水底雾效实现方法及装置
CN108031117A (zh) * 2017-12-06 2018-05-15 北京像素软件科技股份有限公司 区域雾效实现方法及装置
CN107899240B (zh) * 2017-12-06 2020-12-29 北京像素软件科技股份有限公司 水底雾效实现方法及装置
CN108031117B (zh) * 2017-12-06 2021-03-16 北京像素软件科技股份有限公司 区域雾效实现方法及装置
CN116168587A (zh) * 2023-02-21 2023-05-26 北京千种幻影科技有限公司 一种驾驶模拟场景生成方法、装置及显示设备
CN116168587B (zh) * 2023-02-21 2024-07-19 北京千种幻影科技有限公司 一种驾驶模拟场景生成方法、装置及显示设备

Similar Documents

Publication Publication Date Title
CN102768765B (zh) 实时点光源软阴影渲染方法
CN103500467B (zh) 基于图像的三维模型构成方法
CN113034656B (zh) 游戏场景中光照信息的渲染方法、装置及设备
CN102831631A (zh) 一种大规模三维动画的渲染方法及渲染装置
CN107369205B (zh) 一种移动终端城市二三维联动显示方法
CN103530907B (zh) 基于图像的复杂三维模型绘制方法
CN103606184B (zh) 一种基于二维和三维一体化矢量渲染引擎的装置
CN104751509A (zh) 一种实时体积雾化效果算法
CN103295269B (zh) 一种电磁环境体数据等值面提取方法
CN104299257B (zh) 一种基于室外太阳光实现实时动态阴影的方法
CN105046733A (zh) 一种基于三维多纹理贴图方法
CN101615300B (zh) 一种屏幕空间微结构表面对象环境光遮挡方法
CN104143205A (zh) 大规模真实感体积云的实时渲染方法
CN105184843B (zh) 一种基于OpenSceneGraph的三维动画制作方法
CN104157000B (zh) 模型表面法线的计算方法
CN103700134A (zh) 基于可控制纹理烘焙的三维矢量模型实时光影延迟着色渲染方法
Bao et al. Realistic real-time rendering for large-scale forest scenes
Kim et al. CanvoX: High-resolution VR painting in large volumetric canvas
CN105261063A (zh) 基于八叉树的三维粒子系统模拟大规模海洋气候的方法
Jahrmann Interactive grass rendering using real-time tessellation
Kolivand et al. Real-time shadow using a combination of stencil and the z-buffer
CN115423917B (zh) 一种全球三维风场实时绘制方法及系统
Li et al. Real-time rendering and animating of grass
Chang et al. Performance comparison of rasterization-based graphics pipeline and ray tracing on GPU shaders
Wegen et al. FERMIUM: A Framework for Real-time Procedural Point Cloud Animation and Morphing.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20150701

RJ01 Rejection of invention patent application after publication