一种场景多点光源渲染方法及装置

文档序号:1128853 发布日期:2020-10-02 浏览:20次 >En<

阅读说明:本技术 一种场景多点光源渲染方法及装置 (Scene multipoint light source rendering method and device ) 是由 林进浔 黄明炜 于 2020-06-03 设计创作,主要内容包括:本发明提供的一种场景多点光源渲染方法及装置,通过创建第一渲染贴图,生成颜色贴图;创建第二渲染贴图,生成方向贴图;根据所述方向贴图和颜色贴图进行像素的着色计算,在实际渲染时采用预结算渲染贴图的方式,不仅解决了前向渲染管线计算量大的问题,还解决了延迟渲染中传输带宽消耗大的问题。(The invention provides a scene multipoint light source rendering method and a scene multipoint light source rendering device, wherein a color map is generated by creating a first rendering map; creating a second rendering map, and generating a direction map; and performing pixel coloring calculation according to the direction map and the color map, and adopting a mode of precalculating the rendering map during actual rendering, thereby solving the problem of large calculation amount of a forward rendering pipeline and the problem of large transmission bandwidth consumption in delayed rendering.)

一种场景多点光源渲染方法及装置

技术领域

本发明涉及计算机图形图像领域,特别涉及一种场景多点光源渲染方法及装置。

背景技术

传统的场景多点光源渲染方法如下:

1、前向渲染:传统前向渲染的方案在渲染每一个物件时,每一盏光源都需要一个单独的渲染通道进行计算,当场景中存在大量的物件和光源时,将产生大量的性能消耗,无论对于PC或是移动平台来说,都是难以承担的性能负担,假如存在n个物件,m盏灯光,那么最终渲染通道的次数为n*m个。

2、延迟渲染:延迟渲染的提出是为了解决上述方案中大量的光照计算,延迟渲染的方案是将固有色、法线、高光、AO等信息写入几何缓存中,避免了像传统前向渲染中逐物件逐光源的计算,假如场景中存在n个物件,m盏灯光那么最终渲染通道的次数为n+m,延迟渲染虽然解决了计算量的问题,但是却带来了大量的传输带宽消耗,在移动平台上效率低下。

因此,需要一种场景多点光源渲染方法及装置,不仅能够解决前向渲染管线计算量大的问题,还能解决延迟渲染中传输带宽消耗大的问题。

发明内容

(一)要解决的技术问题

为了解决现有技术的上述问题,本发明提供一种场景多点光源渲染方法及装置,不仅能够解决前向渲染管线计算量大的问题,还能解决延迟渲染中传输带宽消耗大的问题。

(二)技术方案

为了达到上述目的,本发明采用的一种技术方案为:

一种场景多点光源渲染方法,包括步骤:

S1、创建第一渲染贴图,生成颜色贴图;

S2、创建第二渲染贴图,生成方向贴图;

S3、根据所述方向贴图和颜色贴图进行像素的着色计算。

为了达到上述目的,本发明采用的另一种技术方案为:

一种场景多点光源渲染装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:

S1、创建第一渲染贴图,生成颜色贴图;

S2、创建第二渲染贴图,生成方向贴图;

S3、根据所述方向贴图和颜色贴图进行像素的着色计算。

(三)有益效果

本发明的有益效果在于:通过创建第一渲染贴图,生成颜色贴图;创建第二渲染贴图,生成方向贴图;根据所述方向贴图和颜色贴图进行像素的着色计算,在实际渲染时采用预结算渲染贴图的方式,不仅解决了前向渲染管线计算量大的问题,还解决了延迟渲染中传输带宽消耗大的问题。

附图说明

图1为本发明实施例的场景多点光源渲染方法的流程图;

图2为本发明实施例的场景多点光源渲染装置的结构示意图。

【附图标记说明】

1:场景多点光源渲染装置;

2:存储器;

3:处理器。

具体实施方式

为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。

请参照图1,一种场景多点光源渲染方法,包括步骤:

S01、获取当前场景中所有点光源的数据信息,所述数据信息包括点光源的位置、照亮区域和点颜色;

具体地,还包括根据每个点光源的位置和照亮区域形成矩形区域,与视窗矩形进行是否相交的计算,剔除对当前视窗下无影响的点光源;

S02、根据所述数据信息计算每个点光源的顶点缓存和索引缓存,生成每个点光源的面片模型。

本发明通过在渲染流程中先对点光源的颜色、方向和强度信息进行预处理,预先渲染到少数个渲染目标上,之后在实际渲染时采用预结算渲染贴图的方式,不仅解决了前向渲染管线计算量大的问题,还解决了延迟渲染中传输带宽消耗大的问题。

S1、创建第一渲染贴图,生成颜色贴图;

步骤S1具体为:

创建一张第一渲染贴图,并将每个点光源的面片模型逐个渲染到所述第一渲染贴图中,得到包含所有点光源颜色叠加后的最终颜色值的颜色贴图。

S2、创建第二渲染贴图,生成方向贴图;

步骤S2具体为:

根据预设的规则创建相应数量的第二渲染贴图,并将每个点光源的面片模型逐个渲染到所述第二渲染贴图中,得到包含每个像素光源的方向的方向贴图。

具体地,所述的根据预设的规则创建相应数量的第二渲染贴图具体为:

若当前装置支持浮点纹理时,则创建两张第二渲染贴图;

若当前装置不支持浮点纹理时,则创建四张第二渲染贴图;

S3、根据所述方向贴图和颜色贴图进行像素的着色计算。

实施例二

本实施例和实施例一的区别在于,本实施例将结合具体的应用场景进一步说明本发明上述场景多点光源渲染方法是如何实现的:

1、获取当前场景中所有点光源的数据信息,所述数据信息包括点光源的位置、照亮区域和点颜色;

2、根据每个点光源的位置和照亮区域形成矩形区域,与视窗矩形进行是否相交的计算,剔除对当前视窗下无影响的点光源;

3、根据所述数据信息计算每个点光源的顶点缓存和索引缓存,生成每个点光源的面片模型。

其中,所述顶点缓存包含矩形四个顶点的位置、uv和颜色数据。位置的信息可以由点光源的位置和照亮区域算出,假设光源的位置为pos(x,y,0),影响区域宽高为分为为w和h,那么四个顶点的位置分为:pos1(x-w/2,y-h/2,0),pos2(x+w/2,y-h/2,0),pos3(x-w/2,y+h/2,0),pos4(x+w/2,y+h/2,0),对应的uv分别为(0,0),(1,0),(0,1),(1,1),顶点色为一个四维的分量,其中rgb代表光源的颜色,a代表光源的强度,其中uv为u,v纹理贴图坐标的简称(它和空间模型的X,Y,Z轴是类似的).它定义了图片上每个点的位置的信息。

4、创建第一渲染贴图,生成颜色贴图;

创建一张第一渲染贴图,并将每个点光源的面片模型逐个渲染到所述第一渲染贴图中,得到包含所有点光源颜色叠加后的最终颜色值的颜色贴图,具体方法如下:

(1)为上述面片模型的渲染打开颜色混合,设置混合选项为叠加颜色,将面片模型的着色颜色与渲染贴图的颜色进行相乘;

(2)将点光的衰减用贴图的方式进行模拟,越远离光源中心,衰减强度越强;

(3)像素着色器中,采样衰减强度贴图,获取所在像素的衰减后的点光源强度值为attn,从顶点缓存中输入的颜色rgb通道包含了点光源的颜色color,a通道包含了点光源的强度intensity,那么最终输出的颜色值为1.0-attn*color*intensity;

(4)逐个渲染点光源的面片模型,这样就能得到渲染贴图上的最终的颜色值为1.0减去光源叠加的颜色,本发明通过对该渲染贴图采样,再用1.0减去渲染贴图的颜色,就是包含所有点光源颜色叠加后的最终颜色值的颜色贴图。

5、创建第二渲染贴图,生成方向贴图;

5.1、若当前装置支持浮点纹理,则创建两张第二渲染贴图,并将每个点光源的面片模型逐个渲染到所述第二渲染贴图中,得到包含每个像素光源的方向的方向贴图,具体方法如下:

(1)为上述面片模型的渲染打开颜色混合,设置混合选项为叠加颜色,将面片模型的着色颜色与渲染贴图的颜色进行相加;

(2)由于点光源的方向是由光源中心朝向四面八方,因此,本发明通过uv来计算指定点光源在各个像素的方向,所以光源的方向为(0.5-uv.x,0.5-uv.y),此处标记为dir0;

(3)此处光源的方向中不止包含了方向的信息,还需要有强度的信息,由于距离光源中心越远处,光强度越弱,根据上述的衰减贴图和光源的强度值,可以得出每一个像素所受到的点光源的方向为dir0乘以衰减值再乘以光源的强度值;

(4)由于方向向量存在负值,且方向分量的绝对值可能大于1,因此,需要对其进行特殊处理才能存到渲染贴图中,本发明采取了以下方式:

A.基于方向的正负性,本发明将其分为四个象限的方向,假设方向向量为(x,y),那么第一象限中x,y皆为正数,第二象限为x为负数,y为正数,第三象限x,y皆为负数,第四象限x为正数,y为负数。

B.本发明用颜色的rg通道存储其中一个象限的方向,而用ba存储另外一个象限的方向,因此,需要两张渲染贴图;存储的方式为对负数取绝对值后存储,假如存储某个第三象限的值,本发明将第三象限负数的(x,y)变成(-x,-y)存储。

C.又因为方向叠加后的值可能大于1,本发明将对方向的值进行浮点编码处理,如乘以一个缩小系数0.01,然后写入另外一张渲染贴图。

D.顺序渲染光源的面片模型,将同象限的方向分量进行叠加,得到包含每个像素光源的方向的方向贴图;

5.2、若当前装置不支持浮点纹理,则创建两张第二渲染贴图,并将每个点光源的面片模型逐个渲染到所述第二渲染贴图中,得到包含每个像素光源的方向的方向贴图,具体方法如下:

(1)为上述面片模型的渲染打开颜色混合,设置混合选项为叠加颜色,将面片模型的着色颜色与渲染贴图的颜色进行相加;

(2)由于点光源的方向是由光源中心朝向四面八方,因此本发明通过uv来计算指定点光源在各个像素的方向,所以光源的方向为(0.5-uv.x,0.5-uv.y),此处标记为dir0;

(3)此处光源的方向中不止包含了方向的信息,还需要有强度的信息,由于距离光源中心越远处,光强度越弱,根据上述的衰减贴图和光源的强度值,可以得出每一个像素所受到的点光源的方向为dir0乘以衰减值再乘以光源的强度值;

(4)由于方向向量存在负值,且方向分量的绝对值可能大于1,因此需要对其进行特殊处理才能存到渲染贴图中,本发明采取了以下方式:

A.基于方向的正负性,本发明将其分为四个象限的方向,假设方向向量为(x,y),那么第一象限中x,y皆为正数,第二象限为x为负数,y为正数,第三象限x,y皆为负数,第四象限x为正数,y为负数。

B.本发明用颜色的rg通道存储其中一个象限的方向,而用ba存储另外一个象限的方向,因此需要,两张渲染贴图;存储的方式为,对负数取绝对值后存储,假如存储某个第三象限的值,本发明将第三象限负数的(x,y)变成(-x,-y)存储。

C.又因为方向叠加后的值可能大于1,因此本发明将整数部分和小数部分分为存储在两张贴图中,首先本发明对整数部分进行重新编码,将整数部分的值乘以0.01,写入渲染贴图,而将小数部分的值乘以0.1,写入另外一张渲染贴图。

D.顺序渲染光源的面片模型,将同象限的方向分量进行叠加,得到包含每个像素光源的方向的方向贴图;

6、根据所述方向贴图和颜色贴图进行像素的着色计算。

本发明通过在渲染流程中先对点光源的颜色、方向和强度信息进行预处理,预先渲染到少数个渲染目标上,之后在实际渲染时采用预结算渲染贴图的方式,不仅解决了前向渲染管线计算量大的问题,还解决了延迟渲染中传输带宽消耗大的问题。

实施例三

请参照图2,一种场景多点光源渲染装置1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述程序时实现实施例一中的各个步骤。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

8页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种结合多尺度注意力的深层网络肺部纹理识别方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!