当前位置: 首页 > 专利查询>温州大学专利>正文

一种面向资源受限移动设备的实时软阴影生成方法及装置制造方法及图纸

技术编号:20391939 阅读:24 留言:0更新日期:2019-02-20 03:40
本发明专利技术公开了一种面向资源受限移动设备的实时软阴影生成方法及装置,包括在移动设备中配置三维场景及其所需要的各项输入信息并创建阴影图和深度纹理;采用第一GPU可编程绘制流水线绘制三维场景,将编码后的离光源最近的三维模型表面的深度信息保存到阴影图中;采用第二GPU可编程绘制流水线对其进行高斯模糊滤波操作,将编码后的模糊深度信息更新到阴影图中,得到模糊后的阴影图;采用第三GPU可编程绘制流水线绘制三维场景,将模糊后的阴影图中所包含的软阴影信息绘制到显示窗口,得到所求的第三GPU可编程绘制流水线的GPU像素着色器中的软阴影结果。实施本发明专利技术,不仅能在资源受限移动设备上绘制出逼真的三维场景软阴影效果,还提高了实时生成效率。

【技术实现步骤摘要】
一种面向资源受限移动设备的实时软阴影生成方法及装置
本专利技术属于三维图形绘制
,尤其涉及一种三维场景的实时软阴影生成方法及装置,用于解决现有软阴影生成方法在资源受限移动设备上的软阴影生成质量问题。
技术介绍
阴影是计算机图形学领域尤其是三维图形绘制技术中的一个很重要的内容。逼真的阴影效果能使三维场景更加富有真实感,并且有助于人们直观地理解三维场景中各物体的相对位置关系。因此,阴影生成技术在虚拟现实和三维动画及影视游戏等领域中有着广泛而重要的应用。在现实世界,光线被物体遮挡而产生阴影。而在三维图形绘制领域,需要通过模拟该光学原理来生成三维场景中的阴影。根据保存阴影信息的数据结构的不同,可以分为阴影图和阴影体。阴影图由于仅需要保存一张二维图像,可以充分发挥GPU可编程图形绘制能力,因此具有较高的执行效率。根据阴影边界的效果,可以将阴影分为硬阴影和软阴影。硬阴影虽然实现方法简单,但在无阴影区域和完全阴影区域之间的边界会呈现严重的“锯齿”走样现象,影响三维场景的真实感。软阴影则在无阴影区域和完全阴影区域之间增加了过渡的软阴影区域,能更加逼真地模拟现实世界中的阴影效果。当前许多实时软阴影生成方法都是面向个人电脑的高性能GPU而设计的,具有效高的软阴影生成质量(请参见文献:HoshangKolivand,MohdShahrizalSunar.Anti-aliasinginimagebasedshadowgenerationtechniques:acomprehensivesurvey[J].MultimediaToolsandApplications,2015,74(18):7461-7487)。但是,由于资源受限的移动设备对GPU可编程的能力较低并且对显存数据格式的支持有限,很多手机和平板电脑的GPU仅能支持OpenGLES2.0版本,面向个人电脑的实时软阴影生成方法并不能很好地支持这些资源受限的移动设备。故,针对现有技术的缺陷,实有必要提出一种技术方案以解决现有技术存在的技术问题。
技术实现思路
本专利技术的目的在于针对现有技术的不足,提供一种面向资源受限移动设备的实时软阴影生成方法及装置,能有效地提高在资源受限移动设备上的三维场景软阴影生成质量。为了解决现有技术存在的技术问题,本专利技术的技术方案如下:一种面向资源受限移动设备的实时软阴影生成方法,所述方法包括:步骤S1、在移动设备中配置三维场景及其所需要的各项输入信息,并创建阴影图和深度纹理,其中,所述阴影图为包含RGBA四个8位浮点数颜色分量的二维阴影图,所述深度纹理为与该阴影图分辨率相同的二维深度纹理;步骤S2、对步骤S1创建的阴影图和深度纹理进行像素初始化;步骤S3、采用第一GPU可编程绘制流水线绘制三维场景中的所有三维模型,将编码后的离光源最近的三维模型表面的深度信息保存到阴影图中;步骤S4、根据步骤S3获取的深度信息,采用第二GPU可编程绘制流水线对其进行高斯模糊滤波操作,将编码后的模糊深度信息更新到阴影图中,得到模糊后的阴影图;步骤S5、采用第三GPU可编程绘制流水线绘制三维场景中的所有三维模型,将模糊后的阴影图中所包含的软阴影信息绘制到显示窗口,使绘制的三维场景呈现逼真的软阴影效果。作为优选的技术方案,在所述步骤S1中,输入信息至少包括三维场景的观察点的位置和观察方向、显示窗口的颜色缓冲和深度缓冲、显示窗口的分辨率、光源的位置和光源的光照方向、光源视域深度最小值和光源视域深度最大值、三维场景中所有三维模型的摆放位置以及阴影图的分辨率。作为优选的技术方案,所述步骤S3进一步包括以下步骤:步骤S31、以阴影图为颜色绘制缓冲,以深度纹理为深度绘制缓冲;以步骤S1给定的光源的位置作为第一GPU绘制流水线的摄像机观察点,以步骤S1给定的光源的光照方向为摄像机观察方向确定视域变换矩阵,三维场景中的每个三维模型根据步骤S1给定的摆放位置确定各自的世界坐标变换矩阵;步骤S32、在第一GPU可编程绘制流水线的GPU顶点着色器中,对三维模型的当前顶点坐标(记为p1)进行处理并获得视域坐标系下的四维齐次坐标(记为p3)作为GPU顶点着色器顶点坐标的输出;步骤S33、在第一GPU可编程绘制流水线的GPU像素着色器中,对阴影图的像素颜色进行处理以获得编码后的四维深度信息d2作为GPU像素着色器的颜色输出;其中,对阴影图的像素颜色进行处理进一步包括以下步骤:根据步骤S32中所述的视域坐标系下的四维齐次坐标p3,将像素深度信息p3.w归一化到0~1之间,获得归一化后的深度信息d1;将归一化后的深度信息d1进行编码转换获得编码后的四维深度信息d2,编码转换计算公式为:x1=fraction(d1);x2=fraction(d1*255);x3=fraction(d1*255*255);x4=fraction(d1*255*255*255);d2.R=x1-x2/255;d2.G=x2-x3/255;d2.B=x3-x4/255;d2.A=x4;式中,函数fraction表示去掉浮点数的整数部分后获得小数部分的数值,d2为四维颜色向量,d2.R、d2.G、d2.B、d2.A分别表示d2的R(红)、G(绿)、B(蓝)、A(透明度)四个颜色分量的颜色值。作为优选的技术方案,步骤S32进一步包括以下步骤:步骤S321:计算p1的初始四维齐次坐标(记为p2):p2.x=p1.x;p2.y=p1.y;p2.z=p1.z;p2.w=1;其中,p1.x、p1.y、p1.z分别表示p1的x轴、y轴、z轴的坐标值;p2.x、p2.y、p2.z、p2.w分别表示p2的x轴、y轴、z轴、w轴的坐标值;步骤S322:根据步骤S31的三维模型的世界坐标变换矩阵和视域变换矩阵,对初始四维齐次坐标p2进行坐标变换,获得视域坐标系下的四维齐次坐标p3,坐标变换计算公式为:p3=V*W*p2,其中V为视域变换矩阵,W为世界坐标变换矩阵。作为优选的技术方案,步骤S33中将像素深度信息进行归一化的步骤进一步包括:根据步骤S1给定的光源视域深度最小值(记为d_min)和光源视域深度最大值(记为d_max)、步骤S32中所计算的视域坐标系下的四维齐次坐标p3,将像素深度信息p3.w归一化到0~1之间获得归一化后的深度信息d1,计算公式为:d1=(p3.w-d_min)/(d_max-d_min)。作为优选的技术方案,所述步骤S4进一步包括以下步骤:步骤S41、创建一张包含RGBA四个8位浮点数颜色分量的二维临时纹理,临时纹理分辨率大小与阴影图相同;并以临时纹理为颜色绘制缓冲,以阴影图作为输入纹理;步骤S42、在第二GPU可编程绘制流水线的GPU顶点着色器中,输出阴影图的四个顶点坐标以及同时输出其纹理坐标;步骤S43、在第二GPU可编程绘制流水线的GPU像素着色器中,根据当前像素的纹理坐标,从阴影图中读取当前像素周围邻域的编码后的四维深度信息d2并对其进行解码转换得到归一化后的深度信息d1,其中解码转换计算公式为:d1=d2.R+d2.G/255+d2.B/(255*255)+d2.A/(255*255*255);对当前像素周围邻域的归一化后的深度信息执行高斯模糊操作得到当前像素的模糊深度信息,然后对模糊深度信息本文档来自技高网
...

【技术保护点】
1.一种面向资源受限移动设备的实时软阴影生成方法,其特征在于,所述方法包括:步骤S1、在移动设备中配置三维场景及其所需要的各项输入信息,并创建阴影图和深度纹理,其中,所述阴影图为包含RGBA四个8位浮点数颜色分量的二维阴影图,所述深度纹理为与该阴影图分辨率相同的二维深度纹理;步骤S2、对步骤S1创建的阴影图和深度纹理进行像素初始化;步骤S3、采用第一GPU可编程绘制流水线绘制三维场景中的所有三维模型,将编码后的离光源最近的三维模型表面的深度信息保存到阴影图中;步骤S4、根据步骤S3获取的深度信息,采用第二GPU可编程绘制流水线对其进行高斯模糊滤波操作,将编码后的模糊深度信息更新到阴影图中,得到模糊后的阴影图;步骤S5、采用第三GPU可编程绘制流水线绘制三维场景中的所有三维模型,将模糊后的阴影图中所包含的软阴影信息绘制到显示窗口,使绘制的三维场景呈现逼真的软阴影效果;在所述步骤S1中,输入信息至少包括三维场景的观察点的位置和观察方向、显示窗口的颜色缓冲和深度缓冲、显示窗口的分辨率、光源的位置和光源的光照方向、光源视域深度最小值和光源视域深度最大值、三维场景中所有三维模型的摆放位置以及阴影图的分辨率;所述步骤S3进一步包括以下步骤:步骤S31、以阴影图为颜色绘制缓冲,以深度纹理为深度绘制缓冲;以步骤S1给定的光源的位置作为第一GPU绘制流水线的摄像机观察点,以步骤S1给定的光源的光照方向为摄像机观察方向确定视域变换矩阵,三维场景中的每个三维模型根据步骤S1给定的摆放位置确定各自的世界坐标变换矩阵;步骤S32、在第一GPU可编程绘制流水线的GPU顶点着色器中,对三维模型的当前顶点坐标(记为p1)进行处理并获得视域坐标系下的四维齐次坐标(记为p3)作为GPU顶点着色器顶点坐标的输出;步骤S33、在第一GPU可编程绘制流水线的GPU像素着色器中,对阴影图的像素颜色进行处理以获得编码后的四维深度信息d2作为GPU像素着色器的颜色输出;其中,对阴影图的像素颜色进行处理进一步包括以下步骤:根据步骤S32中所述的视域坐标系下的四维齐次坐标p3,将像素深度信息p3.w归一化到0~1之间,获得归一化后的深度信息d1;将归一化后的深度信息d1进行编码转换获得编码后的四维深度信息d2,编码转换计算公式为:x1=fraction(d1);x2=fraction(d1*255);x3=fraction(d1*255*255);x4=fraction(d1*255*255*255);d2.R=x1‑x2/255;d2.G=x2‑x3/255;d2.B=x3‑x4/255;d2.A=x4;式中,函数fraction表示去掉浮点数的整数部分后获得小数部分的数值,d2为四维颜色向量,d2.R、d2.G、d2.B、d2.A分别表示d2的R(红)、G(绿)、B(蓝)、A(透明度)四个颜色分量的颜色值;步骤S32进一步包括以下步骤:步骤S321:计算p1的初始四维齐次坐标(记为p2):p2.x=p1.x;p2.y=p1.y;p2.z=p1.z;p2.w=1;其中,p1.x、p1.y、p1.z分别表示p1的x轴、y轴、z轴的坐标值;p2.x、p2.y、p2.z、p2.w分别表示p2的x轴、y轴、z轴、w轴的坐标值;步骤S322:根据步骤S31的三维模型的世界坐标变换矩阵和视域变换矩阵,对初始四维齐次坐标p2进行坐标变换,获得视域坐标系下的四维齐次坐标p3,坐标变换计算公式为:p3=V*W*p2,其中V为视域变换矩阵,W为世界坐标变换矩阵;步骤S33中将像素深度信息进行归一化的步骤进一步包括:根据步骤S1给定的光源视域深度最小值(记为d_min)和光源视域深度最大值(记为d_max)、步骤S32中所计算的视域坐标系下的四维齐次坐标p3,将像素深度信息p3.w归一化到0~1之间获得归一化后的深度信息d1,计算公式为:d1=(p3.w‑d_min)/(d_max‑d_min);所述步骤S4进一步包括以下步骤:步骤S41、创建一张包含RGBA四个8位浮点数颜色分量的二维临时纹理,临时纹理分辨率大小与阴影图相同;并以临时纹理为颜色绘制缓冲,以阴影图作为输入纹理;步骤S42、在第二GPU可编程绘制流水线的GPU顶点着色器中,输出阴影图的四个顶点坐标以及同时输出其纹理坐标;步骤S43、在第二GPU可编程绘制流水线的GPU像素着色器中,根据当前像素的纹理坐标,从阴影图中读取当前像素周围邻域的编码后的四维深度信息d2并对其进行解码转换得到归一化后的深度信息d1,其中解码转换计算公式为:d1=d2.R+d2.G/255+d2.B/(255*255)+d2.A/(255*255*255);对当前像素周围邻域的归一化后的深度信息执行高斯模糊操作得到当前像素的模糊深度信息,然后对模糊深度信息再次采...

【技术特征摘要】
1.一种面向资源受限移动设备的实时软阴影生成方法,其特征在于,所述方法包括:步骤S1、在移动设备中配置三维场景及其所需要的各项输入信息,并创建阴影图和深度纹理,其中,所述阴影图为包含RGBA四个8位浮点数颜色分量的二维阴影图,所述深度纹理为与该阴影图分辨率相同的二维深度纹理;步骤S2、对步骤S1创建的阴影图和深度纹理进行像素初始化;步骤S3、采用第一GPU可编程绘制流水线绘制三维场景中的所有三维模型,将编码后的离光源最近的三维模型表面的深度信息保存到阴影图中;步骤S4、根据步骤S3获取的深度信息,采用第二GPU可编程绘制流水线对其进行高斯模糊滤波操作,将编码后的模糊深度信息更新到阴影图中,得到模糊后的阴影图;步骤S5、采用第三GPU可编程绘制流水线绘制三维场景中的所有三维模型,将模糊后的阴影图中所包含的软阴影信息绘制到显示窗口,使绘制的三维场景呈现逼真的软阴影效果;在所述步骤S1中,输入信息至少包括三维场景的观察点的位置和观察方向、显示窗口的颜色缓冲和深度缓冲、显示窗口的分辨率、光源的位置和光源的光照方向、光源视域深度最小值和光源视域深度最大值、三维场景中所有三维模型的摆放位置以及阴影图的分辨率;所述步骤S3进一步包括以下步骤:步骤S31、以阴影图为颜色绘制缓冲,以深度纹理为深度绘制缓冲;以步骤S1给定的光源的位置作为第一GPU绘制流水线的摄像机观察点,以步骤S1给定的光源的光照方向为摄像机观察方向确定视域变换矩阵,三维场景中的每个三维模型根据步骤S1给定的摆放位置确定各自的世界坐标变换矩阵;步骤S32、在第一GPU可编程绘制流水线的GPU顶点着色器中,对三维模型的当前顶点坐标(记为p1)进行处理并获得视域坐标系下的四维齐次坐标(记为p3)作为GPU顶点着色器顶点坐标的输出;步骤S33、在第一GPU可编程绘制流水线的GPU像素着色器中,对阴影图的像素颜色进行处理以获得编码后的四维深度信息d2作为GPU像素着色器的颜色输出;其中,对阴影图的像素颜色进行处理进一步包括以下步骤:根据步骤S32中所述的视域坐标系下的四维齐次坐标p3,将像素深度信息p3.w归一化到0~1之间,获得归一化后的深度信息d1;将归一化后的深度信息d1进行编码转换获得编码后的四维深度信息d2,编码转换计算公式为:x1=fraction(d1);x2=fraction(d1*255);x3=fraction(d1*255*255);x4=fraction(d1*255*255*255);d2.R=x1-x2/255;d2.G=x2-x3/255;d2.B=x3-x4/255;d2.A=x4;式中,函数fraction表示去掉浮点数的整数部分后获得小数部分的数值,d2为四维颜色向量,d2.R、d2.G、d2.B、d2.A分别表示d2的R(红)、G(绿)、B(蓝)、A(透明度)四个颜色分量的颜色值;步骤S32进一步包括以下步骤:步骤S321:计算p1的初始四维齐次坐标(记为p2):p2.x=p1.x;p2.y=p1.y;p2.z=p1.z;p2.w=1;其中,p1.x、p1.y、p1.z分别表示p1的x轴、y轴、z轴的坐标值;p2.x、p2.y、p2.z、p2.w分别表示p2的x轴、y轴、z轴、w轴的坐标值;步骤S322:根据步骤S31的三维模型的世界坐标变换矩阵和视域变换矩阵,对初始四维齐次坐标p2进行坐标变换,获得视域坐标系下的四维齐次坐标p3,坐标变换计算公式为:p3=V*W*p2,其中V为视域变换矩阵,W为世界坐标变换矩阵;步骤S33中将像素深度信息进行归一化的步骤进一步包括:根据步骤S1给定的光源视域深度最小值(记为d_min)和光源视域深度最大值(记为d_max)、步骤S32中所计算的视域坐标系下的四维齐次坐标p3,将像素深度信息p3.w归一化到0~1之间获得归一化后的深度信息d1,计算公式为:d1=(p3.w-d_min)/(d_max-d_min);所述步骤S4进一步包括以下步骤:步骤S41、创建一张包含RGBA四个8位浮点数颜色分量的二维临时纹理,临时纹...

【专利技术属性】
技术研发人员:赵汉理陈伟斌胡明晓
申请(专利权)人:温州大学
类型:发明
国别省市:浙江,33

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

1