镜头光晕绘制方法及装置与流程

文档序号:12675657阅读:319来源:国知局
镜头光晕绘制方法及装置与流程

本发明涉及计算机图形领域,尤其涉及一种镜头光晕绘制方法及装置。



背景技术:

随着智能手机及平板电脑的普及,移动终端的游戏也发展起来,随着手游行业的发展,越来越多高级的绘制效果开始在手机和平板电脑的用户上出现。特别是能展现画质水准的镜头炫光效果,也就是镜头光晕效果,逐渐应用于手机游戏中。镜头光晕是镜头内部光线发生反射、折射、衍射等光学现象,从而在拍摄的照片、视频中形成的炫光效果。

目前已经有了基于物理的、真实感的、镜头光晕绘制技术,但是计算开销很大,而且需要复杂的预处理。而且,成熟的手游引擎,如unity,中镜头光晕功能简单,但是光晕的效果不能配置,样式单一,且绘制开销仍有优化空间。



技术实现要素:

本发明实施例的目的是提供一种镜头光晕绘制方法及装置,能快速绘制镜头光晕,解决现有镜头光晕绘制开销大、不能配置的问题,形式多样化,变化灵活。

为实现上述目的,本发明实施例提供了一种镜头光晕绘制方法,包括步骤:

接收输入的若干镜头光晕的参数,并依次传入着色器中;

将所述若干镜头光晕所要用到的纹理贴图合并成一大纹理贴图,将所述大纹理贴图提交至图形处理单元的缓存中生成大纹理贴图缓存;

在三维场景中建立光晕模型,根据所述若干镜头光晕的参数和当前场景实时调整着色器中每一所述镜头光晕的属性;

根据每一所述镜头光晕的属性,调用一四边形面片,读取所述大纹理贴图缓存,通过着色器对每一所述镜头光晕进行绘制。

与现有技术相比,本发明公开的镜头光晕绘制方法根据设计人员设置的若干镜头光晕的参数,将若干镜头光晕所需的纹理贴图合并成一大纹理贴图,提交至图形处理单元的缓存,然后在三维场景中建立光晕模型,根据输入的若干镜头光晕的参数和当前场景实时调整每一镜头光晕的属性,根据所述每一镜头光晕的属性,调用一四边形面片,读取大纹理贴图缓存,通过着色器对每一镜头光晕进行绘制,本方案采用图片映射的方式绘制镜头光晕,无需复杂的预处理,且在绘制每一镜头光晕过程中,只需用到一个四边形面片,可减少顶点缓存,计算量较小;所述大纹理贴图包括若干镜头光晕所要用到的纹理贴图,可避免绘制多个镜头光晕要进行纹理缓存的切换;利用一大纹理贴图和一四边形面片,可将多个镜头光晕合并为一个绘制批次,节省绘制的开销;且所述镜头光晕的参数由设计人员设置并输入,样式多样化,配置灵活,解决了现有镜头光晕绘制开销大、不能配置的问题。

作为上述方案的改进,通过以下公式对对每一所述镜头光晕进行绘制:

其中,Iflare_result是对每一所述镜头光晕进行绘制后得到的光晕图像,Iflare是所述镜头光晕的每个像素,n是所述镜头光晕的个数,i是所述镜头光晕的索引,T(x,y,i)是所述镜头光晕根据属性进行位移,缩放和旋转变化后的顶点坐标,c(i)是所述镜头光晕根据属性获得的每个像素的颜色值,a(i)是所述镜头光晕根据属性获得的每个像素的透明度值,x和y是所述四边形面片的顶点坐标。该公式包括了镜头光晕的5个基本元素,分别是颜色、透明度、旋转、缩放和位移。

作为上述方案的改进,所述镜头光晕的参数包括纹理索引、颜色、大小、偏移、是/否旋转、亮度、透明度、模糊度中的一种或多种。通过设置多个参数,可呈现镜头光晕的多个视觉效果,而且通过配置参数生成镜头光晕的不同样式,可以减少纹理贴图的个数,优化缓存空间。

作为上述方案的改进,通过着色器对每一所述镜头光晕进行绘制具体包括:

根据任一所述镜头光晕的偏移参数值k和所述当前场景光源到屏幕中心的偏移量P,在与所述当前场景光源和所述屏幕中心所在的直线上且到所述屏幕中心的偏移量为k*P的位置上对所述镜头光晕进行绘制。通过这种设置,符合真实情况下镜头光晕的效果,真实镜头光晕的中心、光源和屏幕中心是共线的,随着光源在屏幕上的移动,镜头光晕也会随之移动和旋转。

作为上述方案的改进,镜头光晕的光晕效果包括淡入效果和淡出效果;所述淡入效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由0到1变化;所述淡出效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由1到0变化。这种透明度的过渡可模拟人眼的视觉残留效果,更具真实感。

作为上述方案的改进,所述着色器包括顶点着色器和片段着色器;

所述顶点着色器用于根据所述镜头光晕的偏移、缩放、是/否旋转的参数分别生成所述镜头光晕的偏移效果、大小效果、旋转效果;

所述片段着色器用于根据所述镜头光晕的颜色、亮度、模糊度的参数分别生成所述镜头光晕的颜色效果、明暗效果、模糊效果。通过设置多种参数可呈现镜头光晕的多种效果,样式丰富。

作为上述方案的改进,通过着色器对所述每一所述镜头光晕进行绘制包括:

将所述四边形面片中每一顶点的当前坐标分别与所述镜头光晕的缩放参数值相乘后获得镜头光晕的大小效果;

将所述四边形面片中每一顶点根据所述镜头光晕的旋转角度值进行旋转后获得镜头光晕的旋转效果;所述镜头光晕的旋转角度值通过所述镜头光晕的是/否旋转参数和当前场景光源的位置生成;

将所述四边形面片中每一片段与所述镜头光晕的颜色参数相乘获得所述镜头光晕的颜色效果;

将所述四边形面片中每一片段与所述镜头光晕的亮度参数相乘获得所述镜头光晕的亮度效果;

将所述镜头光晕的透明度参数均赋给所述四边形面片中每一片段的透明度获得所述镜头光晕的透明度效果。

作为上述方案的改进,通过着色器对每一所述镜头光晕进行绘制包括:

根据任一所述镜头光晕的模糊度参数,在mipmap贴图的不同层级中采样后对所述镜头光晕进行绘制,生成所述镜头光晕的模糊效果;其中,所述mipmap贴图的不同层级通过将所述大纹理贴图进行不同的模糊化处理后生成。将大纹理贴图预先进行模糊化处理,可以节约绘制所述镜头光晕的耗时。

作为上述方案的改进,所述大纹理贴图包括光晕纹理贴图、starburst纹理贴图和光环纹理贴图;其中,所述光晕纹理贴图包括八边形光晕纹理贴图、圆形光晕纹理贴图、六边形光晕纹理贴图、五边形光晕纹理贴图。Starburst纹理贴图可展现出光源光芒四射的效果,达到良好的模拟效果和视觉效果。

作为上述方案的改进,所述方法通过instancing渲染技术对所述四边形面片进行绘制。通过instancing渲染技术,可加速绘制的过程,达到减少渲染批次的效果。

作为上述方案的改进,所述四边形面片为正方形面片。

作为上述方案的改进,所述四边形面片包括两个三角形面片。

相应的,本发明实施例还提供了一种镜头光晕绘制装置,包括:

参数接收模块,用于接收输入的若干镜头光晕的参数,并依次传入着色器中;

大纹理贴图缓存模块,用于将所述若干镜头光晕所要用到的纹理贴图合并成一大纹理贴图,将所述大纹理贴图提交至图形处理单元的缓存中生成大纹理贴图缓存;

属性调整模块,在三维场景中建立光晕模型,根据输入的所述若干镜头光晕的参数和当前场景实时调整着色器中每一所述镜头光晕的属性;

绘制模块,用于根据每一所述镜头光晕的属性,调用一四边形面片,读取所述大纹理贴图缓存,通过着色器对每一所述镜头光晕进行绘制。

作为上述方案的改进,所述绘制模块通过以下公式对每一所述镜头光晕进行绘制:

其中,Iflare_result是对每一所述镜头光晕进行绘制后得到的光晕图像,Iflare是镜头光晕的每个像素,n是镜头光晕的个数,i是镜头光晕的索引,T(x,y,i)是镜头光晕根据属性进行位移,缩放和旋转变化后的顶点坐标,c(i)是所述镜头光晕根据属性获得的每个像素的颜色值,a(i)是所述镜头光晕根据属性获得的每个像素的透明度值,x和y是所述四边形面片的顶点坐标。

作为上述方案的改进,所述镜头光晕的参数包括纹理索引、颜色、大小、偏移、是/否旋转、亮度、透明度、模糊度中的一种或多种。

作为上述方案的改进,所述绘制模块通过以下方式对每一镜头光晕进行绘制:

根据任一所述镜头光晕的偏移参数值k和当前场景光源到屏幕中心的偏移量P,在与所述场景光源和屏幕中心所在的直线上且到屏幕中心的偏移量为k*P的位置上对所述镜头光晕进行绘制。

作为上述方案的改进,所述镜头光晕的光晕效果包括淡入效果和淡出效果;所述淡入效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由0到1变化;所述淡出效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由1到0变化。

作为上述方案的改进,所述着色器包括顶点着色器和片段着色器;

所述顶点着色器用于根据所述镜头光晕的偏移、缩放、是/否旋转的参数分别生成所述镜头光晕的偏移效果、大小效果、旋转效果;

所述片段着色器用于根据所述镜头光晕的颜色、亮度、模糊度的参数分别生成所述镜头光晕的颜色效果、明暗效果、模糊效果。

作为上述方案的改进,所述绘制模块包括:

缩放绘制单元,用于将所述四边形面片中每一顶点的当前坐标分别与所述镜头光晕的缩放参数值相乘后获得所述镜头光晕的大小效果;

旋转绘制单元,用于将所述四边形面片中每一顶点根据所述镜头光晕的旋转角度值进行旋转后获得所述镜头光晕的旋转效果;所述镜头光晕的旋转角度值通过所述镜头光晕的是/否旋转参数和当前场景光源的位置生成;

颜色绘制单元,用于将所述四边形面片中每一片段与所述镜头光晕的颜色参数相乘获得所述镜头光晕的颜色效果;

亮度绘制单元,用于将所述四边形面片中每一片段与所述镜头光晕的亮度参数相乘获得所述镜头光晕的亮度效果;

透明度绘制单元,用于将所述镜头光晕的透明度参数均赋予所述四边形面片中每一片段的透明度获得所述镜头光晕的透明度效果。

作为上述方案的改进,所述绘制模块包括模糊度绘制单元,用于根据任一所述镜头光晕的模糊度参数,在mipmap贴图的不同层级中采样后对所述镜头光晕进行绘制,生成镜头光晕的模糊效果;其中,所述mipmap贴图的不同层级通过将所述大纹理贴图进行不同的模糊化处理后生成。

作为上述方案的改进,所述大纹理贴图包括光晕纹理贴图、starburst纹理贴图和光环纹理贴图;其中,所述光晕纹理贴图包括八边形光晕纹理贴图、圆形光晕纹理贴图、六边形光晕纹理贴图、五边形光晕纹理贴图。

作为上述方案的改进,所述装置通过instancing渲染技术对所述每一所述镜头光晕进行绘制。

作为上述方案的改进,所述四边形面片为正方形面片。

作为上述方案的改进,所述四边形面片包括两个三角形面片。

本发明还提供了另一种镜头光晕绘制方法,包括步骤:

根据镜头光晕的参数和当前场景光源的位置计算屏幕上的所述镜头光晕的位置,并在屏幕上的所述镜头光晕的位置设置一四边形面片;其中,所述镜头光晕的参数预先输入并传入着色器中;

根据所述当前场景光源的属性和所述镜头光晕的参数实时获取所述四边形面片的属性;

根据所述四边形面片的属性,提取在一大纹理贴图中对应的纹理贴图,并通过所述着色器对所述四边形面片进行绘制后生成对应的光晕图像;其中,所述大纹理贴图包括若干镜头光晕所要用到的纹理贴图。

与现有技术相比,本发明公开的镜头光晕绘制方法通过根据镜头光晕的参数和当前场景光源的属性,在屏幕的相应位置上设置一四边形面片并获得所述四边形面片的属性,根据所述四边形面片的属性在大纹理贴图中提取相应的纹理贴图并进行绘制后生成相应的光晕图像,本方案采用图片映射的方式绘制镜头光晕,无需复杂的预处理,且在绘制每一镜头光晕过程中,只需用到一个四边形面片,无需顶点缓存和索引缓存的切换,节省存储的开销且计算量较小;所述大纹理贴图包括若干镜头光晕所要用到的纹理贴图,可避免绘制多个镜头光晕要进行纹理缓存的切换;采用包括若干纹理贴图的大纹理贴图和一四边形面片,可将多个镜头光源合并成一个批次进行渲染,优化了渲染的效率;且所述镜头光晕的参数由设计人员设置并输入,样式多样化,配置灵活,解决了现有镜头光晕绘制开销大、不能配置的问题。

作为上述方案的改进,所述镜头光晕的参数包括纹理索引、颜色、大小、偏移、是/否旋转、亮度、透明度、模糊度中的一种或多种。

作为上述方案的改进,通过以下方式计算所述镜头光晕的位置:

根据任一所述镜头光晕的偏移参数值k和当前场景光源到屏幕中心的偏移量P,将所述镜头光晕设置于所述当前场景光源和所述屏幕中心所在的直线上且到所述屏幕中心的偏移量为k*P的位置上。

作为上述方案的改进,所述镜头光晕的光晕效果包括淡入效果和淡出效果;所述淡入效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由0到1变化;所述淡出效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由1到0变化。

作为上述方案的改进,所述大纹理贴图包括光晕纹理贴图、starburst纹理贴图和光环纹理贴图;其中,所述光晕纹理贴图包括八边形光晕纹理贴图、圆形光晕纹理贴图、六边形光晕纹理贴图、五边形光晕纹理贴图。

作为上述方案的改进,所述方法通过instancing渲染技术对所述四边形面片进行绘制。

本发明还对应提供了另一种镜头光晕绘制装置,包括:

面片设置模块,用于根据镜头光晕的参数和当前场景光源的位置计算屏幕上的所述镜头光晕的位置,并在屏幕上的所述镜头光晕的位置设置一四边形面片;其中所述镜头光晕的参数预先输入并传入着色器中;

面片属性获取模块,用于根据当前场景光源的属性和所述镜头光晕的参数实时获取所述四边形面片的属性;

绘制模块,用于根据所述四边形面片的属性,提取在一大纹理贴图中对应的纹理贴图,并通过所述着色器对所述四边形面片进行绘制后生成对应的光晕图像;其中,所述大纹理贴图包括所述若干镜头光晕所要用到的纹理贴图。

作为上述方案的改进,所述镜头光晕的参数包括纹理索引、颜色、大小、偏移、是/否旋转、亮度、透明度、模糊度中的一种或多种。

作为上述方案的改进,所述面片设置模块通过以下方式计算所述镜头光晕的位置:

根据任一所述镜头光晕的偏移参数值k和当前场景光源到屏幕中心的偏移量P,将所述镜头光晕设置于所述当前场景光源和所述屏幕中心所在的直线上且到所述屏幕中心的偏移量为k*P的位置上。

作为上述方案的改进,所述镜头光晕的光晕效果包括淡入效果和淡出效果;所述淡入效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由0到1变化;所述淡出效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由1到0变化。

作为上述方案的改进,所述大纹理贴图包括光晕纹理贴图、starburst纹理贴图和光环纹理贴图;其中,所述光晕纹理贴图包括八边形光晕纹理贴图、圆形光晕纹理贴图、六边形光晕纹理贴图、五边形光晕纹理贴图。

作为上述方案的改进,所述装置通过instancing渲染技术对所述四边形面片进行绘制。

附图说明

图1是本发明实施例1中一种镜头光晕绘制方法的流程示意图。

图2是本发明实施例1中镜头光晕设置界面的示意图。

图3是本发明实施例1中大纹理贴图的示意图。

图4a是本发明实施例1中光晕纹理贴图的示意图。

图4b是本发明实施例1中starburst纹理贴图的示意图。

图4c是本发明实施例1中光环纹理贴图的示意图。

图5是本发明实施例1中光晕的位置随光源的移动而变换的示意图。

图6是本发明实施例1中镜头光晕叠加后的效果示意图。

图7是本发明实施例1中步骤4中对每一所述镜头光晕进行绘制的流程示意图。

图8是本发明实施例1中mipmap贴图示意图。

图9是本发明实施例2中一种镜头光晕绘制装置的结构示意图。

图10是本发明实施例2中绘制模块的结构示意图。

图11是本发明实施例3中另一种镜头光晕绘制方法的流程示意图。

图12是本发明实施例4中另一种镜头光晕绘制装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,是本发明实施例1提供的一种镜头光晕绘制的流程示意图。如图1所示的镜头光晕绘制方法,包括步骤:

S1、接收输入的若干镜头光晕的参数,并依次传入着色器中;

其中,所述镜头光晕的参数可由用户自行设置及输入,包括纹理索引、颜色、大小、偏移、是/否旋转、亮度、透明度、模糊度中的一种或多种。纹理索引与特定的纹理贴图对应,是/否旋转是当光源移动时,所述镜头光晕随之移动的过程中是否也旋转以模拟真实的场景。因此,如图2所示,本方案提供了用户界面,以供设计人员对镜头光晕自定义镜头光晕的数量和每个镜头光晕的参数。

S2、将所述若干镜头光晕所要用到的纹理贴图合并成一大纹理贴图,将所述大纹理贴图提交至图形处理单元的缓存中生成大纹理贴图缓存;

优选地,如图3所示,所述大纹理贴图包括光晕纹理贴图(如图4a)、starburst(光芒四射)纹理贴图(如图4b)和光环纹理贴图(如图4c)。根据需要,在光源附近需展现光芒四射的效果,因此需要设置starburst纹理贴图。镜头光晕的形状和镜头光圈有关,因此,所述光晕纹理贴图包括八边形光晕纹理贴图、圆形光晕纹理贴图、六边形光晕纹理贴图、五边形光晕纹理贴图。所述大纹理贴图包括各种光晕基本的形状,通过对这些基本形状配置参数可生成多种样式,满足设计人员个性化和多样化的需求。

S3、在三维场景中建立光晕模型,根据所述若干镜头光晕的参数和当前场景实时调整着色器中每一所述镜头光晕的属性;

S4、根据每一所述镜头光晕的属性,调用一四边形面片,读取所述大纹理贴图缓存,通过着色器对每一所述镜头光晕进行绘制;

在该步骤中,通过所述镜头光晕的属性中的纹理索引,在所述大纹理贴图中读取相应的纹理贴图。例如,在图3构造的大纹理贴图中,可通过1-16的索引值来确定所需的纹理贴图。其中,所述四边形面片可优选为正方形面片,

本方案采用的是图片映射的方法来模拟镜头光晕,跟基于物理的、真实感的镜头光晕绘制技术相比,无需进行复杂的预处理,计算开销少,能增加游戏场景的气氛。而且,本方案只需一个大纹理贴图和一个四边形面片,在绘制每个镜头光晕时,渲染状态没有改变,只需向着色器传递不同的参数,无需进行纹理缓存、索引缓存和顶点缓存的切换,可将若干个镜头光晕合并成一个渲染批次,简化了绘制的流程,降低绘制的开销。而且,设置用户界面用于配置各个镜头光晕的参数,可生成具有多种效果的镜头光晕,简单灵活,样式更丰富。

优选地,所述四边形面片包括两个三角形面片,从而可减少顶点缓存,减少绘制的计算量,降低绘制的开销。

在具体实施过程中,需要给每一所述镜头光晕配置位置。真实镜头光晕的位置和光源、屏幕中心是共线的,而且镜头光晕到屏幕中心的距离和光源的屏幕中心的距离呈固定的比例关系。随着光源在屏幕上的移动,镜头光晕也会随之移动和旋转。具体来说,在真实场景中,如图5所示,假设开始时光源2对于屏幕中心1的偏移向量是P1,光晕3对于屏幕中心1的偏移向量是P2,而且P1和P2是共线的。当光源2的相对屏幕中心1的偏移向量变为P3,那么新的光晕3的偏移向量则变为P3*(P2/P1)。当光源2在屏幕上对于屏幕中心1的偏移向量发生变化时,光晕3对于屏幕中心1的偏移向量也发生了变化,但是这两个偏移向量之间的比例关系是不变的。

因此,本方案在绘制过程中,配置镜头光晕的位置根据任一所述镜头光晕的偏移参数值k和当前场景光源到屏幕中心的偏移量P,在与所述当前场景光源和所述屏幕中心所在的直线上且到所述屏幕中心的偏移量为k*P的位置上对所述镜头光晕进行绘制。

可以理解的,每个镜头光晕是由多个光晕元素叠加而来,优选地,可由颜色、透明度、位移、缩放、旋转5个基本元素对光晕图像进行绘制,具体通过以下公式进行绘制:

其中,Iflare_result是对每一所述镜头光晕进行绘制后得到的光晕图像,Iflare是所述镜头光晕的每个像素,n是所述镜头光晕的个数,i是所述镜头光晕的索引,T(x,y,i)是所述镜头光晕根据属性进行位移,缩放和旋转变化后的顶点坐标,c(i)是所述镜头光晕根据属性获得的每个像素的颜色值,a(i)是所述镜头光晕根据属性获得的每个像素的透明度值,x和y是所述四边形面片的顶点坐标。如图6所示,进行镜头光晕的模拟后,n个镜头光晕3、场景光源和屏幕中心1在同一条直线上,将n个镜头光晕3进行叠加可模拟出带镜头光晕效果的游戏画面,从而烘托游戏气氛,提高游戏的体验感。

如图7所示,实施例1中的步骤S4中通过着色器对所述每一所述镜头光晕进行绘制包括:

S41、将所述四边形面片中每一顶点的当前坐标分别与所述镜头光晕的缩放参数值相乘后获得镜头光晕的大小效果;

S42、将所述四边形面片中每一顶点根据所述镜头光晕的旋转角度值进行旋转后获得镜头光晕的旋转效果;所述镜头光晕的旋转角度值通过所述镜头光晕的是/否旋转参数和当前场景光源的位置生成;

S43、将所述四边形面片中每一片段与所述镜头光晕的颜色参数相乘获得所述镜头光晕的颜色效果;

S44、将所述四边形面片中每一片段与所述镜头光晕的亮度参数相乘获得所述镜头光晕的亮度效果;

S45、将所述镜头光晕的透明度参数均赋给所述四边形面片中每一片段的透明度获得所述镜头光晕的透明度效果;

S46、根据所述镜头光晕的模糊度参数,在mipmap贴图的不同层级中采样后对所述镜头光晕进行绘制,生成所述镜头光晕的模糊效果;其中,所述mipmap贴图的不同层级通过将所述大纹理贴图进行不同的模糊化处理后生成。

在三维计算机图形的贴图渲染中有一个常用的技术被称为Mipmapping。其通常为贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为MIP map或者mipmap。“MIP”来自于拉丁语multum in parvo的首字母,意思是“放置很多东西的小空间”。如果贴图的基本尺寸是256x256像素的话,它mipmap就会有8个层级。每个层级是上一层级的四分之一的大小,依次层级大小就是:128x128;64x64;32x32;16x16;8x8;4x4;2x2;1x1(一个像素)。例如在一个场景中,渲染贴图需要填满的空间大小是40x40像素的话,如果没有三线性过滤,那32x32会被放大显示,或者有三线性过滤,会在64x64和32x32之间切换。最简单的生成贴图的方法就是依次做平均,当然也可以用更加高级的算法。mipmap中每一个层级的小图都是主图的一个特定比例的缩小细节的复制品。虽然在某些必要的视角,主图仍然会被使用,来渲染完整的细节。但是当贴图被缩小或者只需要从远距离观看时,mipmap就会转换到适当的层级。事实上,在三线性过滤(trilinear filtering)起作用时,会在两个相近的层级之间切换。

因为mipmap贴图需要被读取的像素远少于普通贴图,所以渲染的速度得到了提升。而且操作的时间减少了,因为mipmap的图片已经是做过抗锯齿处理的,从而减少了实时渲染的负担。放大和缩小也因为mipmap而变得更有效率。

根据传入的各个镜头光晕的不同属性,可实现镜头光晕的不同效果。为了实现镜头光晕在屏幕上的不同大小的效果,可向顶点着色器传递缩放参数值,每个顶点乘以该缩放参数值进行缩放,例如原始坐标为x和y,缩放参数值为S,则经过缩放变换后的坐标为xˊ=Sx,yˊ=Sy;为了实现镜头光晕在屏幕上的偏移效果,每个顶点根据偏移参数值和当前光源的位置计算得到的各个坐标的偏移量进行偏移,例如原始坐标为x和y,横坐标、纵坐标的偏移量分别为Tx、Ty,则经过偏移变换后的坐标为xˊ=x+Tx,yˊ=y+Ty;为了实现镜头光晕在屏幕上的旋转效果,每个顶点根据所述镜头光晕的旋转角度值进行旋转,例如原始坐标为x和y,需要的旋转角度值为θ,则经过缩放变换后的坐标为xˊ=rcos(α+θ)=x cosθ-ysinθ,yˊ=rsinα+θ=ycosθ+xsinθ;为了实现镜头光晕在屏幕上的不同亮度,通过片段着色器将每个片段乘以传入的亮度值,最终的片段的亮度为Fragment_Color=Fragment_Color*luminance;为了实现镜头光晕在屏幕上的不同颜色,每个片段乘以传入的颜色值,最终的片段的颜色为Fragment_Color=Fragment_Color*color;为了实现镜头光晕在屏幕上的透明度,通过片段着色器给每个片段的透明度赋值传入的透明度参数值,最终的片段的亮度为Fragment_Color.a=alpha;为了实现屏幕上镜头光晕的不同模糊度,每个片段根据模糊度从mipmap的不同层级进行采样,其中,如图8所示,所述mipmap贴图的不同层级通过将所述大纹理贴图进行不同的模糊化处理后生成。

进一步地,为了模拟人眼的视觉残留效果,可为镜头光晕增加淡入、淡出效果。当光源刚出现在屏幕时,使用淡入的效果,即逐帧增加透明度值,当光源离开屏幕或者被物体遮挡时,使用淡出的效果,逐帧减少透明度值。具体的,光源刚刚出现在镜头内时,在预定的时间内,比如0.5s,镜头光晕从透明度为0到1之间的过渡,也就是淡入的效果;当光源离开屏幕或被物体挡住,在预定的时间内,比如0.5s,镜头光晕从透明度为1到0的过渡,也就是淡出的效果。

此外,还可根据镜头光晕与光源的距离设置淡入、淡出的效果。例如30米内光源的强度才足够在屏幕上表现出明显的镜头光晕,越近镜头光晕越明显。因此,可在距离光源30米处逐渐靠近光源的过程中,透明度从0到1进行过渡。进一步地,修改镜头光晕的透明度值还可模拟镜头光晕随光源的强度的变化而产生的效果。

优选地,采用instancing渲染技术进行镜头光晕的绘制,可实现“一次提交,多次绘制”,仅在每次绘制之前根据绘制次序依次传入着色器的参数,可加速绘制的过程,适用于本方案提出的同一大纹理贴图和同一模型绘制多个镜头光晕,达到减少渲染批次的效果。

可以理解的,Vertex Constants Instancing(顶点常量实例化)和Geometry Instancing(几何体实例化)两种渲染方法都可以达到减少渲染批次的效果。当使用vertex constants instancing方法,每个顶点都额外存储一个值,用来记录这个顶点是属于第几个instancing的索引值index,而所有instancing所需要的参数都以常量的形式存储在GPU中,每个顶点在渲染时,根据相应的索引值index获得所需要的参数。当使用geometry instancing,通过合适的设定,每个顶点在渲染时都能根据instance_id获得相应的数据。

图9是本发明实施例2提供的一种镜头光晕绘制装置的结构示意图。如图9所示,该镜头光晕绘制装置20包括:

参数接收模块21,用于接收输入的若干镜头光晕的参数,并依次传入着色器中;

大纹理贴图缓存模块22,用于将所述若干镜头光晕所要用到的纹理贴图合并成一大纹理贴图,将所述大纹理贴图提交至图形处理单元的缓存中生成大纹理贴图缓存;

属性调整模块23,在三维场景中建立光晕模型,根据所述若干镜头光晕的参数和当前场景实时调整着色器中每一所述镜头光晕的属性;

绘制模块24,用于根据每一所述镜头光晕的属性,调用一四边形面片,读取所述大纹理贴图缓存,通过着色器对每一所述镜头光晕进行绘制。

优选地,所述四边形面片为正方形面片。

其中,所述绘制模块通过以下公式对对每一所述镜头光晕进行绘制:

其中,Iflare_result是对每一所述镜头光晕进行绘制后得到的光晕图像,Iflare是镜头光晕的每个像素,n是镜头光晕的个数,i是镜头光晕的索引,T(x,y,i)是镜头光晕根据属性进行位移,缩放和旋转变化后的顶点坐标,c(i)是所述镜头光晕根据属性获得的每个像素的颜色值,a(i)是所述镜头光晕根据属性获得的每个像素的透明度值,x和y是所述四边形面片的顶点坐标。

其中,所述镜头光晕的参数包括纹理索引、颜色、大小、偏移、是/否旋转、亮度、透明度、模糊度中的一种或多种。

其中,所述大纹理贴图包括光晕纹理贴图、starburst纹理贴图和光环纹理贴图;其中,所述光晕纹理贴图包括八边形光晕纹理贴图、圆形光晕纹理贴图、六边形光晕纹理贴图、五边形光晕纹理贴图。

其中,如图10所示,所述绘制模块24包括:

缩放绘制单元241,用于将所述四边形面片中每一顶点的当前坐标分别与所述镜头光晕的缩放参数值相乘后获得所述镜头光晕的大小效果;

旋转绘制单元242,用于将所述四边形面片中每一顶点根据所述镜头光晕的旋转角度值进行旋转后获得所述镜头光晕的旋转效果;所述镜头光晕的旋转角度值通过所述镜头光晕的是/否旋转参数和当前场景光源的位置生成;

颜色绘制单元243,用于将所述四边形面片中每一片段与所述镜头光晕的颜色参数相乘获得所述镜头光晕的颜色效果;

亮度绘制单元244,用于将所述四边形面片中每一片段与所述镜头光晕的亮度参数相乘获得所述镜头光晕的亮度效果;

透明度绘制单元245,用于将所述镜头光晕的透明度参数均赋予所述四边形面片中每一片段的透明度获得所述镜头光晕的透明度效果;

模糊度绘制单元246,用于根据任一所述镜头光晕的模糊度参数,在mipmap贴图的不同层级中采样后对所述镜头光晕进行绘制,生成镜头光晕的模糊效果;其中,所述mipmap贴图的不同层级通过将所述大纹理贴图进行不同的模糊化处理后生成。

在一优选实施方式中,所述绘制模块通过以下方式对每一镜头光晕进行绘制:根据任一所述镜头光晕的偏移参数值k和当前场景光源到屏幕中心的偏移量P,在与所述场景光源和屏幕中心所在的直线上且到屏幕中心的偏移量为k*P的位置上对所述镜头光晕进行绘制。

在一优选实施方式中,所述镜头光晕的光晕效果包括淡入效果和淡出效果;所述淡入效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由0到1变化;所述淡出效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由1到0变化。

在一优选实施方式中,所述装置通过instancing渲染技术对所述每一所述镜头光晕进行绘制,可加速绘制过程,达到减少渲染批次的效果。

在一优选实施方式中,所述四边形面片包括两个三角形面片,可减少顶点缓存,优化绘制的计算量,降低绘制的开销。

可以理解的,所述着色器包括顶点着色器和片段着色器;

所述顶点着色器用于根据所述镜头光晕的偏移、缩放、是/否旋转的参数分别生成所述镜头光晕的偏移效果、大小效果、旋转效果;

所述片段着色器用于根据所述镜头光晕的颜色、亮度、模糊度的参数分别生成所述镜头光晕的颜色效果、明暗效果、模糊效果。

本实施例的镜头光晕绘制装置20的具体过程可参考上述实施例1的镜头光晕绘制方法,在此不再赘述。

图11是本发明实施例3提供的另一镜头光晕绘制方法的流程示意图,包括步骤:

S31、根据镜头光晕的参数和当前场景光源的位置计算屏幕上的所述镜头光晕的位置,并在屏幕上的所述镜头光晕的位置设置一四边形面片;其中,所述四边形面片包括两个三角形面片;所述镜头光晕的参数预先输入并传入着色器中;

其中,根据任一所述镜头光晕的偏移参数值k和当前场景光源到屏幕中心的偏移量P,将所述镜头光晕设置于所述当前场景光源和所述屏幕中心所在的直线上且到所述屏幕中心的偏移量为k*P的位置上;

此外,所述镜头光晕的参数由设计人员设置输入,包括纹理索引、颜色、大小、偏移、是/否旋转、亮度、透明度、模糊度等,类型丰富,可获得多种样式的镜头光晕,具体的用户界面可参照图2;

S32、根据所述当前场景光源的属性和所述镜头光晕的参数实时获取所述四边形面片的属性;

S33、根据所述四边形面片的属性,提取在一大纹理贴图中对应的纹理贴图,并通过所述着色器对所述四边形面片进行绘制后生成对应的光晕图像;其中,所述大纹理贴图包括若干镜头光晕所要用到的纹理贴图。

具体实施时,本发明公开的镜头光晕绘制方法通过根据镜头光晕的参数和当前场景光源的属性,在屏幕的相应位置上设置一四边形面片并获得所述四边形面片的属性,根据所述四边形面片的属性在大纹理贴图中提取相应的纹理贴图并进行绘制后生成相应的光晕图像,本方案采用图片映射的方式绘制镜头光晕,无需复杂的预处理,且在绘制每一镜头光晕过程中,只需用到一个四边形面片,所述四边形面片由两个三角形面片构成,可减少顶点缓存,无需顶点缓存和索引缓存的切换,节省绘制的开销,所述大纹理贴图包括若干镜头光晕所要用到的纹理贴图,可避免绘制多个镜头光晕要进行纹理缓存的切换,利用同一个四边形面片和大纹理贴图,可合并渲染批次,计算量较小,且所述镜头光晕的参数由设计人员设置并输入,样式多样化,配置灵活,解决了现有镜头光晕绘制开销大、不能配置的问题。

优选地,本实施例可增加镜头光晕的淡入淡出效果作为一种进阶功能。所述淡入效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由0到1变化;所述淡出效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由1到0变化。这种淡入淡出效果可模拟人眼的视觉残留效果,使镜头光晕更具真实感,其具体的工作过程可参考实施例1的具体说明。

优选地,本实施例可采用instancing渲染技术加速渲染过程,可减少绘制的开销,优化绘制过程。

图12是本发明实施例提供的另一镜头光晕绘制装置的结构示意图。如图12所示的镜头光晕绘制装置40,包括:

面片设置模块41,用于根据镜头光晕的参数和当前场景光源的位置计算屏幕上的所述镜头光晕的位置,并在屏幕上的所述镜头光晕的位置设置一四边形面片;其中,所述四边形面片包括两个三角形面片;所述镜头光晕的参数预先输入并传入着色器中;

其中,所述镜头光晕的参数包括纹理索引、颜色、大小、偏移、是/否旋转、亮度、透明度、模糊度中的一种或多种。

优选地,所述面片设置模块通过以下方式计算所述镜头光晕的位置:

根据任一所述镜头光晕的偏移参数值k和当前场景光源到屏幕中心的偏移量P,将所述镜头光晕设置于所述当前场景光源和所述屏幕中心所在的直线上且到所述屏幕中心的偏移量为k*P的位置上;

面片属性获取模块42,用于根据当前场景光源的属性和所述镜头光晕的参数实时获取所述四边形面片的属性;

绘制模块43,用于根据所述四边形面片的属性,提取在一大纹理贴图中对应的纹理贴图,并通过所述着色器对所述四边形面片进行绘制后生成对应的光晕图像;其中,所述大纹理贴图包括所述若干镜头光晕所要用到的纹理贴图;

所述大纹理贴图包括光晕纹理贴图、starburst纹理贴图和光环纹理贴图;其中,所述光晕纹理贴图包括八边形光晕纹理贴图、圆形光晕纹理贴图、六边形光晕纹理贴图、五边形光晕纹理贴图。根据这些基本的纹理贴图,配置不同的参数,可呈现丰富的镜头光晕的样式。

优选地,所述镜头光晕的光晕效果包括淡入效果和淡出效果;所述淡入效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由0到1变化;所述淡出效果为在预设的场景下,所述镜头光晕的透明度在预定的时间内由1到0变化。

优选地,该装置可采用instancing渲染技术加速渲染过程,可减少绘制的开销,优化绘制过程。

本实施例的镜头光晕绘制装置40的具体过程可参考上述实施例3的镜头光晕绘制方法,在此不再赘述。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1