CN118674850A - 场景渲染方法、装置、设备、介质及程序产品 - Google Patents
场景渲染方法、装置、设备、介质及程序产品 Download PDFInfo
- Publication number
- CN118674850A CN118674850A CN202310313064.6A CN202310313064A CN118674850A CN 118674850 A CN118674850 A CN 118674850A CN 202310313064 A CN202310313064 A CN 202310313064A CN 118674850 A CN118674850 A CN 118674850A
- Authority
- CN
- China
- Prior art keywords
- ray
- virtual object
- target virtual
- scene
- light source
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 136
- 238000000034 method Methods 0.000 title claims abstract description 93
- 230000000694 effects Effects 0.000 claims abstract description 68
- 239000000463 material Substances 0.000 claims abstract description 33
- 239000012634 fragment Substances 0.000 claims description 39
- 238000003860 storage Methods 0.000 claims description 26
- 238000005516 engineering process Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 4
- 230000005484 gravity Effects 0.000 claims description 3
- 230000000007 visual effect Effects 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000001795 light effect Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 238000004040 coloring Methods 0.000 description 8
- 238000005286 illumination Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 239000011521 glass Substances 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 239000003086 colorant Substances 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Landscapes
- Image Generation (AREA)
Abstract
本申请公开了一种场景渲染方法、装置、设备、介质及程序产品,涉及界面渲染领域。该方法包括:通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,确定被光源射线击中的目标虚拟对象;获取虚拟场景中处于反射范围内的模型清单;在目标虚拟对象处于模型清单范围内的情况下,基于光源射线的光线追踪纹理数据和目标虚拟对象的材质信息对目标虚拟对象进行渲染。针对指定光线追踪接口追踪得到的目标虚拟物体,将该目标虚拟物体与可视范围的模型清单进行匹配,若处于玩家的可视范围内,融合光线追踪纹理数据和目标虚拟对象的对象纹理数据对目标虚拟对象进行渲染,完成对光线追踪效果的渲染。
Description
技术领域
本申请实施例涉及界面渲染领域,特别涉及一种场景渲染方法、装置、设备、介质及程序产品。
背景技术
在虚拟场景中通常存在大量的光线传播,如:光滑的金属物体表面、积水地砖表面等都会产生光线的反射。光线的传播会在光滑的物体表面产生反射效果,从而光滑的物体表现会显示出反射的光线。
相关技术中,虚幻引擎(Unreal Engine)通常使用DirectX Raytracing接口进行追踪,同时跨平台接口Vulkan Raytracing也支持光线追踪功能。在使用DirectXRaytracing接口进行光线追踪后,DirectX Raytracing接口由于能够进行局部资源绑定,故虚幻引擎还支持在DirectX Raytracing接口下对光线追踪后的渲染的光效颜色进行计算,并进行相应的渲染,而Vulkan Raytracing接口由于不支持局部资源绑定,因此当前虚幻引擎无法进行后续的颜色计算和渲染。
发明内容
本申请实施例提供了一种场景渲染方法、装置、设备、介质及程序产品,可以提高光线追踪渲染的应用场景适应性。所述技术方案如下:
一方面,提供了一种场景渲染方法,所述方法包括:
通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,确定被所述光源射线击中的目标虚拟对象;
获取所述虚拟场景中处于反射范围内的模型清单,所述模型清单中的虚拟对象为处于光源反射范围内的模型对象;
在所述目标虚拟对象处于所述模型清单范围内的情况下,基于所述光源射线的光线追踪纹理数据和所述目标虚拟对象的材质信息对所述目标虚拟对象进行渲染,得到所述目标虚拟对象在所述虚拟场景中的反射表面的光线反射效果。
另一方面,提供了一种场景渲染装置,所述装置包括:
确定模块,用于通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,确定被所述光源射线击中的目标虚拟对象;
获取模块,用于获取所述虚拟场景中处于反射范围内的模型清单,所述模型清单中的虚拟对象为当前待渲染的模型对象;
渲染模块,用于在所述目标虚拟对象处于所述模型清单范围内的情况下,基于所述光源射线的光线追踪纹理数据和所述目标虚拟对象的对象纹理数据对所述目标虚拟对象进行渲染,得到所述目标虚拟对象在所述虚拟场景中的反射表面的光线反射效果。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述本申请实施例中提供的场景渲染方法。
另一方面,提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述本申请实施例中提供的场景渲染方法。
另一方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如上述本申请实施例中提供的场景渲染方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
利用光线可逆原理,在确定物体表面的反射效果时,利用指定光线追踪接口追踪得到的目标虚拟物体,将该目标虚拟物体与反射范围的模型清单进行匹配,从而确定目标虚拟对象是否属于反射光源射线的范围内,若处于反射范围内,融合光线追踪物体数据纹理和获取的目标虚拟对象的材质信息对目标虚拟对象进行渲染,从而生成目标虚拟对象被光线击中的光线反射效果,应用于Vulkan Raytracing接口也能够在支持光线追踪基础上,完成对光线追踪效果的渲染。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的场景渲染方法的整体流程示意图;
图2是本申请一个示例性实施例提供的场景渲染方法的流程图;
图3是本申请另一个示例性实施例提供的场景渲染方法的流程图;
图4是基于图3示出的实施例提供的光线追踪材质系统的渲染流程示意图;
图5本申请另一个示例性实施例提供的场景渲染方法的流程图;
图6是基于图5示出的实施例提供的对象标识示意图;
图7是基于图5示出的实施例提供的渲染请求逐帧回读请求示意图;
图8是本申请一个示例性实施例提供的光线反射效果示意图;
图9是本申请一个示例性实施例提供的光线反射整体流程示意图;
图10是本申请一个示例性实施例提供的光线反射原理示意图;
图11是本申请一个示例性实施例提供的场景渲染装置的结构框图;
图12是本申请另一个示例性实施例提供的场景渲染装置的结构框图;
图13是本申请一个示例性实施例提供的计算机设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,对本申请实施例中涉及的名词进行简单介绍:
着色器(Shader):是一种在显卡内的图形处理器中运行的小型程序,用于并行处理各类图形单位上的计算。常见的着色器类型由顶点着色器(Vertex Shader)和片元着色器(Pixel Shader)。
光线追踪(Raytracing):与传统光栅化渲染方式不同,光线追踪技术通过追踪光线本身的传播,找到其与虚拟场景中物体的交点,进而对与虚拟场景中物体的交点进行着色。
光线追踪效果:是指应用光线追踪技术的渲染效果。在当前主流游戏应用中,光线追踪效果和传统光栅化渲染效果相结合,提供其原理难以克服的渲染效果,例如软阴影、环境光遮蔽和反射。
光线追踪管线(Raytracing Pipeline):是一个围绕着光线求交和着色的新流水线,其将自动进行射线和加速结构的求交,并调用物体对应的着色器进行着色,并可以继续发射射线(例如反射)重复上述步骤。该流水线允许着色器的递归执行。
光线求交接口(Ray Query):一个射线和加速结构求交操作的接口。其可以在任何种类的着色器中进行调用,发射射线进行求交,并返回交点信息到调用的着色器中。相比于Raytracing Pipeline,Ray Query无法调用物体对应的着色器和递归执行。当前,支持Vulkan Raytracing的Android移动平台均只支持Ray Query,而并不支持RaytracingPipeline。
由于Vulkan Raytracing接口相较于DirectX Raytracing接口缺少单独物体的资源绑定(Local Root Signature)能力,因此虚幻引擎的最新版本目前并不支持进行击中物体表面的材质着色。同时,移动端最新平台已经支持了Vulkan光线追踪,但也仅支持到Vulkan Ray Query,也即,能够获取被光线追踪击中物体的标识符和坐标等信息,但无法进行颜色计算过程,因此同样无法完成着色工作。由于在反射等效果中,大量的光线将会击中不存在场景中的物体,其在屏幕空间并不存在信息,因此基于屏幕空间的技术会产生大量错误渲染的情况。对于支持光线追踪的移动平台来说,光线追踪相较于传统方式渲染的性能成本过大。
本申请实施例中,通过Vulkan Raytracing接口进行光线追踪后,提供了对于被击中物体表面材质的着色能力,能够很好地减少光线追踪的渲染开销,使其能够在移动设备上高效渲染,提高了光线追踪场景下的渲染效率。
本申请实施例可以由终端单独执行,也可以是终端和服务器配合执行。当终端单独执行时,则终端获取虚拟场景数据后,通过指定光线追踪接口进行光线追踪,并基于光线追踪结果进行虚拟场景画面的渲染。
当终端和服务器配合执行时,在一些实施例中,该虚拟场景实现为云应用中的场景,由云服务器获取虚拟场景数据后,通过指定光线追踪接口进行光线追踪,并基于光线追踪结果进行虚拟场景画面的渲染,从而将渲染数据发送至终端,由终端对渲染得到的数据进行显示。
值得注意的是,上述终端可以是手机、电脑、平板电脑、虚拟现实(VirtualReality,VR)设备等终端,且上述终端可以安装有微软Windows系统、安卓系统、苹果系统等,本申请实施例对此不加以限定。
本申请实施例提供的场景渲染方法,可以应用于如下场景中的至少一种:
1、在游戏场景中,手游或者端游的游戏场景中存在大量的光线传播,如:游戏场景中的发光显示屏、游戏场景中的灯光、游戏场景中的自然光线等;通过对光线效果的渲染,体现出游戏场景中物体被光线照射后的反射效果;
2、在虚拟现实(Virtual Reality,VR)场景中,用户佩戴VR设备对虚拟场景画面进行查看,虚拟场景中存在光线传播,如:虚拟场景中处于用户视线范围周侧的发光物体,通过对光线效果的渲染,体现出VR场景中物体被光线照射后的反射效果;
3、在房屋3维预览软件中,通过光线传播模拟晴天房间内的光照,也即,在房屋3维模型之外存在光照源头,通过光照源头的光线传播透过房屋3维模型的透明窗户在房屋内传播,并在房屋内的物体上产生反射效果,从而模拟房屋在晴天情况下的光照条件。
值得注意的是,上述应用场景仅为示意性的举例,本申请实施例对场景渲染方法的具体应用场景不加以限定。
图1是本申请一个示例性实施例提供的场景渲染方法的整体流程示意图,如图1所示,对虚拟场景中的光线数据通过Ray Query进行光线求交,确定虚拟场景中被光线击中的像素片元110以及该像素片元对应的虚拟物体100,其中,像素片元110是组成虚拟物体100的片元结构。
将像素片元110的信息存储至光线追踪的物体数据纹理120中,并根据引擎侧获取的待渲染的物体清单130确定光线追踪的物体数据纹理120中需要进行光线追踪纹理渲染的片元。根据原始场景纹理和光线追踪纹理对虚拟场景中的虚拟物体100进行渲染。
图2是本申请一个示例性实施例提供的场景渲染方法的流程图,该方法可以由终端执行,也可以由服务器执行,还可以由终端和服务器配合执行,本实施例中以该方法应用于终端中为例进行说明,如图2所示,该方法包括:
步骤201,通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,确定被光源射线击中的目标虚拟对象。
其中,目标虚拟对象对应有对象标识。
可选地,本申请实施例中,指定光线追踪接口实现为Ray Query接口,能够对虚拟场景中光源所发射的光线进行发射追踪。在一些实施例中,Ray Query是一个射线和加速结构求交操作的接口。其可以在任何种类的着色器中进行调用,发射射线进行求交并返回交点信息到调用的着色器中。
光源射线是指基于光路可逆原理,以对虚拟场景进行观察的摄像机模型作为出射点,反向确定产生光效映射的虚拟对象的光效射线。
其中,本申请实施例中,光源射线包括光源直接射线和光源反射射线中的至少一种。其中,光源直接射线是指从光源直接发出的光线,如:虚拟场景中包括虚拟显示屏,从虚拟显示屏直接发出的光线即为光源直接射线;光源反射射线是指从光源发出光源直接射线后,光源直接射线打到物体表面,并从物体表现反射的光线,如:虚拟场景中包括虚拟阳光,虚拟阳光的光源直接射线打到墙壁上,并由墙壁进行光源反射,得到光源反射射线。
在一些实施例中,当光源射线实现为光源反射射线,则目标虚拟对象是符合光线反射条件的虚拟对象,也即,目标虚拟对象是粗糙度低于粗糙度阈值的虚拟对象,如:镜子、玻璃等。
首先,获取虚拟场景中光源射线的原点位置和出射方向,基于光源射线的原点位置和出射方向调用接口查询该光源射线是否击中虚拟场景中的物体,获取该光源射线击中点的世界空间坐标、被击中对象的对象标识、被击中片元的片元标识、片元重心坐标等信息。其中,片元是组成虚拟对象三维模型的结构单位,该片元可以实现为三角形片元、四边形片元、任意不规则图形片元等,本实施例对此不加以限定。
通过确定被光源射线击中的对象的对象标识,首先确定候选的需要进行光效渲染的虚拟对象。可选地,将被光源射线击中的片元的片元标识、片元重心坐标等信息存储至光线追踪的物体数据纹理(Visibility Buffer)中,也即能够编码物体信息的可见性纹理,对被光源射线击中的虚拟对象的对象标识进行存储,作为候选的待进行颜色计算并渲染的虚拟对象和片元。
在一些实施例中,光线追踪接口在对光源射线进行光线追踪时,通过获取光源射线的原点位置和出射方向作的射线在世界坐标系中的光线表达式,确定光源射线的光线对应世界坐标系中的光线走向,根据世界坐标系中各个虚拟物体的世界坐标范围和光线表达式进行求交,确定被光源射线发出的光线击中的目标虚拟对象。
示意性的,本申请实施例中的光线追踪由于是基于光路可逆原理,也即,首先在虚拟场景中确定需要进行光效渲染的表面,从而基于摄像机模型的位置和待进行光效渲染的表面反向确定光线追踪路径。
在一些实施例中,确定虚拟场景中的反射表面,反射表面为符合光线反射条件的虚拟物体表面,基于摄像机模型的模型位置和反射表面的表面朝向获取光源射线的光线发射方向,摄像机模型用于对虚拟场景进行场景画面采集;通过指定光线追踪接口对光源射线的光线发射方向进行反向追踪,确定被光线发射反方向击中的目标虚拟对象。
可选地,获取反射表面的表面法线信息;获取从摄像机模型的模型位置向反射表面的入射光线方向;基于入射光线方向和表面法线信息确定光源射线的光线发射方向。
如:虚拟场景中包括光滑的反射表面,在通过传统场景渲染后,反射表面渲染表现为物体未进行光线反射的形态。确定摄像机模型在虚拟场景中对场景画面进行采集的位置,确定摄像机模型的位置向反射表面之间的光线方向,该光线为反射表面对光线进行反射后射向摄像机模型,由摄像机模型采集的光线,根据反射表面的法线作该光线方向的光线发射方向,也即,光线由光线发射方向从反射光源射向反射表面后,由反射表面进行反射,并沿着光线方向射向摄像机模型。所以,通过光路可逆原理反向追踪向反射表面进行光线发射的直接光源或者反射光源。
在一些实施例中,光线反射条件是指目标虚拟对象对接收到的光线的反射能力。在一些实施例中,确定光源射线在目标虚拟对象上是否满足光线反射条件时,通常包括如下方式:
确定虚拟场景中的候选物体;获取候选虚拟对象的对象粗糙度参数;在候选虚拟对象的对象粗糙度参数符合光线反射条件的情况下,确定候选虚拟对象为目标虚拟对象;其中,对象粗糙度参数是候选虚拟对象的纹理数据中配置的参数光源射线光源射线。
值得注意的是,上述光线反射条件的判断方法仅为示意性的举例,本实施例对此不加以限定。
值得注意的是,上述实施例中以获取虚拟对象的粗糙度参数为例进行说明,在一些实施例中,获取虚拟对象的光滑度参数,并在光滑度参数符合光线反射条件的情况下,确定候选虚拟对象为目标虚拟对象。
在一些实施例中,在追踪光源发射射线之前,通过图形渲染技术对虚拟场景进行场景渲染,得到场景渲染效果,其中,场景渲染效果中不包括光线反射效果。
步骤202,获取虚拟场景中处于反射范围内的模型清单,模型清单中的虚拟对象为当前待渲染的模型对象。
其中,模型清单中的模型对象对应有对象标识,该对象标识与上述被光线击中的目标虚拟对象的对象标识通过统一的确定方式确定。
在一些实施例中,光线追踪接口在进行光线追踪时,是在世界坐标系的基础上对虚拟场景中的虚拟物体进行光线求交,在一些情况下,存在被光源射线的光线击中的虚拟物体处于虚拟场景中玩家视线范围之内,但是光源射线在击中虚拟物体后反射的光线在玩家视线范围之外的情况,也即,虚拟场景中被光源射线的光线击中的虚拟物体,实际并不在当前虚拟场景光效渲染范围内。
故,本申请实施例中,还需要获取虚拟场景中处于反射光线可能击中的范围内反射范围的虚拟物体的模型清单,其中,通过光线追踪接口在进行光线追踪时,同时可以获得被光线反射到的虚拟场景中的模型清单。其中,反射范围是指当前可能被光源射线击中且反射光线的虚拟物体范围。
可选地,模型清单中的虚拟对象为待渲染的处于反射范围内的模型对象,将处于反射范围内的模型对象对应的对象标识存储至模型清单中。
可选地,获取虚拟场景中存在被光线发射方向击中的虚拟物体标识;基于被光线发射方向击中的虚拟物体标识确定处于反射范围内的模型清单。
在一个可选的实施例中,获取待渲染的至少一帧图像对应的虚拟场景数据;基于至少一帧图像对应的虚拟场景数据,获取虚拟场景数据内处于反射范围内的虚拟对象,得到模型清单。
其中,待渲染的至少一帧图像是指从当前帧开始预设数量的连续图像帧;当前帧是指当前待进行计算渲染从而显示的图像帧。获取该至少一帧图像对应的虚拟场景数据,并基于至少一帧图像对应的虚拟场景数据,获取在多帧图像中的至少一帧图像中处于反射范围内的虚拟对象,并将虚拟对象的对象标识增加至模型清单中,得到处于反射范围内的模型清单。
步骤203,在目标虚拟对象处于模型清单范围内的情况下,基于光源射线的光线追踪纹理数据和目标虚拟对象的材质信息对目标虚拟对象进行渲染,得到目标虚拟对象在虚拟场景中的光线反射效果。
可选地,将目标虚拟对象的对象标识与模型清单中存储的对象标识进行匹配,从而确定目标虚拟对象是否处于模型清单中;而模型清单中的虚拟对象是指当前处于反射范围内的虚拟对象,若目标虚拟对象的对象标识处于模型清单中,则表示目标虚拟对象处于终端的反射范围内,反之,若目标虚拟对象的对象标识未处于模型清单中,则表示目标虚拟对象对主控虚拟对象或者对玩家而言不可见。
本申请实施例中,在目标虚拟对象处于模型清单中的情况下,获取光源射线的光线追踪纹理数据和目标虚拟对象的材质信息,从而融合光线追踪纹理数据和目标虚拟对象的材质信息对目标虚拟对象进行渲染,表现目标虚拟对象在虚拟场景中被光源射线的光线击中所表现的光线反射效果。
在一些实施例中,基于目标虚拟对象对应的对象标识获取目标虚拟对象的材质信息;在对象标识处于模型清单范围内的情况下,基于光源射线的光线追踪纹理数据和目标虚拟对象的材质信息对目标虚拟对象进行渲染,得到目标虚拟对象在虚拟场景中的反射表面的光线反射效果。
综上所述,本实施例提供的场景渲染方法,利用光线可逆原理,在确定物体表面的反射效果时,利用指定光线追踪接口追踪得到的目标虚拟物体,将该目标虚拟物体与反射范围的模型清单进行匹配,从而确定目标虚拟对象是否属于反射光源射线的范围内,若处于反射范围内,融合光线追踪物体数据纹理和获取的目标虚拟对象的材质信息对目标虚拟对象进行渲染,从而生成目标虚拟对象被光线击中的光线反射效果,应用于VulkanRaytracing接口也能够在支持光线追踪基础上,完成对光线追踪效果的渲染。
本实施例提供的方法,通过获取被光线追踪击中的物体的清单,确定目标虚拟对象是否处于清单中,而被光线追踪击中的物体的清单为能够通过反射表面将光线反射至摄像机模型的观察范围内的物体,提高了物体追踪的效率。
在一个可选的实施例中,在确定被光源射线的光线击中的对象后,对该对象信息进行存储。图3是本申请另一个示例性实施例提供的场景渲染方法流程图,该方法可以由终端执行,也可以由服务器执行,还可以由终端和服务器配合执行,本实施例中以该方法应用于终端中为例进行说明,如图3所示,该方法包括:
步骤301,通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,获取光源射线的物体命中数据。
物体命中数据包括被光源射线击中的目标虚拟对象的片元数据,片元数据包括片元标识和片元重心坐标。其中,片元是指构建虚拟对象的三维模型的单元,该片元可以是三角形片元,也可以是四边形片元或者其他任意形状的片元。
虚拟场景中虚拟对象的三维模型架构是由多个片元搭建得到的,且搭建虚拟对象的每个片元对应有片元标识以及片元重心坐标。
步骤302,将片元标识和片元重心坐标记录至光线追踪的物体数据纹理中。
可选地,基于光源射线发射的原点和出射方向,可以通过调用指定光线追踪接口查询到该光源射线的射线是否击中虚拟场景中的物体,确定被光源射线的射线击中的像素点的世界空间坐标,从而获取该光源射线的射线击中物体的物体标识,片元标识,以片元实现为三角形片元为例,获取被击中的三角形片元标识,三角形重心坐标等信息。在渲染诸如反射等光线追踪效果时,屏幕上每个满足条件的像素均会向场景发射一根射线(例如粗糙度小于一定值将会需要渲染反射效果),如果将该射线所击中点的三角形片元标识、三角形重心坐标记录到一张光线追踪的物体数据纹理中,该光线追踪的物体数据纹理便编码了最终光线追踪效果可见的像素所对应的几何信息,其被称为Visibility Buffer(光线追踪的物体数据纹理)。
对于虚拟场景中的每一个虚拟物体来说,其可能会对应着Visibility Buffer上的一个或多个片元数据,也可能不对应任何片元数据(例如在反射效果中,没有被反射射线击中的对象标识将不会出现在Visibility Buffer中)。Visibility Buffer使用特定的编码方式,如:R32G32_UINT编码方式,配合一张16位的深度图),定义如下:
Visibility Buffer:R通道存放三角形标识(32位),G通道存放重心坐标的X,Y信息(各16位,组合为32位);
深度图:对象标识(16位)。
步骤303,获取虚拟场景中处于反射范围内的模型清单,模型清单中的虚拟对象为当前待渲染的模型对象。
本申请实施例中,获取虚拟场景中处于反射范围内的虚拟物体的模型清单。其中,反射范围是指可能击中的物体在虚拟场景中的范围。
可选地,模型清单中的虚拟对象为待渲染的模型对象,将待渲染的模型对象对应的对象标识存储至模型清单中。
由于使用材质系统的光线追踪特效所产生的射线可能射向场景中的各个地方,因此无法使用视锥剔除/遮挡剔除等机制来减少需要渲染的虚拟物体的数量。因此,在生成Visibility Buffer的同时,输出当前存在于虚拟场景中可能被光源射线击中的虚拟对象的对象标识集合,即为上述模型清单。由于虚幻引擎渲染线程和渲染硬件接口线程的同步机制,该对象标识集合会在1~2帧之后从图形处理器回读到虚幻引擎侧。由于对象标识集合所对应的虚拟物体每帧不一样,因此在回读之后,引擎侧的管理器会将其转化为物体唯一标识,从而驱动绘制流程,限缩参与绘制物体数量。
其中,回读是指将当前帧之前最近一帧或者最近第n帧渲染过程中确定的需要被光效渲染的虚拟对象的标识,从图形处理器(GPU)反向回读到客户端的操作。在一些实施例中,在回读周期范围内采用回读的方式获取模型清单,其中,回读周期范围是预先设定的范围,或者,根据主控虚拟对象的视角变化幅度确定的范围,或者,根据虚拟画面变化幅度确定的范围。示意性的,通常主控虚拟对象在10帧范围内的视角变化幅度较小,故,以10帧作为一个回读周期范围,在回读周期范围内,在确定第i帧的模型清单时,可以获取第i-1帧或者第i-2帧虚拟画面在光效渲染过程中确定的需要进行光效渲染的虚拟对象的清单作为第i帧的模型清单,i>2且i为整数。
步骤304,在目标虚拟对象处于模型清单范围内的情况下,基于光线追踪的物体数据纹理中与目标虚拟对象对应的片元数据和目标虚拟对象的材质信息,对目标虚拟对象进行渲染,得到目标虚拟对象在虚拟场景中的反射表面的光线反射效果。
在Visibility Buffer生成过后,引擎将会使用图形管线(Graphics Pipeline),对待渲染的虚拟对象下达多条绘制命令(Draw Call),每一条Draw Call负责着色其所对应的片元像素。与传统渲染不同的是,每一条Draw Call均会绘制一个全屏幕覆盖三角形(full screen triangle),来着色与其所属的虚拟对象对应的像素。将虚拟对象标识编码进额外的深度缓冲(Depth Buffer),并且在渲染全屏幕覆盖三角形时令顶点着色引擎(Vertex Shader)输出与虚拟对象标识同样的深度,便可利用图形处理器提供的提前深度测试(Early Depth Test),从而剔除掉当前绘制中不属于该虚拟对象的像素。虚拟对象标识用于唯一代表属于不同材质的不同物体实例,用来在光线追踪的物体数据纹理中区别不同像素。着色对应像素的过程被称为光线追踪的物体数据纹理的解析(VisibilityResolve)。
在Visibility Resolve流程中,每一个Draw Call所使用的资源除了会包含正常渲染物体所使用的资源,例如表面和光照纹理、包含物体信息的缓冲(Uniform Buffer)之外,还会包含该物体的几何信息,即顶点索引(Index Buffer)和顶点属性(VertexAttributes,例如顶点颜色、UV、法线)。每一个属于该虚拟对象的像素都会在像素着色引擎(Pixel Shader)中通过Visibility Buffer编码的信息,结合上几何信息还原出其所对应的三角形,并执行插值,得到像素所对应的属性信息(例如像素UV、法线),并根据传统渲染的流程进行材质属性的计算和光照计算,最终得到表面颜色信息。
示意性的,如图4所示,光线追踪材质系统的渲染流程包括如下过程。
该渲染流程主要包括图形处理器(GPU)侧410和虚幻引擎侧420。
其中,在GPU侧,首先执行正常的渲染流程,得到虚拟场景的世界空间法线纹理411、深度纹理412和粗糙度纹理413;根据世界空间法线纹理411、深度纹理412和粗糙度纹理413通过光线追踪接口414进行光线追踪,确定被光线击中的片元415并获取虚拟对象的深度信息416,从而确定被击中的片元415所属的虚拟对象,并生成待渲染的光线追踪的物体数据纹理417。
在虚幻引擎侧420,获取虚拟场景中的待渲染物体清单421。
结合待渲染物体清单421和待渲染光线追踪的物体数据纹理417确定光线追踪效果纹理418的渲染目标,并基于原始场景颜色419和光线追踪效果纹理418合成得到对虚拟场景中被光线击中的虚拟对象的渲染。
综上所述,本实施例提供的场景渲染方法,针对指定光线追踪接口追踪得到的目标虚拟物体,将该目标虚拟物体与反射范围的模型清单进行匹配,从而确定目标虚拟对象是否处于光源射线的反射范围内,若处于反射范围内,融合光线追踪纹理数据和目标虚拟对象的材质信息对目标虚拟对象进行渲染,从而生成目标虚拟对象被光线击中的光线反射效果,应用于Vulkan Raytracing接口也能够在支持光线追踪基础上,完成对光线追踪效果的渲染。
本实施例提供的方法,通过获取被光源射线击中的片元数据,并将片元数据存储在光线追踪的物体数据纹理中,从而通过光线追踪的物体数据纹理对虚拟对象上被光线击中的片元进行整合,确定出虚拟对象的光线反射情况,提供了对光线反射效果进行渲染的高效方案。
在一个可选的实施例中,上述方式只能够支持光线追踪应用中单次光线求交(Single Bounce)的着色,相当于将Raytracing Pipeline的深度优先遍历过程转换为了广度优先。若当前需要材质系统的反射效果需要光线的多次反射(Multi-bounce),可以通过编码多张光线追踪的物体数据纹理Visibility Buffer,并开启多次Visibility Resolve流程来完成。在目标平台仅支持Vulkan Raytracing/Ray Query的情况下,此种做法能够在传统的渲染技术,即每一个物体下达一次Draw Call的引擎或渲染器中,实现光线追踪的材质系统。
本申请实施例中,针对多次反射的情况,通过多张光线追踪的物体数据纹理进行记录。图5是本申请另一个示例性实施例提供的场景渲染方法流程图,该方法可以由终端执行,也可以由服务器执行,还可以由终端和服务器配合执行,本实施例中以该方法应用于终端中为例进行说明,如图5所示,上述步骤302还可以实现为如下步骤3021,且在步骤3021之后还包括步骤501至步骤502。
步骤3021,将片元标识和片元重心坐标记录至第一光线追踪的物体数据纹理中。
在一些实施例中,第一光线追踪的物体数据纹理是单次光线求交的过程中创建的列表。可选地,在目标虚拟对象符合光线反射条件的情况下,获取目标虚拟对象对应的对象标识。
在一些实施例中,第一光线追踪的物体数据纹理中还存储有目标虚拟对象的对象标识,也即,在存储片元数据时,将片元数据与其对应的对象标识存储至第一光线追踪的物体数据纹理中。在后续渲染目标虚拟对象,基于目标虚拟对象对应的对象标识获取目标虚拟对象的材质信息,在对象标识处于模型清单范围内的情况向下,基于光源射线的光线追踪纹理数据和目标虚拟对象的材质信息对目标虚拟对象进行渲染,得到目标虚拟对象在虚拟场景中的光线反射效果。
可选地,目标虚拟对象的对象标识(Draw ID)是预先设置并经过预处理的标识。针对该对象标识的预先设置和预处理进行说明:在光线追踪的加速结构中,一个物体(BLAS)会有一个或多个几何体(Geometry segments),如:虚拟房屋包括虚拟房顶和虚拟墙壁等几何体,共享同一个局部到世界空间的变换矩阵;一个场景(TLAS)中会有一个或多个物体的实例(Instance),和虚幻引擎的概念相贴合。因此,材质系统需要通过几何体和实例两个维度区分场景中的物体,才能让光线追踪的物体数据纹理Visibility Buffer将每个需要不同参数着色的对象区分开来。每一个需要不同参数着色的对象将会被分配一个ID,称为Draw ID。
示意性的,如图6所示,将所有参与材质系统的物体按顺序在物体列表610中排列,并依次将每个子物体即上述几何体(Segment)的每个实例(Instance)进行编号,得到的即为Draw ID。并且Draw ID的标注遵循如下条件:1、每个物体的第一个Draw ID为该物体命中组索引(Hit Group Index),该Hit Group Index将会在每帧构建TLAS时成为场景实例的Hit Group Index字段值;2、每一个子物体的第一个Draw ID被称为基准标识(Base DrawID)。客户端将会按照Base Draw ID依次下达Draw Call,进行Visibility Resolve。因此,每个Base Draw ID对应一个光线追踪绘制命令(Ray Query Mesh Command);3、Draw ID从1开始编号,0代表当前位置无需要着色的像素。由于深度缓冲(Depth Buffer)精度有限,同时考虑到性能因素,Draw ID最高取值为1023。据实际游戏内场景测算,1023个Draw ID已经足够表示整个场景。
因此,在Visibility Buffer生成阶段,在发起Ray Query的Shader中,可以通过公式一计算得到Draw ID:
公式一:DrawID=HitGroupIndex+GeometryIndex*InstanceID
其中,HitGroupIndex是指传入场景实例TLAS Instance的值,可以在着色器Shader中获取;GeometryIndex是指自动生成的几何体索引,从0开始,可以在Shader中获取;InstanceID为一个TLAS Instance的自定义字段,可以在Shader中获取。此处将该值定义为物体实例的索引,从0开始。
在一些实施例中,在Visibility Buffer解算阶段,全屏幕覆盖三角形将输出自定义深度。在Vertex Shader中,输出的深度由如下公式二确定:
公式二:OutPosition.z=BaseDrawID*InstanceID/1024
其中,OutPosition.z是指全屏幕覆盖三角形的输出深度,BaseDrawID是客户端传递的,全屏幕覆盖三角形对应物体的Base Draw ID;InstanceID在Vertex Shader中为当前绘制实例的编号,从0开始。通过上述方案,全屏幕覆盖三角形光栅化后,提前深度测试可以剔除掉不相关的物体,留下Draw ID相同的像素被接下来的Pixel Shader着色。
步骤501,通过指定光线追踪接口对目标虚拟对象的光线反射进行追踪,确定被反射光源击中且符合光线反射条件的多次求交命中的数据。
将目标虚拟对象接收到光源射线的光线击中后反射的光线作为求交计算的光线,也即,以目标虚拟对象上接收到光源射线的光线的像素作为光源,并以反射后光线的发射方向作为光线方向与虚拟场景中的虚拟对象进行求交,从而确定被目标虚拟对象反射后的光线击中的虚拟对象。
其中,多次求交命中数据中包括被反射光源击中的对象的对象标识、反射片元标识、反射片元重心坐标,其中,被反射光源击中的对象为符合光线反射条件的对象,如:粗糙度参数达到光滑度要求的对象。
步骤502,将反射片元标识和反射片元重心坐标记录至第二光线追踪的物体数据纹理中。
在多次光线求交的过程中,针对不同次光线求交过程创建不同的光线追踪的物体数据纹理。针对每次创建的光线追踪的物体数据纹理进行光线追踪的物体数据纹理的解析渲染。
Vertex Shader负责输出全屏幕覆盖三角形,其深度将会被设置为自定义值。引擎侧通过一个统一缓存(Uniform Buffer)将Base Draw ID传入Shader。由于同一物体每帧所分配到的Base Draw ID不一定相同,因此该Uniform Buffer将会逐帧更新。
Pixel Shader承担了三角形片元数据获取、组装和着色的任务。其主要完成了如下计算步骤:1、读取并解包(Unpack)Visibility Buffer,取得三角形片元标识和片元重心坐标;2、组装三角形;对于每个顶点:a.通过该物体在虚幻引擎中所对应的VertexFactory,获取其对应的顶点索引(Index);b.用顶点索引在该物体所对应的Vertex Buffer中,获取所有顶点属性(Vertex Attributes),例如顶点颜色、UV、法线等。3、根据从Visibility Buffer中获取的重心坐标,插值三个顶点,得到该像素当前的属性信息;4、将该属性信息传入虚幻引擎的材质计算函数中,进行材质信息的获取;5、将材质信息遵循标准物体渲染方式进行光照计算,并输出颜色到光线追踪效果纹理中。
为了遵循虚幻引擎的绘制流程规范,RayQuery材质系统需要实现虚幻引擎的物体绘制命令(Mesh Command)机制,即将Shader、渲染时需要用到的资源和附加参数收集存放在一起,供绘制时直接使用。一个Mesh Command对应一个物体的Draw Call。可选地,对于静态物体,由于其绘制指令一般不会改变,其Mesh Command将会在物体添加到场景时缓存下来,而动态物体(诸如动态角色)则会在每帧构建。在构建光线追踪场景时,Mesh Command将会被收集并排序,用于分配并填充其对应的Base Draw ID,并生成绘制列表(Visible MeshCommands),其中,绘制列表记录如下参数中的至少一种:Vertex/Pixel着色器引用;收集得到的资源引用;Index Buffer引用;Base Draw ID;Instance Index:对应引擎中参与光线追踪效果的物体索引,即TLAS Instance索引;Primitive Index:对应引擎中场景全部物体的索引;PrimIDValue:物体的持久化ID;SegmentIndex:子物体编号;NumTransforms:物体实例个数。
可选地,在Visibility Resolve阶段,材质系统将会对所有收集而来的物体下达Draw Call,但这些物体可能在Visibility Buffer上不存在对应像素。虽然硬件的EarlyDepth Test机制将会避免无关像素唤醒Pixel Shader进行着色,但绑定管线(Pipeline)和资源描述符(Descriptor)同样会消耗CPU时间。因此,在Visibility Buffer的绘制环节将会额外输出一个数组,其记录着每一个Draw ID是否出现在当前Visibility Buffer中,此处称为物体标识数组(Draw ID Mask)。该数组需要足够小,以极大程度上减少数组回读到中央处理器(Central Processing Unit,CPU)中的耗时。此处使用点阵列(Bit Array)的概念,每一个比特位(bit)记录其下标所对应的Draw ID的存在情况。
示意性的,如图7所示,上述数组能够在进行当前帧的Visibility Resolve时,剔除掉不存在于Visibility Buffer中Draw ID所对应的Draw Call。但由于终端本身的线程同步机制,在任务提交线程701下达的任务需要在一帧到两帧之后才可能在渲染线程(RHI线程)702和图形处理器GPU703上执行完毕,因此回读则需要等待一帧到两帧时间。由于Draw ID对于物体来说并非持久,因此回读回来的上述Draw ID Mask,其对应的Draw ID信息已经与当前帧Draw ID不匹配。因此,本申请实施例中,只有当上一次的结果查询完毕之后,才会在当前帧下达请求回读的指令。在第n-1帧的回读查询结束时,开始第n帧下达请求回读的指令。
综上所述,本实施例提供的场景渲染方法,针对指定光线追踪接口追踪得到的目标虚拟物体,将该目标虚拟物体与反射范围的模型清单进行匹配,从而确定目标虚拟对象是否处于光源射线反射范围内,若处于反射范围内,融合光线追踪纹理数据和目标虚拟对象的材质信息对目标虚拟对象进行渲染,从而生成目标虚拟对象被光线击中的光线反射效果,应用于Vulkan Raytracing接口也能够在支持光线追踪基础上,完成对光线追踪效果的渲染。
本实施例提供的方法,通过Draw ID和光线追踪的物体数据纹理对需要渲染的虚拟对象进行过滤,避免不在场景中或者不在视线范围内的虚拟对象的数据加载和计算,提高了光线反射效果的渲染效率。
如图8所示,其示出了本申请一个示例性实施例提供的光线反射效果示意图,虚拟场景中的显示屏810即为虚拟场景中的光源,通过光源的发光位置以及发光方向确定显示屏810的显示内容在虚拟对象820上的光线反射效果,其中,虚拟对象820为光滑度大于光滑度阈值的一块玻璃面板。
图9是本申请一个示例性实施例提供的整体流程示意图。如图9所示,首先通过传统图形渲染技术对虚拟场景进行渲染,得到场景画面910,该场景画面910中不包括光效渲染,如:场景画面910中的玻璃表面911未对光源产生反射。在渲染得到场景画面910后,使用光线追踪技术,通过发射光线以及让GPU计算交点的方法,渲染反射射线。首先,在场景画面910中,包含着相对光滑的物体,即玻璃表面911和相对粗糙的物体,如房梁912。
在物理世界中,光滑的物体可能会产生镜面反射效果。在上述实施例中,由于玻璃表面911应当反射出旁边电子显示屏913。因此我们需要确定出,在场景画面910中哪些像素对应的表面是光滑表面,哪些像素对应的表面是粗糙表面。此步骤可以使用传统图形渲染技术完成。
对于光滑表面的像素,可以认为其将会收到反射光的影响,即该像素所覆盖的物体表面可以看作反射表面。故需要追踪反射光的发射点,即需要找到反射物体到反射表面的射线的数学表达式,如图9中的射线914。
由于光线在光滑表面的反射如图10所示,摄像机模型1010的位置确定的情况下,确定光滑表面1020的法线后,即可确定从光滑表面1020反射到摄像机模型1010的光线方向,从而根据反向确定出该光线方向发射至光滑表面1020的入射方向,从光路可逆原理的角度出发,在图9和图10示出的实施例中称为出射方向。
用Vulkan Ray Query接口,并传入上述出射方向的射线,该接口将会返回到这根出射方向的射线所击中的物体的信息,包括物体ID,片元ID和片元坐标等。所有的物体ID可以被组织称为“处于光线反射范围内的虚拟场景中的模型清单”,而将每个待计算反射的像素所发射出的反射射线所获得的结果(包括物体ID,三角形ID和三角形坐标等)都编码进这个像素中,其得到的又是一张图像,这张图像被称为Visibility Buffer,即上述光线追踪物体数据纹理。
图11是本申请一个示例性实施例提供的场景渲染装置的结构框图,如图11所示,该装置包括:
确定模块1110,用于通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,确定被所述光源射线击中的目标虚拟对象;
获取模块1120,用于获取所述虚拟场景中处于反射范围内的模型清单,所述模型清单中的虚拟对象为当前待渲染的模型对象;
渲染模块1130,用于在所述目标虚拟对象处于所述模型清单范围内的情况下,基于所述光源射线的光线追踪纹理数据和所述目标虚拟对象的对象纹理数据对所述目标虚拟对象进行渲染,得到所述目标虚拟对象在所述虚拟场景中的反射表面的光线反射效果。
在一个可选的实施例中,所述确定模块1110,还用于通过所述指定光线追踪接口对所述虚拟场景中光源反射射线的光线发射进行追踪,获取所述光源反射射线的物体命中数据,所述物体命中数据中包括被所述光源反射射线击中的所述目标虚拟对象的片元数据,所述片元数据包括片元标识和片元重心坐标;
如图12所示,所述装置还包括:
记录模块1140,用于将所述片元标识和所述片元重心坐标记录至可见性缓冲中,所述目标虚拟对象在所述可见性缓冲中对应一个或者多个片元数据;
所述渲染模块1130,还用于所述在所述目标虚拟对象处于所述模型清单范围内的情况下,基于所述文理列表中与所述目标虚拟对象对应的片元数据和所述目标虚拟对象的对象纹理数据,对所述目标虚拟对象在反射表面的光线反射效果进行渲染,得到所述目标虚拟对象在所述虚拟场景中的光线反射效果。
在一个可选的实施例中,所述记录模块1140,还用于将所述片元标识和所述片元重心坐标记录至第一物体数据纹理中;
所述确定模块1110,还用于通过指定光线追踪接口对目标虚拟对象的光线反射进行追踪,确定被反射光源击中且符合光线反射条件的多次求交命中数据,所述多次求交命中数据中包括被所述反射光源击中的对象的对象标识、反射片元标识、反射片元重心坐标;
所述记录模块1140,还用于将所述反射片元标识和所述反射片元重心坐标记录至第二物体数据纹理中。
在一个可选的实施例中,所述确定模块1110,还用于通过所述指定光线追踪接口对所述虚拟场景中光源反射射线的光线发射进行追踪,确定被所述光源反射射线击中的候选虚拟对象;
所述获取模块1120,还用于获取所述候选虚拟对象的对象粗糙度参数;
所述确定模块1110,还用于在所述候选虚拟对象的对象粗糙度参数符合所述光线反射条件的情况下,确定所述候选虚拟对象为所述目标虚拟对象。
在一个可选的实施例中,所述确定模块1110,还用于确定所述虚拟场景中的反射表面,所述反射表面为符合所述光线反射条件的虚拟物体表面;基于摄像机模型的模型位置和所述反射表面的表面朝向获取所述光源射线的光线发射方向,所述摄像机模型用于对所述虚拟场景进行场景画面采集;通过指定光线追踪接口对所述光源射线的光线发射方向进行反向追踪,确定被所述光线发射方向击中的目标虚拟对象。
在一个可选的实施例中,所述获取模块1120,还用于获取所述虚拟场景中存在被光线发射方向击中的虚拟物体标识;基于被光线发射方向击中的虚拟物体标识确定处于所述反射范围内的模型清单。
在一个可选的实施例中,所述获取模块1120,还用于获取所述反射表面的表面法线信息;获取从所述摄像机模型的模型位置向所述反射表面的入射光线方向;基于所述入射光线方向和所述表面法线信息确定所述光源射线的所述光线发射方向。
在一个可选的实施例中,所述获取模块1120,还用于基于所述目标虚拟对象对应的对象标识获取所述目标虚拟对象的所述材质信息;在所述对象标识处于所述模型清单范围内的情况下,基于所述光源射线的光线追踪纹理数据和所述目标虚拟对象的所述材质信息对所述目标虚拟对象进行渲染,得到所述目标虚拟对象在所述虚拟场景中的反射表面的光线反射效果。
所述渲染模块1130,还用于通过图形渲染技术对所述虚拟场景进行场景渲染,得到场景渲染效果,其中,所述场景渲染效果中不包括光线反射效果。
综上所述,本实施例提供的场景渲染装置,针对指定光线追踪接口追踪得到的目标虚拟物体,将该目标虚拟物体与可视范围的模型清单进行匹配,从而确定目标虚拟对象是否处于玩家的可视范围内,若处于玩家的可视范围内,融合光线追踪纹理数据和目标虚拟对象的对象纹理数据对目标虚拟对象进行渲染,从而生成目标虚拟对象被光线击中的光线反射效果,应用于Vulkan Raytracing接口也能够在支持光线追踪基础上,完成对光线追踪效果的渲染。
需要说明的是:上述实施例提供的场景渲染装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的场景渲染装置以与场景渲染方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请还提供了一种计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述各个方法实施例提供的场景渲染方法。需要说明的是,该计算机设备可以是如下图11所提供的计算机设备。
请参考图13,其示出了本申请一个示例性实施例提供的计算机设备的结构示意图。具体来讲:所述计算机设备1300包括中央处理单元(CPU)1301、包括随机存取存储器(RAM)1302和只读存储器(ROM)1303的系统存储器1304,以及连接系统存储器1304和中央处理单元1301的系统总线1305。所述计算机设备1300还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1306,和用于存储操作系统1313、应用程序1314和其他程序模块1315的大容量存储设备1307。
所述基本输入/输出系统1306包括有用于显示信息的显示器1308和用于用户输入信息的诸如鼠标、键盘之类的输入设备1309。其中所述显示器1308和输入设备1309都通过连接到系统总线1305的输入输出控制器1310连接到中央处理单元1301。所述基本输入/输出系统1306还可以包括输入输出控制器1310以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1310还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1307通过连接到系统总线1305的大容量存储控制器(未示出)连接到中央处理单元1301。所述大容量存储设备1307及其相关联的计算机可读介质为计算机设备1300提供非易失性存储。也就是说,所述大容量存储设备1307可以包括诸如硬盘或者CD-ROI驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1304和大容量存储设备1307可以统称为存储器。
存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元1301执行,一个或多个程序包含用于实现上述场景渲染方法或基于机器翻译模型的翻译方法的指令,中央处理单元1301执行该一个或多个程序实现上述各个方法实施例提供的场景渲染方法或基于机器翻译模型的翻译方法。
根据本发明的各种实施例,所述计算机设备1300还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1300可以通过连接在所述系统总线1305上的网络接口单元1311连接到网络1312,或者说,也可以使用网络接口单元1311来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本发明实施例提供的场景渲染方法中由计算机设备所执行的步骤。
本申请实施例还提供一种计算机设备,该计算机设备包括存储器和处理器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并实现上述场景渲染方法。
本申请实施例还提供一种计算机可读存储介质,该可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述场景渲染方法。
本申请还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述各个方法实施例提供的场景渲染方法。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述场景渲染方法或基于机器翻译模型的翻译方法。
可选地,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种场景渲染方法,其特征在于,所述方法包括:
通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,确定被所述光源射线击中的目标虚拟对象;
获取所述虚拟场景中处于反射范围内的模型清单,所述模型清单中的虚拟对象为处于光源反射范围内的模型对象;
在所述目标虚拟对象处于所述模型清单范围内的情况下,基于所述光源射线的光线追踪纹理数据和所述目标虚拟对象的材质信息对所述目标虚拟对象进行渲染,得到所述目标虚拟对象在所述虚拟场景中的反射表面的光线反射效果。
2.根据权利要求1所述的方法,其特征在于,所述通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,确定被所述光源射线击中的目标虚拟对象,包括:
通过所述指定光线追踪接口对所述虚拟场景中光源射线的光线发射进行追踪,获取所述光源射线的物体命中数据,所述物体命中数据中包括被所述光源射线击中的所述目标虚拟对象的片元数据,所述片元数据包括片元标识和片元重心坐标;
将所述片元标识和所述片元重心坐标记录至光线追踪的物体数据纹理中,所述目标虚拟对象在所述物体数据纹理中对应一个或者多个片元数据;
所述在所述目标虚拟对象处于所述模型清单范围内的情况下,基于所述光源射线的光线追踪纹理数据和所述目标虚拟对象的材质信息对所述目标虚拟对象进行渲染,得到所述目标虚拟对象在所述虚拟场景中的光线反射效果,包括:
所述在所述目标虚拟对象处于所述模型清单范围内的情况下,基于所述光线追踪的物体数据纹理中与所述目标虚拟对象对应的片元数据和所述目标虚拟对象的材质信息,对所述目标虚拟对象在反射表面的光线反射效果进行渲染,得到所述目标虚拟对象在所述虚拟场景中的光线反射效果。
3.根据权利要求2所述的方法,其特征在于,所述将所述片元标识和所述片元重心坐标记录至光线追踪的物体数据纹理中,包括:
将所述片元标识和所述片元重心坐标记录至第一物体数据纹理中;
所述方法还包括:
通过指定光线追踪接口对目标虚拟对象的光线反射进行追踪,确定被反射光源击中且符合光线反射条件的多次求交命中数据,所述多次求交命中数据中包括被所述反射光源击中的对象的对象标识、反射片元标识、反射片元重心坐标;
将所述反射片元标识和所述反射片元重心坐标记录至第二物体数据纹理中。
4.根据权利要求1至3任一所述的方法,其特征在于,所述通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,确定被所述光源射线击中的目标虚拟对象,包括:
通过所述指定光线追踪接口对所述虚拟场景中光源射线的光线发射进行追踪,确定被所述光源射线击中的候选虚拟对象;
获取所述候选虚拟对象的对象粗糙度参数;
在所述候选虚拟对象的对象粗糙度参数符合所述光线反射条件的情况下,确定所述候选虚拟对象为所述目标虚拟对象。
5.根据权利要求1至3任一所述的方法,其特征在于,所述通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,确定被所述光源射线击中的目标虚拟对象,包括:
确定所述虚拟场景中的反射表面,所述反射表面为符合所述光线反射条件的虚拟物体表面;
基于摄像机模型的模型位置和所述反射表面的表面朝向获取所述光源射线的光线发射方向,所述摄像机模型用于对所述虚拟场景进行场景画面采集;
通过指定光线追踪接口对所述光源射线的光线发射方向进行反向追踪,确定被所述光线发射方向击中的目标虚拟对象。
6.根据权利要求5所述的方法,其特征在于,所述获取所述虚拟场景中处于反射范围内的模型清单,包括:
获取所述虚拟场景中存在被光线发射方向击中的虚拟物体标识;
基于被光线发射方向击中的虚拟物体标识确定处于所述反射范围内的模型清单。
7.根据权利要求5所述的方法,其特征在于,所述基于摄像机模型的模型位置、模型采集方向和所述反射表面的表面朝向获取所述光源射线的光线发射方向,包括:
获取所述反射表面的表面法线信息;
获取从所述摄像机模型的模型位置向所述反射表面的入射光线方向;
基于所述入射光线方向和所述表面法线信息确定所述光源射线的所述光线发射方向。
8.根据权利要求1至3任一所述的方法,其特征在于,所述在所述目标虚拟对象处于所述模型清单范围内的情况下,基于所述光源射线的光线追踪纹理数据和所述目标虚拟对象的材质信息对所述目标虚拟对象进行渲染,得到所述目标虚拟对象在所述虚拟场景中的反射表面的光线反射效果,包括:
基于所述目标虚拟对象对应的对象标识获取所述目标虚拟对象的所述材质信息;
在所述对象标识处于所述模型清单范围内的情况下,基于所述光源射线的光线追踪纹理数据和所述目标虚拟对象的所述材质信息对所述目标虚拟对象进行渲染,得到所述目标虚拟对象在所述虚拟场景中的反射表面的光线反射效果。
9.根据权利要求1至3任一所述的方法,其特征在于,所述通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪之前,还包括:
通过图形渲染技术对所述虚拟场景进行场景渲染,得到场景渲染效果,其中,所述场景渲染效果中不包括光线反射效果。
10.一种场景渲染装置,其特征在于,所述装置包括:
确定模块,用于通过指定光线追踪接口对虚拟场景中光源射线的光线发射进行追踪,确定被所述光源射线击中的目标虚拟对象;
获取模块,用于获取所述虚拟场景中处于反射范围内的模型清单,所述模型清单中的虚拟对象为当前待渲染的模型对象;
渲染模块,用于在所述目标虚拟对象处于所述模型清单范围内的情况下,基于所述光源射线的光线追踪纹理数据和所述目标虚拟对象的对象纹理数据对所述目标虚拟对象进行渲染,得到所述目标虚拟对象在所述虚拟场景中的反射表面的光线反射效果。
11.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1至9任一所述的场景渲染方法。
12.一种计算机可读存储介质,其特征在于,所述可读存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至9任一所述的场景渲染方法。
13.一种计算机程序产品,其特征在于,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现如权利要求1至9任一所述的场景渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310313064.6A CN118674850A (zh) | 2023-03-15 | 2023-03-15 | 场景渲染方法、装置、设备、介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310313064.6A CN118674850A (zh) | 2023-03-15 | 2023-03-15 | 场景渲染方法、装置、设备、介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118674850A true CN118674850A (zh) | 2024-09-20 |
Family
ID=92730741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310313064.6A Pending CN118674850A (zh) | 2023-03-15 | 2023-03-15 | 场景渲染方法、装置、设备、介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118674850A (zh) |
-
2023
- 2023-03-15 CN CN202310313064.6A patent/CN118674850A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645810B2 (en) | Method for continued bounding volume hierarchy traversal on intersection without shader intervention | |
US11790595B2 (en) | Method for handling of out-of-order opaque and alpha ray/primitive intersections | |
US11675704B2 (en) | Method for efficient grouping of cache requests for datapath scheduling | |
US20220230380A1 (en) | Watertight ray triangle intersection | |
US10867429B2 (en) | Query-specific behavioral modification of tree traversal | |
CN111311723B (zh) | 像素点识别及光照渲染方法、装置、电子设备和存储介质 | |
US11804002B2 (en) | Techniques for traversing data employed in ray tracing | |
US20230316633A1 (en) | Image processing method and related apparatus | |
US11380041B2 (en) | Enhanced techniques for traversing ray tracing acceleration structures | |
US10846908B2 (en) | Graphics processing apparatus based on hybrid GPU architecture | |
US10964086B2 (en) | Graphics processing | |
US11854141B2 (en) | Early release of resources in ray tracing hardware | |
WO2022143367A1 (zh) | 一种图像渲染方法及其相关设备 | |
US20240095993A1 (en) | Reducing false positive ray traversal in a bounding volume hierarchy | |
US20240009226A1 (en) | Techniques for traversing data employed in ray tracing | |
US12106423B2 (en) | Reducing false positive ray traversal using ray clipping | |
CN118674850A (zh) | 场景渲染方法、装置、设备、介质及程序产品 | |
US20240095994A1 (en) | Reducing false positive ray traversal using point degenerate culling | |
JPH07168926A (ja) | 高速サーバ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |