CN111311723B - 像素点识别及光照渲染方法、装置、电子设备和存储介质 - Google Patents

像素点识别及光照渲染方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN111311723B
CN111311723B CN202010075307.3A CN202010075307A CN111311723B CN 111311723 B CN111311723 B CN 111311723B CN 202010075307 A CN202010075307 A CN 202010075307A CN 111311723 B CN111311723 B CN 111311723B
Authority
CN
China
Prior art keywords
pixel point
offset
ray
illumination
pixel
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.)
Active
Application number
CN202010075307.3A
Other languages
English (en)
Other versions
CN111311723A (zh
Inventor
曹舜
徐华兵
魏楠
崔晓春
李从兵
周荣鑫
李文焱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010075307.3A priority Critical patent/CN111311723B/zh
Publication of CN111311723A publication Critical patent/CN111311723A/zh
Priority to JP2022523168A priority patent/JP7381738B2/ja
Priority to KR1020227006379A priority patent/KR20220043157A/ko
Priority to PCT/CN2020/123495 priority patent/WO2021147408A1/zh
Priority to EP20916221.3A priority patent/EP4071723A4/en
Application granted granted Critical
Publication of CN111311723B publication Critical patent/CN111311723B/zh
Priority to US17/699,791 priority patent/US20220207820A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Analysis (AREA)

Abstract

本申请涉及计算机技术领域,尤其涉及一种像素点识别及光照渲染方法、装置、电子设备和存储介质,用以提出一种有效检测位于阴影区域内的像素点的方法,以提高光照贴图渲染的质量。其中方法包括:获取目标场景中目标物体的光照贴图;根据光照贴图中像素点的各个相邻像素点与像素点之间的距离,确定像素点对应的覆盖半径;以像素点为起点,若沿着像素点的至少一个切线方向发射的一条射线与目标场景中任意一个物体的非光照面相交,且射线的长度与覆盖半径相同,则确定像素点位于阴影区域。由于本申请依据像素点的覆盖半径发射射线,通过判断像素点是否被遮挡检测位于阴影区域的像素点,以提高光照贴图渲染的质量。

Description

像素点识别及光照渲染方法、装置、电子设备和存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种像素点识别及光照渲染方法、装置、电子设备和存储介质。
背景技术
光照贴图指对静态目标物体使用全局光照算法预先生成光照信息的图片,采用光照贴图技术能够离线为实时渲染的绘制对象生成光照信息,在保证性能的同时提高画面质量。
相关技术中,常采用通用的光栅化方法生成光照贴图的GBuffer(GeometryBuffer,几何缓冲区)数据,但是在光照贴图的分辨率较低时,就会容易产生阴影泄露的问题,该情况下像素跨越多个区域,且像素的中心位置位于阴影区域内。目前还没有一种用于检测位于阴影区域内的像素点的方法。
发明内容
本申请实施例提供一种阴影区域像素点识别及光照渲染方法、装置、电子设备和存储介质,用以提出一种有效检测位于阴影区域内的像素点的方法,以提高光照贴图渲染的质量。
本申请实施例提供的一种阴影区域像素点识别方法,包括:
获取目标场景中目标物体的光照贴图;
根据所述光照贴图中像素点的各个相邻像素点与所述像素点之间的距离,确定所述像素点对应的覆盖半径,其中所述像素点与各个所述相邻像素点之间的距离是根据所述像素点的世界坐标以及各个所述相邻像素点的世界坐标确定的;
以所述像素点为起点,若沿着所述像素点的至少一个切线方向发射的一条射线与所述目标场景中任意一个物体的非光照面相交,且所述射线的长度与所述覆盖半径相同,则确定所述像素点位于阴影区域。
本申请实施例提供的一种光照渲染方法,包括:
获取目标场景中目标物体的光照贴图;
从所述光照贴图中的各个像素点中识别出处于阴影区域的像素点;
对所述各个像素点中处于阴影区域的像素点进行偏移处理,以使偏移处理后的像素点位于阴影区域之外;
根据偏移处理后的像素点和未偏移处理的像素点,对所述目标物体进行光照渲染。
本申请实施例提供的一种阴影区域像素点识别装置,包括:
第一获取单元,用于获取目标场景中目标物体的光照贴图;
确定单元,用于根据所述光照贴图中像素点的各个相邻像素点与所述像素点之间的距离,确定所述像素点对应的覆盖半径,其中所述像素点与各个所述相邻像素点之间的距离是根据所述像素点的世界坐标以及各个所述相邻像素点的世界坐标确定的;
第一识别单元,用于以所述像素点为起点,若沿着所述像素点的至少一个切线方向发射的一条射线与所述目标场景中任意一个物体的非光照面相交,且所述射线的长度与所述覆盖半径相同,则确定所述像素点位于阴影区域。
可选的,所述确定单元具体用于:
确定所述像素点与各个所述相邻像素点之间的平均距离,将所述平均距离与预设比例之积作为所述覆盖半径;或
确定所述像素点与各个所述相邻像素点之间的最大距离,将所述最大距离与预设比例之积作为所述覆盖半径。
可选的,所述装置还包括:
第一偏移单元,用于根据所述射线与所述目标物体的交点确定所述像素点对应的偏移量,并根据所述偏移量对所述像素点进行偏移处理,以使偏移处理后所述像素点位于阴影区域之外。
可选的,所述第一偏移单元具体用于:
将所述射线的起点至与所述射线相交的非光照面的交点之间的距离作为所述偏移量,并将所述像素点沿着所述射线的方向移动所述偏移量。
可选的,所述偏移量包括第一偏移量和第二偏移量;
所述装置还包括偏移单元;
所述偏移单元,具体用于将所述射线的起点至与所述射线相交的非光照面的交点之间的距离作为所述第一偏移量,以及将预设距离作为所述第二偏移量;
将所述像素点沿着所述射线的方向移动所述第一偏移量,以及将所述像素点沿着与所述射线相交的物体的法线方向移动所述第二偏移量。
可选的,若至少两条射线与所述目标场景中任意一个物体的非光照面相交,所述射线为至少两条射线中由射线起点至相交的非光照面的交点之间距离最近的射线。
本申请实施例提供的一种光照渲染装置,包括:
第二获取单元,用于获取目标场景中目标物体的光照贴图;
第二识别单元,用于从所述光照贴图中的各个像素点中识别出处于阴影区域的像素点;
第二偏移单元,用于对所述各个像素点中处于阴影区域的像素点进行偏移处理,以使偏移处理后的像素点位于阴影区域之外;
渲染单元,用于根据偏移处理后的像素点和未偏移处理的像素点,对所述目标物体进行光照渲染。
可选的,所述第二识别单元具体用于:
针对所述光照贴图中的任意一个像素点,根据所述像素点的各个相邻像素点与所述像素点之间的距离,确定所述像素点对应的覆盖半径,其中所述像素点与各个所述相邻像素点之间的距离是根据所述像素点的世界坐标以及各个所述相邻像素点的世界坐标确定的;
以所述像素点为起点,若沿着所述像素点的至少一个切线方向发射的一条射线与所述目标场景中任意一个物体的非光照面相交,且所述射线的长度与所述覆盖半径相同,则确定所述像素点位于阴影区域。
可选的,所述第二识别单元具体用于:
确定所述像素点与各个所述相邻像素点之间的平均距离,将所述平均距离与预设比例之积作为所述覆盖半径;或
确定所述像素点与各个所述相邻像素点之间的最大距离,将所述最大距离与预设比例之积作为所述覆盖半径。
可选的,所述第二偏移单元具体用于:
针对所述光照贴图中的任意一个像素点,根据所述射线与所述非光照面的交点确定所述像素点对应的偏移量,并根据所述偏移量对所述像素点进行偏移处理。
可选的,所述第二偏移单元具体用于:
将所述射线的起点至与所述射线相交的非光照面的交点之间的距离作为所述偏移量,并将所述像素点沿着所述射线的方向移动所述偏移量。
可选的,所述偏移量包括第一偏移量和第二偏移量;
所述第二偏移单元具体用于:
将所述射线的起点至与所述射线相交的非光照面的交点之间的距离作为所述第一偏移量,以及将预设距离作为所述第二偏移量;
将所述像素点沿着所述射线的方向移动所述第一偏移量,以及将所述像素点沿着与所述射线相交的物体的法线方向移动所述第二偏移量。
可选的,若至少两条射线与所述目标场景中任意一个物体的非光照面相交,则所述射线为至少两条射线中射线起点至与所述非光照面的交点之间距离最近的射线。
本申请实施例提供的一种电子设备,包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行上述任意一种阴影区域像素点识别方法或任意一种光照渲染方法的步骤。
本申请实施例提供一种计算机可读存储介质,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行上述任意一种阴影区域像素点识别方法或任意一种光照渲染方法的步骤。
本申请有益效果如下:
由于本申请实施例基于像素点与其周围的相邻像素点在世界坐标系的距离则可确定出该像素点对应的覆盖半径,进而依据像素点的覆盖半径发射射线,根据射线与目标场景中物体的非光照面是否相交的方式,则可确定出像素点是否被遮挡,因而可以有效检测位于阴影区域的像素点,其中非光照面指被遮挡的物体面。在此基础上,检测出光照贴图位于阴影区域的像素点之后,则便于提高光照贴图的质量。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例中的一种应用场景的一个可选的示意图;
图2为本申请实施例中的一种阴影区域像素点识别方法的流程图;
图3为本申请实施例中的一种三角形重心的示意图;
图4为本申请实施例中的一种光照贴图的示意图;
图5A为本申请实施例中的一种发射射线的示意图;
图5B为本申请实施例中的一种像素点偏移的示意图;
图5C为本申请实施例中的另一种像素点偏移的示意图;
图6为本申请实施例中的一种光照渲染方法的流程图;
图7为本申请实施例中的一种半球面的示意图;
图8为本申请实施例中的一种光照渲染工具的操作界面示意图;
图9A为本申请实施例中的一种光照渲染的效果图;
图9B为本申请实施例中的另一种光照渲染的效果图;
图10为本申请实施例中的一个可选的光照渲染实现时序流程示意图;
图11为本申请实施例中的一种阴影区域像素点识别装置的组成结构示意图;
图12为本申请实施例中的一种光照渲染装置的组成结构示意图;
图13为本申请实施例中的一种电子设备的组成结构示意图;
图14为应用本申请实施例的一种计算装置的一个硬件组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
下面对本申请实施例中涉及的部分概念进行介绍。
1、光照贴图(lightmap):对静态目标物体使用全局光照算法预先生成光照信息的图片。其中,全局光照是三维软件中的特有名词,光具有反射和折射的性质。在真实的大自然中,光从太阳照射到地面是经过无数次的反射和折射的,所以我们看到地面的任何地方都是清晰的(白天),在三维软件中,里面的光虽然也具有现实当中光的所有性质,但是光的辐射能传递却不是很明显。全局光照开启前三维软件仅会计算阴暗面以及光亮面,而开启后将会计算光的反射、折射等各种光效。
在本申请实施例中,一个物体对应的光照贴图是用于给该物体进行光照渲染的,类似色彩渲染光照渲染用于为物体渲染光照效果,以模拟真实场景下光照对物体的影响。光照贴图中每个像素点都有相对应的光照信息,也就像素值或颜色值,通过像素点的光照信息则可对物体进行光照渲染。
2、光栅化(rasterization):是把顶点数据转换为片元的过程,具有将图转化为一个个栅格组成的图像的作用,特点是每个元素对应帧缓冲区中的一像素。光栅化就是把顶点数据转换为片元的过程。片元中的每一个元素对应于帧缓冲区中的一个像素。光栅化其实是一种将几何图元变为二维图像的过程。在本申请实施例中,光栅化就是把由一个个三角面组成的物体转换为三角形的过程,可以得到三角形各个顶点的UV坐标等信息。此外,根据三角形顶点的位置进行光栅化插值可以确定需要多少个像素点才能构成这个三角形,以及每个像素点都应该得到哪些信息,比如UV坐标、切线、法线等信息。
其中,UV坐标指纹理坐标,是二维空间的坐标。其中水平方向是U,垂直方向是V,U和V坐标的数值范围都是0到1。
3、光照贴图的GBuffer数据:是以光照贴图的大小为分辨率的buffer信息,其中包括位置、切线、法线、纹理等多种光栅化插值后的数据。区别于普通的仅将颜色渲染到纹理中,GBuffer指包含位置信息、法线信息、切线信息、纹理信息等的缓冲区。
4、重心坐标:在三角形中,重心坐标也叫面积坐标,因为s点(重心)关于三角形abc的重心坐标和三角形sbc,sca及sab的(有向)面积成比例。在本申请实施例中,通过三角形重心坐标的方法可以计算光栅化插值后的数据。
5、路径跟踪(pathtracing):是第一个无偏(Unbiased)的渲染方法。路径追踪方法的基本思想是从视点发出一条光线,光线与目标物体表面相交时根据表面的材质属性继续采样一个方向,发出另一条光线,如此迭代,直到光线打到光源上(或逃逸出场景),然后用蒙特卡洛方法,计算光线的贡献,作为像素的颜色值。而使用蒙特卡洛方法对积分的求解是无偏的,只要时间足够长,最终图像能收敛到一个正确的结果。在本申请实施例中,主要是通过路径追踪方法可渲染出对应像素点的光照信息,进而根据像素点的光照信息则可对物体进行光照渲染。
6、纹素(Texel,textureelement或texture pixel的合成字):是纹理元素的简称,它是计算机图形纹理空间中的基本单元。如同图像是由像素排列而成,纹理是由纹素排列表示的。在对三维表面铺设纹理的时候,通过纹理映射技术将纹素映射到恰当的输出图像像素上。在本申请实施例中的纹素与像素相对应。
7、世界坐标系:是系统的绝对坐标系,在没有建立用户坐标系之前画面上所有点的坐标都是以该坐标系的原点来确定各自的位置的。在本申请实施例中,世界坐标系为三维坐标系,在世界坐标系中的点即物体表面的点的坐标叫做世界坐标。
8、非光照面:指一个物体接受不到光照的区域的表面。在本申请实施例中,接受不到光照的物体面为物体的背面,该部分区域的光线会被遮挡,其中物体的正面或背面是根据世界坐标系下物体的法线进行区分的。
9、蒙特卡洛方法:又叫蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
10、目标场景:指包含三维模型的场景,在本申请实施例中,目标场景指游戏场景、动画场景等。目标场景中的三维模型即本申请实施例中的物体,以目标场景为游戏场景为例,游戏场景中的物体包括房子、树木、车辆等。
11、像素点:指一个像素的中心位置。在本申请实施例中的像素不是一个点,而是一个小方格的形式,例如图4所示的由很多像素组成的光照贴图,其中一个小方格代表一个像素,像素的中心即像素点。
下面对本申请实施例的设计思想进行简要介绍:
随着计算机技术的发展,美术场景制作得到了越来越广泛的应用,例如在游戏开发、动画制作、视频处理等领域,各种美术场景的呈现越来越精细、美观。为了进一步优化美术场景的制作效果,满足用户对画面的需求,需要对美术场景的光照效果进行处理。
常见的处理方式为添加光照贴图,对静态目标物体使用全局光照算法预先生成光照信息。相关技术中,常使用通用的光栅化方法生成光照贴图的GBuffer数据,之后根据GBuffer数据,采用路径跟踪进行光照渲染,具体可分为以下两个步骤:
首先通过简单光栅化或者通用的光栅化生成光照贴图的GBuffer数据。其中GBuffer的每个像素点中包含该像素点经过光栅化插值后的位置信息、法线信息、切线信息、纹理信息等。
之后,针对每个光照贴图中的GBuffer的像素点,用路径跟踪的方法生成渲染信息。其中路径跟踪的起始位置是GBuffer中缓存的位置信息,起始方向是由起点至以法线为中心的半球面上的一个随机位置的方向。
然而,使用通用的光栅化生成的光照贴图的GBuffer数据会产生阴影泄露的问题。当光照贴图的分辨率比较低时,单个光照贴图纹素坐标可能会跨越多个区域,如果区域一部分恰好在阴影内部,一部分在阴影外部,并且采样点恰好在阴影区域内,就会产生阴影泄露的问题。例如多个区域包括被墙壁挡住的区域和没有被墙壁挡住的区域时,在墙壁与墙壁之间的交接处就容易出现阴影泄露的问题。
常见的处理阴影泄露的问题的方法是增加光照贴图的分辨率,但是增加分辨率不仅会增加光照贴图的存储空间,还会带来渲染效率的问题。
有鉴于此,本申请实施例提供一种阴影区域像素点识别及光照渲染方法、装置、电子设备和存储介质。首先本申请实施例中提出了一种对阴影区域的像素点进行识别的方法,可以有效检测出位于阴影区域内的像素点,进一步再次基础上,识别出阴影区域的像素点之后,则可对阴影区域的像素点进行偏移处理,使像素点由被遮挡的位置偏移到不被遮挡的位置,从而使偏移后像素点不再位于阴影区域内,不需要增加光照贴图的分辨率。基于偏移后的像素点以及未偏移的像素点再进行光照渲染时,可以有效减小阴影泄露的问题。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示,其为本申请实施例的应用场景示意图。该应用场景图中包括两个终端设备110和一个服务器130,可通过终端设备110登录光照渲染工具的操作界面120。终端设备110与服务器130之间可以通过通信网络进行通信。
在一种可选的实施方式中,通信网络是有线网络或无线网络。
在本申请实施例中,终端设备110为用户使用的电子设备,该电子设备可以是个人计算机、手机、平板电脑、笔记本、电子书阅读器等具有一定计算能力并且运行有即时通讯类软件及网站或者社交类软件及网站的计算机设备。各终端设备110通过无线网络与服务器130连接,服务器130是一台服务器或若干台服务器组成的服务器集群或云计算中心,或者是一个虚拟化平台。
在本申请实施例中,终端设备110用于接收用户通过光照渲染工具的操作界面120触发的光照渲染任务,并通过与服务器130之间的通信,实现阴影区域像素点的识别以及光照渲染。
参阅图2所示,为本申请实施例提供的一种阴影区域像素点识别方法的实施流程图,应用于图1所示的终端设备110或者是服务器130,该方法的具体实施流程如下:
S21:获取目标场景中目标物体的光照贴图;
在本申请实施例中,目标场景指游戏场景、动画场景等。目标场景中的三维模型即物体,以目标场景为游戏场景为例,游戏场景中的物体可以是房子、树木、车辆等。游戏场景中的物体一般都有相对应的光照贴图,以使游戏场景中的物体可以模拟实际光线变化产生光影效果。
S22:根据光照贴图中像素点的各个相邻像素点与像素点之间的距离,确定像素点对应的覆盖半径;
在本申请实施例中,一个物体的表面是由若干三角面拼接而成的,当对目标物体进行通用的光栅化处理后,则可在光照贴图中得到若干三角形,以及各三角形顶点的GBuffer数据,包括位置信息、法线信息、切线信息、纹理信息等。
此外,通过通用的光栅化算法则可计算出GBuffer中的插值信息,也就是计算出三角形内部的像素点的插值信息。
其中,插值信息包括位置信息、法线信息、切线信息、纹理信息等。
需要说明的是,本申请实施例中的位置信息指世界坐标系下的三维坐标信息,可用(x,y,z)表示,其中x表示水平方向,y表示垂直方向,z表示深度方向;纹理信息指二维空间下的二维坐标信息,可用(U,V)表示,其中U表示水平方向,V表示垂直方向。
其中,切线信息是指切平面、切向量或是切线方向等信息;法线信息是指法平面、法向量或是法线方向等信息。
在本申请实施例中,因为U,V的变化对x的影响是线性的,对y,z的影响是线性的。假设某一三角形中一个顶点的位置坐标为(x,y,z),纹理坐标为(U,V),则可取d(x,y,z)/dU表示该顶点对应的切线T,d(x,y,z)/dV为副法线Q,则该顶点对应的法线N=T×Q。
需要说明的是,上述仅是本申请实施例中所列举的一种切线信息以及法线信息的表示形式,其它表示形式也适用于本申请实施例,再此不做具体限定。
在一种可选的实施方式中,通过计算三角形重心坐标的方法计算像素点的插值信息,详细过程如下:
以图3所示的像素点s为例,s像素点所在三角形为三角形abc。将该像素点s作为三角形abc的重心,连接三角形重心s与顶点a、b、c,将三角形分成三份,分别为sbc、sac、sab。假设重心s的坐标为(α,β,γ),则重心坐标的计算公式为:
α=Aa/A,β=Ab/A,γ=Ac/A。
其中,A=Aa+Ab+Ac,Aa表示三角形sbc的面积,Ab表示三角形sac的面积,Ac表示三角形sab的面积。
在根据重心坐标计算插值信息时,计算公式如下:
Value=α*ValueA+β*ValueB+γ*ValueC。
其中,Value可以表示位置信息、切线信息、法线信息、纹理信息等中的任意一种。
以Value表示位置信息为例,在计算像素点s的位置信息时,上述计算公式中的ValueA应代入顶点a的位置信息,ValueB应代入顶点b的位置信息,ValueC应代入顶点c的位置信息,此时通过上述计算公式计算得到的Value则表示像素点s的位置信息。
例如,顶点a的位置信息表示为(x1,y1,z1);顶点b的位置信息表示为(x2,y2,z2);顶点c的位置信息表示为(x3,y3,z3);假设像素点s的位置信息表示为(x0,y0,z0),则:
x0=α*x1+β*x2+γ*x3;
y0=α*y1+β*y2+γ*y3;
z0=α*z1+β*z2+γ*z3。
此外,Value表示切线信息、法线信息或纹理信息等插值信息时也是同理。
在本申请实施例中,像素点与各个相邻像素点之间的距离是根据像素点的世界坐标以及各个相邻像素点的世界坐标确定的。
其中,一个像素点所对应的各个相邻像素点包括在光照贴图中,该像素点上下左右相邻的像素点,如图4所示,其中针对像素点A,该像素点对应的各个相邻像素点为其上下左右的四个像素点:B、C、D、E。
其中,像素点的世界坐标是世界坐标系下的三维坐标,以(x,y,z)表示。
在一种可选的实施方式中,根据像素点所在目标物体的光照贴图中像素点的各个相邻像素点与像素点之间的距离,确定像素点对应的覆盖半径时,具体可分为以下几种方式:
确定方式一、确定像素点与各个相邻像素点之间的平均距离,将确定的平均距离与预设比例之积作为覆盖半径。
在本申请实施例中,根据三维物体映射后的光照贴图可确定出任意一个像素点的相邻像素点,在计算像素点与各个相邻像素点之间的距离时,则是根据像素点在世界坐标系下的三维坐标,也就是世界坐标来确定的。
以像素点A为例,参阅图4所示,像素点A的各个相邻像素点为:像素点B、像素点C、像素点D、像素点E。
假设像素点A所对应的世界坐标为(xa,ya,za),像素点A的各个相邻像素点所对应的世界坐标分别为:B(xb,yb,zb),C(xc,yc,zc),D(xd,yd,zd),E(xe,ye,ze)。
则像素点A与像素点B之间的距离dab为:
Figure BDA0002378343920000131
同理,像素点A与像素点C之间的距离为dac,像素点A与像素点D之间的距离为dad,像素点A与像素点E之间的距离为dae
因而像素点A与各个相邻像素点之间的平均距离d=(dab+dac+dad+dae)/4。假设预设比例为α,则像素点A所对应的覆盖半径为d*r。
确定方式二、确定像素点与各个相邻像素点之间的最大距离,将确定的最大距离与预设比例之积作为覆盖半径。
仍以像素点A为例,假设dab、dac、dad、dae中最大的距离为dac,则像素点A所对应的覆盖半径为dac*r。
可选的,像素点与各个相邻像素点之间的最大距离还可以为所有方向上的最大距离,也就是x,y,z三个方向上的最大距离。
假设水平临近最大值为ddx,垂直临近最大值是ddy,深度临近最大值是ddz,则最大距离为所有朝向的最大值:max(ddx,max(ddy,ddz))。
所以,像素点A所对应的覆盖半径为max(ddx,max(ddy,ddz))*r。
在本申请实施例中,预设比例可以有很多种设定方式,例如预设比例r一般取1/2。如果考虑上对角线距离时,预设比例r取
Figure BDA0002378343920000132
假设dd=max(ddx,max(ddy,ddz)),则在考虑上对角线距离的情况下,像素点A所对应的覆盖半径为
Figure BDA0002378343920000133
需要说明的是,本申请实施例中所列举的确定覆盖半径的方式也只是举例说明,任何一种确定覆盖半径的方式都适用于本申请实施例。
S23:以像素点为起点,若沿着像素点的至少一个切线方向发射的一条射线与目标场景中任意一个物体的非光照面相交,且射线的长度与覆盖半径相同,则确定像素点位于阴影区域。
其中,以像素点为起点是指以像素点在世界坐标系下的世界坐标位置为起点,像素点的切线方向则是根据上述实施例中所列举的像素点插值信息中的切线信息确定的。
以图4所示像素点A为例,根据像素点A所在三角形中各顶点的切线信息则可计算得到像素点A的切线信息,假设像素点A的切线信息表示为切线TA,同理,假设像素点A的法线信息表示法线NA,则将切线TA沿着法线NA作不同角度的旋转可生成多个切线,对应多个切线方向。
在发射射线时,一种可选的实施方式为:随机选择一个切线方向发射几条射线,这几条射线为同一个切线方向上发射的多条射线.
另一种可选的实施方式为:随机选择几个不同的切线方向,沿着每个切线方向发射一条射线,此时多条射线为沿着不同切线方向发射的。
此外,在发射射线时,可以同时发射多条射线,也可以每次只发射一条射线,直至有一条射线与目标场景中的一个物体的非光照面相交时停止发射,或者在发射次数达到上限时停止发射。
其中,以游戏场景为例,假设目标场景中包括房子、树木以及小汽车,其中目标物体为房子,则目标场景中的任意一个物体指房子、树木、小汽车中的任意一个,可以是房子,也可以是树木或小汽车。目标场景中任意一个物体的非光照面可以为目标物体的背面(背离光照的面),也可以为目标场景中除目标物体之外的其他物体的背面。如果有至少一条射线命中了一个物体背面(backface),则可重新计算GBuffer中该像素点的插值信息,更新该像素点的插值信息到GBuffer中。
上述实施方式中,基于像素点与其周围的相邻像素点在世界坐标系的距离则可确定出该像素点对应的覆盖半径,进而依据像素点的覆盖半径发射射线,根据射线与目标场景中物体的非光照面是否相交的方式,则可确定出像素点是否被遮挡,因而可以有效检测位于阴影区域的像素点,其中非光照面指被遮挡的物体面。在此基础上,检测出光照贴图位于阴影区域的像素点之后,则可对像素点进行偏移,以便于提高光照贴图渲染的质量,减少光照渲染时阴影区域的泄露。
在本申请实施例中,若确定像素点位于阴影区域时,则可根据射线与非光照面的交点确定像素点对应的偏移量,并根据偏移量对像素点进行偏移处理,以使偏移处理后像素点位于阴影区域之外。
若有至少两条射线与目标场景中任意一个物体的非光照面相交,则需要从这至少两条射线中选取一条射线,进而根据选取的射线与非光照面的交点来确定偏移量。
可选的,选取的射线为至少两条射线中由射线起点至相交的非光照面的交点之间距离最近的射线。
以图5A所示为例,以像素点A的中心位置作为射线的起点,射线长度为TexelRadius/2,假设有两条射线与目标场景中物体1的两个非光照面相交,其中射线起点至相交的非光照面1的交点之间的距离即像素点A与交点1之间的距离,假设为d1;射线起点至相交的非光照面2的交点之间的距离即像素点A与交点2之间的距离,假设为d2。显然d1<d2,此时从这两条射线中选取的射线为射线1,根据交点1确定像素点A对应的偏移量。
在本申请实施例中,若只有一条射线与目标场景中任意一个物体的非光照面相交,则可直接根据该射线与非光照面的交点确定像素点对应的偏移量。
其中,在根据射线与非光照面的交点确定像素点对应的偏移量,主要可分为以下两种实施方式:
一种可选的实施方式为:将射线的起点至与射线相交的非光照面的交点之间的距离作为偏移量,并将像素点沿着射线的方向移动偏移量。
以图5A所示的像素点A为例,则偏移量为射线1的起点至交点1之间的距离,也就是d1。因而,沿着射线1的方向移动d1后,新位置即交点1,如图5B所示。
以公式表示的话,新位置可通过如下计算公式确定:
new_pos=old_pos+ray.dir*hit.distance;
其中,new_pos表示对像素点进行偏移处理后的新位置,old_pos表示对像素点进行偏移处理前的旧位置,也就是通用的光栅化算法生成的位置,ray.dir表示射线的方向向量,hit.distance表示射线起点至与非光照面的交点之间距离。
另一种可选的实施方式为:偏移量包括第一偏移量和第二偏移量。
具体偏移处理过程为:将射线的起点至与射线相交的非光照面的交点之间的距离作为第一偏移量,以及将预设距离作为第二偏移量;将像素点沿着射线的方向移动第一偏移量,以及将像素点沿着与射线相交的物体的法线方向移动第二偏移量。
其中,相交物体的法线方向为物体的正面的法线方向,也就是光照面1的法线方向。如图5C所示,其中第一偏移量为像素点A至交点1之间的距离,即d1;第二偏移量为d3。因而,先将像素点A的中心位置移动至交点1后,在沿着图5C中所示法线方向移动距离d3,最终像素点A新的中心位置如图5C中所示的新位置。
以公式表示的话,新位置可通过如下计算公式确定:
new_pos=old_pos+ray.dir*hit.distance+hit.face_normal*bias。
其中,new_pos表示对像素点进行偏移处理后的新位置,old_pos表示对像素点进行偏移处理前的旧位置,也就是通用的光栅化算法生成的位置,ray.dir表示射线的方向向量,hit.distance表示射线起点至与非光照面的交点之间距离,hit.face_normal表示射线命中的物体的正面的法向量,bias表示沿着命中物体的正面的法线方向偏移的距离,可以由外部参数设定,即上述实施例中的第二偏移量。
需要说明的是,也可先将像素点A的中心位置沿着与射线相交的物体的法线方向移动第二偏移量,之后再沿着射线的方向移动第一偏移量,在本申请实施例中两种先后顺序都可以,这里不对移动的顺序做具体限定。
在上述实施方式中,通过上述偏移方法可以尽可能使偏移后的像素点处于光照可达区域,以不被遮挡。其中第二偏移量是为了消除浮点数带来的误差,通过该方式进行偏移处理后,得到的新位置更加准确可靠。
参阅图6所示,为本申请实施例提供的一种光照渲染方法的实施流程图,应用于图1所示的终端设备110或者是服务器130,该方法的具体实施流程如下:
S61:获取目标场景中目标物体的光照贴图;
S62:从光照贴图中的各个像素点中识别出处于阴影区域的像素点;
其中,从光照贴图中的各个像素点中识别出处于阴影区域的像素点时,一种可选的实施方式为:
针对光照贴图中的任意一个像素点,根据像素点的各个相邻像素点与像素点之间的距离,确定像素点对应的覆盖半径,其中像素点与各个相邻像素点之间的距离是根据像素点的世界坐标以及各个相邻像素点的世界坐标确定的;
以像素点为起点,若沿着像素点的至少一个切线方向发射的一条射线与目标场景中任意一个物体的非光照面相交,且射线的长度与覆盖半径相同,则确定像素点位于阴影区域。
可选的,根据像素点所在目标物体的光照贴图中,像素点的各个相邻像素点与像素点之间的距离,确定像素点对应的覆盖半径,包括:
确定像素点与各个相邻像素点之间的平均距离,将平均距离与预设比例之积作为覆盖半径;或
确定像素点与各个相邻像素点之间的最大距离,将最大距离与预设比例之积作为覆盖半径。
需要说明的是,此处所列举的任意一种识别出处于阴影区域的像素点方法的具体实施方式可参见上述实施例,例如图2所示的方法,重复之处不再赘述。
S63:对各个像素点中处于阴影区域的像素点进行偏移处理,以使偏移处理后的像素点位于阴影区域之外;
可选的,在对各个像素点中处于阴影区域的像素点进行偏移处理,具体实施方式为:
根据射线与非光照面的交点确定像素点对应的偏移量,并根据偏移量对像素点进行偏移处理,以使偏移处理后像素点位于阴影区域之外。
其中,根据射线与非光照面的交点确定像素点对应的偏移量,并根据偏移量对像素点进行偏移处理时,具体可分为以下两种偏移方式:
偏移方式一、将射线的起点至与射线相交的非光照面的交点之间的距离作为偏移量,并将像素点沿着射线的方向移动偏移量。
偏移方式二、偏移量包括第一偏移量和第二偏移量;
其中,根据射线与非光照面的交点确定像素点对应的偏移量,并根据偏移量对像素点进行偏移处理,包括:
将射线的起点至与射线相交的非光照面的交点之间的距离作为第一偏移量,以及将预设距离作为第二偏移量;
将像素点沿着射线的方向移动第一偏移量,以及将像素点沿着与射线相交的物体的法线方向移动第二偏移量。
可选的,若至少两条射线与目标场景中任意一个物体的非光照面相交,则该射线为至少两条射线中由射线起点至相交的非光照面的交点之间距离最近的射线。
需要说明的是,此处所列举的任意一种偏移处理方法的具体实施方式可参见上述实施例,例如图5B或图5C所示,重复之处不再赘述。
S64:根据偏移处理后的像素点和未偏移处理的像素点,对目标物体进行光照渲染。
本申请实施例中,根据偏移处理后的像素点和未偏移处理的像素点,对目标物体进行渲染光照渲染时,可通过路径追踪算法计算出各个像素点对应的光照信息,进而根据光照信息进行光照渲染。
其中,光照信息也就是颜色值,为RGB(R(red)、G(green)、B(blue),三原色)格式。针对光照贴图中的任意一个像素点,在计算光照信息时主要可分为以下几步:
a)以该像素点作为半球的中心,沿着由半球中心至半球面上的一个随机点的方向发射一条射线,其中半球面是与该像素点的法线正方向所对应的面,半球的半径为单位1。
假设像素点为O,法线N为像素点所对应的法线,法线正方向如图7所示,P为半球面上的一个点,则可沿着由O至P的方向随机发射射线3。
b)如果射线与物体相交,则计算该像素点的像素值;
c)将与相交物体的交点作为半球的中心,沿着由半球中心至半球面上的一个随机点的方向继续发射射线,其中半球面仍是与该像素点的法线正方向所对应的面,半球的半径为单位1;
d)不断置信b)和c)步骤直到满足路径的最大深度(假设最大深度为5~10,基本上就能到达很好的反射效果);
e)在满足路径的最大深度后,继续以该像素点为方向发射射线,进行路径迭代,直到达到最大迭代次数;
f)将多次迭代的结果,使用蒙特卡洛方法计算出该像素点的光照信息,计算方法如下:
Figure BDA0002378343920000191
其中,FN是最终该像素点的光照数据(RGB格式);N是最终执行的迭代次数;f(Xi)是每次路径迭代获取的像素值;pdf(Xi)是每条路径对应的概率分布函数。
在上述步骤a)中,若该像素点为经过偏移处理后的像素点,在该像素点即偏移处理后的新位置,以图5B所示的像素点A为例,则中心位置为交点1;若该像素点为未经过偏移处理的像素点,则该像素点为旧位置,也就是通过通用的光栅化处理得到的位置。
其中,路径追踪是全局光照的一种方法,在直接照明的基础上,光线会进一步在物体与物体之间相互弹射,可以模拟现实光线的特性,从而照亮整个场景。需要说明的是,本申请实施例中所列举的通过路径追踪算法渲染出对应像素点的光照信息的方式只是举例说明,任何一种基于像素点的GBuffer数据渲染出像素点光照信息的方式都适用于本申请实施例,例如光线追踪算法等。
在上述实施方式中,在通过通用的光栅化生成lightmap的GBuffer数据后,再一次通过非均匀光栅化对其中一部分像素点的GBuffer数据进行更新,通过对像素点进行了偏移,提高了像素点处于光线可达区域的概率,因而可以有效减少阴影泄露的问题。此外,该方式不需要增加光照贴图的分辨率,因而不会增加光照贴图的存储空间,也不会降低渲染效率。
以对游戏场景中的物体进行光照渲染为例,为了烘焙物体的光照贴图,会根据物体面积和用户设定的烘焙分辨率,为每个物体分配特定的纹理空间(即UV空间)。每个物体表面会设置多个采样点(即像素点),然后烘焙系统会调用全局光照算法计算每个采样点的光照信息,并在计算完成之后,将光照信息存储至光照贴图中,从而在游戏运行时,通过采样光照贴图完成对物体的渲染。
参阅图8所示,为本申请实施例提供的一种用于光照渲染的软件GPUBaker的操作界面,GPUBaker其中是一个在GPU(Graphics Processing Unit,图形处理器)上实现Lightmap数据烘焙的工具,主要为自研游戏引擎和工作室群提供游戏场景的离线全局光照渲染功能。游戏在渲染光照贴图时需要设置每个物体的光照贴图分辨率,提供物体的每个顶点在光照贴图中的UV信息,在世界坐标系中的法线和切线信息等,渲染核心内容使用路径跟踪算法。
其中,CornellBox是测试全局光照最常用的场景,一个常见的Cornell Box是一个正方形盒子,所有墙壁都是漫反射平面,顶部中央有一盏灯,左右两面墙有不同的颜色,其他的都是白色,随后在场景放置各种各样的物体。
图8所示实施例就是以CornellBox为例进行光照渲染,其中,通过点击Build(建筑)则可使用GPUBaker,其中Rasterization Bias为非均匀光栅化偏移系数,也就是上述实施例中所列举的第二偏移量。
通过图8所示工具,则可实现非均匀光栅化。在通过非均匀光栅化生成的lightmap空间的GBuffer数据后,再进行路径跟踪渲染光照贴图,则可解决大部分的阴影泄露问题。
图9A及图9B所示的两张截图分别是通过普通光栅化和使用改进后的非均匀光栅化进行光照渲染后的对比效果图。
参阅图9A所示,为未对处于阴影区域的像素点进行偏移处理,在根据通用的光栅化处理得到像素点的GBuffer数据后,直接通过路径追踪算法进行光照渲染得到的图像,由图可知,其中有三部分出现阴影泄露。图9B为采用本申请实施例所述光照渲染方法得到的图像,与图9A对比可知,图中的三部分阴影泄露已被消除。
参阅图10所示,为本申请实施例所列举的一种离线光照贴图渲染游戏场景的完整流程图。该方法的具体实施流程如下:
步骤1000:接收目标物体的光照贴图渲染任务;
步骤1001:根据游戏端传过来的光照贴图分辨率后,根据光照贴图的分辨率初始化与其相同大小的二维GBuffer数据;
步骤1002:将目标物体的多组三角面数据按照光照贴图的坐标信息映射到GBuffer空间;
步骤1003:遍历GBuffer中的每个像素点;
步骤1004:遍历映射后的三角形数据;
步骤1005:判断当前遍历的像素点是否在当前遍历的三角形内,如果是,则执行步骤1006,否则,执行步骤1008;
步骤1006:计算该像素点作为三角形重心时在三角形内的重心坐标;
步骤1007:根据重心坐标计算该像素点的插值信息,并且将插值信息存储到GBuffer;
步骤1008:判断当前遍历的三角形是否是最后一个三角形,如果是,则执行步骤1009,否则,返回步骤1004;
步骤1009:判断所有像素点是否都遍历完成,如果是,则执行步骤1010,否则,返回步骤1003;
步骤1010:重新遍历GBuffer的每个像素点;
步骤1011:计算当前遍历的像素点与相邻的像素点所对应的世界坐标在世界坐标系的距离的平均值TexRadius;
步骤1012:以该像素点的世界坐标位置为起点,在该像素点对应的切平面上随机选择一个切线方向发射一条射线,射线长度为TexRadius的一半;
步骤1013:判断发射的射线是否与目标场景内任意一个物体的背面相交,如果是,则执行步骤1014,否则执行步骤1015;
步骤1014:根据交点以及相交物体的法线信息,重新计算该像素点的位置信息,并且更新GBuffer;
步骤1015:判断是否所有像素点都遍历完成,如果是,则执行步骤1016,否则,返回步骤1010;
步骤1016:将更新后的光照贴图的GBuffer数据传输给路径跟踪渲染器;
步骤1017:路径跟踪渲染器以GBuffer中矫正过的像素点的位置信息以及不需要进行矫正的像素点的位置信息作为射线起点,沿着由半球中心至法线正方向所对应的半球面上的随机点的方向发射射线探测;
步骤1018:路径跟踪渲染器根据路径跟踪算法完成光照贴图数据渲染。
其中,步骤1001至步骤1009即通过通用的光栅化算法处理得到各个像素点的GBuffer数据的具体过程;步骤1010至步骤1016即本申请实施例中的识别处于阴影区域中的像素点以及对处于阴影区域中的像素点进行偏移处理,更新GBuffer数据的过程。
在步骤1014中,根据交点以及相交物体的法线信息重新计算该像素点的位置信息时,则可根据new_pos=old_pos+ray.dir*hit.distance+hit.face_normal*bias来进行计算,重复之处不再赘述。
如图11所示,其为阴影区域像素点识别装置1100的结构图,该装置包括:
第一获取单元1101,用于获取目标场景中目标物体的光照贴图;
确定单元1102,用于根据光照贴图中像素点的各个相邻像素点与像素点之间的距离,确定像素点对应的覆盖半径,其中像素点与各个相邻像素点之间的距离是根据像素点的世界坐标以及各个相邻像素点的世界坐标确定的;
第一识别单元1103,用于以像素点为起点,若沿着像素点的至少一个切线方向发射的一条射线与目标场景中任意一个物体的非光照面相交,且射线的长度与覆盖半径相同,则确定像素点位于阴影区域。
可选的,确定单元1102具体用于:
确定像素点与各个相邻像素点之间的平均距离,将平均距离与预设比例之积作为覆盖半径;或
确定像素点与各个相邻像素点之间的最大距离,将最大距离与预设比例之积作为覆盖半径。
可选的,该装置还包括:
第一偏移单元1104,用于根据射线与非光照面的交点确定像素点对应的偏移量,并根据偏移量对像素点进行偏移处理,以使偏移处理后像素点位于阴影区域之外。
可选的,第一偏移单元1104具体用于:
将射线的起点至与射线相交的非光照面的交点之间的距离作为偏移量,并将像素点沿着射线的方向移动偏移量。
可选的,偏移量包括第一偏移量和第二偏移量;
第一偏移单元1104具体用于:
将射线的起点至与射线相交的非光照面的交点之间的距离作为第一偏移量,以及将预设距离作为第二偏移量;
将像素点沿着射线的方向移动第一偏移量,以及将像素点沿着与射线相交的物体的法线方向移动第二偏移量。
可选的,若至少两条射线与目标场景中任意一个物体的非光照面相交,则该射线为至少两条射线中由射线起点至相交的非光照面的交点之间距离最近的射线。
如图12所示,其为光照渲染装置1200的结构示意图,可以包括:
第二获取单元1201,用于获取目标场景中目标物体的光照贴图;
第二识别单元1202,用于从光照贴图中的各个像素点中识别出处于阴影区域的像素点;
第二偏移单元1203,用于对各个像素点中处于阴影区域的像素点进行偏移处理,以使偏移处理后的像素点位于阴影区域之外;
渲染单元1204,用于根据偏移处理后的像素点和未偏移处理的像素点,对目标物体进行光照渲染。
可选的,第二识别单元1202具体用于:
针对光照贴图中的任意一个像素点,根据像素点的各个相邻像素点与像素点之间的距离,确定像素点对应的覆盖半径,其中像素点与各个相邻像素点之间的距离是根据像素点的世界坐标以及各个相邻像素点的世界坐标确定的;
以像素点为起点,若沿着像素点的至少一个切线方向发射的一条射线与目标场景中任意一个物体的非光照面相交,且射线的长度与覆盖半径相同,则确定像素点位于阴影区域。
可选的,第二识别单元1202具体用于:
确定像素点与各个相邻像素点之间的平均距离,将平均距离与预设比例之积作为覆盖半径;或
确定像素点与各个相邻像素点之间的最大距离,将最大距离与预设比例之积作为覆盖半径。
可选的,第二偏移单元1203具体用于:
针对光照贴图中的任意一个像素点,根据射线与非光照面的交点确定像素点对应的偏移量,并根据偏移量对像素点进行偏移处理。
可选的,第二偏移单元1203具体用于:
将射线的起点至与射线相交的非光照面的交点之间的距离作为偏移量,并将像素点沿着射线的方向移动偏移量。
可选的,偏移量包括第一偏移量和第二偏移量;
第二偏移单元1203具体用于:
将射线的起点至与射线相交的非光照面的交点之间的距离作为第一偏移量,以及将预设距离作为第二偏移量;
将像素点沿着射线的方向移动第一偏移量,以及将像素点沿着与射线相交的物体的法线方向移动第二偏移量。
可选的,若至少两条射线与目标场景中任意一个物体的非光照面相交,则该射线为至少两条射线中由射线起点至相交的非光照面的交点之间距离最近的射线。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本申请的电子设备1300可以至少包括至少一个处理器1301、以及至少一个存储器1302。其中,存储器1302存储有程序代码,当程序代码被处理器1301执行时,使得处理器1301执行本说明书上述描述的根据本申请各种示例性实施方式的阴影区域像素点识别方法或光照渲染方法中的步骤。例如,处理器1301可以执行如图2或图6中所示的步骤。
在一些可能的实施方式中,根据本申请的计算装置可以至少包括至少一个处理单元、以及至少一个存储单元。其中,存储单元存储有程序代码,当程序代码被处理单元执行时,使得处理单元执行本说明书上述描述的根据本申请各种示例性实施方式的阴影区域像素点识别方法或光照渲染方法中的步骤。例如,处理单元可以执行如图2或图6中所示的步骤。
下面参照图14来描述根据本申请的这种实施方式的计算装置140。图14的计算装置140仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图14,计算装置140以通用计算装置的形式表现。计算装置140的组件可以包括但不限于:至少一个处理单元141、上述至少一个存储单元142、连接不同系统组件(包括存储单元142和处理单元141)的总线143。
总线143表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元142可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1421和/或高速缓存存储单元1422,还可以进一步包括只读存储器(ROM)1423。
存储单元142还可以包括具有一组(至少一个)程序模块1424的程序/实用工具1425,这样的程序模块1424包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算装置140也可以与一个或多个外部设备144(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算装置140交互的设备通信,和/或与使得该计算装置140能与一个或多个其它计算装置进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口145进行。并且,计算装置140还可以通过网络适配器146与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器146通过总线143与用于计算装置140的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置140使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在一些可能的实施方式中,本申请提供的阴影区域像素点识别方法或光照渲染方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的阴影区域像素点识别方法或光照渲染方法中的步骤,例如,计算机设备可以执行如图2或图6中所示的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的阴影区域像素点识别方法或光照渲染的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算装置上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算装置上部分在远程计算装置上执行、或者完全在远程计算装置或服务器上执行。在涉及远程计算装置的情形中,远程计算装置可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算装置,或者,可以连接到外部计算装置(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序命令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序命令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的命令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序命令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的命令产生包括命令装置的制造品,该命令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序命令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的命令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (15)

1.一种阴影区域像素点识别方法,其特征在于,该方法包括:
获取目标场景中目标物体的光照贴图;
根据所述光照贴图中像素点的各个相邻像素点与所述像素点之间的距离,确定所述像素点对应的覆盖半径,其中所述像素点与各个所述相邻像素点之间的距离是根据所述像素点的世界坐标以及各个所述相邻像素点的世界坐标确定的;
以所述像素点为起点,若沿着所述像素点的至少一个切线方向发射的一条射线与所述目标场景中任意一个物体的非光照面相交,且所述射线的长度与所述覆盖半径相同,则确定所述像素点位于阴影区域。
2.如权利要求1所述的方法,其特征在于,所述根据所述光照贴图中像素点的各个相邻像素点与所述像素点之间的距离,确定所述像素点对应的覆盖半径,包括:
确定所述像素点与各个所述相邻像素点之间的平均距离,将所述平均距离与预设比例之积作为所述覆盖半径;或
确定所述像素点与各个所述相邻像素点之间的最大距离,将所述最大距离与预设比例之积作为所述覆盖半径。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述射线与所述非光照面的交点确定所述像素点对应的偏移量,并根据所述偏移量对所述像素点进行偏移处理,以使偏移处理后所述像素点位于阴影区域之外。
4.如权利要求3所述的方法,其特征在于,所述根据所述射线与所述非光照面的交点确定所述像素点对应的偏移量,并根据所述偏移量对所述像素点进行偏移处理,包括:
将所述射线的起点至与所述射线相交的非光照面的交点之间的距离作为所述偏移量,并将所述像素点沿着所述射线的方向移动所述偏移量。
5.如权利要求3所述的方法,其特征在于,所述偏移量包括第一偏移量和第二偏移量;
所述根据所述射线与所述非光照面的交点确定所述像素点对应的偏移量,并根据所述偏移量对所述像素点进行偏移处理,包括:
将所述射线的起点至与所述射线相交的非光照面的交点之间的距离作为所述第一偏移量,以及将预设距离作为所述第二偏移量;
将所述像素点沿着所述射线的方向移动所述第一偏移量,以及将所述像素点沿着与所述射线相交的物体的法线方向移动所述第二偏移量。
6.如权利要求3~5任一项所述的方法,其特征在于,若至少两条射线与所述目标场景中任意一个物体的非光照面相交,则所述射线为所述至少两条射线中由射线起点至相交的非光照面的交点之间距离最近的射线。
7.一种光照渲染方法,其特征在于,该方法包括:
获取目标场景中目标物体的光照贴图;
从所述光照贴图中的各个像素点中识别出处于阴影区域的像素点;
对所述各个像素点中处于阴影区域的像素点进行偏移处理,以使偏移处理后的像素点位于阴影区域之外;
根据偏移处理后的像素点和未偏移处理的像素点,对所述目标物体进行光照渲染。
8.如权利要求7所述的方法,其特征在于,所述从所述光照贴图中的各个像素点中识别出处于阴影区域的像素点,包括:
针对所述光照贴图中的任意一个像素点,根据所述像素点的各个相邻像素点与所述像素点之间的距离,确定所述像素点对应的覆盖半径,其中所述像素点与各个所述相邻像素点之间的距离是根据所述像素点的世界坐标以及各个所述相邻像素点的世界坐标确定的;
以所述像素点为起点,若沿着所述像素点的至少一个切线方向发射的一条射线与所述目标场景中任意一个物体的非光照面相交,且所述射线的长度与所述覆盖半径相同,则确定所述像素点位于阴影区域。
9.如权利要求8所述的方法,其特征在于,所述对所述各个像素点中处于阴影区域的像素点进行偏移处理,包括:
针对所述光照贴图中的任意一个像素点,根据所述射线与所述非光照面的交点确定所述像素点对应的偏移量,并根据所述偏移量对所述像素点进行偏移处理。
10.如权利要求9所述的方法,其特征在于,所述根据所述射线与所述非光照面的交点确定所述像素点对应的偏移量,并根据所述偏移量对所述像素点进行偏移处理,包括:
将所述射线的起点至与所述射线相交的非光照面的交点之间的距离作为所述偏移量,并将所述像素点沿着所述射线的方向移动所述偏移量。
11.如权利要求9所述的方法,其特征在于,所述偏移量包括第一偏移量和第二偏移量;
所述根据所述射线与所述非光照面的交点确定所述像素点对应的偏移量,并根据所述偏移量对所述像素点进行偏移处理,包括:
将所述射线的起点至与所述射线相交的非光照面的交点之间的距离作为所述第一偏移量,以及将预设距离作为所述第二偏移量;
将所述像素点沿着所述射线的方向移动所述第一偏移量,以及将所述像素点沿着与所述射线相交的物体的法线方向移动所述第二偏移量。
12.一种阴影区域像素点识别装置,其特征在于,包括:
第一获取单元,用于获取目标场景中目标物体的光照贴图;
确定单元,用于根据所述光照贴图中像素点的各个相邻像素点与所述像素点之间的距离,确定所述像素点对应的覆盖半径,其中所述像素点与各个所述相邻像素点之间的距离是根据所述像素点的世界坐标以及各个所述相邻像素点的世界坐标确定的;
第一识别单元,用于以所述像素点为起点,若沿着所述像素点的至少一个切线方向发射的一条射线与所述目标场景中任意一个物体的非光照面相交,且所述射线的长度与所述覆盖半径相同,则确定所述像素点位于阴影区域。
13.一种光照渲染装置,其特征在于,该装置包括:
第二获取单元,用于获取目标场景中目标物体的光照贴图;
第二识别单元,用于从所述光照贴图中的各个像素点中识别出处于阴影区域的像素点;
第二偏移单元,用于对所述各个像素点中处于阴影区域的像素点进行偏移处理,以使偏移处理后的像素点位于阴影区域之外;
渲染单元,用于根据偏移处理后的像素点和未偏移处理的像素点,对所述目标物体进行光照渲染。
14.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~11中任一项方法所述的步骤。
15.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述程序代码 在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1~11中任一项方法所述的步骤。
CN202010075307.3A 2020-01-22 2020-01-22 像素点识别及光照渲染方法、装置、电子设备和存储介质 Active CN111311723B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN202010075307.3A CN111311723B (zh) 2020-01-22 2020-01-22 像素点识别及光照渲染方法、装置、电子设备和存储介质
JP2022523168A JP7381738B2 (ja) 2020-01-22 2020-10-26 画素点認識及びライトレンダリング方法、装置、電子機器及びコンピュータプログラム
KR1020227006379A KR20220043157A (ko) 2020-01-22 2020-10-26 픽셀 포인트 식별 방법 및 장치, 조명 렌더링 방법 및 장치, 전자 디바이스 및 저장 매체
PCT/CN2020/123495 WO2021147408A1 (zh) 2020-01-22 2020-10-26 像素点识别及光照渲染方法、装置、电子设备和存储介质
EP20916221.3A EP4071723A4 (en) 2020-01-22 2020-10-26 METHOD AND DEVICE FOR IDENTIFICATION OF PIXEL POINTS, METHOD AND DEVICE FOR ILLUMINATION RENDERING, ELECTRONIC DEVICE AND STORAGE MEDIUM
US17/699,791 US20220207820A1 (en) 2020-01-22 2022-03-21 Method and apparatus for recognizing pixel point, illumination rendering method and apparatus, electronic device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010075307.3A CN111311723B (zh) 2020-01-22 2020-01-22 像素点识别及光照渲染方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN111311723A CN111311723A (zh) 2020-06-19
CN111311723B true CN111311723B (zh) 2021-11-02

Family

ID=71158255

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010075307.3A Active CN111311723B (zh) 2020-01-22 2020-01-22 像素点识别及光照渲染方法、装置、电子设备和存储介质

Country Status (6)

Country Link
US (1) US20220207820A1 (zh)
EP (1) EP4071723A4 (zh)
JP (1) JP7381738B2 (zh)
KR (1) KR20220043157A (zh)
CN (1) CN111311723B (zh)
WO (1) WO2021147408A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111311723B (zh) * 2020-01-22 2021-11-02 腾讯科技(深圳)有限公司 像素点识别及光照渲染方法、装置、电子设备和存储介质
CN111870953A (zh) * 2020-07-24 2020-11-03 上海米哈游天命科技有限公司 一种高度图生成方法、装置、设备及存储介质
CN111932664B (zh) * 2020-08-27 2023-06-23 腾讯科技(深圳)有限公司 图像渲染方法、装置、电子设备及存储介质
CN112084984A (zh) * 2020-09-15 2020-12-15 山东鲁能软件技术有限公司 一种基于改进的Mask RCNN的扶梯动作检测方法
CN112316420B (zh) * 2020-11-05 2024-03-22 网易(杭州)网络有限公司 模型渲染方法、装置、设备及存储介质
CN112439196B (zh) * 2020-12-11 2021-11-23 完美世界(北京)软件科技发展有限公司 游戏灯光渲染方法、装置、设备和存储介质
CN112734900A (zh) * 2021-01-26 2021-04-30 腾讯科技(深圳)有限公司 阴影贴图的烘焙方法、装置、设备及计算机可读存储介质
CN113034570A (zh) * 2021-03-09 2021-06-25 北京字跳网络技术有限公司 图像处理方法、装置和电子设备
CN113079409B (zh) * 2021-03-26 2021-11-26 深圳市凉屋游戏科技有限公司 画面渲染方法及画面渲染装置
CN113920238B (zh) * 2021-12-14 2022-03-15 深圳市大头兄弟科技有限公司 一种二维目标图案的三维化方法及相关设备
CN115063517A (zh) * 2022-06-07 2022-09-16 网易(杭州)网络有限公司 游戏中的闪光效果渲染方法及装置、存储介质和电子设备
CN115330640B (zh) * 2022-10-11 2023-01-10 腾讯科技(深圳)有限公司 光照贴图降噪方法、装置、设备和介质
CN115830208B (zh) * 2023-01-09 2023-05-09 腾讯科技(深圳)有限公司 全局光照渲染方法、装置、计算机设备和存储介质
CN116672706B (zh) * 2023-08-03 2023-11-03 腾讯科技(深圳)有限公司 光照渲染方法、装置、终端和存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4804122B2 (ja) * 2005-11-21 2011-11-02 株式会社バンダイナムコゲームス プログラム、テクスチャデータ構造、情報記憶媒体及び画像生成システム
US8947448B2 (en) * 2009-12-24 2015-02-03 Sony Corporation Image processing device, image data generation device, image processing method, image data generation method, and data structure of image file
US8872824B1 (en) * 2010-03-03 2014-10-28 Nvidia Corporation System, method, and computer program product for performing shadowing utilizing shadow maps and ray tracing
CN104463853A (zh) * 2014-11-22 2015-03-25 四川大学 一种基于图像分割的阴影检测与去除算法
CN104933754B (zh) * 2015-06-12 2017-09-19 浙江大学 去像素化轮廓线重建的线性阴影图方法
CN106447761B (zh) * 2016-08-31 2019-03-08 北京像素软件科技股份有限公司 一种阴影渲染方法
US10255717B2 (en) * 2016-11-01 2019-04-09 Nvidia Corporation Geometry shadow maps with per-fragment atomics
CN107730578B (zh) * 2017-10-18 2021-07-23 阿里巴巴(中国)有限公司 光环境遮蔽图的渲染方法、生成效果图的方法和设备
CN107808410B (zh) * 2017-10-27 2021-04-27 网易(杭州)网络有限公司 阴影深度偏移的处理方法及装置
CN109410300A (zh) * 2018-10-10 2019-03-01 苏州好玩友网络科技有限公司 一种游戏场景中的阴影处理方法及装置及终端设备
CN109993823B (zh) * 2019-04-11 2022-11-25 腾讯科技(深圳)有限公司 阴影渲染方法、装置、终端及存储介质
CN111311723B (zh) * 2020-01-22 2021-11-02 腾讯科技(深圳)有限公司 像素点识别及光照渲染方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
EP4071723A4 (en) 2023-06-07
KR20220043157A (ko) 2022-04-05
JP7381738B2 (ja) 2023-11-15
US20220207820A1 (en) 2022-06-30
JP2023501102A (ja) 2023-01-18
CN111311723A (zh) 2020-06-19
EP4071723A1 (en) 2022-10-12
WO2021147408A1 (zh) 2021-07-29

Similar Documents

Publication Publication Date Title
CN111311723B (zh) 像素点识别及光照渲染方法、装置、电子设备和存储介质
US11024077B2 (en) Global illumination calculation method and apparatus
CN107408312B (zh) 光线追踪应用中的有效层次结构遍历
JP6910130B2 (ja) 3dレンダリング方法及び3dレンダリング装置
Szirmay-Kalos et al. Approximate ray-tracing on the gpu with distance impostors
KR101820621B1 (ko) 광선 추적 어플리케이션들에서 트리 순회를 위한 시작 노드 결정
KR102003655B1 (ko) 그래픽 프로세싱에서 셰도우 레이들에 대한 트리 횡단을 위한 시작 노드 결정
US20080143720A1 (en) Method for rendering global illumination on a graphics processing unit
US6567083B1 (en) Method, system, and computer program product for providing illumination in computer graphics shading and animation
US11494970B2 (en) Importance sampling for determining a light map
CN114581589A (zh) 图像处理方法及相关装置
JP5873672B2 (ja) 仮想環境のポイントにおいて受光された光の量の推定方法
KR101447552B1 (ko) 밉맵 레벨 선택 방법 및 이를 이용한 텍스처 매핑 시스템
Hu et al. Interactive approximate rendering of reflections, refractions, and caustics
Papaioannou Real-time diffuse global illumination using radiance hints
Szirmay‐Kalos et al. Specular effects on the gpu: State of the art
US7116333B1 (en) Data retrieval method and system
US11816781B2 (en) Spatial hashing for world-space spatiotemporal reservoir re-use for ray tracing
KR20230013099A (ko) 실시간 깊이 맵을 사용한 지오메트리 인식 증강 현실 효과
JP2009163469A (ja) 大局照明回路
JP4219090B2 (ja) コンピュータグラフィックスシェーディングおよびアニメーションにおいて照明を提供するための方法、システム、およびコンピュータプログラムプロダクト
CN116934950A (zh) 皮肤渲染方法及装置、计算机存储介质、电子设备
Moreau et al. Path Verification for Dynamic Indirect Illumination
Bashford-Rogers et al. Approximate visibility grids for interactive indirect illumination
JPH04259083A (ja) 図形処理装置および図形処理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40024675

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant