光照计算方法、装置、计算机设备及计算机可读存储介质_第1页
光照计算方法、装置、计算机设备及计算机可读存储介质_第2页
光照计算方法、装置、计算机设备及计算机可读存储介质_第3页
光照计算方法、装置、计算机设备及计算机可读存储介质_第4页
光照计算方法、装置、计算机设备及计算机可读存储介质_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(19)中华人民共和国国家知识产权局

(12)发明专利

(10)授权公告号CN113052950B

(45)授权公告日2021.12.17

(21)申请号202110348460.3CN112348955A,2021.02.09

CN111105491A,2020.05.05

(22)申请日2021.03.31

CN101568943A,2009.10.28

同一申请的已公布的文献号

(65)CN107274476A,2017.10.20

申请公布号CN113052950A

CN112381918A,2021.02.19

(43)申请公布日2021.06.29CN110211218A,2019.09.06

CN107481314A,2017.12.15

(73)专利权人完美世界(北京)软件科技发展有

限公司US2014327673A1,2014.11.06

US2017365090A1,2017.12.21

地址100085北京市海淀区上地东路1号院

US2012019533A1,2012.01.26

5号楼7层701-14

US2010295851A1,2010.11.25

(72)发明人吕峻宇

US2015287158A1,2015.10.08

(74)专利代理机构北京中强智尚知识产权代理邱玉凯.“基于随机光源裁剪实现实时全局

有限公司11448光照”.《现代计算机》.2020,85-90页.(续)

代理人黄耀威

审查员贾东曜

(51)Int.CI.

G06T15/00(2011.01)(续)

(56)对比文件

CN111260766A,2020.06.09

CN111968216A,2020.11.20权利要求书3页说明书12页附图3页

(54)发明名称片元进行光照计算。

光照计算方法、装置、计算机设备及计算机

可读存储介质

(57)摘要

本申请公开了一种光照计算方法、装置、计

算机设备及计算机可读存储介质,涉及图像处理

技术领域,对目标场景的视锥体进行划分,得到

多个多面体,通过判断多面体与光源的相对关

系,生成光源列表,进而使用片元所在的多面体

对应的光源列表进行计算,用剪裁后的光源对片

元进行光照计算,减轻了计算量,极大的降低了

复杂场景中产生严重性能问题的可能性,缓解带

宽压力。所述方法包括:在预设维度对目标场景

的视锥体进行划分,得到多个多面体;判断多个

多面体与目标场景中的多个光源的相对关系,根104

据判断结果,生成多个光源列表;确定目标片元,

在多个多面体中查询目标片元所属的目标多面

体;基于目标多面体对应的目标光源列表对目标

[转续页]

CN113052950B2/2页

[接上页]

(51)Int.CI.陈雷霆.“三维复杂场景实时绘制技术”.《中

G06T75/50(2011.01)国优秀博硕士学位论文全文数据库(博士)信息

科技辑》.2007,(第03期),论文第二章.

(56)对比文件

FanZhangetal..(<Parallel-Split

焦晴阳.“基于GPU的三维建筑模型日照阴影

分析展示系统的设计与实现”.《中国优秀博硕士ShadowMapsforLarge-scaleVirtual

Environments".《VRCIA2006》.2006,311-318

学位论文全文数据库(硕士)工程科技II辑》

页.

.2018,(第06期),论文第四章、第五章.

唐宇.“三维模拟演练系统中光照模型的研KaiRohmeretal..""TiledFrustum

究与实现”.《中国优秀博硕士学位论文全文数据CullingforDifferentialRenderingon

MobileDevices”.《2015IEEEInternational

库(硕士)信息科技辑》.2016,(第11期),论文第

―-.-A*.A/r--T-„-t*y.SymposiumonMixedandAugmented

一早-第五早.

Reality》.2015,37-42页.

2

CN113052950B权利要求书1/3页

1.一种光照计算方法,其特征在于,包括:

在预设维度对目标场景的视锥体进行划分,得到多个多面体;

判断所述多个多面体与所述目标场景中的多个光源的相对关系,根据判断结果,生成

多个光源列表,所述多个光源列表中每个光源列表包括影响单个多面体或多面体集合的光

源的光源索引和光源数量;

确定目标片元,在所述多个多面体中查询所述目标片元所属的目标多面体,所述目标

片元是所述目标场景中任一实体模型的任意待渲染的片元;

基于所述目标多面体对应的目标光源列表对所述目标片元进行光照计算。

2.根据权利要求1所述的方法,其特征在于,所述在预设维度对目标场景的视锥体进行

划分,得到多个多面体,包括:

获取所述预设维度以及预设划分参数,确定所述预设维度指示的至少一个坐标方向以

及所述至少一个坐标方向在所述预设划分参数中对应的子参数;

对于所述至少一个坐标方向中每个坐标方向,在所述坐标方向上将所述视锥体划分为

所述坐标方向对应的子参数指示的份数;

分别在所述至少一个坐标方向上按照对应的子参数对所述视锥体进行划分,得到所述

多个多面体。

3.根据权利要求1所述的方法,其特征在于,所述判断所述多个多面体与所述目标场景

中的多个光源的相对关系,根据判断结果,生成多个光源列表,包括:

对于所述多个多面体中每个多面体,读取所述多个光源中每个光源与所述多面体的相

对关系,判断在所述相对关系下所述多个光源中每个光源的光束是否影响到所述多面体,

输出所述每个光源对应的判断结果;

根据所述每个光源对应的判断结果,在所述多个光源中确定至少一个第一光源,所述

至少一个第一光源对应的判断结果指示所述第一光源的光束影响所述多面体;

统计所述至少一个第一光源的光源数量,获取所述至少一个第一光源的光源索引,生

成包括所述光源数量和所述光源索引的光源列表;

重复执行上述过程,分别为所述每个多面体生成包括影响所述多面体的光源的光源索

引和光源数量的光源列表,得到所述多个光源列表;

将所述多个多面体与所述多个光源列表进行关联存储,其中,关联存储可以基于二层

列表结构或三层列表结构实现。

4.根据权利要求3所述的方法,其特征在于,所述读取所述多个光源中每个光源与所述

多面体的相对关系,判断在所述相对关系下所述多个光源中每个光源的光束是否影响到所

述多面体,输出所述每个光源对应的判断结果,包括:

对于所述多个光源中每个光源,读取所述光源与所述多面体的相对关系,对所述相对

关系进行判断;

若所述相对关系指示所述光源的光束位于所述多面体的多个面中任意面的内侧,则判

断确定所述光源影响所述多面体,输出用于指示所述光源影响所述多面体的判断结果,并

继续对所述多个光源中其他光源在对应的相对关系下是否影响到所述多面体进行判断;

若所述相对关系指示所述光源的光束位于所述多个面中任意面的外侧,则判断确定所

述光源不影响所述多面体,输出用于指示所述光源不影响所述多面体的判断结果,并继续

3

CN113052950B权利要求书2/3页

对所述多个光源中其他光源在对应的相对关系下是否影响到所述多面体进行判断;

其中,所述内侧是所述任意面所在平面的垂直方向上的两侧中存在所述多个面中其他

面的一侧,所述外侧是所述两侧中除所述内侧的另一侧。

5.根据权利要求3所述的方法,其特征在于,所述读取所述多个光源中每个光源与所述

多面体的相对关系,包括:

对于所述多个多面体中每个多面体,为所述多面体构建球型包围盒;

根据所述多个光源中每个光源与所述球型包围盒的相对位置,读取所述多个光源中每

个光源与所述球型包围盒的相对关系作为所述每个光源与所述多面体的相对关系。

6.根据权利要求1所述的方法,其特征在于,所述判断所述多个多面体与所述目标场景

中的多个光源的相对关系,根据判断结果,生成多个光源列表,包括:

响应于合并生成请求,获取所述合并生成请求指示的合并个数;

按照所述多个多面体的排列方式,将所述多个多面体中连续的且数量满足所述合并个

数的多面体进行合并,得到多个多面体集合;

对于所述多个多面体集合中每个多面体集合,读取所述多个光源中每个光源与所述多

面体集合的相对关系,判断在所述相对关系下所述多个光源中每个光源是否影响到所述多

面体集合,输出所述每个光源对应的判断结果;

根据所述每个光源对应的判断结果,在所述多个光源中确定至少一个第一光源,所述

至少一个第一光源对应的判断结果指示所述第一光源影响所述多面体集合;

统计所述至少一个第一光源的光源数量,获取所述至少一个第一光源的光源索引,生

成包括所述光源数量和所述光源索引的光源列表;

重复执行上述过程,分别为所述每个多面体集合生成包括影响所述多面体集合的光源

的光源索引和光源数量的光源列表,得到所述多个光源列表;

将所述多个多面体集合与所述多个光源列表进行关联存储,其中,关联存储可以基于

二层列表结构或三层列表结构实现。

7.根据权利要求6所述的方法,其特征在于,所述读取所述多个光源中每个光源与所述

多面体集合的相对关系,包括:

对于所述多个多面体集合中每个多面体集合,为所述多面体集合构建球型包围盒;

根据所述多个光源中每个光源与所述球型包围盒的相对位置,读取所述多个光源中每

个光源与所述球型包围盒的相对关系作为所述每个光源与所述多面体集合的相对关系。

8.根据权利要求1所述的方法,其特征在于,所述基于所述目标多面体对应的目标光源

列表对所述目标片元进行光照计算,包括:

查询所述目标多面体绑定的光源列表;

响应于查询确定所述目标多面体存在绑定的光源列表,将所述目标多面体绑定的光源

列表作为所述目标光源列表,采用所述目标光源列表包括的光源数量和光源索引对所述目

标片元进行光照计算;

响应于查询确定所述目标多面体不存在绑定的光源列表,确定所述目标多面体所在的

目标多面体集合,将所述目标多面体集合绑定的光源列表作为所述目标光源列表,采用所

述目标光源列表包括的光源数量和光源索引对所述目标片元进行光照计算。

9.一种光照计算装置,其特征在于,包括:

4

CN113052950B权利要求书3/3页

划分模块,用于在预设维度对目标场景的视锥体进行划分,得到多个多面体;

生成模块,用于判断所述多个多面体与所述目标场景中的多个光源的相对关系,根据

判断结果,生成多个光源列表,所述多个光源列表中每个光源列表包括影响单个多面体或

多面体集合的光源的光源索引和光源数量;

查询模块,用于确定目标片元,在所述多个多面体中查询所述目标片元所属的目标多

面体,所述目标片元是所述目标场景中任一实体模型的任意待渲染的片元;

计算模块,用于基于所述目标多面体对应的目标光源列表对所述目标片元进行光照计

算。

10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在

于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。

11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序

被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。

5

CN113052950B说明书1/12页

光照计算方法'装置'计算机设备及计算机可读存储介质

技术领域

[0001]本申请涉及图像处理技术领域,特别是涉及一种光照计算方法、装置、计算机设备

及计算机可读存储介质。

背景技术

[0002]近年来,图像处理技术不断发展,无论是用户还是开发人员,对于图像质量的要求

越来越高,因此,为了提升计算机动画的品质,增强其真实感,基于环境的照明进行光照计

算以及光照渲染已经成为图像处理中的关键点。

[0003]相关技术中,在进行光照渲染时,通常采用前向渲染的方式进行。前向渲染也叫正

向渲染,是一种渲染物体的直接方式,在传统的前向渲染中,首先,确定场景中需要渲染的

全部物体,在其中选取任意物体。随后,将选取的物体与场景中的全部灯光进行相交判断,

确定在该物体上需要计算的灯光,并基于这些灯光对该物体进行光照计算,在计算完毕后

再渲染下一个物体,直至完成全部物体的光照计算以及光照渲染。

[0004]在实现本申请的过程中,申请人发现相关技术至少存在以下问题:

[0005]场景中的物体有大有小,一个较大的物体可能受到多个小光源的影响,使得该物

体的所有片元在计算时都需要计算到多个小光源,即使该小光源没有影响到该片元;而一

个较小的物体即使只受到一个光源的影响,也需要按照片元进行很多次的相交运算,造成

了大量的冗余计算,在复杂的场景中会产生严重的性能问题,给带宽带来较大的压力。

发明内容

[0006]有鉴于此,本申请提供了一种光照计算方法、装置、计算机设备及计算机可读存储

介质,主要目的在于解决目前造成了大量的冗余计算,在复杂的场景中会产生严重的性能

问题,给带宽带来较大的压力的问题。

[0007]依据本申请第一方面,提供了一种光照计算方法,该方法包括:

[0008]在预设维度对•目标场景的视锥体进行划分,得到多个多面体;

[0009]判断所述多个多面体与所述目标场景中的多个光源的相对关系,根据判断结果,

生成多个光源列表,所述多个光源列表中每个光源列表包括影响单个多面体或多面体集合

的光源的光源索引和光源数量;

[0010]确定目标片元,在所述多个多面体中查询所述目标片元所属的目标多面体,所述

目标片元是所述目标场景中任一实体模型的任意待渲染的片元;

[0011]基于所述目标多面体对应的目标光源列表对所述目标片元进行光照计算。

[0012]可选地,所述在预设维度对目标场景的视锥体进行划分,得到多个多面体,包括:

[0013]获取所述预设维度以及预设划分参数,确定所述预设维度指示的至少一个坐标方

向以及所述至少一个坐标方向在所述预设划分参数中对应的子参数;

[0014]对于所述至少一个坐标方向中每个坐标方向,在所述坐标方向上将所述视锥体划

分为所述坐标方向对应的子参数指示的份数;

6

CN113052950B说明书2/12页

[0015]分别在所述至少一个坐标方向上按照对应的子参数对所述视锥体进行划分,得到

所述多个多面体。

[0016]可选地,所述判断所述多个多面体与所述目标场景中的多个光源的相对关系,根

据判断结果,生成多个光源列表,包括:

[0017]对于所述多个多面体中每个多面体,读取所述多个光源中每个光源与所述多面体

的相对关系,判断在所述相对关系下所述多个光源中每个光源的光束是否影响到所述多面

体,输出所述每个光源对应的判断结果;

[0018]根据所述每个光源对应的判断结果,在所述多个光源中确定至少一个第一光源,

所述至少一个第一光源对应的判断结果指示所述第一光源的光束影响所述多面体;

[0019]统计所述至少一个第一光源的光源数量,获取所述至少一个第一光源的光源索

引,生成包括所述光源数量和所述光源索引的光源列表;

[0020]重复执行上述过程,分别为所述每个多面体生成包括影响所述多面体的光源的光

源索引和光源数量的光源列表,得到所述多个光源列表;

[0021]将所述多个多面体与所述多个光源列表进行关联存储,其中,关联存储可以基于

二层列表结构或三层列表结构实现。

[0022]可选地,所述读取所述多个光源中每个光源与所述多面体的相对关系,判断在所

述相对关系下所述多个光源中每个光源的光束是否影响到所述多面体,输出所述每个光源

对应的判断结果,包括:

[0023]对于所述多个光源中每个光源,读取所述光源与所述多面体的相对关系,对所述

相对关系进行判断;

[0024]若所述相对关系指示所述光源的光束位于所述多面体的多个面中任意面的内侧,

则判断确定所述光源影响所述多面体,输出用于指示所述光源影响所述多面体的判断结

果,并继续对所述多个光源中其他光源在对应的相对关系下是否影响到所述多面体进行判

断;

[0025]若所述相对关系指示所述光源的光束位于所述多个面中任意面的外侧,则判断确

定所述光源不影响所述多面体,输出用于指示所述光源不影响所述多面体的判断结果,并

继续对所述多个光源中其他光源在对应的相对关系下是否影响到所述多面体进行判断;

[0026]其中,所述内侧是所述任意面所在平面的垂直方向上的两侧中存在所述多个面中

其他面的一侧,所述外侧是所述两侧中除所述内侧的另一侧。

[0027]可选地,所述读取所述多个光源中每个光源与所述多面体的相对关系,包括:

[0028]对于所述多个多面体中每个多面体,为所述多面体构建球型包围盒;

[0029]根据所述多个光源中每个光源与所述球型包围盒的相对位置,读取所述多个光源

中每个光源与所述球型包围盒的相对关系作为所述每个光源与所述多面体的相对关系。

[0030]可选地,所述判断所述多个多面体与所述目标场景中的多个光源的相对关系,根

据判断结果,生成多个光源列表,包括:

[0031]响应于合并生成请求,获取所述合并生成请求指示的合并个数;

[0032]按照所述多个多面体的排列方式,将所述多个多面体中连续的且数量满足所述合

并个数的多面体进行合并,得到多个多面体集合;

[0033]对于所述多个多面体集合中每个多面体集合,读取所述多个光源中每个光源与所

7

CN113052950B说明书3/12页

述多面体集合的相对关系,判断在所述相对关系下所述多个光源中每个光源是否影响到所

述多面体集合,输出所述每个光源对应的判断结果;

[0034]根据所述每个光源对应的判断结果,在所述多个光源中确定至少一个第一光源,

所述至少一个第一光源对应的判断结果指示所述第一光源影响所述多面体集合;

[0035]统计所述至少一个第一光源的光源数量,获取所述至少一个第一光源的光源索

引,生成包括所述光源数量和所述光源索引的光源列表;

[0036]重复执行上述过程,分别为所述每个多面体集合生成包括影响所述多面体集合的

光源的光源索引和光源数量的光源列表,得到所述多个光源列表;

[0037]将所述多个多面体集合与所述多个光源列表进行关联存储,其中,关联存储可以

基于二层列表结构或三层列表结构实现。

[0038]可选地,所述读取所述多个光源中每个光源与所述多面体集合的相对关系,包括:

[0039]对于所述多个多面体集合中每个多面体集合,为所述多面体集合构建球型包围

盒;

[0040]根据所述多个光源中每个光源与所述球型包围盒的相对位置,读取所述多个光源

中每个光源与所述球型包围盒的相对关系作为所述每个光源与所述多面体集合的相对关

系。

[0041]可选地,所述基于所述目标多面体对应的目标光源列表对所述目标片元进行光照

计算,包括:

[0042]查询所述目标多面体绑定的光源列表;

[0043]响应于查询确定所述目标多面体存在绑定的光源列表,将所述目标多面体绑定的

光源列表作为所述目标光源列表,采用所述目标光源列表包括的光源数量和光源索引对所

述目标片元进行光照计算;

[0044]响应于查询确定所述目标多面体不存在绑定的光源列表,确定所述目标多面体所

在的目标多面体集合,将所述目标多面体集合绑定的光源列表作为所述目标光源列表,采

用所述目标光源列表包括的光源数量和光源索引对所述目标片元进行光照计算。

[0045]依据本申请第二方面,提供了一种光照计算装置,该装置包括:

[0046]划分模块,用于在预设维度对目标场景的视锥体进行划分,得到多个多面体;

[0047]生成模块,用于判断所述多个多面体与所述目标场景中的多个光源的相对关系,

根据判断结果,生成多个光源列表,所述多个光源列表中每个光源列表包括影响单个多面

体或多面体集合的光源的光源索引和光源数量;

[0048]查询模块,用于确定目标片元,在所述多个多面体中查询所述目标片元所属的目

标多面体,所述目标片元是所述目标场景中任一实体模型的任意待渲染的片元;

[0049]计算模块,用于基于所述目标多面体对应的目标光源列表对所述目标片元进行光

照计算。

[0050]可选地,所述划分模块,用于获取所述预设维度以及预设划分参数,确定所述预设

维度指示的至少一个坐标方向以及所述至少一个坐标方向在所述预设划分参数中对应的

子参数;对于所述至少一个坐标方向中每个坐标方向,在所述坐标方向上将所述视锥体划

分为所述坐标方向对应的子参数指示的份数;分别在所述至少一个坐标方向上按照对应的

子参数对所述视锥体进行划分,得到所述多个多面体。

8

CN113052950B说明书4/12页

[0051]可选地,所述生成模块,用于对于所述多个多面体中每个多面体,读取所述多个光

源中每个光源与所述多面体的相对关系,判断在所述相对关系下所述多个光源中每个光源

的光束是否影响到所述多面体,输出所述每个光源对应的判断结果;根据所述每个光源对

应的判断结果,在所述多个光源中确定至少一个第一光源,所述至少一个第一光源对应的

判断结果指示所述第一光源的光束影响所述多面体;统计所述至少一个第一光源的光源数

量,获取所述至少一个第一光源的光源索弓I,生成包括所述光源数量和所述光源索引的光

源列表;重复执行上述过程,分别为所述每个多面体生成包括影响所述多面体的光源的光

源索引和光源数量的光源列表,得到所述多个光源列表;将所述多个多面体与所述多个光

源列表进行关联存储,其中,关联存储可以基于二层列表结构或三层列表结构实现。

[0052]可选地,所述生成模块,用于对于所述多个光源中每个光源,读取所述光源与所述

多面体的相对关系,对所述相对关系进行判断;若所述相对关系指示所述光源的光束位于

所述多面体的多个面中任意面的内侧,则判断确定所述光源影响所述多面体,输出用于指

示所述光源影响所述多面体的判断结果,并继续对所述多个光源中其他光源在对应的相对

关系下是否影响到所述多面体进行判断;若所述相对关系指示所述光源的光束位于所述多

个面中任意面的外侧,则判断确定所述光源不影响所述多面体,输出用于指示所述光源不

影响所述多面体的判断结果,并继续对所述多个光源中其他光源在对应的相对关系下是否

影响到所述多面体进行判断;其中,所述内侧是所述任意面所在平面的垂直方向上的两侧

中存在所述多个面中其他面的一侧,所述外侧是所述两侧中除所述内侧的另一侧。

[0053]可选地,所述生成模块,用于对于所述多个多面体中每个多面体,为所述多面体构

建球型包围盒;根据所述多个光源中每个光源与所述球型包围盒的相对位置,读取所述多

个光源中每个光源与所述球型包围盒的相对关系作为所述每个光源与所述多面体的相对

关系。

[0054]可选地,所述生成模块,用于响应于合并生成请求,获取所述合并生成请求指示的

合并个数;按照所述多个多面体的排列方式,将所述多个多面体中连续的且数量满足所述

合并个数的多面体进行合并,得到多个多面体集合;对于所述多个多面体集合中每个多面

体集合,读取所述多个光源中每个光源与所述多面体集合的相对关系,判断在所述相对关

系下所述多个光源中每个光源是否影响到所述多面体集合,输出所述每个光源对应的判断

结果;根据所述每个光源对应的判断结果,在所述多个光源中确定至少一个第一光源,所述

至少一个第一光源对应的判断结果指示所述第一光源影响所述多面体集合;统计所述至少

一个第一光源的光源数量,获取所述至少一个第一光源的光源索引,生成包括所述光源数

量和所述光源索引的光源列表;重复执行上述过程,分别为所述每个多面体集合生成包括

影响所述多面体集合的光源的光源索引和光源数量的光源列表,得到所述多个光源列表;

将所述多个多面体集合与所述多个光源列表进行关联存储,其中,关联存储可以基于二层

列表结构或三层列表结构实现。

[0055]可选地,所述生成模块,用于对于所述多个多面体集合中每个多面体集合,为所述

多面体集合构建球型包围盒;根据所述多个光源中每个光源与所述球型包围盒的相对位

置,读取所述多个光源中每个光源与所述球型包围盒的相对关系作为所述每个光源与所述

多面体集合的相对关系。

[0056]可选地,所述计算模块,用于查询所述目标多面体绑定的光源列表;响应于查询确

9

CN113052950B说明书5/12页

定所述目标多面体存在绑定的光源列表,将所述目标多面体绑定的光源列表作为所述目标

光源列表,采用所述目标光源列表包括的光源数量和光源索引对所述目标片元进行光照计

算;响应于查询确定所述目标多面体不存在绑定的光源列表,确定所述目标多面体所在的

目标多面体集合,将所述目标多面体集合绑定的光源列表作为所述目标光源列表,采用所

述目标光源列表包括的光源数量和光源索引对所述目标片元进行光照计算。

[0057]依据本申请第三方面,提供了一种计算机设备,包括存储器和处理器,所述存储器

存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述方法中任一

方法的步骤。

[0058]依据本申请第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,

所述计算机程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。

[0059]借由上述技术方案,本申请提供的一种光照计算方法、装置、计算机设备及计算机

可读存储介质,本申请在预设维度对目标场景的视锥体进行划分,得到多个多面体,判断多

个多面体与场景中光源的相对关系,根据判断结果生成包括有影响单个多面体或多个多面

体的光源的光源索引和光源数量的光源列表,进而在对实体模型的片元进行光照计算时,

使用片元所在的多面体对应的光源列表进行计算,利用临近像素分组的方式对场景的屏幕

空间进行分组,并按照分组对场景中的光源进行剪裁,用剪裁后的光源对片元进行光照计

算,避免片元的光照计算中涉及到未对该片元造成影响的光源,减轻了计算量,极大的降低

了复杂场景中产生严重性能问题的可能性,缓解带宽压力。

[0060]上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,

而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够

更明显易懂,以下特举本申请的具体实施方式。

附图说明

[0061]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通

技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请

的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

[0062]图1示出了本申请实施例提供的一种光照计算方法流程示意图;

[0063]图2示出了本申请实施例提供的一种光照计算方法流程示意图;

[0064]图3示出了本申请实施例提供的一种光照计算装置的结构示意图;

[0065]图4示出了本申请实施例提供的一种计算机设备的装置结构示意图。

具体实施方式

[0066]下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请

的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例

所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围

完整的传达给本领域的技术人员。

[0067]本申请实施例提供了一种光照计算方法,如图1所示,该方法包括:

[0068]101、在预设维度对目标场景的视锥体进行划分,得到多个多面体。

[0069]102、判断多个多面体与目标场景中的多个光源的相对关系,根据判断结果,生成

10

CN113052950B说明书6/12页

多个光源列表,多个光源列表中每个光源列表包括影响单个多面体或多面体集合的光源的

光源索引和光源数量。

[0070]103、确定目标片元,在多个多面体中查询目标片元所属的目标多面体,目标片元

是目标场景中任一实体模型的任意待渲染的片元。

[0071]104、基于目标多面体对应的目标光源列表对目标片元进行光照计算。

[0072]本申请实施例提供的方法,在预设维度对目标场景的视锥体进行划分,得到多个

多面体,判断多个多面体与场景中光源的相对关系,根据判断结果生成包括有影响单个多

面体或多个多面体的光源的光源索引和光源数量的光源列表,进而在对实体模型的片元进

行光照计算时,使用片元所在的多面体对应的光源列表进行计算,利用临近像素分组的方

式对场景的屏幕空间进行分组,并按照分组对场景中的光源进行剪裁,用剪裁后的光源对

片元进行光照计算,避免片元的光照计算中涉及到未对该片元造成影响的光源,减轻了计

算量,极大的降低了复杂场景中产生严重性能问题的可能性,缓解带宽压力。

[0073]本申请实施例提供了一种光照计算方法,如图2所示,该方法包括:

[0074]201、在预设维度对目标场景的视锥体进行划分,得到多个多面体。

[0075]在目前的图像处理技术领域中,前向渲染是一种常用的光照渲染方式,前向渲染

也叫正向渲染,通过把场景中需要绘制的每个实体模型与场景中的光源进行相交判断,确

定每个实体模型渲染时需要计算的光源,进而分别对每个实体模型进行渲染。但是申请人

认识到,传统的前向渲染存在两个弊端,一个是场景中较大的实体模型会受到很多个小的

光源的影响,比如实体模型甲受到N(N为正整数)个小的光源的影响,实体模型甲的所有片

元在计算时都需要计算N个小的光源,即使这个片元实际上并没有受到其中某一个小的光

源的影响,造成冗余计算。另一个是场景中较小的实体模型可能只受到一个大的光源的影

响,但是需要分别对这些小的实体模型进行多次的相交运算,计算的复杂程度与场景的复

杂度密切相关。这些弊端在场景光源数量不多时造成的影响并不明显,但是如果光源数量

很大,就会带来严重的性能问题。

[0076]现在还有一种延迟渲染也能用于实体模型的光照计算,在延迟渲染中需要对每个

光源进行光栅化,得到实体模型中受到该光源影响的片元,进而对这些片元进行光照计算。

这种渲染方式的优点在于与场景的复杂度无关,不会有冗余计算。但是申请人认识到,延迟

渲染中每次进行光照计算都需要读取和写入G-Buffer(GeometryBuffer,几何缓冲),在光

源较多时会造成很大的带宽压力,该压力会在终端设备的性能上体现。

[0077]因此,为了使光照计算的复杂程度能够与场景的复杂度解耦,解决冗余计算的问

题,缓解带宽压力,本申请提出了一种光照计算的方法,在预设维度对指示了目标场景的屏

幕空间的视锥体进行划分,得到多个多面体,根据多个多面体与场景中光源的交互情况,生

成包括有影响单个多面体或多面体集合的光源的光源索引和光源数量的光源列表,进而在

对实体模型的片元进行光照计算时,使用片元所在的多面体对应的光源列表进行计算,利

用临近像素分组的方式对场景的屏幕空间进行分组,后续按照分组对场景中的光源进行剪

裁,用剪裁后的光源对片元进行光照计算,避免片元的光照计算中涉及到未对该片元造成

影响的光源,减轻了计算量,极大的降低了复杂场景中产生严重性能问题的可能性,缓解带

宽压力。

[0078]而为了实现本申请,首先需要在预设维度对目标场景的视锥体进行划分,得到多

11

CN113052950B说明书7/12页

个多面体。由于视锥体指示了场景的屏幕空间,能够表现出场景中可见的椎体范围,因此,

对视锥体的划分实际上是利用临近像素分组的方式对场景的屏幕空间进行分组,得到的多

个多面体也即视锥体两个截平面之间的三维空间。多面体可以用Cluster(集合)表示,通常

为六面体。下面对视锥体进行划分得到多面体的过程进行描述:

[0079]首先,获取预设维度以及预设划分参数,确定预设维度指示的至少一个坐标方向

以及至少一个坐标方向在预设划分参数中对应的子参数。其中,预设维度可以是三维空间

的X、Y、Z方向,这样,指示的至少一个坐标方向即为三维空间的X、Y、Z方向。预设划分参数包

括至少一个坐标方向对应的子参数,子参数指示了在相应坐标方向上对视锥体的划分份

数。例如,预设划分参数可以为32*16*32,32、16、32也即预设划分参数包括的子参数,32、

16、32分别指示了在三维空间中X、Y、Z方向上对视锥体切分的份数。需要说明的是,该预设

划分参数实际上可以根据场景的复杂程度、计算速度或者粒度的要求等自行设置,假设目

前的预设划分参数为32*16*32,而为了提升性能,可以适当牺牲剪裁精度,将预设划分参数

降低到16*8*32。

[0080]随后,对于至少一个坐标方向中每个坐标方向,在坐标方向上将视锥体划分为坐

标方向对应的子参数指示的份数,并重复执行划分的过程,分别在至少一个坐标方向上按

照对应的子参数对视锥体进行划分,得到多个多面体。需要说明的是,有时预设划分参数可

能仅是一个具体的数值,比如32,这样,在X、Y、Z方向分别将视锥体划分为32份即可。而有时

预设划分参数可能是诸如上述32*16*32的形式,包括多个子参数,这样,按照子参数在相应

的坐标方向上进行划分即可。本申请对预设划分参数指示的数值内容不进行具体限定。

[0081]202、判断多个多面体与目标场景中的多个光源的相对关系,根据判断结果,生成

多个光源列表。

[0082]在本申请实施例中,由于屏幕空间中相邻的像素很可能受同一个光源的影响,因

此,在得到了多个多面体后,可以根据每一个多面体对光源进行裁剪,得到影响该多面体的

光源列表,以便后续在对某个实体模型的片元进行光照计算时,能够直接使用该片元所在

多面体的光源列表进行光照计算。需要说明的是,目前存在一些能够用于动画创作以及运

营的工具,比如Unity(一种实时3D互动内容创作和运营平台),因此,实际上可以基于工具,

为多个多面体中每个多面体设置对应的处理线程,运行多个多面体对应的处理线程,进而

基于多个处理线程,并行判断多个多面体与多个光源的相对关系,根据判断结果为每个多

面体生成包括影响多面体的光源的光源索引和光源数量的光源列表,得到多个光源列表,

下面对生成光源列表的具体逻辑过程进行描述:

[0083]对于多个多面体中每个多面体,首先,读取多个光源中每个光源与多面体的相对

关系,判断在相对关系下多个光源中每个光源的光束是否影响到多面体,输出每个光源对

应的判断结果。其中,由于多面体对应有处理线程,因此,可以基于处理线程读取多个光源

中每个光源与多面体的相对关系,该相对关系实际上指示了光源是否会与多面体相交,在

后续通过对相对关系进行判断,输出判断结果,基于该判断结果便可确定光源发生的光束

是否会影响到多面体。具体地,对于多个光源中每个光源,读取光源与多面体的相对关系,

对相对关系进行判断,若相对关系指示光源的光束位于多面体的多个面中任意面的内侧,

内侧是任意面所在平面的垂直方向上的两侧中存在多个面中其他面的一侧,也就是说,任

意面的内侧还存在该多面体的其他面,则判断确定光源影响多面体,输出用于指示光源影

12

CN113052950B说明书8/12页

响多面体的判断结果,并继续对多个光源中其他光源在对应的相对关系下是否影响到多面

体进行判断。而相反,若相对关系指示光源的光束位于多个面中任意面的外侧,外侧是两侧

中除内侧的另一侧,则判断确定光源不影响多面体,可以将光源过滤,输出用于指示光源不

影响多面体的判断结果,并继续对多个光源中其他光源在对应的相对关系下是否影响到多

面体进行判断。也就是说,实际上用相对关系判断光源的光束是否穿过多面体或者是否与

多面体的任何一个面发生了交互,以此来确定该光源是否影响到了多面体。

[0084]需要说明的是,为了简化多面体与光源之间的交互计算,上述读取光源与多面体

的相对关系的过程中还可以用球型包围盒代替多面体,也即为多面体构建球型包围盒,根

据多个光源中每个光源与球型包围盒的相对位置,读取多个光源中每个光源与球型包围盒

的相对关系作为每个光源与多面体的相对关系,在后续对确定的相对关系进行判断输出判

断结果。其中,利用球型包围盒读取相对关系的过程也可以基于多面体对应的处理线程实

现,直接基于一个球面便实现了光源列表的生成,提升了性能。

[0085]通过对相对关系的判断输出判断结果后,先根据每个光源对应的判断结果,在多

个光源中确定至少一个第一光源,其中,至少一个第一光源对应的判断结果指示第一光源

的光束影响多面体。随后,统计至少一个第一光源的光源数量,获取至少一个第一光源的光

源索引,生成包括光源数量和光源索引的光源列表。

[0086]上面描述的过程是为某一个多面体生成该多面体对应的光源列表的过程,通过重

复执行上述过程,可以为每一个多面体生成对应的光源列表。而在实际应用的过程中,为了

减少光源遍历次数,可以将几个多面体进行合并处理,采用粗粒度剔除的方法提升计算效

率,具体将多面体合并处理的过程如下:

[0087]响应于合并生成请求,首先,获取合并生成请求指示的合并个数,该合并个数指示

了将多少个多面体进行合并计算。随后,按照多个多面体的排列方式,将多个多面体中连续

的且数量满足合并个数的多面体进行合并,得到多个多面体集合。对于多个多面体集合中

每个多面体集合,读取多个光源中每个光源与多面体集合的相对关系,判断在相对关系下

多个光源中每个光源是否影响到多面体集合,输出每个光源对应的判断结果。根据每个光

源对应的判断结果,在多个光源中确定至少一个第一光源,至少一个第一光源对应的判断

结果指示第一光源影响多面体集合,并统计至少一个第一光源的光源数量,获取至少一个

第一光源的光源索引,生成包括光源数量和光源索引的光源列表。通过重复执行上述过程,

便可以分别为每个多面体集合生成包括影响多面体集合的光源的光源索引和光源数量的

光源列表,得到多个光源列表。其中,生成光源列表的过程与上述针对一个多面体生成光源

列表的过程一致,也可以通过对多面体集合的外表面与光源之间的相对关系进行判断确定

光源是否与多面体集合发生交互,或者还可以为该多面体集合构建球型包围盒,根据多个

光源中每个光源与球型包围盒的相对位置,读取多个光源中每个光源与球型包围盒的相对

关系作为每个光源与多面体集合的相对关系,进而利用球型包围盒读取光源与多面体集合

的相对关系,以便确定哪些光源与多面体集合发生交互,此处不再进行赘述。通过重复执行

上述的过程,便可以为每一个多面体集合生成光源列表。

[0088]再有,实际应用中可以分别为多个多面体集合中每个多面体集合设置对应的处理

线程,运行多个多面体集合对应的处理线程,基于多个多面体集合对应的处理线程,并行判

断多个多面体集合与多个光源的相对关系,根据判断结果为每个多面体集合生成包括影响

13

CN113052950B说明书9/12页

多面体集合的光源的光源索引和光源数量的光源列表,得到多个光源列表。

[0089]实际上对多面体进行合并的过程也就是将多个相邻的多面体合成一个大的多面

体统一计算的过程,比如假设目前划分得到的多面体均是小六边体,合并个数为5,则将相

邻的5个小六面体合为一个大的六面体,并以该大的六面体为基础确定哪些光源是影响该

大的六面体的光源,为大的六面体生成光源列表。

[0090]综上,本申请实施例中实际上是可以采用两种方式生成光源列表的,一种是针对

单个多面体生成光源列表,另一种是针对多个多面体组成的多面体集合生成光源列表,因

此,本申请中的光源列表实际上包括影响单个多面体或多面体集合的光源的光源索引和光

源数量。

[0091]而无论是采用哪种方式生成光源列表,生成的光源列表都不止一个,每个光源列

表都有针对的单个多面体或者多面体集合,因此,为了明确单个多面体或多面体集合与光

源列表之间的关联关系,便于光源列表准确应用到后续的光照计算过程中,在本申请实施

例中,会将单个多面体或者多面体集合与其对应的光源列表进行关联存储,具体关联存储

可以基于二层列表结构或三层列表结构实现。如果采用二层列表结构进行存储,则其中一

层表结构可为LightList(光源列表),用于存储现有的多个光源列表包括的全部内容,另

一层可为LightGrid(光栅),用于存储每个单个多面体或者每个多面体集合以及其对应的

光源索引和光源数量。而如果采用三层列表结构进行存储,则其中一层表结构可为Light

List,用于存储现有的多个光源列表包括的全部内容,还有一层可为LightGrid,用于存储

每个单个多面体或者每个多面体集合在LightList中的开始位置和结束位置,再有一层表

结构可为LightIndexList(光源索引列表),用于存储每个单个多面体或者每个多面体集

合对应的光源索引。本申请对采用哪种方式存储多个光源列表不进行具体限定。另外,由于

这些列表都需要在终端中应用的,因此,在终端中按照列表结构存储多个光源列表时,可以

采用StructBuffer(结构缓冲区)和Textrue(连续存储)两种方式,具体可以根据终端操作

系统的情况进行选取,本申请不进行具体限定。

[0092]进一步地,上面提及能够使用诸如Unity等工具实现整个光源列表的生成过程,但

是有些工具可能不具备这一功能,而诸如Unity的LWRP(LightWeightRenderPipeline,

渲染管线)有很强的可定制性,因此,能够通过对LWRP的修改,在LWRP的前向渲染中增加生

成光源列表的功能。需要注意的是,在基于工具生成光源列表时,要将前向渲染中的默认剪

裁方式关闭,且取消默认的光源设置,之后再开始光源列表的生成。具体地,可以基于工具

的ComputeShader(计算着色器)为每个多面体分配处理线程,实现并行生成光源列表。具

体地,ComputeShader中num_threads(线程数)可以适当增大,从而提升处理速度。或者也

可以基于工具中封装有多线程操作的Jobsystem(工作系统),将为生成光源列表的任务加

入到执行队列中,由引擎负责调度、资源竞争处理、多线程分配等工作,本申请对如何基于

工具实现光源列表的生成不进行具体限定。

[0093]203、确定目标片元,在多个多面体中查询目标片元所属的目标多面体。

[0094]在本申请实施例中,生成了多个光源列表后,可以开始基于这些光源列表对目标

场景中的实体模型进行光照计算。具体地,可以确定目标片元,在多个多面体中查询目标片

元所属的目标多面体,目标片元是目标场景中任一实体模型的任意待渲染的片元,由于每

个多面体实际上都指示了部分屏幕空间,因此,可以直接通过对目标场景的查看来确定目

14

CN113052950B说明书10/12页

标片元位于哪部分屏幕空间中,进而确定目标多面体。

[0095]204、基于目标多面体对应的目标光源列表对目标片元进行光照计算。

[0096]在本申请实施例中,确定了目标多面体后,基于目标多面体对应的目标光源列表

对目标片元进行光照计算。其中,由于上面过程描述了光源列表实际上可以根据单个多面

体或者多面体集合生成,因此,需要先查询目标多面体绑定的光源列表,判断该目标多面体

是否存在为其单独生成的光源列表。进一步地,响应于查询确定目标多面体存在绑定的光

源列表,将目标多面体绑定的光源列表作为目标光源列表,采用目标光源列表包括的光源

数量和光源索引对目标片元进行光照计算,也即用单独为该目标多面体生成的光源列表对

目标片元进行光照计算。而响应于查询确定目标多面体不存在绑定的光源列表,确定目标

多面体所在的目标多面体集合,将目标多面体集合绑定的光源列表作为目标光源列表,采

用目标光源列表包括的光源数量和光源索引对目标片元进行光照计算,也即确定该目标多

面体属于哪个多面体集合,用该多面体集合的光源列表对目标片元进行光照计算。

[0097]需要说明的是,如果目标场景中的光源没有发生改变,则可以持续采用上述生成

的光源列表对目标场景中实体模型的片元进行光照计算。如果目标场景中增加了实体模

型,但是没有发生光源的改变,则也可以持续采用上述生成的光源列表对目标场景中的实

体模型的片元进行光照计算,无需对光源列表进行更新。而如果目标场景中增加了光源或

者减少了光源,则需要重新执行上述步骤201至步骤202中的过程生成新的光源列表,并基

于新的光源列表对目标场景中实体模型的片元进行光照计算。

[0098]本申请实施例提供的方法,在预设维度对目标场景的视锥体进行划分,得到多个

多面体,判断多个多面体与场景中光源的相对关系,根据判断结果生成包括有影响单个多

面体或多个多面体的光源的光源索引和光源数量的光源列表,进而在对实体模型的片元进

行光照计算时,使用片元所在的多面体对应的光源列表进行计算,利用临近像素分组的方

式对场景的屏幕空间进行分组,并按照分组对场景中的光源进行剪裁,用剪裁后的光源对

片元进行光照计算,避免片元的光照计算中涉及到未对该片元造成影响的光源,减轻了计

算量,极大的降低了复杂场景中产生严重性能问题的可能性,缓解带宽压力。

[0099]进一步地,作为图1所述方法的具体实现,本申请实施例提供了一种光照计算装

置,如图3所示,所述装置包括:划分模块301,生成模块302,查询模块303和计算模块304。

[0100]该划分模块301,用于在预设维度对•目标场景的视锥体进行划分,得到多个多面

体;

[0W1]该生成模块302,用于判断所述多个多面体与所述目标场景中的多个光源的相对

关系,根据判断结果,生成多个光源列表,所述多个光源列表中每个光源列表包括影响单个

多面体或多面体集合的光源的光源索引和光源数量;

[0102]该查询模块303,用于确定目标片元,在所述多个多面体中查询所述目标片元所属

的目标多面体,所述目标片元是所述目标场景中任一实体模型的任意待渲染的片元;

[0103]该计算模块304,用于基于所述目标多面体对应的目标光源列表对所述目标片元

进行光照计算。

[0W4]在具体的应用场景中,该划分模块301,用于获取所述预设维度以及预设划分参

数,确定所述预设维度指示的至少一个坐标方向以及所述至少一个坐标方向在所述预设划

分参数中对应的子参数;对于所述至少一个坐标方向中每个坐标方向,在所述坐标方向上

15

CN113052950B说明书11/12页

将所述视锥体划分为所述坐标方向对应的子参数指示的份数;分别在所述至少一个坐标方

向上按照对应的子参数对所述视锥体进行划分,得到所述多个多面体。

[0W5]在具体的应用场景中,该生成模块302,用于对于所述多个多面体中每个多面体,

读取所述多个光源中每个光源与所述多面体的相对关系,判断在所述相对关系下所述多个

光源中每个光源的光束是否影响到所述多面体,输出所述每个光源对应的判断结果;根据

所述每个光源对应的判断结果,在所述多个光源中确定至少一个第一光源,所述至少一个

第一光源对应的判断结果指示所述第一光源的光束影响所述多面体;统计所述至少一个第

一光源的光源数量,获取所述至少一个第一光源的光源索弓I,生成包括所述光源数量和所

述光源索引的光源列表;重复执行上述过程,分别为所述每个多面体生成包括影响所述多

面体的光源的光源索引和光源数量的光源列表,得到所述多个光源列表;将所述多个多面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论