基于大气散射原理对天空进行渲染的方法和装置制造方法及图纸

技术编号:3844465 阅读:243 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于大气散射原理对天空进行渲染的方法,用于生成网络游戏场景中的天空,A.判断是否满足渲染更新条件,若不满足,则转至步骤C,否则执行步骤B;B.以当前视点为原点,生成参与散射计算极坐标球形模型,将需要参与散射计算的极坐标模型按照水平角分为m等份,按照高度角分为n等份,这样所述参与散射计算的极坐标球形模型被分为m×n个空间角单元;对于所述每一个空间角单元采用相位计算、粒子对光线吸收和粒子对光线散射的计算公式进行计算,将计算结果保存为m×n大小的贴图缓冲上,所述m和n为自然数;C.根据当前太阳方向在水平面上的偏移量将所得到贴图缓冲映射到实际显示的天空图像。本发明专利技术还公开了对天空进行渲染的装置。

【技术实现步骤摘要】

本专利技术涉及图形及图像处理
,特别涉及一种基于大气散射原理 对天空进行渲染的方法和装置。
技术介绍
多人参与的网络游戏往往需要构造一个视觉上接近真实的虚拟世界并 呈现在显示设备上,游戏玩家从中获得身临其境的感受。虚拟世界中大量存 在户外场景,在显示虚拟世界的天空时,需要考虑真实的物理规律,其中最 重要的一点是要考虑大气散射原理对天空的影响。散射的计算能够满足网络 游戏的连续时间空间的需要,能够大大提高游戏视觉表现力和游戏性。能够 为其他的特效例如体积雾,光柱,水体反射,散射,提供写实氛围的环境光 源。大气散射主要包括如下物理规律1) 瑞利散射(Rayleigh Scattering),这是分子级别的散射方式,对不 同色彩的光线散射吸收不同,长波长的光线被吸收较多,短波长光线的散射 率较高。2) ( Mie Scattering )是对较大颗粒发生的散射方式,看起来比较灰暗 的散射,当Mie Scattering比较大的时候比如沙尘暴,太阳周围会出现光环。散射的计算需要考虑的三个方面粒子对光线的吸收(In-Scattering)、 粒子的对光线的散射(Out-Scattering)以及相位计算(Phase Function )。In-Scattering的计算^^式为化g,李4;rxi:(/l)x (%xpJ尸,仏4<formula>formula see original document page 5</formula>上述公式中各个符号的含义如图1所示 g: 散射对称性常量6>:散射位角AB和P(n)C之间的夹角尸 ,尸6视点方向上的采样点h: 采样高度大气平均密度数值对应的大气的高度值X: 散射光波的波长现有的基于大气散射原理对天空进行渲染的方法包括 GPU Gems2方法基于Mr. Sean O'Neil的散射计算模型,该模型中考 虑到上述In-Scattering、 Out-Scattering以及Phase Function相关的大气计算 公式,利用图形处理器(GPU)实时渲染全天空的散射。该算法必须对每 一帧显示画面都进行渲染,而一秒钟通常显示30帧,顶点渲染(Vertex Shader)的指令长度超过100条,像素渲染(Pixel Shader)的指令有27条 之多,相当于渲染两个复杂模型并且使用法线和Phong Shading的负载。该 方案对于负载的要求太高,对于以场景复杂度为主要压力的大规模网络游戏 来讲,高负载的天空渲染是不能够承受的。Crysis方法使用中央处理器(CPU)和把计算分担到数帧的渲染方 式计算散射,然后緩存到贴图,利用计算好的贴图信息渲染每一帧,太阳区 域进行额外的实时散射渲染。该方法并不每一帧却计算散射值而使用渲染到 贴图(Render to Texture)的技术,计算一次之后,把保存到贴图的散射 信息直接渲染到天空球。但是该方法没有解决高频率的太阳的细节在较低分辨率上的重现问题。该问题的原因在于,由于硬件差值采样是基于线性优化 过的,所以自行完成其他的方式采样会导致速度降低,较低的网格的差值运 算会导致色块产生。高网格的光栅化的代价又无法接受。需要保证对高动态范围(HDR)的支持,对高亮度的细节要求又比较高,这一部分他们只能重 新渲染。对于这一问题,该方案的做法就是每一帧重新渲染太阳区域的这一 部分散射,然后把计算的结果和生成的图混合,能够完成比较好的效果。但 是该方法的散射计算是负载到CPU上的,虽然并不需要一帧内完成,这个 对于CPU的负载还是较大的,在日出日落的时候,散射状况变化很大,更新 频率较高,CPU压力增大,会导致渲染速度更新不及时。当在渲染太阳和天 空的散射优化图的时候,也需要每帧稳定的两次以上的drawcall。
技术实现思路
有鉴于此,本专利技术实施例提出 一种基于大气散射原理对天空进行渲染的 方法和装置,可以在较低配置的客户端上流畅运行,同时能够保证所得到天 空符合物理的大气散射规律。本专利技术实施例提出的基于大气散射原理对天空进行渲染的方法,包括如下 步骤A、 判断是否满足渲染更新条件,若不满足,则转至步骤C,否则执行 步骤B;B、 以当前视点为原点,生成参与散射计算极坐标球形模型,将需要参 与散射计算的极坐标球形模型按照水平角分为m等份,按照高度角分为n 等份,这样所述参与散射计算的极坐标球形模型被分为m x n个空间角单元; 对于所述每一个空间角单元采用相位计算、粒子对光线吸收和粒子对光线散 射的计算公式进行计算,将计算结果保存为mxn大小的贴图緩冲,所述m和n为自然数;C、 根据当前太阳方向在水平面上的偏移量将所得到贴图緩冲映射到实际显示的天空图像。所述渲染更新条件为满足如下任意一个条件 首次进行天空渲染;距离上一次进行天空渲染的时间达到了预设时间阈值; 视点的高度变化达到预设高度阈值。 较佳地,所述111=11=256。所述参与散射计算极坐标球形为以视点与太阳连线所在的垂直平面为 对称平面,将天空分为相互对称的两个四分之一J求。所述根据当前太阳方向在水平面上的偏移量将所得到贴图映射到实际 显示的天空图像包括将所述贴图做一次渲染得到当前的二分之一天空散射将已得到二分之一天空散射图利用对称的极坐标,得到另外二分之一天 空散射图。本专利技术实施例提出的基于大气散射原理对天空进行渲染的装置包括更新判断模块,用于根据游戏场景判断是否满足渲染更新条件,若是则 通知贴图计算模块计算新的贴贴图计算模块,用于根据更新判断模块的通知,以当前视点为原点,生 成参与散射计算极坐标球形,将需要参与散射计算的极坐标球形按照水平角 分为m等份,按照高度角分为n等份,这样所述四分之一球形被分为mxn 个空间角单元;对于所述每一个空间角单元采用相位计算、粒子对光线吸收 和粒子对光线散射的计算公式进行计算,将计算结果保存为mxn大小的贴 图,所述m和n为自然数;映射模块,用于计算出当前太阳方向在水平面上的偏移量,根据当前太 阳方向在水平面上的偏移量将贴图计算模块所得到贴图映射到实际显示的 天空图像。从以上技术方案可以看出,按照是否满足渲染更新条件来计算新的渲染 贴图,可以将图像分为更新澄染帧和非更新渲染帧两类,其中非更新渲染帧无需重新计算贴图,计算量很小;而更新渲染帧所计算的贴图緩存大小与天 空在屏幕上占据的大小无关,与屏幕的分辨率无关,与现有技术相比,极大 地降低了计算量,因此可以在较低配置的客户端上流畅运行。附图说明图1为大气散射原理示意图2为本专利技术实施例中参与散射计算的天空四分之一极坐标球形模型 示意图3为本专利技术实施例提出的对天空进行渲染的方法的实现流程图; 图4为本专利技术实施例提出的对天空进行渲染的装置框图。具体实施例方式本专利技术提出的对天空进行渲染的方案,针对网络游戏的特点采取相应的 处理措施1、 户外渲染占游戏场景的比重较大。天空占据户外渲染的屏幕的比重 比较大,Pixel Shader的运算负担比较大,而对于天空细节的分辨要求不是4艮 高。因此本专利技术方案针对预先设置的固定大小的贴图,可以极大降低计算量, 并且保持计算量在不同分辨率下恒定。2、 时间变化基于真实世界的时间或者以 一定的比例和真实世界的时间 相对应。散本文档来自技高网
...

【技术保护点】
一种基于大气散射原理对天空进行渲染的方法,用于生成网络游戏场景中的天空,其特征在于,包括如下步骤: A、判断是否满足渲染更新条件,若不满足,则转至步骤C,否则执行步骤B; B、以当前视点为原点,生成参与散射计算极坐标球形模型,将 需要参与散射计算的极坐标球形模型按照水平角分为m等份,按照高度角分为n等份,这样参与散射计算的极坐标球形模型被分为m×n个空间角单元;对于所述每一个空间角单元采用相位计算、粒子对光线吸收和粒子对光线散射的计算公式进行计算,将计算结果保存为m×n大小的贴图缓冲,所述m和n为自然数; C、根据当前太阳方向在水平面上的偏移量将所得到贴图缓冲映射到实际显示的天空图像。

【技术特征摘要】

【专利技术属性】
技术研发人员:冯星
申请(专利权)人:北京像素软件科技股份有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1