一种阴影图的生成方法及装置制造方法及图纸

技术编号:16428918 阅读:59 留言:0更新日期:2017-10-22 01:09
本申请公开了一种阴影图的生成及装置,预先将至少一张ShadowMap纹理划分为N个相同大小的纹理区域,其中,N≥2;所述方法包括:生成以眼睛位置为视点的目标视锥体;将所述目标视锥体由近至远分割成N个子视锥体,其中,每个子视锥体的区域由近至远依次增大;生成所述子视锥体的渲染参数,所述渲染参数包括视图矩阵和投影矩阵;根据所述子视锥体的渲染参数,在一个所述纹理区域内渲染所述子视锥体对应的场景物体,得到以光源位置为视点的场景深度图。本申请不但能够降低纹理显存的耗用量,还能够提高阴影渲染效率和阴影图质量。

Method and device for generating shadow map

The invention discloses a device for generating and shadow map, will advance at least one ShadowMap texture is divided into texture region, N of the same size, N = 2; the method comprises the following steps: to generate eye position target view frustum; the target cones from near to far into N sub frustum, which, from near to far each frustum region increased; rendering parameters generate the sub cones, the rendering parameters including the view matrix and a projection matrix; according to the rendering parameters of the sub cones, scene objects in a texture region of the rendering of the the sub frustum corresponding to the position of the light source is obtained, the depth map of the scene view. This application can not only reduce the consumption of texture memory, but also can improve the efficiency and quality of shadow map rendering.

【技术实现步骤摘要】
一种阴影图的生成方法及装置
本申请涉及阴影图
,尤其涉及一种阴影图的生成方法及装置。
技术介绍
一个物体之所以会处在阴影中,是由于在它和光源之间存在着遮蔽物,或者说遮蔽物离光源的距离比该物体要近。场景中生成物体的实时阴影,一般使用阴影图(ShadowMap)技术。ShadowMap是一张用来记录光源视角场景的深度信息的纹理图,ShadowMap记录了以光源视角来看,各个可照射角度下离光源最近的物体与光源的距离。在光照阴影渲染过程中,传统的大场景级联阴影算法需要多张ShadowMap纹理,也就是说,为了渲染以眼睛(或相机)为视点的场景阴影,需要利用多张ShadowMap纹理来表述场景中物体的遮挡关系,但是,使用多张ShadowMap纹理,会耗用较大的纹理显存,且阴影渲染效率较低。
技术实现思路
有鉴于此,本申请的主要目的在于提供一种阴影图的生成方法及装置,能够降低纹理显存的耗用量,并能够提高阴影渲染效率。本申请提供了一种阴影图的生成方法,预先将至少一张ShadowMap纹理划分为N个相同大小的纹理区域,其中,N≥2;所述方法包括:生成以眼睛位置为视点的目标视锥体;将所述目标视锥体由近至远分割成N个子视锥体,其中,每个子视锥体的区域由近至远依次增大;生成所述子视锥体的渲染参数,所述渲染参数包括视图矩阵和投影矩阵;根据所述子视锥体的渲染参数,在一个所述纹理区域内渲染所述子视锥体对应的场景物体,得到以光源位置为视点的场景深度图。可选的,所述方法还包括:判断所述子视锥体的位置相比于上一时刻是否发生变化;若是,则执行所述根据所述子视锥体的渲染参数,在一个所述纹理区域内渲染所述子视锥体对应的场景物体的步骤;若否,则继续使用所述子视锥体在上一时刻对应的场景深度图。可选的,所述判断所述子视锥体的位置相比于上一时刻是否发生变化,包括:确定历史位置与当前位置之间的相互距离,其中,所述历史位置为上一时刻所述子视锥体的包围球中心的坐标,所述当前位置为当前时刻所述子视锥体的包围球中心的坐标;判断所述相互距离是否大于预设阈值;若是,则确定所述子视锥体中的物体的当前位置相比于上一时刻发生变化;若否,则确定所述子视锥体中的物体的当前位置相比于上一时刻未发生变化。可选的,所述方法还包括:确定目标物体的受光面和背光面,其中,所述目标物体为所述目标视锥体中的物体;为所述受光面与所述背光面的过渡区域配置渐变的光照颜色;根据所述受光面每一像素点接收的光照颜色,分别确定所述受光面每一像素点的颜色;根据所述背光面每一像素点接收的光照颜色,分别确定所述背光面每一像素点的颜色。可选的,所述确定目标物体的受光面和背光面,包括:计算所述目标物体表面每一像素点对应的点积,其中,所述点积为所述像素点的法线朝向与光源方向的点积;若所述像素点对应的点积大于0,则确定所述像素点位于受光面;若所述像素点对应的点积等于0,则确定所述像素点位于受光面与背光面的交界处;若所述像素点对应的点积小于0,则确定所述像素点位于背光面。可选的,所述为所述受光面与所述背光面的过渡区域配置渐变的光照颜色,包括:从点积取值范围[-1,1]内,选取一个取值区间[-x1,x2],其中,x1和x2均为正数且小于1;从所述目标物体表面选择一个过渡区域,其中,所述过渡区域内每一像素点对应的点积在所述取值区间[-x1,x2]内;使所述过渡区域一侧接收的第一光照颜色向另一侧接收的第二光照颜色渐变,其中,所述第一光照颜色为除所述过渡区域以外的受光面接收的固定光照颜色,所述第二光照颜色为除所述过渡区域以外的背光面接收的固定光照颜色。可选的,所述根据所述受光面每一像素点接收的光照颜色,分别确定所述受光面每一像素点的颜色,包括:确定所述受光面中每一受光像素点对应的阴影因子,其中,所述阴影因子的大小与所述受光像素点所受的阴影遮蔽程度相关;根据所述受光像素点的本身纹理颜色、接收的光照颜色、环境本身颜色、所述阴影因子确定所述受光像素点的颜色。可选的,所述确定所述受光面中每一受光像素点对应的阴影因子,包括:选取所述受光像素点周边的M个参考像素点,其中,M≥2;利用所述场景深度图,确定所述受光像素点和所述参考像素点是否处于阴影中;若均不在阴影中,则所述受光像素点的阴影因子取值为0;若存在m个像素点在阴影中,则根据所述m个像素点中的每一像素点对应的预设阴影值,确定所述受光像素点的阴影因子取值,其中,0<m≤M+1。可选的,所述根据所述背光面每一像素点接收的光照颜色,分别确定所述背光面每一像素点的颜色,包括:根据所述背光面中每一背光像素点的本身纹理颜色、接收的光照颜色、环境本身颜色,确定所述背光像素点的颜色。可选的,所述方法还包括:降低第一距离与第二距离之间的比值,其中,所述第一距离为所述远裁剪面与所述眼睛位置之间的距离,所述第二距离为所述近裁剪面与所述眼睛位置之间的距离。可选的,按照以下方式确定所述第一距离:根据所述目标视锥体向上向量的Z值、视野高度确定所述第一距离,其中,所述视野高度为所述眼睛位置与地面之间的垂直距离。可选的,所述第一距离与所述第二距离之间的比值为5。本申请还提供了一种阴影图的生成装置,包括:区域预划分单元,用于预先将至少一张ShadowMap纹理划分为N个相同大小的纹理区域,其中,N≥2;视锥体生成单元,用于生成以眼睛位置为视点的目标视锥体;视锥体分割单元,用于将所述目标视锥体由近至远分割成N个子视锥体,其中,每个子视锥体的区域由近至远依次增大;渲染参数生成单元,用于生成所述子视锥体的渲染参数,所述渲染参数包括视图矩阵和投影矩阵;深度图渲染单元,用于根据所述子视锥体的渲染参数,在一个所述纹理区域内渲染所述子视锥体对应的场景物体,得到以光源位置为视点的场景深度图。可选的,所述装置还包括:受背光面确定单元,用于确定目标物体的受光面和背光面,其中,所述目标物体为所述目标视锥体中的物体;渐变颜色配置单元,用于为所述受光面与所述背光面的过渡区域配置渐变的光照颜色;受光面颜色确定单元,用于根据所述受光面每一像素点接收的光照颜色,分别确定所述受光面每一像素点的颜色;背光面颜色确定单元,用于根据所述背光面每一像素点接收的光照颜色,分别确定所述背光面每一像素点的颜色。可选的,所述装置还包括:比值降低单元,用于降低第一距离与第二距离之间的比值,其中,所述第一距离为所述远裁剪面与所述眼睛位置之间的距离,所述第二距离为所述近裁剪面与所述眼睛位置之间的距离。本申请提供的一种阴影图的生成方法及装置,生成以眼睛位置为视点的目标视锥体,并将所述目标视锥体由近至远分割成N个子视锥体,然后生成所述子视锥体的渲染参数,所述渲染参数包括视图矩阵和投影矩阵;接下来,由于已经预先将至少一张ShadowMap纹理划分为N个相同大小的纹理区域,并将每一纹理区域分配给一个子视锥体,这样就可以根据所述子视锥体的渲染参数,在一个纹理区域内渲染所述子视锥体对应的场景物体,得到以光源位置为视点的场景深度图。可见,本实施例利用一张ShadowMap纹理中的部分区域而非现有技术中的一整张ShadowMap纹理,来表达分割出的一个视锥体区域中的物体遮挡关系,这样可以有效降低ShadowMap纹理的耗用量,并能够提高阴影渲染效率。附图说明为了更清本文档来自技高网...
一种阴影图的生成方法及装置

【技术保护点】
一种阴影图的生成方法,其特征在于,预先将至少一张ShadowMap纹理划分为N个相同大小的纹理区域,其中,N≥2;所述方法包括:生成以眼睛位置为视点的目标视锥体;将所述目标视锥体由近至远分割成N个子视锥体,其中,每个子视锥体的区域由近至远依次增大;生成所述子视锥体的渲染参数,所述渲染参数包括视图矩阵和投影矩阵;根据所述子视锥体的渲染参数,在一个所述纹理区域内渲染所述子视锥体对应的场景物体,得到以光源位置为视点的场景深度图。

【技术特征摘要】
1.一种阴影图的生成方法,其特征在于,预先将至少一张ShadowMap纹理划分为N个相同大小的纹理区域,其中,N≥2;所述方法包括:生成以眼睛位置为视点的目标视锥体;将所述目标视锥体由近至远分割成N个子视锥体,其中,每个子视锥体的区域由近至远依次增大;生成所述子视锥体的渲染参数,所述渲染参数包括视图矩阵和投影矩阵;根据所述子视锥体的渲染参数,在一个所述纹理区域内渲染所述子视锥体对应的场景物体,得到以光源位置为视点的场景深度图。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:判断所述子视锥体的位置相比于上一时刻是否发生变化;若是,则执行所述根据所述子视锥体的渲染参数,在一个所述纹理区域内渲染所述子视锥体对应的场景物体的步骤;若否,则继续使用所述子视锥体在上一时刻对应的场景深度图。3.根据权利要求2所述的方法,其特征在于,所述判断所述子视锥体的位置相比于上一时刻是否发生变化,包括:确定历史位置与当前位置之间的相互距离,其中,所述历史位置为上一时刻所述子视锥体的包围球中心的坐标,所述当前位置为当前时刻所述子视锥体的包围球中心的坐标;判断所述相互距离是否大于预设阈值;若是,则确定所述子视锥体中的物体的当前位置相比于上一时刻发生变化;若否,则确定所述子视锥体中的物体的当前位置相比于上一时刻未发生变化。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:确定目标物体的受光面和背光面,其中,所述目标物体为所述目标视锥体中的物体;为所述受光面与所述背光面的过渡区域配置渐变的光照颜色;根据所述受光面每一像素点接收的光照颜色,分别确定所述受光面每一像素点的颜色;根据所述背光面每一像素点接收的光照颜色,分别确定所述背光面每一像素点的颜色。5.根据权利要求4所述的方法,其特征在于,所述确定目标物体的受光面和背光面,包括:计算所述目标物体表面每一像素点对应的点积,其中,所述点积为所述像素点的法线朝向与光源方向的点积;若所述像素点对应的点积大于0,则确定所述像素点位于受光面;若所述像素点对应的点积等于0,则确定所述像素点位于受光面与背光面的交界处;若所述像素点对应的点积小于0,则确定所述像素点位于背光面。6.根据权利要求5所述的方法,其特征在于,所述为所述受光面与所述背光面的过渡区域配置渐变的光照颜色,包括:从点积取值范围[-1,1]内,选取一个取值区间[-x1,x2],其中,x1和x2均为正数且小于1;从所述目标物体表面选择一个过渡区域,其中,所述过渡区域内每一像素点对应的点积在所述取值区间[-x1,x2]内;使所述过渡区域一侧接收的第一光照颜色向另一侧接收的第二光照颜色渐变,其中,所述第一光照颜色为除所述过渡区域以外的受光面接收的固定光照颜色,所述第二光照颜色为除所述过渡区域以外的背光面接收的固定光照颜色。7.根据权利要求4至6任一项所述的方法,其特征在于,所述根据所述受光面每一像素点接收的光照颜色,分别确定所述受光面每一像素点的颜色,包括:确定所述受光面中每一受光像素点对...

【专利技术属性】
技术研发人员:郑梁荣
申请(专利权)人:城市生活北京资讯有限公司
类型:发明
国别省市:北京,11

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

1