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个子视锥体,其中,每个子视锥体的区域由近至远依次增大;生成所述子视锥体的渲染参数,所述渲染参数包括视图矩阵和投影矩阵;根据所述子视锥体的渲染参数,在一个所述纹理区域内渲染所述子视锥体对应的场景物体,得到以光源位置为视点的场景深度图。可选的,所述方法还包括:判断所述子视锥体的位置相比于上一时刻是否发生变化;若是,则执行所述根据所述子视锥体的渲染参数,在一个所述纹理区域 ...
【技术保护点】
一种阴影图的生成方法,其特征在于,预先将至少一张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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。