CN115375815A - 阴影渲染方法、装置、电子设备及存储介质 - Google Patents

阴影渲染方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115375815A
CN115375815A CN202211072896.5A CN202211072896A CN115375815A CN 115375815 A CN115375815 A CN 115375815A CN 202211072896 A CN202211072896 A CN 202211072896A CN 115375815 A CN115375815 A CN 115375815A
Authority
CN
China
Prior art keywords
shadow
updated
maps
target
updating
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
Application number
CN202211072896.5A
Other languages
English (en)
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202211072896.5A priority Critical patent/CN115375815A/zh
Publication of CN115375815A publication Critical patent/CN115375815A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请提供一种阴影渲染方法、装置、电子设备及存储介质,涉及渲染技术领域。该方法通过预设的阴影贴图更新策略,可对当前帧需要更新的阴影贴图进行标记,从而可根据标记信息对级联阴影贴图进行更新,而根据标记信息对级联阴影贴图进行更新,可有针对性的对阴影贴图进行更新,灵活的调整每帧更新的阴影贴图的数量,免了每帧对所有阴影贴图均进行更新计算所产生的巨大计算量,通过本方法可在不明显影响阴影渲染质量的前提下,适度减少每帧更新的阴影贴图数量,从而可提高阴影渲染效率。

Description

阴影渲染方法、装置、电子设备及存储介质
技术领域
本申请涉及渲染技术领域,具体而言,涉及一种阴影渲染方法、装置、电子设备及存储介质。
背景技术
游戏中进行阴影渲染可使得渲染出更加真实的游戏场景,提升游戏场景的沉浸感,目前常用的阴影渲染方式是通过级联阴影贴图实现阴影的分辨率从远到近越来越清晰。
但是,现有通过级联阴影贴图进行阴影渲染时,由于各级阴影贴图在每帧均进行计算,导致计算量较大,十分消耗设备性能,从而导致阴影渲染的效率较低。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种阴影渲染方法、装置、电子设备及存储介质,以减少阴影渲染时的计算量,提高阴影渲染效率。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供了一种阴影渲染方法,包括:
根据阴影贴图更新策略、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,所述标记信息用于指示当前帧待更新的阴影贴图;
根据所述标记信息,更新级联阴影贴图,得到更新后的级联阴影贴图,所述级联阴影贴图包括至少两级阴影贴图,各级阴影贴图分别对应游戏场景中不同的世界空间范围,各级阴影贴图包括各级阴影贴图所对应的世界空间范围中各像素点的阴影标识;
根据所述更新后的级联阴影贴图、以及预设的阴影纹理信息和光照信息进行阴影渲染,在游戏场景中为当前帧生成阴影。
可选地,所述阴影贴图更新策略包括:更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,所述更新模式包括:允许更新的阴影贴图的数量。
可选地,所述根据阴影贴图更新策略,以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,包括:
确定目标更新模式;
根据所述目标更新模式、以及更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,确定所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级;
根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
可选地,所述根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,包括:
若当前帧为第一帧,则将各级阴影贴图均标记为待更新;
若当前帧不为第一帧,则根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
可选地,所述根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,包括:
根据所述目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息;
若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,对所述初始标记信息进行调整,生成目标标记信息。
可选地,所述根据所述目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息,包括:
若当前帧的目标阴影贴图的累积未更新帧数满足所述目标阴影贴图的更新帧间隔数,则将所述目标阴影贴图标记为待更新,生成初始标记信息,所述目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
可选地,所述若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,对所述初始标记信息进行调整,生成目标标记信息,包括:
若当前帧已标记为待更新的阴影贴图的数量小于所述目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前未标记为待更新的阴影贴图中确定第一目标数量的第一阴影贴图,并将确定出的各第一阴影贴图标记为待更新,生成目标标记信息;所述第一目标数量为所述允许更新的阴影贴图的数量与当前帧已标记为待更新的阴影贴图的数量的差值;
若当前帧已标记为待更新的阴影贴图的数量大于所述目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前已标记为待更新的阴影贴图中确定第二目标数量的第二阴影贴图,并将确定出的各第二阴影贴图的标记由待更新调整为不更新,生成目标标记信息;所述第二目标数量为当前帧已标记为待更新的阴影贴图的数量与所述允许更新的阴影贴图的数量的差值。
可选地,所述根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,包括:
若当前帧的目标阴影贴图的累积未更新帧数大于所述目标阴影贴图的更新帧间隔数,则将所述目标阴影贴图标记为待更新,生成标记信息;或者
若当前帧的目标阴影贴图的累积未更新帧数为所述目标级阴影贴图的更新帧间隔数的两倍,则将所述目标阴影贴图标记为待更新,生成标记信息;所述目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
可选地,所述根据所述标记信息,更新级联阴影贴图,包括:
根据所述标记信息,将所述级联阴影贴图中标记为待更新的阴影贴图进行更新,得到更新后的级联阴影贴图。
可选地,所述将所述级联阴影贴图中标记为待更新的阴影贴图进行更新,包括:
根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外,所述第一深度信息用于表征像素点由世界空间映射到光源视角下时距离光源的距离,所述第二深度信息用于表征像素点由虚拟相机视角下映射到光源视角下时距离光源的距离,所述目标更新阴影贴图为待更新的阴影贴图中的任一阴影贴图;
将处于阴影内的各像素点的阴影标识更新为第一标识,将处于阴影外的各像素点的阴影标识更新为第二标识,所述第一标识用于表征像素点位于阴影内,所述第二标识用于表征像素点位于阴影外。
可选地,所述根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外,包括:
若目标像素点的第一深度信息小于第二深度信息,则确定所述目标像素点位于阴影内;
若目标像素点的第一深度信息大于第二深度信息,则确定所述目标像素点位于阴影外。
可选地,所述生成标记信息之前,包括:
根据所述游戏场景中世界空间与虚拟相机的距离,将所述世界空间划分为多个世界空间范围;
根据各世界空间范围与虚拟相机的距离由近及远,依次建立各世界空间范围与各级阴影贴图的对应关系。
第二方面,本申请实施例还提供了一种阴影渲染装置,包括:生成模块、更新模块及渲染模块;
所述生成模块,用于根据阴影贴图更新策略、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,所述标记信息用于指示当前帧待更新的阴影贴图;
所述更新模块,用于根据所述标记信息,更新级联阴影贴图,得到更新后的级联阴影贴图,所述级联阴影贴图包括至少两级阴影贴图,各级阴影贴图分别对应游戏场景中不同的世界空间范围,各级阴影贴图包括各级阴影贴图所对应的世界空间范围中各像素点的阴影标识;
所述渲染模块,用于根据所述更新后的级联阴影贴图、以及预设的阴影纹理信息和光照信息进行阴影渲染,在游戏场景中为当前帧生成阴影。
可选地,所述阴影贴图更新策略包括:更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,所述更新模式包括:允许更新的阴影贴图的数量。
可选地,所述生成模块,具体用于
确定目标更新模式;
根据所述目标更新模式、以及更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,确定所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级;
根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
可选地,所述生成模块,具体用于
若当前帧为第一帧,则将各级阴影贴图均标记为待更新;
若当前帧不为第一帧,则根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
可选地,所述生成模块,具体用于
根据所述目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息;
若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,对所述初始标记信息进行调整,生成目标标记信息。
可选地,所述生成模块,具体用于
若当前帧的目标阴影贴图的累积未更新帧数满足所述目标阴影贴图的更新帧间隔数,则将所述目标阴影贴图标记为待更新,生成初始标记信息,所述目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
可选地,所述生成模块,具体用于
若当前帧已标记为待更新的阴影贴图的数量小于所述目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前未标记为待更新的阴影贴图中确定第一目标数量的第一阴影贴图,并将确定出的各第一阴影贴图标记为待更新,生成目标标记信息;所述第一目标数量为所述允许更新的阴影贴图的数量与当前帧已标记为待更新的阴影贴图的数量的差值;
若当前帧已标记为待更新的阴影贴图的数量大于所述目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前已标记为待更新的阴影贴图中确定第二目标数量的第二阴影贴图,并将确定出的各第二阴影贴图的标记由待更新调整为不更新,生成目标标记信息;所述第二目标数量为当前帧已标记为待更新的阴影贴图的数量与所述允许更新的阴影贴图的数量的差值。
可选地,所述生成模块,具体用于
若当前帧的目标阴影贴图的累积未更新帧数大于所述目标阴影贴图的更新帧间隔数,则将所述目标阴影贴图标记为待更新,生成标记信息;或者
若当前帧的目标阴影贴图的累积未更新帧数为所述目标级阴影贴图的更新帧间隔数的两倍,则将所述目标阴影贴图标记为待更新,生成标记信息;所述目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
可选地,所述更新模块,具体用于
根据所述标记信息,将所述级联阴影贴图中标记为待更新的阴影贴图进行更新,得到更新后的级联阴影贴图。
可选地,所述更新模块,具体用于
根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外,所述第一深度信息用于表征像素点由世界空间映射到光源视角下时距离光源的距离,所述第二深度信息用于表征像素点由虚拟相机视角下映射到光源视角下时距离光源的距离,所述目标更新阴影贴图为待更新的阴影贴图中的任一阴影贴图;
将处于阴影内的各像素点的阴影标识更新为第一标识,将处于阴影外的各像素点的阴影标识更新为第二标识,所述第一标识用于表征像素点位于阴影内,所述第二标识用于表征像素点位于阴影外。
可选地,所述更新模块,具体用于
若目标像素点的第一深度信息小于第二深度信息,则确定所述目标像素点位于阴影内;
若目标像素点的第一深度信息大于第二深度信息,则确定所述目标像素点位于阴影外。
可选地,所述装置还包括:划分模块、建立模块;
所述划分模块,用于根据所述游戏场景中世界空间与虚拟相机的距离,将所述世界空间划分为多个世界空间范围;
所述建立模块,用于根据各世界空间范围与虚拟相机的距离由近及远,依次建立各世界空间范围与各级阴影贴图的对应关系。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行时执行如第一方面中提供的方法的步骤。
第四方面,本申请实施例提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面提供的方法的步骤。
本申请的有益效果是:
本申请提供一种阴影渲染方法、装置、电子设备及存储介质,本申请的方法通过预设的阴影贴图更新策略,可对当前帧需要更新的阴影贴图进行标记,从而可根据标记信息对级联阴影贴图进行更新,而根据标记信息对级联阴影贴图进行更新,可有针对性的对阴影贴图进行更新,灵活的调整每帧更新的阴影贴图的数量,免了每帧对所有阴影贴图均进行更新计算所产生的巨大计算量,通过本方法可在不明显影响阴影渲染质量的前提下,适度减少每帧更新的阴影贴图数量,从而可提高阴影渲染效率。
另外,参数化了每帧更新的阴影贴图的数量,可以在游戏运行时作为图形参数控制阴影渲染的品质。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的阴影渲染方法的流程示意图一;
图2为本申请实施例提供的阴影渲染方法的流程示意图二;
图3为本申请实施例提供的级联阴影贴图的示意图;
图4为本申请实施例提供的阴影渲染方法的流程示意图三;
图5为本申请实施例提供的阴影渲染方法的流程示意图四;
图6为本申请实施例提供的阴影渲染方法的流程示意图五;
图7为本申请实施例提供的阴影渲染方法的流程示意图六;
图8为本申请实施例提供的阴影渲染方法的流程示意图七;
图9为本申请实施例提供的阴影渲染方法的流程示意图八;
图10为本申请实施例提供的阴影渲染方法的流程示意图九;
图11为本申请实施例提供的一种阴影渲染装置的示意图;
图12为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本公开其中一种实施例中的阴影渲染方法可以运行于本地终端设备或者是服务器。当阴影渲染方法运行于服务器时,该方法则可以基于云交互系统来实现与执行,其中,云交互系统包括服务器和客户端设备。
在一可选的实施方式中,云交互系统下可以运行各种云应用,例如:云游戏。以云游戏为例,云游戏是指以云计算为基础的游戏方式。在云游戏的运行模式下,游戏程序的运行主体和游戏画面呈现主体是分离的,游戏加载方法的储存与运行是在云游戏服务器上完成的,客户端设备的作用用于数据的接收、发送以及游戏画面的呈现,举例而言,客户端设备可以是靠近用户侧的具有数据传输功能的显示设备,如,移动终端、电视机、计算机、掌上电脑等;但是进行信息处理的为云端的云游戏服务器。在进行游戏时,玩家操作客户端设备向云游戏服务器发送操作指令,云游戏服务器根据操作指令运行游戏,将游戏画面等数据进行编码压缩,通过网络返回客户端设备,最后,通过客户端设备进行解码并输出游戏画面。
在一可选的实施方式中,以游戏为例,本地终端设备存储有游戏程序并用于呈现游戏画面。本地终端设备用于通过图形用户界面与玩家进行交互,即,常规的通过电子设备下载安装游戏程序并运行。该本地终端设备将图形用户界面提供给玩家的方式可以包括多种,例如,可以渲染显示在终端的显示屏上,或者,通过全息投影提供给玩家。举例而言,本地终端设备可以包括显示屏和处理器,该显示屏用于呈现图形用户界面,该图形用户界面包括游戏画面,该处理器用于运行该游戏、生成图形用户界面以及控制图形用户界面在显示屏上的显示。
在一种可能的实施方式中,本发明实施例提供了一种阴影渲染方法,通过终端设备提供图形用户界面,其中,终端设备可以是前述提到的本地终端设备,也可以是前述提到的云交互系统中的客户端设备。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
图1为本申请实施例提供的阴影渲染方法的流程示意图一;本方法的执行主体可以是终端设备,通过终端设备可提供图形用户界面,图形用户界面上可显示有游戏场景,终端设备通过执行本方法可对游戏场景中的阴影进行实时渲染并在图形用户界面上进行显示。如图1所示,该方法可包括:
S101、根据阴影贴图更新策略、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,标记信息用于指示当前帧待更新的阴影贴图。
由于游戏场景是实时变化的,而游戏场景的实时变化效果是通过对每一帧图像进行实时渲染所产生的,其中包括对阴影的渲染,可以是对游戏场景中建筑物的阴影的渲染、对虚拟对象阴影的渲染或者是对虚拟道具阴影的渲染等,通过阴影的渲染,可以使得游戏场景更加逼真,增加玩家的游戏沉浸感。
阴影的产生通常是因为存在光源照射,当光源照射到物体上时,会相应产生阴影,而随着光源位置的不断变化,同一物体产生的阴影也是不断变化的,通过每一帧实时更新阴影渲染效果,可实现更加逼真的阴影渲染。
在一种可实现的方式中,阴影渲染是基于级联阴影贴图实现的,级联阴影贴图也即采用多张阴影贴图分别记录游戏场景中不同世界空间范围所包含的像素的阴影信息,通过每帧实时更新级联阴影贴图,可实现每帧阴影的渲染。
可选地,可基于阴影贴图更新策略和当前帧各级阴影贴图的累积未更新帧数,判断当前帧需要更新的阴影贴图有哪些,并对当前帧需要更新的阴影贴图进行标记,生成标记信息。
其中,当前帧各级阴影贴图的累积未更新帧数指的是每一级阴影贴图自身累积未更新帧数,并非各级阴影贴图未更新帧数的总和。不同级阴影贴图当前帧累积未更新帧数可能是不同的,也可能是相同的。这里的各级阴影贴图指的是级联阴影贴图中包含的各级阴影贴图。
S102、根据标记信息,更新级联阴影贴图,得到更新后的级联阴影贴图,级联阴影贴图包括至少两级阴影贴图,各级阴影贴图分别对应游戏场景中不同的世界空间范围,各级阴影贴图包括各级阴影贴图所对应的世界空间范围中各像素点的阴影标识。
由于标记信息里记录了当前帧各级阴影贴图是否需要更新的信息,根据标记信息,则可对级联阴影贴图进行更新,也即,根据标记信息,可对级联阴影贴图中标记为需要更新的阴影贴图进行更新,从而得到更新后的级联阴影贴图。
需要说明的是,各级阴影贴图包含的为各级阴影贴图所对应的世界空间范围中各像素点的阴影标识,各级阴影贴图所对应的世界空间范围不存在重叠,从而级联阴影贴图可以涵盖游戏场景中完整的世界空间范围,这里的阴影标识用于指示像素点是否在阴影内。
在一些实施例中,更新级联阴影贴图也即指对级联阴影贴图中需要更新的阴影贴图中所包含的各像素点的阴影标识进行更新。
S103、根据更新后的级联阴影贴图、以及预设的阴影纹理信息和光照信息进行阴影渲染,在游戏场景中为当前帧生成阴影。
基于更新后的级联阴影贴图,可获取到各像素点的阴影标识,当阴影标识表征像素点在阴影内时,可对在阴影内的像素点叠加预设的阴影纹理信息和光照信息进行阴影渲染,在游戏场景中生成当前帧的阴影。
而对于不在阴影内的像素点,则可仅叠加光照信息进行渲染。
本方法的侧重点在于如何对级联阴影贴图进行更新,而根据更新后的级联阴影贴图、预设阴影纹理信息和光照信息进行阴影渲染可参照阴影渲染的常规技术进行理解。
综上,本申请实施例提供的阴影渲染方法,通过预设的阴影贴图更新策略,可对当前帧需要更新的阴影贴图进行标记,从而可根据标记信息对级联阴影贴图进行更新,而根据标记信息对级联阴影贴图进行更新,可有针对性的对阴影贴图进行更新,避免了每帧对所有阴影贴图均进行更新计算所产生的巨大计算量,通过本方法可在不明显影响阴影渲染质量的前提下,适度减少每帧更新的阴影贴图数量,从而可提高阴影渲染效率。
可选地,阴影贴图更新策略包括:更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,更新模式包括:允许更新的阴影贴图的数量。
更新模式可指示每帧允许更新的阴影贴图的数量,通常,更新模式是与级联阴影贴图所包含的阴影贴图的数量匹配的,以级联阴影贴图包含4张阴影贴图为例,更新模式可包含4种,分别为:每帧更新4个阴影贴图、每帧更新3个阴影贴图、每帧更新2个阴影贴图、每帧更新1个阴影贴图。当然,当级联阴影贴图所包含的阴影贴图的数量发生变化时,更新模式的类型也可适应性改变。
阴影贴图更新策略中可包含更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,不同的更新模式下各级阴影贴图的更新帧间隔数和更新优先级是不同的。
本实施例中以级联阴影贴图包含4张阴影贴图为例,更新模式为每帧更新4个阴影贴图时,各级阴影贴图的更新帧间隔数分别为(1,4,7,15),各级阴影贴图的更新优先级分别为(1级,2级,3级,1级);更新模式为每帧更新3个阴影贴图时,各级阴影贴图的更新帧间隔数分别为(1,2,4,5),各级阴影贴图的更新优先级分别为(1级,3级,2级,4级);更新模式为每帧更新2个阴影贴图时,各级阴影贴图的更新帧间隔数分别为(1,1,2,2),各级阴影贴图的更新优先级分别为(1级,2级,3级,4级);更新模式为每帧更新1个阴影贴图时,各级阴影贴图的更新帧间隔数分别为(1,1,1,1),各级阴影贴图的更新优先级分别为(1级,2级,3级,1级)。
其中,更新帧间隔数为1可以表示每帧均要更新,更新帧间隔数为2则表示隔一帧更新一次,更新帧间隔数为4则表示隔三帧更新一次,依次类推。
值得说明的是,上述每种更新模式下各级阴影贴图的更新帧间隔数可以根据实际情况适应性改变。
图2为本申请实施例提供的阴影渲染方法的流程示意图二;图3为本申请实施例提供的级联阴影贴图的示意图。可选地,步骤S101中,生成标记信息之前,本方法还可包括:
S201、根据游戏场景中世界空间与虚拟相机的距离,将世界空间划分为多个世界空间范围。
S202、根据各世界空间范围与虚拟相机的距离由近及远,依次建立各世界空间范围与各级阴影贴图的对应关系。
如图3所示,其中包含有4个同心圆,圆心为虚拟相机的位置,每个圆对应了级联阴影贴图中的一张阴影贴图,每个圆对应世界空间范围的一部分,距离虚拟相机越近的世界空间范围所对应的阴影贴图的级别越高。
级联阴影贴图中的各级阴影贴图的级数可根据各级阴影贴图所对应的世界空间范围距离虚拟相机的远近确定,可定义各级阴影贴图的级数根据各级阴影贴图所对应的时间空间范围距离虚拟相机的距离由近及远依次变小,阴影贴图所对应的世界空间范围距离虚拟相机越近,对应的级数越高,可表示为1级,随之2级、3级级数依次降低。这是由于世界空间范围距离虚拟相机越近,对于阴影渲染的分辨率要求越高,对应的阴影贴图的级别越高,阴影贴图的更新帧间隔数较小,更新优先级也越高,更新频率更高。
图4为本申请实施例提供的阴影渲染方法的流程示意图三;可选地,步骤S101中,根据阴影贴图更新策略,以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,可以包括:
S401、确定目标更新模式。
通常,在每次执行本方法时,可先根据实际渲染需求确定目标更新模式,目标更新模式从所有更新模式中确定,确定后将不再更改,直到本次渲染结束,下次重新启动渲染时,又可重新确定目标更新模式。
无论选择哪种更新模式,本申请的方法均适用。
S402、根据目标更新模式、以及更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,确定目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级。
基于确定的目标更新模式,基于阴影贴图更新策略所包含的对应关系,可确定在目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级。
S403、根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
在一种可实现的方式中,可基于所确定的目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级,同时结合当前帧各级阴影贴图的累积未更新帧数,判断当前帧需要更新的阴影贴图有哪些,并对各级阴影贴图进行更新标记,对于当前帧需要更新的阴影贴图,可标记为待更新,而无需更新的阴影贴图,可标记为不更新。
图5为本申请实施例提供的阴影渲染方法的流程示意图四;可选地,步骤S101中,根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,可以包括:
S501、若当前帧为第一帧,则将各级阴影贴图均标记为待更新。
需要说明的是,本申请是以级联阴影贴图包含4级阴影贴图;更新模式包含4种模式:每帧更新4个阴影贴图、每帧更新3个阴影贴图、每帧更新2个阴影贴图、每帧更新1个阴影贴图为例进行说明的。当级联阴影贴图和更新模式发生改变时,本方法的技术构思依然成立,同样适用。
第一帧也即游戏启动后的第一帧,当为第一帧时,则将各级阴影贴图均标记为待更新,以达到初始化的效果。
S502、若当前帧不为第一帧,则根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
而对于除第一帧之外的其他任意一帧,可根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
图6为本申请实施例提供的阴影渲染方法的流程示意图五;可选地,步骤S502中,根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,可以包括:
S601、根据目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息。
在当前帧不为第一帧的情况下,首先,可根据当前帧各级阴影贴图的累积未更新帧数和目标更新模式下各级阴影贴图的更新帧间隔数,对各级阴影贴图进行初始标记,生成初始标记信息。
这里进行初始标记的原则是对于任意级阴影贴图只要达到其更新帧间隔数即标记为待更新。
S602、若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,对初始标记信息进行调整,生成目标标记信息。
通过上述初始标记后,可能会存在某一帧标记的待更新的阴影贴图的数量未达到或者是超过目标更新模式所允许更新的阴影贴图数量,此时,则可基于各级阴影贴图的更新优先级,对生成的初始标记信息进行调整,以生成目标标记信息。
可选地,步骤S601中,根据目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息,可以包括:若当前帧的目标阴影贴图的累积未更新帧数满足目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为待更新,生成初始标记信息,目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
以目标阴影贴图为例进行说明,目标阴影贴图可以为各级阴影贴图中的任意一级阴影贴图,无论为哪级阴影贴图,均可按照目标阴影贴图的标记方式进行标记。
在一种可实现的方式中,可判断当前帧的目标阴影贴图的累积未更新帧数是否达到目标阴影贴图的更新帧间隔数,也即,当前帧的目标阴影贴图的累积未更新帧数是否等于目标阴影贴图的更新帧间隔数,若是,则将目标阴影贴图标记为待更新。
举例说明:假设目标更新模式为:每帧更新2张阴影贴图,目标阴影贴图为:2级阴影贴图,基于阴影贴图更新策略所确定的每帧更新2张阴影贴图的模式下,2级阴影贴图的更新帧间隔数为2,也即隔一帧更新一次,而假设2级阴影贴图的累积未更新帧数为1,那么目标阴影贴图的累积未更新帧数刚好达到目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为待更新。而假设2级阴影贴图的累积未更新帧数为0,那么目标阴影贴图的累积未更新帧数未达到目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为不更新。
同理,则可对级联阴影贴图中各级阴影贴图进行初始标记,生成初始标记信息。
图7为本申请实施例提供的阴影渲染方法的流程示意图六;可选地,步骤S602中,若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,对初始标记信息进行调整,生成目标标记信息,可以包括:
S701、若当前帧已标记为待更新的阴影贴图的数量小于目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前未标记为待更新的阴影贴图中确定第一目标数量的第一阴影贴图,并将确定出的各第一阴影贴图标记为待更新,生成目标标记信息;第一目标数量为允许更新的阴影贴图的数量与当前帧已标记为待更新的阴影贴图的数量的差值。
在一些实施例中,在当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量时,又可分为两种情况进行标记调整。
一种情况下,当前帧已标记为待更新的阴影贴图的数量小于目标更新模式下所允许更新的阴影贴图的数量,也即,当前帧标记为待更新的阴影贴图的数量未达到所规定的允许更新的阴影贴图的数量。
如前述所说明的,更新模式为每帧更新3个阴影贴图时,各级阴影贴图的更新帧间隔数分别为(1,2,4,5),各级阴影贴图的更新优先级分别为(1级,3级,2级,4级)。
假设当前帧标记为待更新的阴影贴图的数量为2,分别包括:1级阴影贴图和4级阴影贴图,而目标更新模式下所允许更新的阴影贴图的数量为3,那么,可根据各级阴影贴图的更新优先级,从初始标记信息中当前未标记为待更新(也即标记为不更新)的阴影贴图中确定第一目标数量的第一阴影贴图,这里的第一阴影贴图中“第一”并不是具体指代的意思,只是对所确定出来的第一目标数量的各阴影贴图的一种命名而已,确定出的第一阴影贴图可以同时包含1级、2级等任一级阴影贴图。
其中,第一目标数量可以为:所允许更新的阴影贴图的数量减去当前帧已标记为待更新的阴影贴图的数量,继续上面的举例,那么第一目标数量则为1,也即,需要从初始标记信息中当前未标记为待更新的阴影贴图中确定出1张第一阴影贴图。
可选地,可根据各级阴影贴图的更新优先级,从当前未标记为待更新的阴影贴图(2级和3级)中确定出1张阴影贴图,由于3级的优先级高于2级,那么,则可确定第一阴影贴图为3级阴影贴图,那么可将3级阴影贴图的初始标记信息由不更新调整为待更新。
S702、若当前帧已标记为待更新的阴影贴图的数量大于目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前已标记为待更新的阴影贴图中确定第二目标数量的第二阴影贴图,并将确定出的各第二阴影贴图的标记由待更新调整为不更新,生成目标标记信息;第二目标数量为当前帧已标记为待更新的阴影贴图的数量与允许更新的阴影贴图的数量的差值。
另一种情况下,当前帧已标记为待更新的阴影贴图的数量大于目标更新模式下所允许更新的阴影贴图的数量,也即,当前帧标记为待更新的阴影贴图的数量超过到所规定的允许更新的阴影贴图的数量。
如前述所说明的,更新模式为每帧更新2个阴影贴图时,各级阴影贴图的更新帧间隔数分别为(1,1,2,2),各级阴影贴图的更新优先级分别为(1级,2级,3级,4级)。
假设当前帧标记为待更新的阴影贴图的数量为3,分别包括:1级阴影贴图、2级阴影贴图和4级阴影贴图,而目标更新模式下所允许更新的阴影贴图的数量为2,那么,可根据各级阴影贴图的更新优先级,从初始标记信息中当前已标记为待更新的阴影贴图中确定第二目标数量的第二阴影贴图,这里的第二阴影贴图中“第二”与第一阴影贴图中的“第一”类似,均无指定意义。
其中,第二目标数量可以为:当前帧已标记为待更新的阴影贴图的数量减去所允许更新的阴影贴图的数量,继续上面的举例,那么第二目标数量则为1,也即,需要从当前已标记为待更新的阴影贴图中确定出1张第二阴影贴图。
可选地,可根据各级阴影贴图的更新优先级,从当前已标记为待更新的阴影贴图(1级、2级和4级)中确定出1张阴影贴图,由于1级和2级的优先级均高于4级,那么,则可确定第二阴影贴图为4级阴影贴图,那么可将4级阴影贴图的初始标记信息由待更新调整为不更新。也即,当发生冲突时,保证优先级较高的先更新。
图8为本申请实施例提供的阴影渲染方法的流程示意图七;可选地,步骤S502中,根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,可以包括:
S801、若当前帧的目标阴影贴图的累积未更新帧数大于目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为待更新,生成标记信息。
由于上述对初始标记进行调整的过程中,个别阴影贴图可能因为优先级较低,在更新数量发生冲突时,并未得到更新,导致累积未更新帧数大于更新帧间隔数,为了提高阴影渲染的效率,本方法还可判断在目标阴影贴图的累积未更新帧数大于目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为待更新,从而避免个别级别较低的阴影贴图长时间未得到更新而导致的阴影渲染效果较差的问题。
S802、若当前帧的目标阴影贴图的累积未更新帧数为目标级阴影贴图的更新帧间隔数的两倍,则将目标阴影贴图标记为待更新,生成标记信息;目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
另外,也可以是在目标阴影贴图的累积未更新帧数为目标级阴影贴图的更新帧间隔数的两倍,同样将目标阴影贴图标记为待更新。
需要说明的是,本方法中所设定的各级阴影贴图的更新帧数间隔数只是预期的间隔数,实际应用中,在各更新模式下,各级阴影贴图的实际更新帧间隔数可以是一个范围,更新帧间隔范围可以是在所设定的更新帧数间隔数和2倍更新帧数间隔数之间。
可选地,通过上述方式,可灵活的调整每帧更新的阴影贴图的数量,最少可以减少到每帧仅更新一张阴影贴图,使得在不明显降低阴影渲染质量的前提下提高阴影渲染的效率,而且参数化了每帧更新的阴影贴图的数量,可以在游戏运行时作为图形参数控制阴影渲染的品质。
可选地,步骤S102中,根据标记信息,更新级联阴影贴图,可以包括:根据标记信息,将级联阴影贴图中标记为待更新的阴影贴图进行更新,得到更新后的级联阴影贴图。
图9为本申请实施例提供的阴影渲染方法的流程示意图八;可选地,上述步骤中,将级联阴影贴图中标记为待更新的阴影贴图进行更新,可以包括:
S901、根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外,第一深度信息用于表征像素点由世界空间映射到光源视角下时距离光源的距离,第二深度信息用于表征像素点由虚拟相机视角下映射到光源视角下时距离光源的距离,目标更新阴影贴图为待更新的阴影贴图中的任一阴影贴图。
这里同样是以任一待更新的阴影贴图的更新为例进行说明。针对目标更新阴影贴图中任一像素点,可分别计算像素点的第一深度信息以及第二深度信息,将第一深度信息和第二深度信息进行比较,根据比较结果,确定像素点位于阴影内或者阴影外。
其中,第一深度信息用于表征像素点由世界空间映射到光源视角下时距离光源的距离,可对获取的像素点的世界空间坐标进行坐标映射转换,得到像素点在光源视角下的坐标位置,将像素点在光源视角下的坐标位置与光源位置的距离作为像素点的第一深度信息。
第二深度信息用于表征像素点由虚拟相机视角下映射到光源视角下时距离光源的距离,可对获取的像素点的虚拟相机视角下的坐标进行坐标映射转换,得到像素点在光源视角下的坐标位置,将像素点在光源视角下的坐标位置与光源位置的距离作为像素点的第二深度信息。
S902、将处于阴影内的各像素点的阴影标识更新为第一标识,将处于阴影外的各像素点的阴影标识更新为第二标识,第一标识用于表征像素点位于阴影内,第二标识用于表征像素点位于阴影外。
可选地,基于判断结果,可将目标更新阴影贴图中处于阴影内的像素点的当前阴影标识更新为第一标识,将处于阴影外的像素点的当前阴影标识更新为第二标识。
图10为本申请实施例提供的阴影渲染方法的流程示意图九;可选地,根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外,可以包括:
S1001、若目标像素点的第一深度信息小于第二深度信息,则确定目标像素点位于阴影内。
当目标像素点的第一深度信息小于第二深度信息时,则确定目标像素点位于阴影内,那么可根据预设的阴影纹理信息和光照信息渲染目标像素点,通过对各处于阴影内的像素点均进行阴影渲染,则可生成阴影效果。
S1002、若目标像素点的第一深度信息大于第二深度信息,则确定目标像素点位于阴影外。
当目标像素点的第一深度信息大于第二深度信息时,则确定目标像素点位于阴影外,则可根据光照信息渲染目标像素点,通过对各处于阴影外的像素点均进行渲染,则可生成非阴影效果。
综上,本申请实施例提供的阴影渲染方法,通过预设的阴影贴图更新策略,可对当前帧需要更新的阴影贴图进行标记,从而可根据标记信息对级联阴影贴图进行更新,而根据标记信息对级联阴影贴图进行更新,可有针对性的对阴影贴图进行更新,灵活的调整每帧更新的阴影贴图的数量,免了每帧对所有阴影贴图均进行更新计算所产生的巨大计算量,通过本方法可在不明显影响阴影渲染质量的前提下,适度减少每帧更新的阴影贴图数量,从而可提高阴影渲染效率。
另外,参数化了每帧更新的阴影贴图的数量,可以在游戏运行时作为图形参数控制阴影渲染的品质。
下述对用以执行本申请所提供的阴影渲染方法的装置、设备及存储介质等进行说明,其具体的实现过程以及技术效果参见上述,下述不再赘述。
图11为本申请实施例提供的一种阴影渲染装置的示意图,该阴影渲染装置实现的功能对应上述方法执行的步骤。该装置可以理解为上述的终端设备,如图11所示,该装置可包括:生成模块110、更新模块120及渲染模块130;
生成模块110,用于根据阴影贴图更新策略、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,标记信息用于指示当前帧待更新的阴影贴图;
更新模块120,用于根据标记信息,更新级联阴影贴图,得到更新后的级联阴影贴图,级联阴影贴图包括至少两级阴影贴图,各级阴影贴图分别对应游戏场景中不同的世界空间范围,各级阴影贴图包括各级阴影贴图所对应的世界空间范围中各像素点的阴影标识;
渲染模块130,用于根据更新后的级联阴影贴图、以及预设的阴影纹理信息和光照信息进行阴影渲染,在游戏场景中为当前帧生成阴影。
可选地,阴影贴图更新策略包括:更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,更新模式包括:允许更新的阴影贴图的数量。
可选地,生成模块110,具体用于
确定目标更新模式;
根据目标更新模式、以及更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,确定目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级;
根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
可选地,生成模块110,具体用于
若当前帧为第一帧,则将各级阴影贴图均标记为待更新;
若当前帧不为第一帧,则根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
可选地,生成模块110,具体用于
根据目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息;
若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,对初始标记信息进行调整,生成目标标记信息。
可选地,生成模块110,具体用于
若当前帧的目标阴影贴图的累积未更新帧数满足目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为待更新,生成初始标记信息,目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
可选地,生成模块110,具体用于
若当前帧已标记为待更新的阴影贴图的数量小于目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前未标记为待更新的阴影贴图中确定第一目标数量的第一阴影贴图,并将确定出的各第一阴影贴图标记为待更新,生成目标标记信息;第一目标数量为允许更新的阴影贴图的数量与当前帧已标记为待更新的阴影贴图的数量的差值;
若当前帧已标记为待更新的阴影贴图的数量大于目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前已标记为待更新的阴影贴图中确定第二目标数量的第二阴影贴图,并将确定出的各第二阴影贴图的标记由待更新调整为不更新,生成目标标记信息;第二目标数量为当前帧已标记为待更新的阴影贴图的数量与允许更新的阴影贴图的数量的差值。
可选地,生成模块110,具体用于
若当前帧的目标阴影贴图的累积未更新帧数大于目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为待更新,生成标记信息;或者
若当前帧的目标阴影贴图的累积未更新帧数为目标级阴影贴图的更新帧间隔数的两倍,则将目标阴影贴图标记为待更新,生成标记信息;目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
可选地,更新模块120,具体用于
根据标记信息,将级联阴影贴图中标记为待更新的阴影贴图进行更新,得到更新后的级联阴影贴图。
可选地,更新模块120,具体用于
根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外,第一深度信息用于表征像素点由世界空间映射到光源视角下时距离光源的距离,第二深度信息用于表征像素点由虚拟相机视角下映射到光源视角下时距离光源的距离,目标更新阴影贴图为待更新的阴影贴图中的任一阴影贴图;
将处于阴影内的各像素点的阴影标识更新为第一标识,将处于阴影外的各像素点的阴影标识更新为第二标识,第一标识用于表征像素点位于阴影内,第二标识用于表征像素点位于阴影外。
可选地,更新模块120,具体用于
若目标像素点的第一深度信息小于第二深度信息,则确定目标像素点位于阴影内;
若目标像素点的第一深度信息大于第二深度信息,则确定目标像素点位于阴影外。
可选地,该装置还包括:划分模块、建立模块;
划分模块,用于根据游戏场景中世界空间与虚拟相机的距离,将世界空间划分为多个世界空间范围;
建立模块,用于根据各世界空间范围与虚拟相机的距离由近及远,依次建立各世界空间范围与各级阴影贴图的对应关系。
通过上述方式,当生成模块根据阴影贴图更新策略、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息后,更新模块根据标记信息,更新级联阴影贴图,得到更新后的级联阴影贴图,渲染模块根据更新后的级联阴影贴图、以及预设的阴影纹理信息和光照信息进行阴影渲染,在游戏场景中为当前帧生成阴影。根据标记信息对级联阴影贴图进行更新,可有针对性的对阴影贴图进行更新,灵活的调整每帧更新的阴影贴图的数量,免了每帧对所有阴影贴图均进行更新计算所产生的巨大计算量,通过本方法可在不明显影响阴影渲染质量的前提下,适度减少每帧更新的阴影贴图数量,从而可提高阴影渲染效率。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
上述模块可以经由有线连接或无线连接彼此连接或通信。有线连接可以包括金属线缆、光缆、混合线缆等,或其任意组合。无线连接可以包括通过LAN、WAN、蓝牙、ZigBee、或NFC等形式的连接,或其任意组合。两个或更多个模块可以组合为单个模块,并且任何一个模块可以分成两个或更多个单元。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。
图12为本申请实施例提供的一种电子设备的结构示意图,包括:处理器801、存储介质802和总线803,存储介质802存储有处理器801可执行的机器可读指令,当电子设备运行如实施例中的一种阴影渲染方法时,处理器801与存储介质802之间通过总线803通信,处理器801执行机器可读指令,以执行以下步骤:
根据阴影贴图更新策略、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,标记信息用于指示当前帧待更新的阴影贴图;
根据标记信息,更新级联阴影贴图,得到更新后的级联阴影贴图,级联阴影贴图包括至少两级阴影贴图,各级阴影贴图分别对应游戏场景中不同的世界空间范围,各级阴影贴图包括各级阴影贴图所对应的世界空间范围中各像素点的阴影标识;
根据更新后的级联阴影贴图、以及预设的阴影纹理信息和光照信息进行阴影渲染,在游戏场景中为当前帧生成阴影。
在一个可行的实施方案中,阴影贴图更新策略包括:更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,更新模式包括:允许更新的阴影贴图的数量。
在一个可行的实施方案中,处理器801在执行根据阴影贴图更新策略,以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息时,具体用于:
确定目标更新模式;
根据目标更新模式、以及更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,确定目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级;
根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
在一个可行的实施方案中,处理器801在执行根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息时,具体用于:若当前帧为第一帧,则将各级阴影贴图均标记为待更新;
若当前帧不为第一帧,则根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
在一个可行的实施方案中,处理器801在执行根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息时,具体用于:
根据目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息;
若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,对初始标记信息进行调整,生成目标标记信息。
在一个可行的实施方案中,处理器801在执行根据目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息时,具体用于:若当前帧的目标阴影贴图的累积未更新帧数满足目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为待更新,生成初始标记信息,目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
在一个可行的实施方案中,处理器801在执行若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,对初始标记信息进行调整,生成目标标记信息时,具体用于:
若当前帧已标记为待更新的阴影贴图的数量小于目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前未标记为待更新的阴影贴图中确定第一目标数量的第一阴影贴图,并将确定出的各第一阴影贴图标记为待更新,生成目标标记信息;第一目标数量为允许更新的阴影贴图的数量与当前帧已标记为待更新的阴影贴图的数量的差值;
若当前帧已标记为待更新的阴影贴图的数量大于目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前已标记为待更新的阴影贴图中确定第二目标数量的第二阴影贴图,并将确定出的各第二阴影贴图的标记由待更新调整为不更新,生成目标标记信息;第二目标数量为当前帧已标记为待更新的阴影贴图的数量与允许更新的阴影贴图的数量的差值。
在一个可行的实施方案中,处理器801在执行根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息时,具体用于:
若当前帧的目标阴影贴图的累积未更新帧数大于目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为待更新,生成标记信息;或者
若当前帧的目标阴影贴图的累积未更新帧数为目标级阴影贴图的更新帧间隔数的两倍,则将目标阴影贴图标记为待更新,生成标记信息;目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
在一个可行的实施方案中,处理器801在执行根据标记信息,更新级联阴影贴图时,具体用于:根据标记信息,将级联阴影贴图中标记为待更新的阴影贴图进行更新,得到更新后的级联阴影贴图。
在一个可行的实施方案中,处理器801在执行将级联阴影贴图中标记为待更新的阴影贴图进行更新时,具体用于:
根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外,第一深度信息用于表征像素点由世界空间映射到光源视角下时距离光源的距离,第二深度信息用于表征像素点由虚拟相机视角下映射到光源视角下时距离光源的距离,目标更新阴影贴图为待更新的阴影贴图中的任一阴影贴图;
将处于阴影内的各像素点的阴影标识更新为第一标识,将处于阴影外的各像素点的阴影标识更新为第二标识,第一标识用于表征像素点位于阴影内,第二标识用于表征像素点位于阴影外。
在一个可行的实施方案中,处理器801在执行根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外时,具体用于:
若目标像素点的第一深度信息小于第二深度信息,则确定目标像素点位于阴影内;
若目标像素点的第一深度信息大于第二深度信息,则确定目标像素点位于阴影外。
在一个可行的实施方案中,处理器801在执行生成标记信息之前时,具体用于:
根据游戏场景中世界空间与虚拟相机的距离,将世界空间划分为多个世界空间范围;
根据各世界空间范围与虚拟相机的距离由近及远,依次建立各世界空间范围与各级阴影贴图的对应关系。
通过上述方式,当终端设备通过预设的阴影贴图更新策略,对当前帧需要更新的阴影贴图进行标记后,从而可根据标记信息对级联阴影贴图进行更新,基于更新后的级联阴影贴图,可根据预设的阴影纹理信息和光照信息进行阴影渲染,并在终端设备的图形用户界面上显示游戏场景中阴影。根据标记信息对级联阴影贴图进行更新,可有针对性的对阴影贴图进行更新,灵活的调整每帧更新的阴影贴图的数量,免了每帧对所有阴影贴图均进行更新计算所产生的巨大计算量,通过本方法可在不明显影响阴影渲染质量的前提下,适度减少每帧更新的阴影贴图数量,从而可提高阴影渲染效率。
其中,存储介质802存储有程序代码,当程序代码被处理器801执行时,使得处理器801执行本说明书上述“示例性方法”部分中描述的根据本申请各种示例性实施方式的方法中的各种步骤。
处理器801可以是通用处理器,例如中央处理器(CPU)、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储介质802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储介质802还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
可选地,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行,处理器执行以下步骤:
根据阴影贴图更新策略、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,标记信息用于指示当前帧待更新的阴影贴图;
根据标记信息,更新级联阴影贴图,得到更新后的级联阴影贴图,级联阴影贴图包括至少两级阴影贴图,各级阴影贴图分别对应游戏场景中不同的世界空间范围,各级阴影贴图包括各级阴影贴图所对应的世界空间范围中各像素点的阴影标识;
根据更新后的级联阴影贴图、以及预设的阴影纹理信息和光照信息进行阴影渲染,在游戏场景中为当前帧生成阴影。
在一个可行的实施方案中,阴影贴图更新策略包括:更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,更新模式包括:允许更新的阴影贴图的数量。
在一个可行的实施方案中,处理器801在执行根据阴影贴图更新策略,以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息时,具体用于:
确定目标更新模式;
根据目标更新模式、以及更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,确定目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级;
根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
在一个可行的实施方案中,处理器801在执行根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息时,具体用于:若当前帧为第一帧,则将各级阴影贴图均标记为待更新;
若当前帧不为第一帧,则根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
在一个可行的实施方案中,处理器801在执行根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息时,具体用于:
根据目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息;
若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,对初始标记信息进行调整,生成目标标记信息。
在一个可行的实施方案中,处理器801在执行根据目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息时,具体用于:若当前帧的目标阴影贴图的累积未更新帧数满足目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为待更新,生成初始标记信息,目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
在一个可行的实施方案中,处理器801在执行若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,对初始标记信息进行调整,生成目标标记信息时,具体用于:
若当前帧已标记为待更新的阴影贴图的数量小于目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前未标记为待更新的阴影贴图中确定第一目标数量的第一阴影贴图,并将确定出的各第一阴影贴图标记为待更新,生成目标标记信息;第一目标数量为允许更新的阴影贴图的数量与当前帧已标记为待更新的阴影贴图的数量的差值;
若当前帧已标记为待更新的阴影贴图的数量大于目标更新模式下所允许更新的阴影贴图的数量,则根据目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前已标记为待更新的阴影贴图中确定第二目标数量的第二阴影贴图,并将确定出的各第二阴影贴图的标记由待更新调整为不更新,生成目标标记信息;第二目标数量为当前帧已标记为待更新的阴影贴图的数量与允许更新的阴影贴图的数量的差值。
在一个可行的实施方案中,处理器801在执行根据目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息时,具体用于:
若当前帧的目标阴影贴图的累积未更新帧数大于目标阴影贴图的更新帧间隔数,则将目标阴影贴图标记为待更新,生成标记信息;或者
若当前帧的目标阴影贴图的累积未更新帧数为目标级阴影贴图的更新帧间隔数的两倍,则将目标阴影贴图标记为待更新,生成标记信息;目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
在一个可行的实施方案中,处理器801在执行根据标记信息,更新级联阴影贴图时,具体用于:根据标记信息,将级联阴影贴图中标记为待更新的阴影贴图进行更新,得到更新后的级联阴影贴图。
在一个可行的实施方案中,处理器801在执行将级联阴影贴图中标记为待更新的阴影贴图进行更新时,具体用于:
根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外,第一深度信息用于表征像素点由世界空间映射到光源视角下时距离光源的距离,第二深度信息用于表征像素点由虚拟相机视角下映射到光源视角下时距离光源的距离,目标更新阴影贴图为待更新的阴影贴图中的任一阴影贴图;
将处于阴影内的各像素点的阴影标识更新为第一标识,将处于阴影外的各像素点的阴影标识更新为第二标识,第一标识用于表征像素点位于阴影内,第二标识用于表征像素点位于阴影外。
在一个可行的实施方案中,处理器801在执行根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外时,具体用于:
若目标像素点的第一深度信息小于第二深度信息,则确定目标像素点位于阴影内;
若目标像素点的第一深度信息大于第二深度信息,则确定目标像素点位于阴影外。
在一个可行的实施方案中,处理器801在执行生成标记信息之前时,具体用于:
根据游戏场景中世界空间与虚拟相机的距离,将世界空间划分为多个世界空间范围;
根据各世界空间范围与虚拟相机的距离由近及远,依次建立各世界空间范围与各级阴影贴图的对应关系。
通过上述方式,当终端设备通过预设的阴影贴图更新策略,对当前帧需要更新的阴影贴图进行标记后,从而可根据标记信息对级联阴影贴图进行更新,基于更新后的级联阴影贴图,可根据预设的阴影纹理信息和光照信息进行阴影渲染,并在终端设备的图形用户界面上显示游戏场景中阴影。根据标记信息对级联阴影贴图进行更新,可有针对性的对阴影贴图进行更新,灵活的调整每帧更新的阴影贴图的数量,免了每帧对所有阴影贴图均进行更新计算所产生的巨大计算量,通过本方法可在不明显影响阴影渲染质量的前提下,适度减少每帧更新的阴影贴图数量,从而可提高阴影渲染效率。
在本申请实施例中,该计算机程序被处理器运行时还可以执行其它机器可读指令,以执行如实施例中其它所述的方法,关于具体执行的方法步骤和原理参见实施例的说明,在此不再详细赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (15)

1.一种阴影渲染方法,其特征在于,包括:
根据阴影贴图更新策略、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,所述标记信息用于指示当前帧待更新的阴影贴图;
根据所述标记信息,更新级联阴影贴图,得到更新后的级联阴影贴图,所述级联阴影贴图包括至少两级阴影贴图,各级阴影贴图分别对应游戏场景中不同的世界空间范围,各级阴影贴图包括各级阴影贴图所对应的世界空间范围中各像素点的阴影标识;
根据所述更新后的级联阴影贴图、以及预设的阴影纹理信息和光照信息进行阴影渲染,在游戏场景中为当前帧生成阴影。
2.根据权利要求1所述的方法,其特征在于,所述阴影贴图更新策略包括:更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,所述更新模式包括:允许更新的阴影贴图的数量。
3.根据权利要求2所述的方法,其特征在于,所述根据阴影贴图更新策略,以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,包括:
确定目标更新模式;
根据所述目标更新模式、以及更新模式与各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级的对应关系,确定所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级;
根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,包括:
若当前帧为第一帧,则将各级阴影贴图均标记为待更新;
若当前帧不为第一帧,则根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,包括:
根据所述目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息;
若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,对所述初始标记信息进行调整,生成目标标记信息。
6.根据权利要求5所述的方法,其特征在于,所述根据所述目标更新模式下各级阴影贴图的更新帧间隔数、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行初始更新标记,生成初始标记信息,包括:
若当前帧的目标阴影贴图的累积未更新帧数满足所述目标阴影贴图的更新帧间隔数,则将所述目标阴影贴图标记为待更新,生成初始标记信息,所述目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
7.根据权利要求5所述的方法,其特征在于,所述若当前帧已标记为待更新的阴影贴图的数量不满足目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,对所述初始标记信息进行调整,生成目标标记信息,包括:
若当前帧已标记为待更新的阴影贴图的数量小于所述目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前未标记为待更新的阴影贴图中确定第一目标数量的第一阴影贴图,并将确定出的各第一阴影贴图标记为待更新,生成目标标记信息;所述第一目标数量为所述允许更新的阴影贴图的数量与当前帧已标记为待更新的阴影贴图的数量的差值;
若当前帧已标记为待更新的阴影贴图的数量大于所述目标更新模式下所允许更新的阴影贴图的数量,则根据所述目标更新模式下各级阴影贴图的更新优先级,从初始标记信息中当前已标记为待更新的阴影贴图中确定第二目标数量的第二阴影贴图,并将确定出的各第二阴影贴图的标记由待更新调整为不更新,生成目标标记信息;所述第二目标数量为当前帧已标记为待更新的阴影贴图的数量与所述允许更新的阴影贴图的数量的差值。
8.根据权利要求4所述的方法,其特征在于,所述根据所述目标更新模式下各级阴影贴图的更新帧间隔数以及各级阴影贴图的更新优先级、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,包括:
若当前帧的目标阴影贴图的累积未更新帧数大于所述目标阴影贴图的更新帧间隔数,则将所述目标阴影贴图标记为待更新,生成标记信息;或者
若当前帧的目标阴影贴图的累积未更新帧数为所述目标级阴影贴图的更新帧间隔数的两倍,则将所述目标阴影贴图标记为待更新,生成标记信息;所述目标阴影贴图为各级阴影贴图中的任意一级阴影贴图。
9.根据权利要求1-8任一所述的方法,其特征在于,所述根据所述标记信息,更新级联阴影贴图,包括:
根据所述标记信息,将所述级联阴影贴图中标记为待更新的阴影贴图进行更新,得到更新后的级联阴影贴图。
10.根据权利要求9所述的方法,其特征在于,所述将所述级联阴影贴图中标记为待更新的阴影贴图进行更新,包括:
根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外,所述第一深度信息用于表征像素点由世界空间映射到光源视角下时距离光源的距离,所述第二深度信息用于表征像素点由虚拟相机视角下映射到光源视角下时距离光源的距离,所述目标更新阴影贴图为待更新的阴影贴图中的任一阴影贴图;
将处于阴影内的各像素点的阴影标识更新为第一标识,将处于阴影外的各像素点的阴影标识更新为第二标识,所述第一标识用于表征像素点位于阴影内,所述第二标识用于表征像素点位于阴影外。
11.根据权利要求10所述的方法,其特征在于,所述根据目标更新阴影贴图中各像素点的第一深度信息以及第二深度信息,确定各像素点位于阴影内或者阴影外,包括:
若目标像素点的第一深度信息小于第二深度信息,则确定所述目标像素点位于阴影内;
若目标像素点的第一深度信息大于第二深度信息,则确定所述目标像素点位于阴影外。
12.根据权利要求1所述的方法,其特征在于,所述生成标记信息之前,包括:
根据所述游戏场景中世界空间与虚拟相机的距离,将所述世界空间划分为多个世界空间范围;
根据各世界空间范围与虚拟相机的距离由近及远,依次建立各世界空间范围与各级阴影贴图的对应关系。
13.一种阴影渲染装置,其特征在于,包括:生成模块、更新模块及渲染模块;
所述生成模块,用于根据阴影贴图更新策略、以及当前帧各级阴影贴图的累积未更新帧数,对当前帧各级阴影贴图进行更新标记,生成标记信息,所述标记信息用于指示当前帧待更新的阴影贴图;
所述更新模块,用于根据所述标记信息,更新级联阴影贴图,得到更新后的级联阴影贴图,所述级联阴影贴图包括至少两级阴影贴图,各级阴影贴图分别对应游戏场景中不同的世界空间范围,各级阴影贴图包括各级阴影贴图所对应的世界空间范围中各像素点的阴影标识;
所述渲染模块,用于根据所述更新后的级联阴影贴图、以及预设的阴影纹理信息和光照信息进行阴影渲染,在游戏场景中为当前帧生成阴影。
14.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的程序指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述程序指令,以执行时执行如权利要求1至12任一所述的方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至12任一所述的方法的步骤。
CN202211072896.5A 2022-09-02 2022-09-02 阴影渲染方法、装置、电子设备及存储介质 Pending CN115375815A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211072896.5A CN115375815A (zh) 2022-09-02 2022-09-02 阴影渲染方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211072896.5A CN115375815A (zh) 2022-09-02 2022-09-02 阴影渲染方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115375815A true CN115375815A (zh) 2022-11-22

Family

ID=84070486

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211072896.5A Pending CN115375815A (zh) 2022-09-02 2022-09-02 阴影渲染方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115375815A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116485989A (zh) * 2023-06-14 2023-07-25 腾讯科技(深圳)有限公司 一种图像处理方法、装置、设备及存储介质
CN116688494A (zh) * 2023-08-04 2023-09-05 荣耀终端有限公司 生成游戏预测帧的方法和电子设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116485989A (zh) * 2023-06-14 2023-07-25 腾讯科技(深圳)有限公司 一种图像处理方法、装置、设备及存储介质
CN116485989B (zh) * 2023-06-14 2024-03-12 腾讯科技(深圳)有限公司 一种图像处理方法、装置、设备及存储介质
CN116688494A (zh) * 2023-08-04 2023-09-05 荣耀终端有限公司 生成游戏预测帧的方法和电子设备
CN116688494B (zh) * 2023-08-04 2023-10-20 荣耀终端有限公司 生成游戏预测帧的方法和电子设备

Similar Documents

Publication Publication Date Title
CN115375815A (zh) 阴影渲染方法、装置、电子设备及存储介质
US11852499B2 (en) Map rendering method and apparatus, computer device, and storage medium
CN109377546B (zh) 虚拟现实模型渲染方法及装置
US8345059B2 (en) Methods, systems, and data structures for generating a rasterizer
CN112316420B (zh) 模型渲染方法、装置、设备及存储介质
US20230120253A1 (en) Method and apparatus for generating virtual character, electronic device and readable storage medium
CN108765539B (zh) 基于OpenGLES的图像渲染方法、装置、设备及存储介质
CN111068310B (zh) 一种实现游戏地图无缝加载的方法及系统
US9224233B2 (en) Blending 3D model textures by image projection
EP4290464A1 (en) Image rendering method and apparatus, and electronic device and storage medium
CN115018955B (zh) 一种图像生成方法及设备
CN111784817A (zh) 阴影的展示方法和装置、存储介质、电子装置
CN112419430B (zh) 动画播放方法、装置及计算机设备
CN109598672B (zh) 一种地图道路渲染方法及装置
CN114913067A (zh) 动态分辨率的渲染方法、装置、电子设备及可读存储介质
CN114428573B (zh) 特效图像处理方法、装置、电子设备及存储介质
CN113064539B (zh) 特效控制方法、装置、电子设备及存储介质
EP4231243A1 (en) Data storage management method, object rendering method, and device
CN118043842A (zh) 一种渲染格式选择方法及其相关设备
CN114998504A (zh) 二维图像光照渲染方法、装置、系统和电子装置
CN116777731A (zh) 软光栅化的方法、装置、设备、介质及程序产品
CN114627225A (zh) 图形渲染方法、装置及存储介质
CN114742970A (zh) 虚拟三维模型的处理方法、非易失性存储介质及电子装置
CN113888673A (zh) 地图编辑方法、系统、装置、计算设备和存储介质
CN107819947B (zh) 画面显示方法及装置

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