CN115100347A - 阴影绘制方法、装置、设备和存储介质 - Google Patents

阴影绘制方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN115100347A
CN115100347A CN202210651937.XA CN202210651937A CN115100347A CN 115100347 A CN115100347 A CN 115100347A CN 202210651937 A CN202210651937 A CN 202210651937A CN 115100347 A CN115100347 A CN 115100347A
Authority
CN
China
Prior art keywords
rendering
shadow
units
vertex
rendering texture
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
CN202210651937.XA
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.)
Shanghai Perfect Time And Space Software Co ltd
Original Assignee
Shanghai Perfect Time And Space Software 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 Shanghai Perfect Time And Space Software Co ltd filed Critical Shanghai Perfect Time And Space Software Co ltd
Priority to CN202210651937.XA priority Critical patent/CN115100347A/zh
Publication of CN115100347A publication Critical patent/CN115100347A/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/50Lighting effects
    • G06T15/60Shadow generation
    • 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
    • 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/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • 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/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6646Methods for processing data by generating or executing the game program for rendering three dimensional images for the computation and display of the shadow of an object or character

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Image Generation (AREA)

Abstract

本发明实施例提供一种阴影绘制方法、装置、设备和存储介质,该方法包括:获取场景对应的渲染纹理;按照预设规格对渲染纹理进行切分,得到多个渲染纹理单元;剔除多个渲染纹理单元中深度值为预设数值的像素点;将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元;对多个图像单元进行硬件压缩;基于压缩后的图像单元,对场景进行阴影绘制。采用本发明,可以对切分得到的各渲染纹理单元结合软件与硬件的方式尽可能地进行最大限度的压缩处理。不仅获得的阴影绘制效果更好,且也能适当降低绘制阴影所消耗的计算资源,并且也无需在游戏的安装包中添加数据量较大的用于辅助确定模型阴影状态的信息。

Description

阴影绘制方法、装置、设备和存储介质
技术领域
本发明涉及图像渲染技术领域,尤其涉及一种阴影绘制方法、装置、设备和存储介质。
背景技术
相关技术中,在绘制场景中模型的阴影的过程中,可以结合静态阴影和动态阴影两种方式进行绘制。具体来说,一些静态模型会通过静态阴影的方式进行绘制,而用户角色等动态模型会通过动态阴影的方式进行绘制。其中,静态模型一般可以指用户角色所处场景中的静态物体,比如说树、草丛、桌子等等。
对于静态阴影来说,不再需要实时计算各模型分别对应的阴影效果,因此对计算资源的消耗相对较低。但是采用静态阴影,在编写游戏之时就需要预先对场景进行预烘焙以获得烘焙的阴影贴图,然后在游戏运行的过程中只需要对烘焙的阴影贴图进行采样就可得到模型的阴影效果。静态阴影会导致不得不在游戏的安装包中增加烘焙的阴影贴图,而烘焙的阴影贴图所占的数据量较大。
对于动态阴影来说,无需再在游戏的安装包中添加大数据量的阴影贴图,它是需要在游戏运行的过程中实时计算模型的阴影效果的,因此动态阴影所需消耗的计算量相对较高。
发明内容
本发明实施例提供一种阴影绘制方法、装置、设备和存储介质,用以实现在降低绘制阴影过程对计算资源的消耗的同时,减小游戏的安装包的包体。
第一方面,本发明实施例提供一种阴影绘制方法,该方法包括:
获取场景对应的渲染纹理;
按照预设规格对所述渲染纹理进行切分,得到多个渲染纹理单元;
剔除所述多个渲染纹理单元中深度值为预设数值的像素点;
将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元;
对多个图像单元进行硬件压缩;
基于压缩后的图像单元,对所述场景进行阴影绘制。
可选地,所述预设图像格式包括JPG或者PNG。
可选地,所述将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元,包括:
对于每个经过剔除处理的渲染纹理单元,将所述经过剔除处理的渲染纹理单元中包括的各像素点的深度值赋值给与所述各像素点对应的R通道、G通道以及B通道。
可选地,所述对多个图像单元进行硬件压缩,包括:
对多个图像单元进行硬件支持的压缩格式的压缩处理;
其中,所述压缩格式包括ASTC或者ETC。
可选地,所述基于压缩后的图像单元,对所述场景进行阴影绘制,包括:
对所述压缩后的图像单元进行解压缩处理,得到多个渲染纹理单元;
基于所述多个渲染纹理单元,对所述场景进行阴影绘制。
可选地,所述基于所述多个渲染纹理单元,对所述场景进行阴影绘制,包括:
基于所述多个渲染纹理单元,确定所述场景中的模型的各顶点分别对应的深度值;
获取所述模型的各顶点分别与预设光源之间的距离;
基于所述距离以及所述深度值,确定所述模型的各顶点分别对应的阴影状态,所述阴影状态用于指示对应的顶点是否处于阴影中;
基于所述模型的各顶点分别对应的阴影状态,绘制所述模型的阴影。
可选地,所述基于所述距离以及所述深度值,确定所述模型的各顶点分别对应的阴影状态,包括:
若任一顶点与所述预设光源之间的距离大于所述任一顶点的深度值,则确定所述任一顶点对应的阴影状态为处于阴影中;
若任一顶点与所述预设光源之间的距离小于所述任一顶点的深度值,则确定所述任一顶点对应的阴影状态为未处于阴影中。
可选地,所述基于所述多个渲染纹理单元,确定所述场景中的模型的各顶点分别对应的深度值,包括:
获取光源矩阵以及所述模型的各顶点分别对应的世界坐标,所述世界坐标为对应的顶点在预先建立的世界坐标系中的坐标;
基于所述光源矩阵以及所述世界坐标,确定所述模型的各顶点分别对应的采样坐标,所述采样坐标用于对所述多个渲染纹理单元进行采样操作;
在所述多个渲染纹理单元中,确定与所述各顶点的采样坐标各自对应的目标渲染纹理单元;
基于所述各顶点的采样坐标对所述各顶点各自对应的目标渲染纹理单元进行采样操作,得到所述各顶点分别对应的深度值。
可选地,所述获取光源矩阵,包括:
根据最小包围盒和所述预设光源的朝向信息,计算光源矩阵。
第二方面,本发明实施例提供一种阴影绘制装置,包括:
获取模块,用于获取场景对应的渲染纹理;
切分模块,用于按照预设规格对所述渲染纹理进行切分,得到多个渲染纹理单元;
剔除模块,用于剔除所述多个渲染纹理单元中深度值为预设数值的像素点;
转换模块,用于将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元;
压缩模块,用于对多个图像单元进行硬件压缩;
绘制模块,用于基于压缩后的图像单元,对所述场景进行阴影绘制。
可选地,所述预设图像格式包括JPG或者PNG。
可选地,所述转换模块,用于:
对于每个经过剔除处理的渲染纹理单元,将所述经过剔除处理的渲染纹理单元中包括的各像素点的深度值赋值给与所述各像素点对应的R通道、G通道以及B通道。
可选地,所述压缩模块,用于:
对多个图像单元进行硬件支持的压缩格式的压缩处理;
其中,所述压缩格式包括ASTC或者ETC。
可选地,所述绘制模块,用于:
对所述压缩后的图像单元进行解压缩处理,得到多个渲染纹理单元;
基于所述多个渲染纹理单元,对所述场景进行阴影绘制。
可选地,所述绘制模块,用于:
基于所述多个渲染纹理单元,确定所述场景中的模型的各顶点分别对应的深度值;
获取所述模型的各顶点分别与预设光源之间的距离;
基于所述距离以及所述深度值,确定所述模型的各顶点分别对应的阴影状态,所述阴影状态用于指示对应的顶点是否处于阴影中;
基于所述模型的各顶点分别对应的阴影状态,绘制所述模型的阴影。
可选地,所述绘制模块,用于:
若任一顶点与所述预设光源之间的距离大于所述任一顶点的深度值,则确定所述任一顶点对应的阴影状态为处于阴影中;
若任一顶点与所述预设光源之间的距离小于所述任一顶点的深度值,则确定所述任一顶点对应的阴影状态为未处于阴影中。
可选地,所述绘制模块,用于:
获取光源矩阵以及所述模型的各顶点分别对应的世界坐标,所述世界坐标为对应的顶点在预先建立的世界坐标系中的坐标;
基于所述光源矩阵以及所述世界坐标,确定所述模型的各顶点分别对应的采样坐标,所述采样坐标用于对所述多个渲染纹理单元进行采样操作;
在所述多个渲染纹理单元中,确定与所述各顶点的采样坐标各自对应的目标渲染纹理单元;
基于所述各顶点的采样坐标对所述各顶点各自对应的目标渲染纹理单元进行采样操作,得到所述各顶点分别对应的深度值。
可选地,所述绘制模块,用于:
根据最小包围盒和所述预设光源的朝向信息,计算光源矩阵。
第三方面,本发明实施例提供一种电子设备,其中包括处理器和存储器,其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现第一方面中的阴影绘制方法。
第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现第一方面中的阴影绘制方法。
采用本发明,在编写游戏的过程中,可以确定场景对应的渲染纹理,然后对渲染纹理进行切分,接着对切分得到的各渲染纹理单元结合软件与硬件的方式尽可能地进行最大限度的压缩处理,这样就可以实现降低原始的渲染纹理所占存储空间的效果。而后在游戏运行的过程中,在对经过压缩处理的多个渲染纹理单元进行解压缩,基于多个解压后的渲染纹理单元实现模型的阴影的绘制过程。采用这样的方式,不仅获得的阴影绘制效果更好,且也能适当降低绘制阴影所消耗的计算资源,并且也无需在游戏的安装包中添加数据量较大的用于辅助确定模型阴影状态的信息。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种阴影绘制方法的流程示意图;
图2为本发明实施例提供的另一种阴影绘制方法的流程示意图;
图3为本发明实施例提供的一种阴影绘制装置的结构示意图;
图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
图1为本发明实施例提供的一种阴影绘制方法的流程图,该方法可以应用于电子设备。如图1所示,该方法包括如下步骤:
101、获取场景对应的渲染纹理。
102、按照预设规格对渲染纹理进行切分,得到多个渲染纹理单元。
103、剔除多个渲染纹理单元中深度值为预设数值的像素点。
104、将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元。
105、对多个图像单元进行硬件压缩。
106、基于压缩后的图像单元,对场景进行阴影绘制。
首先需要说明的是,上述步骤101-步骤105可以是在编写游戏的过程中进行的,上述步骤106可以是在游戏运行的过程中进行的。
上述所说的场景可以是游戏场景,随着科技的发展游戏场景从以前的二维场景发展到至今的三维场景。因此,可以获取场景对应的渲染纹理,渲染纹理中记录有场景中模型的各顶点相对于摄像机的距离,也就是模型的各顶点的深度值。
下面介绍获取场景对应的渲染纹理的实现方式。
可以确定各模型对应的最小包围盒(Render Bounds),然后获取预设光源的朝向信息,基于最小包围盒以及该朝向信息,确定预设光源对应的光源矩阵(Matrix)。
需要说明的是,上述最小包围盒可以是一个长方体,通过该长方体可以将对应的模型的边界包围在其内部。这样,在确定了摄像机的拍摄视角之后,如果任一模型对应的最小包围盒的各顶点都在摄像机的拍摄范围内,则该模型是需要绘制到场景中,以此可以确定多个模型中有哪些模型是需要出现在场景中展示给用户的。
可选地,渲染纹理的规格尺寸可以是基于摄像机拍摄的渲染图像的精度参数确定的。
其中,精度参数的单位可以包括像素、米等。
其中,渲染纹理的规格尺寸例如可以是1024×1024、256×256等。
在某些可选实施例中,可以预先设置好摄像机拍摄的渲染图像的精度参数,然后基于该精度参数初始化渲染纹理的规格尺寸,并设置将渲染纹理输出到RenderTexture中。这样,在经过图形处理器(Graphics Processing Unit,简写为GPU)的渲染处理之后,可以直接将指定规格尺寸的渲染纹理输出到RenderTexture中,进而可以从RenderTexture中读取渲染好的渲染纹理。
在获得场景对应的渲染纹理之后,可以按照预设规格对渲染纹理进行切分,得到多个渲染纹理单元。其中,预设规格可以指每个渲染纹理单元的大小尺寸,或者也可以指从横向以及纵向上将渲染纹理切分为多少个渲染纹理单元。比如说,将渲染纹理拆分为X×Y的格子(Texture2D),那么也就是说,从横向上看将渲染纹理切分为Y份,从纵向上看将渲染纹理切分为X份,共得到X×Y个格子,这其中的格子指的就是渲染纹理单元。
通过对渲染纹理进行切分的方式,可以将尺寸较大的渲染纹理转换为尺寸相对较小的多个渲染纹理单元。这样可以适当减小对渲染纹理进行采样操作所需的采样带宽。
在得到多个渲染纹理单元之后,对于多个渲染纹理单元中的任一渲染纹理单元i,可以剔除该渲染纹理单元i中深度值为预设数值的像素点。可以理解的是,渲染纹理单元i可以包括多个像素点,这些像素点对应有各自的深度值,可以将深度值为预设数值的像素点进行剔除。其中,可选地,预设数值可以是表示纯白色或者纯黑色的颜色值。
采用上述方式,通过对深度值为预设数值的像素点的剔除,可以大大压缩各渲染纹理单元所携带的信息,达到降低渲染纹理整体的数据量的效果。
对多个渲染纹理单元分别进行剔除处理,这样就可以得到多个经过剔除处理的渲染纹理单元。对于多个经过剔除处理的渲染纹理单元中的任一经过剔除处理的渲染纹理单元j,可以将渲染纹理单元j转换为具有预设图像格式的图像单元j’。
其中,可选地,预设图像格式可以包括但不限于:JPG(JPG一般也作为JPEG,JPEG的全拼为Joint Photographic Experts Group,中文释义为联合图像专家组,是用于连续色调静态图像压缩的一种标准)或者PNG(Portable Network Graphics,便携式网络图形)。
可选地,可以通过下述方式将渲染纹理单元j转换为具有预设图像格式的图像单元j’:将渲染纹理单元j中包括的各像素点的深度值赋值给与各像素点对应的R通道、G通道以及B通道。
渲染纹理单元j中包括多个像素点,这些像素点对应有各自的深度值。在对渲染纹理单元j进行转换的过程中,可以为渲染纹理单元j中包括的各像素点创建各自对应的R通道、G通道以及B通道。转换前的渲染纹理单元j的各像素点只有深度值,因为渲染纹理单元j实际是渲染纹理,在转换的过程中,可以额外为渲染纹理单元j的各像素点创建各自对应的R通道、G通道以及B通道,这样渲染纹理单元j的各像素点就对应有了R通道、G通道以及B通道,而预设图像格式的图像单元j’是具有R通道、G通道以及B通道三个通道的。
在创建R通道、G通道以及B通道之后,可以将渲染纹理单元j中包括的各像素点的深度值赋值给与各像素点对应的R通道、G通道以及B通道,即对于渲染纹理单元中的任一像素点p,像素点p对应有R=G=B=像素点p的深度值。这样,对于图像单元j’来说,图像单元j’中包括的各像素点的颜色值就生成了,进而实现了由渲染纹理单元j到图像单元j’的转换。
采用上述转换方式,可以避免渲染纹理单元j直接转换为具有四通道的图像,该四通道是指R通道、G通道、B通道以及A通道。在压缩的过程中,对于四通道的图像来说,每个通道都会有一定的精度损失,这样就会导致纹理信息或者说深度信息丢失。而采用上述转换方式,可以避免该问题的产生,保证在压缩之后,纹理信息或者深度信息不会发生丢失。
在将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元之后,可以得到多个图像单元。然后可以对多个图像单元进行硬件压缩。
可选地,对多个图像单元进行硬件压缩的过程可以实现为:对多个图像单元进行硬件支持的压缩格式的压缩处理。其中,压缩格式包括ASTC(一种纹理信息的格式,可以在IOS或者Android操作系统中设置压缩ASTC的格式)或者ETC(Ericsson TextureCompression,一种电子设备支持的纹理压缩格式)。
通过上面介绍的步骤,可以尽可能实现对渲染纹理进行最大限度的压缩,在压缩之后可以得到多个压缩后的图像单元,然后将该多个压缩后的图像单元携带在游戏的安装包中,以供游戏运行的过程中进行使用。在游戏运行的过程中使用多个压缩后的图像单元是指:基于压缩后的图像单元,对场景进行阴影绘制。
可选地,上述基于压缩后的图像单元,对场景进行阴影绘制的过程可以实现为:对压缩后的图像单元进行解压缩处理,得到多个渲染纹理单元;基于多个渲染纹理单元,对场景进行阴影绘制。
可选地,基于多个渲染纹理单元,对场景进行阴影绘制的过程可以实现为:基于多个渲染纹理单元,确定场景中的模型的各顶点分别对应的深度值;获取模型的各顶点分别与预设光源之间的距离;基于距离以及深度值,确定模型的各顶点分别对应的阴影状态,阴影状态用于指示对应的顶点是否处于阴影中;基于模型的各顶点分别对应的阴影状态,绘制模型的阴影。
首先介绍确定模型的各顶点分别对应的深度值的过程。可选地,基于多个渲染纹理单元,确定场景中的模型的各顶点分别对应的深度值的过程可以实现为:获取光源矩阵以及模型的各顶点分别对应的世界坐标,世界坐标为对应的顶点在预先建立的世界坐标系中的坐标;基于光源矩阵以及世界坐标,确定模型的各顶点分别对应的采样坐标(UV),采样坐标用于对多个渲染纹理单元进行采样操作;在多个渲染纹理单元中,确定与各顶点的采样坐标各自对应的目标渲染纹理单元;基于各顶点的采样坐标对各顶点各自对应的目标渲染纹理单元进行采样操作,得到各顶点分别对应的深度值。
可选地,上述获取光源矩阵的过程可以实现为:可以确定各模型对应的最小包围盒,然后获取预设光源的朝向信息,基于最小包围盒以及该朝向信息,确定预设光源对应的光源矩阵。
下面介绍确定模型的各顶点分别与预设光源之间的距离的过程:可以基于光源矩阵以及模型的各顶点分别对应的世界坐标,确定模型的各顶点分别与预设光源之间的距离。
在确定出模型的各顶点分别对应的深度值以及与预设光源之间的距离之后,可以基于模型的各顶点分别对应的深度值以及与预设光源之间的距离,确定模型的各顶点分别对应的阴影状态。
可选地,该确定模型的各顶点分别对应的阴影状态的过程可以实现为:若任一顶点m与预设光源之间的距离大于该顶点m的深度值,则确定该顶点m对应的阴影状态为处于阴影中;若该顶点m与预设光源之间的距离小于该顶点m的深度值,则确定该顶点m对应的阴影状态为未处于阴影中。
可以理解的是,如果顶点m与预设光源之间的距离大于该顶点m的深度值,则表示该顶点m不能被预设光源照射到,因此该顶点m对应的阴影状态为处于阴影中。如果顶点m与预设光源之间的距离小于该顶点m的深度值,则表示该顶点m能够被预设光源照射到,因此该顶点m对应的阴影状态为未处于阴影中。
最终在获得模型的各顶点分别对应的阴影状态之后,可以基于模型的各顶点分别对应的阴影状态,绘制模型的阴影。
如图2所示,为本发明实施例提供的另一种阴影绘制方法的流程图,如图2所示,该方法包括如下步骤:
201、确定各模型对应的最小包围盒。
202、基于最小包围盒以及预设光源的朝向信息,确定预设光源对应的光源矩阵。
203、基于精度参数初始化渲染纹理的规格尺寸,并设置将渲染纹理输出到RenderTexture中。
204、将指定规格尺寸的渲染纹理输出到RenderTexture中。
205、按照预设规格对渲染纹理进行切分以得到多个渲染纹理单元,并剔除多个渲染纹理单元中深度值为预设数值的像素点。
206、将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元,在转换过程中使用R=G=B=深度值对渲染纹理单元进行编码。
207、对多个图像单元进行硬件支持的压缩格式的压缩处理。
208、基于光源矩阵以及世界坐标,确定模型的各顶点分别对应的采样坐标,在多个渲染纹理单元中,确定与各顶点的采样坐标各自对应的目标渲染纹理单元,基于各顶点的采样坐标对各顶点各自对应的目标渲染纹理单元进行采样操作,得到各顶点分别对应的深度值。
209、基于模型的各顶点分别与预设光源之间的距离以及对应的深度值,确定模型的各顶点分别对应的阴影状态。
采用本发明,在编写游戏的过程中,可以确定场景对应的渲染纹理,然后对渲染纹理进行切分,接着对切分得到的各渲染纹理单元结合软件与硬件的方式尽可能地进行最大限度的压缩处理,这样就可以实现降低原始的渲染纹理所占存储空间的效果。而后在游戏运行的过程中,在对经过压缩处理的多个渲染纹理单元进行解压缩,基于多个解压后的渲染纹理单元实现模型的阴影的绘制过程。采用这样的方式,不仅获得的阴影绘制效果更好,且也能适当降低绘制阴影所消耗的计算资源,并且也无需在游戏的安装包中添加数据量较大的用于辅助确定模型阴影状态的信息。
采用本发明,可以在编写游戏时预先渲染出渲染纹理,并采取软件和硬件相结合的方式对渲染纹理进行压缩。这样压缩后的渲染纹理所占的存储空间较小,进而不会像完全使用静态阴影那样让游戏整个的安装包体过大。在游戏运行的过程中,可以对压缩的渲染纹理进行解压并对解压后的渲染纹理进行采样,进而可以基于采样结果确定模型中的各顶点对应的阴影状态,然后就可以绘制模型的阴影了。
由于本发明是在游戏运行过程中对解压后的渲染纹理进行采样并确定模型中的各顶点对应的阴影状态的,因此实际这个过程也可以看作与采用实时计算阴影的方式绘制阴影具有相同的效果,不会导致有些模型的阴影无法打在动态的模型的问题。同时,由于渲染纹理是预先渲染好的,直接通过解压就可以用,所以游戏运行时的计算量相对较低。
以下将详细描述本发明的一个或多个实施例的阴影绘制装置。本领域技术人员可以理解,这些阴影绘制装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图3为本发明实施例提供的一种阴影绘制装置的结构示意图,如图3所示,该装置包括:
获取模块31,用于获取场景对应的渲染纹理;
切分模块32,用于按照预设规格对所述渲染纹理进行切分,得到多个渲染纹理单元;
剔除模块33,用于剔除所述多个渲染纹理单元中深度值为预设数值的像素点;
转换模型34,用于将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元;
压缩模块35,用于对多个图像单元进行硬件压缩;
绘制模块36,用于基于压缩后的图像单元,对所述场景进行阴影绘制。
可选地,所述预设图像格式包括JPG或者PNG。
可选地,所述转换模型34,用于:
对于每个经过剔除处理的渲染纹理单元,将所述经过剔除处理的渲染纹理单元中包括的各像素点的深度值赋值给与所述各像素点对应的R通道、G通道以及B通道。
可选地,所述压缩模块35,用于:
对多个图像单元进行硬件支持的压缩格式的压缩处理;
其中,所述压缩格式包括ASTC或者ETC。
可选地,所述绘制模块36,用于:
对所述压缩后的图像单元进行解压缩处理,得到多个渲染纹理单元;
基于所述多个渲染纹理单元,对所述场景进行阴影绘制。
可选地,所述绘制模块36,用于:
基于所述多个渲染纹理单元,确定所述场景中的模型的各顶点分别对应的深度值;
获取所述模型的各顶点分别与预设光源之间的距离;
基于所述距离以及所述深度值,确定所述模型的各顶点分别对应的阴影状态,所述阴影状态用于指示对应的顶点是否处于阴影中;
基于所述模型的各顶点分别对应的阴影状态,绘制所述模型的阴影。
可选地,所述绘制模块36,用于:
若任一顶点与所述预设光源之间的距离大于所述任一顶点的深度值,则确定所述任一顶点对应的阴影状态为处于阴影中;
若任一顶点与所述预设光源之间的距离小于所述任一顶点的深度值,则确定所述任一顶点对应的阴影状态为未处于阴影中。
可选地,所述绘制模块36,用于:
获取光源矩阵以及所述模型的各顶点分别对应的世界坐标,所述世界坐标为对应的顶点在预先建立的世界坐标系中的坐标;
基于所述光源矩阵以及所述世界坐标,确定所述模型的各顶点分别对应的采样坐标,所述采样坐标用于对所述多个渲染纹理单元进行采样操作;
在所述多个渲染纹理单元中,确定与所述各顶点的采样坐标各自对应的目标渲染纹理单元;
基于所述各顶点的采样坐标对所述各顶点各自对应的目标渲染纹理单元进行采样操作,得到所述各顶点分别对应的深度值。
可选地,所述绘制模块36,用于:
根据最小包围盒和所述预设光源的朝向信息,计算光源矩阵。
图3所示装置可以执行前述图1至图2所示实施例中提供的阴影绘制方法,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
在一个可能的设计中,上述图3所示阴影绘制装置的结构可实现为一电子设备,如图4所示,该电子设备可以包括:处理器91、存储器92。其中,所述存储器92上存储有可执行代码,当所述可执行代码被所述处理器91执行时,使所述处理器91至少可以实现如前述图1至图2所示实施例中提供的阴影绘制方法。
可选地,该电子设备中还可以包括通信接口93,用于与其他设备进行通信。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如前述图1至图2所示实施例中提供的阴影绘制方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例提供的阴影绘制方法可以由某种程序/软件来执行,该程序/软件可以由网络侧提供,前述实施例中提及的电子设备可以将该程序/软件下载到本地的非易失性存储介质中,并在其需要执行前述阴影绘制方法时,通过CPU将该程序/软件读取到内存中,进而由CPU执行该程序/软件以实现前述实施例中所提供的阴影绘制方法,执行过程可以参见前述图1至图2中的示意。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种阴影绘制方法,其特征在于,包括:
获取场景对应的渲染纹理;
按照预设规格对所述渲染纹理进行切分,得到多个渲染纹理单元;
剔除所述多个渲染纹理单元中深度值为预设数值的像素点;
将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元;
对多个图像单元进行硬件压缩;
基于压缩后的图像单元,对所述场景进行阴影绘制。
2.根据权利要求1所述的方法,其特征在于,所述将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元,包括:
对于每个经过剔除处理的渲染纹理单元,将所述经过剔除处理的渲染纹理单元中包括的各像素点的深度值赋值给与所述各像素点对应的R通道、G通道以及B通道。
3.根据权利要求1所述的方法,其特征在于,所述基于压缩后的图像单元,对所述场景进行阴影绘制,包括:
对所述压缩后的图像单元进行解压缩处理,得到多个渲染纹理单元;
基于所述多个渲染纹理单元,对所述场景进行阴影绘制。
4.根据权利要求3所述的方法,其特征在于,所述基于所述多个渲染纹理单元,对所述场景进行阴影绘制,包括:
基于所述多个渲染纹理单元,确定所述场景中的模型的各顶点分别对应的深度值;
获取所述模型的各顶点分别与预设光源之间的距离;
基于所述距离以及所述深度值,确定所述模型的各顶点分别对应的阴影状态,所述阴影状态用于指示对应的顶点是否处于阴影中;
基于所述模型的各顶点分别对应的阴影状态,绘制所述模型的阴影。
5.根据权利要求4所述的方法,其特征在于,所述基于所述距离以及所述深度值,确定所述模型的各顶点分别对应的阴影状态,包括:
若任一顶点与所述预设光源之间的距离大于所述任一顶点的深度值,则确定所述任一顶点对应的阴影状态为处于阴影中;
若任一顶点与所述预设光源之间的距离小于所述任一顶点的深度值,则确定所述任一顶点对应的阴影状态为未处于阴影中。
6.根据权利要求4所述的方法,其特征在于,所述基于所述多个渲染纹理单元,确定所述场景中的模型的各顶点分别对应的深度值,包括:
获取光源矩阵以及所述模型的各顶点分别对应的世界坐标,所述世界坐标为对应的顶点在预先建立的世界坐标系中的坐标;
基于所述光源矩阵以及所述世界坐标,确定所述模型的各顶点分别对应的采样坐标,所述采样坐标用于对所述多个渲染纹理单元进行采样操作;
在所述多个渲染纹理单元中,确定与所述各顶点的采样坐标各自对应的目标渲染纹理单元;
基于所述各顶点的采样坐标对所述各顶点各自对应的目标渲染纹理单元进行采样操作,得到所述各顶点分别对应的深度值。
7.根据权利要求6所述的方法,其特征在于,所述获取光源矩阵,包括:
根据最小包围盒和所述预设光源的朝向信息,计算光源矩阵。
8.一种阴影绘制装置,其特征在于,包括:
获取模块,用于获取场景对应的渲染纹理;
切分模块,用于按照预设规格对所述渲染纹理进行切分,得到多个渲染纹理单元;
剔除模块,用于剔除所述多个渲染纹理单元中深度值为预设数值的像素点;
转换模块,用于将多个经过剔除处理的渲染纹理单元分别转换为预设图像格式的图像单元;
压缩模块,用于对多个图像单元进行硬件压缩;
绘制模块,用于基于压缩后的图像单元,对所述场景进行阴影绘制。
9.一种电子设备,其特征在于,包括:存储器、处理器;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-7中任一项所述的阴影绘制方法。
10.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1-7中任一项所述的阴影绘制方法。
CN202210651937.XA 2022-06-09 2022-06-09 阴影绘制方法、装置、设备和存储介质 Pending CN115100347A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210651937.XA CN115100347A (zh) 2022-06-09 2022-06-09 阴影绘制方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210651937.XA CN115100347A (zh) 2022-06-09 2022-06-09 阴影绘制方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN115100347A true CN115100347A (zh) 2022-09-23

Family

ID=83291424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210651937.XA Pending CN115100347A (zh) 2022-06-09 2022-06-09 阴影绘制方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN115100347A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024178961A1 (zh) * 2023-02-27 2024-09-06 华为技术有限公司 图形处理器和图形绘制方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024178961A1 (zh) * 2023-02-27 2024-09-06 华为技术有限公司 图形处理器和图形绘制方法

Similar Documents

Publication Publication Date Title
CN110706324B (zh) 一种天气粒子渲染的方法及装置
Duguet et al. Flexible point-based rendering on mobile devices
KR20170131246A (ko) 실제 객체 및 실제 객체의 가상 복제를 포함하는 장면의 이미지를 렌더링하기 위한 방법 및 디바이스
CN113112581A (zh) 三维模型的纹理贴图生成方法、装置、设备及存储介质
US11087511B1 (en) Automated vectorization of a raster image using a gradient mesh with arbitrary topology
CN112489183A (zh) 基于Unity3D的骨骼动画渲染方法及系统
CN113034663B (zh) Gim模型轻量化处理方法和装置、设备及存储介质
CN110866965A (zh) 一种三维模型的贴图绘制方法及装置
CN109377552B (zh) 图像遮挡计算方法、装置、计算设备及存储介质
CN115082609A (zh) 图像渲染方法、装置、存储介质及电子设备
CN115100347A (zh) 阴影绘制方法、装置、设备和存储介质
US10347034B2 (en) Out-of-core point rendering with dynamic shapes
CN112843700B (zh) 地形图像的生成方法、装置、计算机设备和存储介质
CN117315295A (zh) 一种bim模型相似度计算方法、系统、设备及存储介质
CN117456079A (zh) 场景渲染方法、装置、设备、存储介质及程序产品
CN112070874A (zh) 一种图像渲染的方法和装置
CN117237511A (zh) 云图处理方法、装置、计算机及可读存储介质
CN113786616B (zh) 一种间接光照实现方法、装置、存储介质及计算设备
CN112465692A (zh) 图像处理方法、装置、设备及存储介质
CN114942854A (zh) 一种gif动图的截图方法和相关设备
CN110136235B (zh) 三维bim模型外壳提取方法、装置及计算机设备
CN112419459A (zh) 烘焙模型ao贴图的方法、装置、计算机设备和存储介质
CN115054916A (zh) 阴影制作方法、装置、设备和存储介质
CN111627098A (zh) 对图像中水流区域识别并生成动态水流视频的方法及装置
CN112802134B (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