CN114399580A - 一种图像渲染方法、装置、设备、存储介质及程序产品 - Google Patents
一种图像渲染方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN114399580A CN114399580A CN202210053376.3A CN202210053376A CN114399580A CN 114399580 A CN114399580 A CN 114399580A CN 202210053376 A CN202210053376 A CN 202210053376A CN 114399580 A CN114399580 A CN 114399580A
- Authority
- CN
- China
- Prior art keywords
- vertex
- coordinate
- vector
- homogeneous
- matrix
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
- G06T15/83—Phong shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
- G06T7/75—Determining position or orientation of objects or cameras using feature-based methods involving models
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Geometry (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请提供了一种图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品;方法包括:获取待渲染的虚拟对象的多个顶点,其中,每个顶点对应一个顶点坐标;对每个顶点的顶点坐标进行齐次化处理,得到每个顶点的齐次坐标;基于坐标转换矩阵对每个顶点的齐次坐标进行向量乘加处理,得到每个顶点的转换坐标;基于每个顶点的转换坐标对待渲染的虚拟对象进行图像渲染处理,得到渲染后的虚拟对象。通过本申请,能够节约相关的存储空间以及计算资源。
Description
技术领域
本申请涉及计算机图形图像技术,尤其涉及一种图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术
基于图形处理硬件的显示技术,扩展了感知环境以及获取信息的渠道,尤其是虚拟场景的显示技术,能够根据实际应用需求实现受控于用户或人工智能的虚拟对象之间的多样化的交互,具有各种典型的应用场景,例如在游戏等的虚拟场景中,能够模拟虚拟对象之间的真实的对战过程。
相关技术中,通过两次四维矩阵与待渲染的虚拟对象的多个顶点相乘,以实现顶点的坐标转换,并基于坐标转换后的顶点进行图像渲染,这种方案需要进行大量的顶点计算,将浪费大量的存储空间以及计算资源,进而影响使用体验。
发明内容
本申请实施例提供一种图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够充分有效地利用向量乘加,节约相关的存储空间以及计算资源。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种图像渲染方法,包括:
获取待渲染的虚拟对象的多个顶点,其中,每个顶点对应一个顶点坐标;
对所述每个顶点的顶点坐标进行齐次化处理,得到所述每个顶点的齐次坐标;
基于坐标转换矩阵对所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的转换坐标;
基于所述每个顶点的转换坐标对所述待渲染的虚拟对象进行图像渲染处理,得到渲染后的虚拟对象。
本申请实施例提供一种图像渲染装置,包括:
获取模块,用于获取待渲染的虚拟对象的多个顶点,其中,每个顶点对应一个顶点坐标;
齐次化模块,用于对所述每个顶点的顶点坐标进行齐次化处理,得到所述每个顶点的齐次坐标;
转换模块,用于基于坐标转换矩阵对所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的转换坐标;
渲染模块,用于基于所述每个顶点的转换坐标对所述待渲染的虚拟对象进行图像渲染处理,得到渲染后的虚拟对象。
上述技术方案中,所述每个顶点的顶点坐标为一个三维坐标向量,所述齐次坐标为一个四维坐标向量;所述齐次化模块还用于将所述每个顶点的三维坐标向量与常数进行拼接处理,得到所述每个顶点的四维坐标向量;
其中,所述常数为所述四维坐标向量的第四维数值。
上述技术方案中,所述转换模块还用于对所述坐标转换矩阵进行列向量分割处理,得到所述坐标转换矩阵的多个列向量;
对所述多个列向量以及所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的转换坐标。
上述技术方案中,当所述坐标转换矩阵为模型矩阵时,所述对所述坐标转换矩阵进行列向量分割处理之前,所述转换模块还用于确定所述每个顶点对应的旋转正交矩阵、平移矩阵以及缩放矩阵;
将所述旋转正交矩阵、所述平移矩阵以及所述缩放矩阵相乘,得到所述每个顶点对应的模型矩阵。
上述技术方案中,当所述坐标转换矩阵包括视投影矩阵时,所述对所述坐标转换矩阵进行列向量分割处理之前,所述转换模块还用于确定所述每个顶点对应的视空间矩阵以及投影矩阵;
将所述视空间矩阵以及所述投影矩阵相乘,得到所述每个顶点对应的视投影矩阵。
上述技术方案中,当所述坐标转换矩阵包括模型矩阵以及视投影矩阵时,所述转换模块还用于对所述模型矩阵进行列向量分割处理,得到所述模型矩阵的多个第一列向量;
对所述视投影矩阵进行列向量分割处理,得到所述视投影矩阵的多个第二列向量;
对所述多个第一列向量以及所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的世界空间坐标;
对所述多个第二列向量以及所述每个顶点的世界空间坐标进行向量乘加处理,得到所述每个顶点的转换坐标。
上述技术方案中,当所述顶点坐标为位置坐标向量时,所述转换模块还用于将所述多个第一列向量的第一个第一列向量与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与所述多个第一列向量的第四个第一列向量相加,得到第一坐标变换信息;
将所述多个第一列向量的第二个第一列向量与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与所述第一坐标变换信息相加,得到第二坐标变换信息;
将所述多个第一列向量的第三个第一列向量与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第二坐标变换信息相加,得到所述每个顶点的世界空间坐标。
上述技术方案中,所述转换模块还用于将所述多个第一列向量的第一个第一列向量的前三维数值与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与所述多个第一列向量的第四个第一列向量的前三维数值相加,得到三维的所述第一坐标变换信息;
将所述多个第一列向量的第二个第一列向量的前三维数值与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理;
将所述多个列向量的第三个列向量的前三维数值与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第二坐标变换信息相加,得到三维的第三坐标变换信息,并将所述第三坐标变换信息与常数进行拼接处理,得到所述每个顶点的世界空间坐标。
上述技术方案中,当所述顶点坐标为位置坐标向量时,所述转换模块还用于将所述多个第二列向量的第一个第二列向量与所述每个顶点的世界空间坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与所述多个第二列向量的第四个第二列向量相加,得到第四坐标变换信息;
将所述多个第二列向量的第二个第二列向量与所述每个顶点的世界空间坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与所述第四坐标变换信息相加,得到第五坐标变换信息;
将所述多个第二列向量的第三个第二列向量与所述每个顶点的世界空间坐标的第五维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第二坐标变换信息相加,得到所述每个顶点的转换坐标。
上述技术方案中,当所述顶点坐标为方向坐标向量时,所述转换模块还用于将所述多个第一列向量的第一个第一列向量与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,得到第六坐标变换信息;
将所述多个第一列向量的第二个第一列向量与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与所述第六坐标变换信息相加,得到第七坐标变换信息;
将所述多个第一列向量的第三个第一列向量与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第七坐标变换信息相加,得到所述每个顶点的世界空间坐标。
上述技术方案中,所述转换模块还用于将所述多个第一列向量的第一个第一列向量的前三维数值与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理;
将所述多个第一列向量的第二个第一列向量的前三维数值与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理;
将所述多个第一列向量的第三个第一列向量的前三维数值与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第七坐标变换信息相加,得到三维的第八坐标变换信息,并将所述第八坐标变换信息与常数进行拼接处理,得到所述每个顶点的世界空间坐标。
上述技术方案中,所述渲染模块还用于对所述每个顶点的转换坐标进行光栅化处理,得到所述每个顶点对应的像素;
对所述每个顶点对应的像素进行着色处理,得到每个像素对应的颜色;
对所述每个像素对应的颜色进行混合处理,得到所述渲染后的虚拟对象。
本申请实施例提供一种用于图像渲染的电子设备,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的图像渲染方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的图像渲染方法。
本申请实施例提供一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时实现本申请实施例提供的图像渲染方法。
本申请实施例具有以下有益效果:
通过坐标转换矩阵对每个顶点的齐次坐标进行向量乘加,得到每个顶点的转换坐标,并基于每个顶点的转换坐标进行图像渲染处理,以充分有效地利用向量乘加进行坐标转换,节约了相关的存储空间以及计算资源,进而提高虚拟对象的显示效率。
附图说明
图1A-图1B是本申请实施例提供的图像渲染方法的应用模式示意图;
图2是本申请实施例提供的用于图像渲染的电子设备的结构示意图;
图3-图5是本申请实施例提供的图像渲染方法的流程示意图;
图6是本申请实施例提供的无光照着色器的示意图;
图7是本申请实施例提供的新建修改后的着色器的材质资源的示意图;
图8是本申请实施例提供的材质资源应用的示意图;
图9是相关技术提供的渲染管线的流程图;
图10是本申请实施例提供的顶点着色计算的流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)响应于:用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
2)客户端:终端中运行的用于提供各种服务的应用程序,例如视频播放客户端、游戏客户端等。
3)虚拟场景:游戏程序在终端上运行时显示(或提供)的虚拟游戏场景。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例对虚拟场景的维度不加以限定。例如,虚拟场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,用户可以控制虚拟对象在该虚拟场景中进行移动。
4)虚拟对象:虚拟场景中可以进行交互的各种人和物的形象,或在虚拟场景中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物等,例如在虚拟场景中显示的人物、动物等。该虚拟对象可以是虚拟场景中的一个虚拟的用于代表用户的虚拟形象。虚拟场景中可以包括多个虚拟对象,每个虚拟对象在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。
5)场景数据:表示虚拟场景的特征数据,例如可以是虚拟场景中建造区域的面积、虚拟场景当前所处的建筑风格等;也可以包括虚拟建筑在虚拟场景中所处的位置、以及虚拟建筑的占地面积等。
6)图形处理器(GPU,Graphics Processing Unit):一种用于现代个人计算机、服务器、移动设备、游戏主机等专门用于图形图像处理的专用芯片。
7)渲染管线:在GPU中运行的图形渲染流程,包括顶点着色器、光栅化、像素着色器等。通过在着色器中编写代码能够灵活控制GPU对渲染组件进行绘制渲染。
8)顶点着色器:GPU渲染管线的一个必选环节,顶点着色器程序会根据代码将模型的顶点进行逐个顶点计算,并将结果输出到下一个阶段。
9)坐标变换:将一个空间坐标系下的坐标变换到另一个空间坐标系的过程,坐标系之间的变换关系用矩阵表示,将矩阵左乘坐标向量,得到的值就是变换后的坐标。
10)片段着色器:GPU渲染管线的一个必选环节,片段着色器程序会根据代码将光栅化后的像素进行着色计算,通过测试之后输出到帧缓冲区,完成一次渲染管线流程。
11)图形应用程序接口(API,Application Programming Interface):在中央处理器(CPU,Central Processing Unit)向GPU进行通信的时候按照标准的图形API进行,图形API有OpenGL、OpenGL ES、Direct X、Metal、Vulkan等,在进行图形开发时,按照接口所定义的方法来调用GPU即可。
相关技术中,在图形图像渲染领域和行业应用中,三维场景在图形处理器(GPU,Graphics Processing Unit)中渲染时会经过GPU渲染管线的一连串计算,其中,在进行坐标变换时,每个顶点的顶点坐标需要进行齐次化,再执行的两次左乘矩阵。在开放图形库(OpenGL,Open Graphics Library)图形应用程序接口(API,Application ProgrammingInterface)中,使用对应的着色器语言(GLSL,OpenGL Shading Language)进行实现,需要将常数1作为顶点的第四维,以组成齐次坐标向量,之后进行两次四维矩阵与四维向量(即齐次坐标向量)的相乘。
在三维渲染场景中,坐标变换都是统一的计算过程,由游戏引擎内置支持。当场景的模型比较精细,也就是顶点数量增多的时候,顶点着色器的计算消耗在整个渲染管线的流程中的比例也会逐渐增大。
为了解决上述问题,本申请实施例提供一种图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够充分有效地利用向量乘加,节约相关的存储空间以及计算资源。为便于更容易理解本申请实施例提供的图像渲染方法,首先说明本申请实施例提供的图像渲染方法的示例性实施场景,本申请实施例提供的图像渲染方法中的虚拟对象可以完全基于终端输出,或者基于终端和服务器协同输出。
在一些实施例中,虚拟场景可以是供游戏角色交互的环境,例如可以是供游戏角色在虚拟场景中进行对战,通过控制游戏角色的行动可以在虚拟场景中进行双方互动,从而使用户能够在游戏的过程中舒缓生活压力。
在一个实施场景中,参见图1A,图1A是本申请实施例提供的图像渲染方法的应用模式示意图,适用于一些完全依赖于终端400的图形处理硬件计算能力即可完成虚拟场景100的相关数据计算的应用模式,例如单机版/离线模式的游戏,通过智能手机、平板电脑和虚拟现实/增强现实设备等各种不同类型的终端400完成虚拟场景的输出。
作为示例,图形处理硬件的类型包括中央处理器(CPU,Central ProcessingUnit)和图形处理器(GPU,Graphics Processing Unit)。
当形成虚拟场景100的视觉感知时,终端400通过图形计算硬件计算显示所需要的数据,并完成显示数据的加载、解析和渲染,在图形输出硬件输出能够对虚拟场景形成视觉感知的视频帧,例如,在智能手机的显示屏幕呈现二维的视频帧,或者,在增强现实/虚拟现实眼镜的镜片上投射实现三维显示效果的视频帧;此外,为了丰富感知效果,终端400还可以借助不同的硬件来形成听觉感知、触觉感知、运动感知和味觉感知的一种或多种。
作为示例,终端400上运行有客户端410(例如单机版的游戏应用),在客户端410的运行过程中输出包括有角色扮演的虚拟场景,虚拟场景可以是供游戏角色交互的环境,例如可以是用于供游戏角色进行对战的平原、街道、山谷等等;以第一人称视角显示虚拟场景100为例,在虚拟场景100中显示渲染后的虚拟对象110,渲染后的虚拟对象110可以是受用户(或称玩家)控制的游戏角色,将响应于真实用户针对按钮(包括摇杆按钮、攻击按钮、防御按钮等)的操作而在虚拟场景中操作,例如当真实用户向左移动摇杆按钮时,虚拟对象将在虚拟场景中向左部移动,还可以保持原地静止、跳跃以及使用各种功能(如技能和道具);渲染后的虚拟对象110也可以是通过训练设置在虚拟场景对战中的人工智能(AI,Artificial Intelligence);渲染后的虚拟对象110还可以是设置在虚拟场景互动中的非用户角色(NPC,Non-Player Character);渲染后的虚拟对象110还可以是虚拟场景100中不可活动对象或者可活动对象。
举例来说,以第一人称视角显示虚拟场景100为例,在虚拟场景100中显示待渲染的虚拟对象,在对战游戏开始前,玩家通过自定义待渲染的虚拟对象在虚拟场景中显示位置120,通过本申请实施例的图像渲染方法,获取待渲染的虚拟对象的多个顶点,对每个顶点的顶点坐标进行齐次化处理,得到每个顶点的齐次坐标,基于显示位置120对应的坐标转换矩阵对每个顶点的齐次坐标进行向量乘加处理,得到每个顶点的转换坐标,基于每个顶点的转换坐标对待渲染的虚拟对象进行图像渲染处理,得到渲染后的虚拟对象110,并基于渲染后的虚拟对象110在显示位置120进行虚拟场景的人机交互,例如游戏对抗。
在另一个实施场景中,参见图1B,图1B是本申请实施例提供的图像渲染方法的应用模式示意图,应用于终端400和服务器200,适用于依赖于服务器200的计算能力完成虚拟场景计算、并在终端400输出虚拟场景的应用模式。
以形成虚拟场景100的视觉感知为例,服务器200进行虚拟场景相关显示数据(例如场景数据)的计算并通过网络300发送到终端400,终端400依赖于图形计算硬件完成计算显示数据的加载、解析和渲染,依赖于图形输出硬件输出虚拟场景以形成视觉感知,例如可以在智能手机的显示屏幕呈现二维的视频帧,或者,在增强现实/虚拟现实眼镜的镜片上投射实现三维显示效果的视频帧;对于虚拟场景的形式的感知而言,可以理解,可以借助于终端400的相应硬件输出,例如使用麦克风形成听觉感知,使用振动器形成触觉感知等等。
作为示例,终端400上运行有客户端410(例如网络版的游戏应用),通过连接服务器200(例如游戏服务器)与其他用户进行游戏互动,终端400输出客户端410的虚拟场景100,以第一人称视角显示虚拟场景100为例,在虚拟场景100中显示渲染后的虚拟对象110,渲染后的虚拟对象110可以是受用户(或称玩家)控制的游戏角色,将响应于真实用户针对按钮(包括摇杆按钮、攻击按钮、防御按钮等)的操作而在虚拟场景中操作,例如当真实用户向左移动摇杆按钮时,虚拟对象将在虚拟场景中向左部移动,还可以保持原地静止、跳跃以及使用各种功能(如技能和道具);渲染后的虚拟对象110也可以是通过训练设置在虚拟场景对战中的人工智能(AI,Artificial Intelligence);渲染后的虚拟对象110还可以是设置在虚拟场景互动中的非用户角色(NPC,Non-Player Character);渲染后的虚拟对象110还可以是虚拟场景100中不可活动对象或者可活动对象。
举例来说,以第一人称视角显示虚拟场景100为例,在虚拟场景100中显示待渲染的虚拟对象,在对战游戏开始前,玩家通过自定义待渲染的虚拟对象在虚拟场景中显示位置120,通过本申请实施例的图像渲染方法,获取待渲染的虚拟对象的多个顶点,对每个顶点的顶点坐标进行齐次化处理,得到每个顶点的齐次坐标,基于显示位置120对应的坐标转换矩阵对每个顶点的齐次坐标进行向量乘加处理,得到每个顶点的转换坐标,基于每个顶点的转换坐标对待渲染的虚拟对象进行图像渲染处理,得到渲染后的虚拟对象110,并基于渲染后的虚拟对象110在显示位置120进行虚拟场景的人机交互,例如游戏对抗。
在一些实施例中,终端400可以通过运行计算机程序来实现本申请实施例提供的图像渲染方法,例如,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,APPlication),即需要在操作系统中安装才能运行的程序,例如换装游戏APP(即上述的客户端410);也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的游戏小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
以计算机程序为应用程序为例,在实际实施时,终端400安装和运行有支持虚拟场景的应用程序。该应用程序可以是第一人称射击游戏(FPS,First-Person Shootinggame)、第三人称射击游戏、虚拟现实应用程序、三维地图程序或者多人枪战类生存游戏中的任意一种。用户使用终端400操作位于虚拟场景中的虚拟对象进行活动,该活动包括但不限于:调整身体姿态、爬行、步行、奔跑、骑行、跳跃、驾驶、拾取、射击、攻击、投掷、建造虚拟建筑中的至少一种。示意性的,该虚拟对象可以是虚拟人物,比如仿真人物角色或动漫人物角色等。
在一些实施例中,本申请实施例还可以借助于云技术(Cloud Technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源。
示例的,图1B中的服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端400以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
参见图2,图2是本申请实施例提供的用于图像渲染的电子设备的结构示意图,以电子设备为终端400为例进行说明,图2所示的电子设备400包括:至少一个处理器420、存储器460、至少一个网络接口430和用户接口440。终端400中的各个组件通过总线系统450耦合在一起。可理解,总线系统450用于实现这些组件之间的连接通信。总线系统450除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统450。
处理器420可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口440包括使得能够呈现媒体内容的一个或多个输出装置441,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口440还包括一个或多个输入装置442,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器460可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器460可选地包括在物理位置上远离处理器420的一个或多个存储设备。
存储器460包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器460旨在包括任意适合类型的存储器。
在一些实施例中,存储器460能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统461,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块462,用于经由一个或多个(有线或无线)网络接口430到达其他计算设备,示例性的网络接口430包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块463,用于经由一个或多个与用户接口440相关联的输出装置441(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块464,用于对一个或多个来自一个或多个输入装置442之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的图像渲染装置可以采用软件方式实现,图2示出了存储在存储器460中的图像渲染装置465,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块4651、齐次化模块4652、第二转换模块4653、渲染模块4654,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
在另一些实施例中,本申请实施例提供的图像渲染装置可以采用硬件方式实现,作为示例,本申请实施例提供的图像渲染装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的图像渲染方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific IntegratedCircuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
下面将结合附图对本申请实施例提供的图像渲染方法进行具体说明。本申请实施例提供的图像渲染方法可以由图1A中的终端400单独执行,也可以由图1B中的终端400和服务器200协同执行。
下面,以由图1A中的终端400单独执行本申请实施例提供的图像渲染方法为例进行说明。参见图3,图3是本申请实施例提供的图像渲染方法的流程示意图,将结合图3示出的步骤进行说明。
需要说明的是,图3示出的方法可以由终端400上运行的各种形式的计算机程序执行,并不局限于上述的客户端410,还可以是上文的操作系统461、软件模块和脚本,因此客户端不应视为对本申请实施例的限定。
在步骤101中,获取待渲染的虚拟对象的多个顶点,其中,每个顶点对应一个顶点坐标。
例如,在三维渲染场景中,待渲染的虚拟对象包括多个顶点,待渲染的虚拟对象越精细,顶点的数量越多,基于顶点的图像渲染的计算也就越大。其中,每个顶点对应一个顶点坐标,该顶点坐标为三维坐标向量,包括顶点的x、y、z轴的坐标值。
在步骤102中,对每个顶点的顶点坐标进行齐次化处理,得到每个顶点的齐次坐标。
例如,在进行坐标变换之前,需要对三维的顶点坐标进行齐次化,得到每个顶点的四维的齐次坐标,以基于四维的齐次坐标进行矩阵相乘。
在一些实施例中,每个顶点的顶点坐标为一个三维坐标向量,齐次坐标为一个四维坐标向量;对每个顶点的顶点坐标进行齐次化处理,得到每个顶点的齐次坐标,包括:将每个顶点的三维坐标向量与常数进行拼接处理,得到每个顶点的四维坐标向量;其中,常数为四维坐标向量的第四维数值。
例如,顶点的顶点坐标为[x,y,z],将顶点的三维坐标向量与常数进行拼接处理,得到顶点的四维坐标向量[x,y,z,w],其中,w表示常数,当顶点坐标为位置坐标向量时,w为1,即顶点的四维坐标向量为[x,y,z,1];当顶点坐标为方向坐标向量时,w为0,即顶点的四维坐标向量为[x,y,z,0]。
在步骤103中,基于坐标转换矩阵对每个顶点的齐次坐标进行向量乘加处理,得到每个顶点的转换坐标。
例如,在坐标变换阶段使用乘加指令对矩阵乘向量过程进行优化,在保持输出结果和精度不变的前提下,提高顶点坐标变换的效率,以提升总体图像渲染的性能。
参见图4,图4是本申请实施例提供的图像渲染方法的一个可选的流程示意图,图4示出图3中的步骤103可以通过步骤1031-步骤1032实现:在步骤1031中,对坐标转换矩阵进行列向量分割处理,得到坐标转换矩阵的多个列向量;在步骤1032中,对多个列向量以及每个顶点的齐次坐标进行向量乘加处理,得到每个顶点的转换坐标。
需要说明的是,根据实际需求还可以对坐标转换矩阵进行行向量分割处理,得到坐标转换矩阵的多个行向量;对多个行向量以及每个顶点的齐次坐标进行向量乘加处理,得到每个顶点的转换坐标。例如,坐标转换矩阵为M,其中,将M拆分为r1、r2、r3、r4列向量,并将r1、r2、r3、r4与齐次向量v=[v1,v2,v3,v4]进行向量乘加处理,得到每个顶点的转换坐标。
在一些实施例中,当坐标转换矩阵为模型矩阵时,对坐标转换矩阵进行列向量分割处理之前,确定每个顶点对应的旋转正交矩阵、平移矩阵以及缩放矩阵;将旋转正交矩阵、平移矩阵以及缩放矩阵相乘,得到每个顶点对应的模型矩阵。
例如,缩放矩阵其中,s1,s2,s3分别表示x、y、z三轴的缩放系数,平移矩阵其中Tx,Ty,Tz分别是x、y、z三轴的平移量,缩放矩阵其中α,β,γ分别是翻滚角(roll)、俯仰角(pitch)和偏航角(yaw)的欧拉角。将旋转正交矩阵、平移矩阵以及缩放矩阵相乘,得到每个顶点对应的模型矩阵
在一些实施例中,当坐标转换矩阵包括视投影矩阵时,对坐标转换矩阵进行列向量分割处理之前,确定每个顶点对应的视空间矩阵以及投影矩阵;将视空间矩阵以及投影矩阵相乘,得到每个顶点对应的视投影矩阵。
例如,当顶点坐标从本地坐标系的三维坐标向量进行齐次化,得到四维齐次坐标,之后用转换到世界空间下的齐次坐标(即世界空间坐标),再转换到投影空间下的四维坐标时,需要获取每个顶点对应的视投影矩阵,视投影矩阵是通过视空间矩阵以及投影矩阵相乘得到的。
在一些实施例中,当坐标转换矩阵包括模型矩阵以及视投影矩阵时,对坐标转换矩阵进行列向量分割处理,得到坐标转换矩阵的多个列向量,包括:对模型矩阵进行列向量分割处理,得到模型矩阵的多个第一列向量;对视投影矩阵进行列向量分割处理,得到视投影矩阵的多个第二列向量;对多个列向量以及每个顶点的齐次坐标进行向量乘加处理,得到每个顶点的转换坐标,包括:对多个第一列向量以及每个顶点的齐次坐标进行向量乘加处理,得到每个顶点的世界空间坐标;对多个第二列向量以及每个顶点的世界空间坐标进行向量乘加处理,得到每个顶点的转换坐标。
例如,将模型矩阵和视投影矩阵分割为列向量后,需要先通过模型矩阵的列向量,将齐次坐标从本地坐标系的三维坐标向量转换到世界空间下的齐次坐标(即世界空间坐标),再通过视投影矩阵的列向量,将世界空间坐标转换到投影空间下的四维坐标,即转换坐标。
在一些实施例中,当顶点坐标为位置坐标向量时,对多个第一列向量以及每个顶点的齐次坐标进行向量乘加处理,得到每个顶点的世界空间坐标,包括:将多个第一列向量的第一个第一列向量与每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与多个第一列向量的第四个第一列向量相加,得到第一坐标变换信息;将多个第一列向量的第二个第一列向量与每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与第一坐标变换信息相加,得到第二坐标变换信息;将多个第一列向量的第三个第一列向量与每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与第二坐标变换信息相加,得到每个顶点的世界空间坐标。
例如,当顶点坐标为位置坐标向量时,即顶点的齐次坐标为[x,y,z,1],将齐次坐标从本地坐标系的三维坐标向量转换到世界空间下的齐次坐标(即世界空间坐标)的过程如以下指令a1:
指令a1:
1.r1.xyzw=Mt[0].xyzw*v.xxxx+Mt[3].xyzw;
2.r1.xyzw=Mt[1].xyzw*v.yyyy+r1.xyzw;
3.r1.xyzw=Mt[2].xyzw*v.zzzz+r1.xyzw;
4.return r1.xyzw;
其中,Mt[0].xyzw表示第一个第一列向量c1T,Mt[1].xyzw表示第二个第一列向量c2T,Mt[2].xyzw表示第三个第一列向量c3T,Mt[3].xyzw表示第四个第一列向量c4T,v.xxxx表示[x,x,x,x],v.yyyy表示[y,y,y,y],v.zzzz;表示[z,z,z,z],r1表示计算中的临时变量。
因此,上述指令的计算量为3个向量乘加,占用3个周期。
在一些实施例中,将多个第一列向量的第一个第一列向量与每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与多个第一列向量的第四个第一列向量相加,得到第一坐标变换信息,包括:将多个第一列向量的第一个第一列向量的前三维数值与每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与多个第一列向量的第四个第一列向量的前三维数值相加,得到三维的第一坐标变换信息;将多个第一列向量的第二个第一列向量与每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,包括:将多个第一列向量的第二个第一列向量的前三维数值与每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理;将多个第一列向量的第三个第一列向量与每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与第二坐标变换信息相加,得到每个顶点的世界空间坐标,包括:将多个列向量的第三个列向量的前三维数值与每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与第二坐标变换信息相加,得到三维的第三坐标变换信息,并将第三坐标变换信息与常数进行拼接处理,得到每个顶点的世界空间坐标。
指令a2:
1.r1.xyz=Mt[0].xyz*v.xxx+Mt[3].xyz;
2.r1.xyz=Mt[1].xyz*v.yyy+r1.xyz;
3.r1.xyz=Mt[2].xyz*v.zzz+r1.xyz;
4.return r1.xyz;
因此,上述指令a2的计算结果r1.xyz仍为三维向量,最后在r1.xyz的基础上,与常数1进行拼接处理,即得到每个顶点的世界空间坐标,其中,常数1作为世界空间坐标的第四维数值。
在一些实施例中,当顶点坐标为位置坐标向量时,对多个第二列向量以及每个顶点的世界空间坐标进行向量乘加处理,得到每个顶点的转换坐标,包括:将多个第二列向量的第一个第二列向量与每个顶点的世界空间坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与多个第二列向量的第四个第二列向量相加,得到第四坐标变换信息;将多个第二列向量的第二个第二列向量与每个顶点的世界空间坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与第四坐标变换信息相加,得到第五坐标变换信息;将多个第二列向量的第三个第二列向量与每个顶点的世界空间坐标的第五维坐标值进行第三次乘积处理,并将第三次乘积结果与第二坐标变换信息相加,得到每个顶点的转换坐标。
例如,当顶点坐标为位置坐标向量时,即顶点的齐次坐标为[x,y,z,1],将齐次坐标从世界空间下的齐次坐标(即世界空间坐标)转换到投影空间下的齐次坐标(即转换坐标)的过程如以下指令b1:
指令b1:
1.r2.xyzw=PVt[0].xyzw*r1.xxxx+PVt[3].xyzw;
2.r2.xyzw=PVt[1].xyzw*r1.yyyy+r2.xyzw;
3.r2.xyzw=PVt[2].xyzw*r1.zzzz+r2.xyzw;
4.return r2.xyzw;
其中,r1表示世界空间坐标,PVt[].xyzw表示投影矩阵PV的转置矩阵,PVt[0].xyzw表示第一个第二列向量,PVt[1].xyzw表示第二个第二列向量,PVt[2].xyzw表示第三个第二列向量,PVt[3].xyzw表示第四个第二列向量。
因此,上述指令的计算量为3个向量乘加,占用3个周期。
在一些实施例中,当顶点坐标为方向坐标向量时,对多个第一列向量以及每个顶点的齐次坐标进行向量乘加处理,得到每个顶点的世界空间坐标,包括:将多个第一列向量的第一个第一列向量与每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,得到第六坐标变换信息;将多个第一列向量的第二个第一列向量与每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与第六坐标变换信息相加,得到第七坐标变换信息;将多个第一列向量的第三个第一列向量与每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与第七坐标变换信息相加,得到每个顶点的世界空间坐标。
例如,当顶点坐标为方向坐标向量(例如法线、切线)时,即顶点的齐次坐标为[x,y,z,0],基于方向坐标向量的第四维数值为0以及方向坐标向量对应的模型矩阵没有平移特性,即第四个第一列向量为[0,0,0,1]T,将齐次坐标从本地坐标系的三维坐标向量转换到世界空间下的齐次坐标(即世界空间坐标)的过程如以下指令c1:
1.r1.xyzw=Mt[0].xyzw*n.xxxx;
2.r1.xyzw=Mt[1].xyzw*n.yyyy+r1.xyzw;
3.r1.xyzw=Mt[2].xyzw*n.zzzz+r1.xyzw;
4.return r1.xyzw;
其中,Mt[0].xyzw表示第一个第一列向量c1T,Mt[1].xyzw表示第二个第一列向量c2T,Mt[2].xyzw表示第三个第一列向量c3T,Mt[3].xyzw表示第四个第一列向量c4T,n.xxxx表示[x,x,x,x],n.yyyy表示[y,y,y,y],n.zzzz;表示[z,z,z,z],r1表示计算中的临时变量。
因此,上述指令的计算量为3个向量乘加,占用3个周期。
在一些实施例中,将多个第一列向量的第一个第一列向量与每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,得到第六坐标变换信息,包括:将多个第一列向量的第一个第一列向量的前三维数值与每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理;将多个第一列向量的第二个第一列向量与每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,包括:将多个第一列向量的第二个第一列向量的前三维数值与每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理;将多个第一列向量的第三个第一列向量与每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与第七坐标变换信息相加,得到每个顶点的世界空间坐标,包括:将多个第一列向量的第三个第一列向量的前三维数值与每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与第七坐标变换信息相加,得到三维的第八坐标变换信息,并将第八坐标变换信息与常数进行拼接处理,得到每个顶点的世界空间坐标。
指令c2:
1.r1.xyz=Mt[0].xyz*n.xxx;
2.r1.xyz=Mt[1].xyz*n.yyy+r1.xyz;
3.r1.xyz=Mt[2].xyz*n.zzz+r1.xyz;
4.return r1.xyz;
因此,上述指令c2的计算结果r1.xyz仍为三维向量,最后在r1.xyz的基础上,与常数0进行拼接处理,即得到每个顶点的世界空间坐标,其中,常数0作为世界空间坐标的第四维数值。
在步骤104中,基于每个顶点的转换坐标对待渲染的虚拟对象进行图像渲染处理,得到渲染后的虚拟对象。
例如,在对顶点进行坐标转换后,基于顶点的转换坐标进行后续图像渲染操作,得到在虚拟场景中对应转换坐标显示渲染后的虚拟对象。
参见图5,图5是本申请实施例提供的图像渲染方法的一个可选的流程示意图,图5示出图3中的步骤104可以通过步骤1041-步骤1043实现:在步骤1041中,对每个顶点的转换坐标进行光栅化处理,得到每个顶点对应的像素;在步骤1042中,对每个顶点对应的像素进行着色处理,得到每个像素对应的颜色;在步骤1043中,对每个像素对应的颜色进行混合处理,得到渲染后的虚拟对象。
例如,在渲染调用发生时的阶段为GPU渲染管线。GPU渲染管线会将顶点坐标作为输入,然后基于顶点信息进行顶点着色器的计算,得到转换坐标后,传入光栅化阶段进行光栅化计算,得到每个顶点对应的像素,之后对每个顶点对应的像素进行像素着色计算,得到每个像素对应的颜色,最后对每个像素对应的颜色进行测试与混合,将测试与混合的结果(即渲染后的虚拟对象)输出到帧缓冲,进行画面呈现。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例可以应用于各种游戏的渲染场景,例如对抗游戏、赛车游戏、变装游戏等。
下面以虚拟场景为游戏为例进行说明:
相关技术中,在三维渲染场景中,坐标变换都是统一的计算过程,由游戏引擎内置支持。当场景的模型比较精细,也就是顶点数量增多的时候,顶点着色器的计算消耗在整个渲染管线的流程中的比例也会逐渐增大。
为了解决上述问题,本申请实施例提出了一种应用于GPU渲染管线的坐标变换指令优化方法(即图像渲染方法),应用GPU的乘加指令优化矩阵向量乘法,使得GPU能够更高效完成该图像渲染。
下面以着色器的应用实现为例进行说明:
本申请实施例在渲染引擎中应用着色器代码并创建对应的材质,将材质应用到场景的模型渲染中,即可在渲染时看到模型的渲染结果。
首先,在渲染引擎中新建着色器资源。
如图6所示,以无光照着色器为例,在渲染引擎中新建无光照着色器资源601。
然后,触发着色器资源,打开着色器编辑器,进行如下所示的着色器代码修改。
着色器原本是通过引用UnityObjectToClip方法,以实现顶点从本地空间向视投影空间的两次坐标变换指令。
修改后的着色器原本是通过引用FastObjectToClip方法,以手动实现顶点从本地空间向视投影空间的两次坐标变换指令。其中,FastObjectToClip方法如下:
保存着色器代码修改并退出编辑器,返回渲染引擎。
然后,在渲染引擎中新建基于修改后的着色器的材质资源。
如图7所示,在渲染引擎701通过手动新建操作创建材质资源。
最后,将材质资源应用在场景的模型渲染器中。
如图8所示,将材质资源801拖拽至大纲视图的游戏对象802、或场景视图的模型803、或游戏对象的模型渲染器组件的材质804中即可。
在应用了本申请实施例提供的着色器代码之后,相比于相关技术的渲染方式,能够在保持场景渲染结果精度不变的情况下,提升渲染的性能,使得在单位时间下,GPU能够绘制的顶点数量得以提升。
图像渲染发生过程中,在渲染初始化时,顶点信息通过图形接口传入GPU,当渲染调用发生时,顶点信息通过GPU渲染管线的计算,最后输出到屏幕缓冲区中,进行画面呈现。
如图9所示,在渲染调用发生时的阶段为GPU渲染管线。GPU渲染管线会将顶点信息作为输入,然后基于顶点信息进行顶点着色器的计算,得到统一设备坐标后,传入光栅化阶段进行光栅化计算,之后进行像素着色计算,最后进行测试与混合,将测试与混合的结果输出到帧缓冲,进行画面呈现。
其中,顶点着色计算的详细流程如图10所示,GPU渲染管线会将顶点信息作为输入,将顶点坐标变换到世界空间坐标,再由世界空间坐标变换到视投影坐标系,并将变换结果输出到光栅化器中以进行光栅化。
需要说明的是,顶点坐标从本地坐标系的三维向量进行齐次化,得到四维齐次化坐标,之后用模型矩阵左乘向量得到世界空间下的齐次坐标(即世界空间坐标),再用视投影矩阵左乘世界空间坐标得到投影空间下的四维坐标,并将投影空间下的四维坐标输出到渲染管线的后续步骤中以进行渲染操作。
在这个过程中有两次矩阵左乘向量操作,设模型矩阵为M,如下公式(1)所示:
顶点的坐标向量为v=[v1,v2,v3,v4]T,那么模型矩阵M左乘v如下公式(2)所示:
在GPU硬件中的计算单元多以向量为单位,对于矩阵向量的乘法,在实际上等价于拆分为多个向量计算实现,有两种计算方式可以实现:
方式一:
方式二:
M×v=[c1T c2T c3T c4T]×v=c1T×v1+c2T×v2+c3T×v3+c4T×v4
根据图形接口矩阵在GPU中存储方式包括行主序和列主序,矩阵与向量之间的乘法包括前乘和后乘,需要根据实际需求对应的存储方式以及乘法。在Unity引擎中,统一采用矩阵左乘向量的方式,由上述的方式二实现,将上述方式二拆分成如下指令1:
指令1:
1.r1.xyzw=Mt[0].xyzw*v.xxxx;
2.r2.xyzw=Mt[1].xyzw*v.yyyy;
3.r3.xyzw=Mt[2].xyzw*v.zzzz;
4.r4.xyzw=Mt[3].xyzw*v.wwww;
5.r5.xyzw=r1.xyzw+r2.xyzw;
6.r6.xyzw=r3.xyzw+r4.xyzw;
7.r7.xyzw=r5.xyzw+r6.xyzw;
8.return r7.xyzw;
其中,Mt[0].xyzw表示c1T,Mt[1].xyzw表示c2T,Mt[2].xyzw表示c3T,Mt[3].xyzw表示c4T,v.xxxx表示[v1,v1,v1,v1],v.yyyy表示[v2,v2,v2,v2],v.zzzz;表示[v3,v3,v3,v3],v.wwww表示[v4,v4,v4,v4],r1~r7表示计算中的临时变量。
上述指令1的计算量一共是4次向量乘法和3次的向量加法。在GPU中,计算单元会提供乘加计算指令,使向量乘法、向量加法、向量乘法加法混合都能够在同样的一个GPU周期完成。将上述指令1简化成以下指令2:
指令2:
1.r1.xyzw=Mt[0].xyzw*v.xxxx;
2.r1.xyzw=Mt[1].xyzw*v.yyyy+r1.xyzw;
3.r1.xyzw=Mt[2].xyzw*v.zzzz+r1.xyzw;
4.r1.xyzw=Mt[3].xyzw*v.wwww+r1.xyzw;
5.return r1.xyzw;
上述指令2的计算量一共是1次向量乘法与3次向量乘加,占用4个周期。在这个计算过程中,顶点的坐标是四维齐次坐标,前三维v1、v2、v3分别代表顶点的x、y、z轴的坐标值,而第四维齐次量v4恒为1,即v.wwww表示为[1,1,1,1]。那么上述指令2可以优化为以下指令3:
指令3:
1.r1.xyzw=Mt[0].xyzw*v.xxxx+Mt[3].xyzw;
2.r1.xyzw=Mt[1].xyzw*v.yyyy+r1.xyzw;
3.r1.xyzw=Mt[2].xyzw*v.zzzz+r1.xyzw;
4.return r1.xyzw;
这时计算结果没有变化,但上述指令3的计算量缩减到了3个向量乘加,占用3个周期。
由于模型矩阵M本身由旋转正交矩阵R、缩放矩阵S和平移矩阵T进行相乘而成,上述公式(2)可以简化为公式(3):
其中,缩放矩阵其中,s1,s2,s3分别表示x、y、z三轴的缩放系数,平移矩阵其中Tx,Ty,Tz分别是x、y、z三轴的平移量,缩放矩阵其中α,β,γ分别是翻滚角(roll)、俯仰角(pitch)和偏航角(yaw)的欧拉角。
指令4:
1.r1.xyz=Mt[0].xyz*v.xxx+Mt[3].xyz;
2.r1.xyz=Mt[1].xyz*v.yyy+r1.xyz;
3.r1.xyz=Mt[2].xyz*v.zzz+r1.xyz;
4.return r1.xyz;
上述指令4的计算结果仍为三维向量。在计算视投影空间坐标变换时,还可以用继续以上方法进行优化,设视投影矩阵为PV,则全部坐标变换的指令如指令5所示:
指令5:
1.r1.xyz=Mt[0].xyz*v.xxx+Mt[3].xyz;
2.r1.xyz=Mt[1].xyz*v.yyy+r1.xyz;
3.r1.xyz=Mt[2].xyz*v.zzz+r1.xyz;
4.r2.xyzw=PVt[0].xyzw*r1.xxxx+PVt[3].xyzw;
5.r2.xyzw=PVt[1].xyzw*r1.yyyy+r2.xyzw;
6.r2.xyzw=PVt[2].xyzw*r1.zzzz+r2.xyzw;
7.return r2.xyzw;
其中,PVt[].xyzw表示投影矩阵PV的转置矩阵。
对于法线切线等方向向量,本申请实施例也可以利用v4=0的特性进行优化,例如将法线n从本地空间转换到世界空间的指令如指令6所示:
指令6:
1.r1.xyz=Mt[0].xyz*n.xxx;
2.r1.xyz=Mt[1].xyz*n.yyy+r1.xyz;
3.r1.xyz=Mt[2].xyz*n.zzz+r1.xyz;
4.return r1.xyz;
因此,在顶点着色器中工作负载集中在对这些坐标向量和方向向量进行坐标变换,使用本申请实施例可以将原本需要8个周期的计算量降到6个周期,且不会额外带来误差,所优化的效率达到25%,且能够兼容不同的平台和不同的运算精度。
综上,本申请实施例提出了一种应用于GPU渲染管线的坐标变换指令优化方法,在顶点着色器阶段使用乘加指令对矩阵乘向量过程进行优化,在保持输出结果和精度不变的前提下,提高顶点坐标变换的效率,被广泛应用于三维场景渲染场景中,提升总体渲染的性能。
本申请实施例在不改变顶点计算精度的前提下,优化了顶点坐标变换过程的计算效率,相比于相关技术的GPU渲染管线流程,顶点坐标变换的指令数量从8个下降到了6个,能够带来25%的顶点处理性能提升,且兼容于大部分图形生产流程,可以被应用于业界不同的图形渲染产品中。
本申请实施例优化了业界不能优化的问题:在顶点着色器中实现高效坐标变换,从而优化整个GPU渲染管线效率。本申请实施例对创建的Shader进行测试,将顶点着色器与优化后的顶点着色器进行比较,在Mali-G72 GPU中,数学计算单元的周期数从2.33降低到了1.75,效率提升了25%;在Mali-G76GPU中,数学计算单元的周期数从1.17降低到了0.88,效率提升了25%;在Mali-G78 GPU中,乘加单元的周期数从0.50降到了0.33,效率提升了33%。这使得GPU渲染管线在大规模计算顶点着色时,能够更快地完成任务。
至此已经结合本申请实施例提供的终端或服务器的示例性应用和实施,说明本申请实施例提供的图像渲染方法,下面继续说明本申请实施例提供的图像渲染装置465中各个模块配合实现图像渲染方案。
获取模块4651,用于获取待渲染的虚拟对象的多个顶点,其中,每个顶点对应一个顶点坐标;齐次化模块4652,用于对所述每个顶点的顶点坐标进行齐次化处理,得到所述每个顶点的齐次坐标;转换模块4653,用于基于坐标转换矩阵对所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的转换坐标;渲染模块4654,用于基于所述每个顶点的转换坐标对所述待渲染的虚拟对象进行图像渲染处理,得到渲染后的虚拟对象。
在一些实施例中,所述每个顶点的顶点坐标为一个三维坐标向量,所述齐次坐标为一个四维坐标向量;所述齐次化模块4652还用于将所述每个顶点的三维坐标向量与常数进行拼接处理,得到所述每个顶点的四维坐标向量;其中,所述常数为所述四维坐标向量的第四维数值。
在一些实施例中,所述转换模块4653还用于对所述坐标转换矩阵进行列向量分割处理,得到所述坐标转换矩阵的多个列向量;对所述多个列向量以及所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的转换坐标。
在一些实施例中,当所述坐标转换矩阵为模型矩阵时,所述对所述坐标转换矩阵进行列向量分割处理之前,所述转换模块4653还用于确定所述每个顶点对应的旋转正交矩阵、平移矩阵以及缩放矩阵;将所述旋转正交矩阵、所述平移矩阵以及所述缩放矩阵相乘,得到所述每个顶点对应的模型矩阵。
在一些实施例中,当所述坐标转换矩阵包括视投影矩阵时,所述对所述坐标转换矩阵进行列向量分割处理之前,所述转换模块4653还用于确定所述每个顶点对应的视空间矩阵以及投影矩阵;将所述视空间矩阵以及所述投影矩阵相乘,得到所述每个顶点对应的视投影矩阵。
在一些实施例中,当所述坐标转换矩阵包括模型矩阵以及视投影矩阵时,所述转换模块4653还用于对所述模型矩阵进行列向量分割处理,得到所述模型矩阵的多个第一列向量;对所述视投影矩阵进行列向量分割处理,得到所述视投影矩阵的多个第二列向量;对所述多个第一列向量以及所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的世界空间坐标;对所述多个第二列向量以及所述每个顶点的世界空间坐标进行向量乘加处理,得到所述每个顶点的转换坐标。
在一些实施例中,当所述顶点坐标为位置坐标向量时,所述转换模块4653还用于将所述多个第一列向量的第一个第一列向量与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与所述多个第一列向量的第四个第一列向量相加,得到第一坐标变换信息;将所述多个第一列向量的第二个第一列向量与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与所述第一坐标变换信息相加,得到第二坐标变换信息;将所述多个第一列向量的第三个第一列向量与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第二坐标变换信息相加,得到所述每个顶点的世界空间坐标。
在一些实施例中,所述转换模块4653还用于将所述多个第一列向量的第一个第一列向量的前三维数值与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与所述多个第一列向量的第四个第一列向量的前三维数值相加,得到三维的所述第一坐标变换信息;将所述多个第一列向量的第二个第一列向量的前三维数值与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理;将所述多个列向量的第三个列向量的前三维数值与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第二坐标变换信息相加,得到三维的第三坐标变换信息,并将所述第三坐标变换信息与常数进行拼接处理,得到所述每个顶点的世界空间坐标。
在一些实施例中,当所述顶点坐标为位置坐标向量时,所述转换模块4653还用于将所述多个第二列向量的第一个第二列向量与所述每个顶点的世界空间坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与所述多个第二列向量的第四个第二列向量相加,得到第四坐标变换信息;将所述多个第二列向量的第二个第二列向量与所述每个顶点的世界空间坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与所述第四坐标变换信息相加,得到第五坐标变换信息;将所述多个第二列向量的第三个第二列向量与所述每个顶点的世界空间坐标的第五维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第二坐标变换信息相加,得到所述每个顶点的转换坐标。
在一些实施例中,当所述顶点坐标为方向坐标向量时,所述转换模块4653还用于将所述多个第一列向量的第一个第一列向量与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,得到第六坐标变换信息;将所述多个第一列向量的第二个第一列向量与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与所述第六坐标变换信息相加,得到第七坐标变换信息;将所述多个第一列向量的第三个第一列向量与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第七坐标变换信息相加,得到所述每个顶点的世界空间坐标。
在一些实施例中,所述转换模块4653还用于将所述多个第一列向量的第一个第一列向量的前三维数值与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理;将所述多个第一列向量的第二个第一列向量的前三维数值与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理;将所述多个第一列向量的第三个第一列向量的前三维数值与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第七坐标变换信息相加,得到三维的第八坐标变换信息,并将所述第八坐标变换信息与常数进行拼接处理,得到所述每个顶点的世界空间坐标。
在一些实施例中,所述渲染模块4654还用于对所述每个顶点的转换坐标进行光栅化处理,得到所述每个顶点对应的像素;对所述每个顶点对应的像素进行着色处理,得到每个像素对应的颜色;对所述每个像素对应的颜色进行混合处理,得到所述渲染后的虚拟对象。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的图像渲染方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的图像渲染方法,例如,如图3-图5示出的图像渲染方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (16)
1.一种图像渲染方法,其特征在于,所述方法包括:
获取待渲染的虚拟对象的多个顶点,其中,每个顶点对应一个顶点坐标;
对所述每个顶点的顶点坐标进行齐次化处理,得到所述每个顶点的齐次坐标;
基于坐标转换矩阵对所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的转换坐标;
基于所述每个顶点的转换坐标对所述待渲染的虚拟对象进行图像渲染处理,得到渲染后的虚拟对象。
2.根据权利要求1所述的方法,其特征在于,
所述每个顶点的顶点坐标为一个三维坐标向量,所述齐次坐标为一个四维坐标向量;
所述对所述每个顶点的顶点坐标进行齐次化处理,得到所述每个顶点的齐次坐标,包括:
将所述每个顶点的三维坐标向量与常数进行拼接处理,得到所述每个顶点的四维坐标向量;
其中,所述常数为所述四维坐标向量的第四维数值。
3.根据权利要求1所述的方法,其特征在于,所述基于坐标转换矩阵对所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的转换坐标,包括:
对所述坐标转换矩阵进行列向量分割处理,得到所述坐标转换矩阵的多个列向量;
对所述多个列向量以及所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的转换坐标。
4.根据权利要求3所述的方法,其特征在于,当所述坐标转换矩阵为模型矩阵时,所述对所述坐标转换矩阵进行列向量分割处理之前,所述方法还包括:
确定所述每个顶点对应的旋转正交矩阵、平移矩阵以及缩放矩阵;
将所述旋转正交矩阵、所述平移矩阵以及所述缩放矩阵相乘,得到所述每个顶点对应的模型矩阵。
5.根据权利要求3所述的方法,其特征在于,当所述坐标转换矩阵包括视投影矩阵时,所述对所述坐标转换矩阵进行列向量分割处理之前,所述方法还包括:
确定所述每个顶点对应的视空间矩阵以及投影矩阵;
将所述视空间矩阵以及所述投影矩阵相乘,得到所述每个顶点对应的视投影矩阵。
6.根据权利要求3所述的方法,其特征在于,
当所述坐标转换矩阵包括模型矩阵以及视投影矩阵时,所述对所述坐标转换矩阵进行列向量分割处理,得到所述坐标转换矩阵的多个列向量,包括:
对所述模型矩阵进行列向量分割处理,得到所述模型矩阵的多个第一列向量;
对所述视投影矩阵进行列向量分割处理,得到所述视投影矩阵的多个第二列向量;
所述对所述多个列向量以及所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的转换坐标,包括:
对所述多个第一列向量以及所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的世界空间坐标;
对所述多个第二列向量以及所述每个顶点的世界空间坐标进行向量乘加处理,得到所述每个顶点的转换坐标。
7.根据权利要求6所述的方法,其特征在于,当所述顶点坐标为位置坐标向量时,所述对所述多个第一列向量以及所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的世界空间坐标,包括:
将所述多个第一列向量的第一个第一列向量与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与所述多个第一列向量的第四个第一列向量相加,得到第一坐标变换信息;
将所述多个第一列向量的第二个第一列向量与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与所述第一坐标变换信息相加,得到第二坐标变换信息;
将所述多个第一列向量的第三个第一列向量与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第二坐标变换信息相加,得到所述每个顶点的世界空间坐标。
8.根据权利要求7所述的方法,其特征在于,
所述将所述多个第一列向量的第一个第一列向量与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与所述多个第一列向量的第四个第一列向量相加,得到第一坐标变换信息,包括:
将所述多个第一列向量的第一个第一列向量的前三维数值与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与所述多个第一列向量的第四个第一列向量的前三维数值相加,得到三维的所述第一坐标变换信息;
所述将所述多个第一列向量的第二个第一列向量与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,包括:
将所述多个第一列向量的第二个第一列向量的前三维数值与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理;
所述将所述多个第一列向量的第三个第一列向量与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第二坐标变换信息相加,得到所述每个顶点的世界空间坐标,包括:
将所述多个列向量的第三个列向量的前三维数值与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第二坐标变换信息相加,得到三维的第三坐标变换信息,并将所述第三坐标变换信息与常数进行拼接处理,得到所述每个顶点的世界空间坐标。
9.根据权利要求6所述的方法,其特征在于,当所述顶点坐标为位置坐标向量时,所述对所述多个第二列向量以及所述每个顶点的世界空间坐标进行向量乘加处理,得到所述每个顶点的转换坐标,包括:
将所述多个第二列向量的第一个第二列向量与所述每个顶点的世界空间坐标的第一维坐标值进行第一次乘积处理,并将第一次乘积结果与所述多个第二列向量的第四个第二列向量相加,得到第四坐标变换信息;
将所述多个第二列向量的第二个第二列向量与所述每个顶点的世界空间坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与所述第四坐标变换信息相加,得到第五坐标变换信息;
将所述多个第二列向量的第三个第二列向量与所述每个顶点的世界空间坐标的第五维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第二坐标变换信息相加,得到所述每个顶点的转换坐标。
10.根据权利要求6所述的方法,其特征在于,当所述顶点坐标为方向坐标向量时,所述对所述多个第一列向量以及所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的世界空间坐标,包括:
将所述多个第一列向量的第一个第一列向量与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,得到第六坐标变换信息;
将所述多个第一列向量的第二个第一列向量与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,并将第二次乘积结果与所述第六坐标变换信息相加,得到第七坐标变换信息;
将所述多个第一列向量的第三个第一列向量与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第七坐标变换信息相加,得到所述每个顶点的世界空间坐标。
11.根据权利要求10所述的方法,其特征在于,
所述将所述多个第一列向量的第一个第一列向量与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理,得到第六坐标变换信息,包括:
将所述多个第一列向量的第一个第一列向量的前三维数值与所述每个顶点的齐次坐标的第一维坐标值进行第一次乘积处理;
所述将所述多个第一列向量的第二个第一列向量与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理,包括:
将所述多个第一列向量的第二个第一列向量的前三维数值与所述每个顶点的齐次坐标的第二维坐标值进行第二次乘积处理;
所述将所述多个第一列向量的第三个第一列向量与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第七坐标变换信息相加,得到所述每个顶点的世界空间坐标,包括:
将所述多个第一列向量的第三个第一列向量的前三维数值与所述每个顶点的齐次坐标的第三维坐标值进行第三次乘积处理,并将第三次乘积结果与所述第七坐标变换信息相加,得到三维的第八坐标变换信息,并将所述第八坐标变换信息与常数进行拼接处理,得到所述每个顶点的世界空间坐标。
12.根据权利要求1所述的方法,其特征在于,所述基于所述每个顶点的转换坐标对所述待渲染的虚拟对象进行图像渲染处理,得到渲染后的虚拟对象,包括:
对所述每个顶点的转换坐标进行光栅化处理,得到所述每个顶点对应的像素;
对所述每个顶点对应的像素进行着色处理,得到每个像素对应的颜色;
对所述每个像素对应的颜色进行混合处理,得到所述渲染后的虚拟对象。
13.一种图像渲染装置,其特征在于,所述装置包括:
获取模块,用于获取待渲染的虚拟对象的多个顶点,其中,每个顶点对应一个顶点坐标;
齐次化模块,用于对所述每个顶点的顶点坐标进行齐次化处理,得到所述每个顶点的齐次坐标;
转换模块,用于基于坐标转换矩阵对所述每个顶点的齐次坐标进行向量乘加处理,得到所述每个顶点的转换坐标;
渲染模块,用于基于所述每个顶点的转换坐标对所述待渲染的虚拟对象进行图像渲染处理,得到渲染后的虚拟对象。
14.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至12任一项所述的图像渲染方法。
15.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时实现权利要求1至12任一项所述的图像渲染方法。
16.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时实现权利要求1至12任一项所述的图像渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210053376.3A CN114399580A (zh) | 2022-01-18 | 2022-01-18 | 一种图像渲染方法、装置、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210053376.3A CN114399580A (zh) | 2022-01-18 | 2022-01-18 | 一种图像渲染方法、装置、设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114399580A true CN114399580A (zh) | 2022-04-26 |
Family
ID=81230437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210053376.3A Pending CN114399580A (zh) | 2022-01-18 | 2022-01-18 | 一种图像渲染方法、装置、设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114399580A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117765098A (zh) * | 2024-02-22 | 2024-03-26 | 青岛科技大学 | 一种相机辅助标定方法、系统、设备及存储介质 |
-
2022
- 2022-01-18 CN CN202210053376.3A patent/CN114399580A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117765098A (zh) * | 2024-02-22 | 2024-03-26 | 青岛科技大学 | 一种相机辅助标定方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022116759A1 (zh) | 图像渲染方法、装置、计算机设备和存储介质 | |
US9934602B2 (en) | System, method and device for three-dimensional modeling | |
US20240037839A1 (en) | Image rendering | |
CN105283900A (zh) | 用于压缩顶点着色器输出参数的方案 | |
CN114067042A (zh) | 一种图像渲染方法、装置、设备、存储介质及程序产品 | |
CN112669194B (zh) | 虚拟场景中的动画处理方法、装置、设备及存储介质 | |
Angel et al. | Teaching a shader-based introduction to computer graphics | |
CN111773688B (zh) | 柔性对象的渲染方法和装置、存储介质、电子装置 | |
WO2023197762A1 (zh) | 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN114399580A (zh) | 一种图像渲染方法、装置、设备、存储介质及程序产品 | |
CN114359458A (zh) | 一种图像渲染方法、装置、设备、存储介质及程序产品 | |
CN115082607A (zh) | 虚拟角色头发渲染方法、装置、电子设备和存储介质 | |
WO2023202254A1 (zh) | 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN117101127A (zh) | 虚拟场景中的图像渲染方法、装置、电子设备及存储介质 | |
KR100632535B1 (ko) | 이동통신단말기용 삼차원 그래픽 엔진 및 그래픽 제공 방법 | |
CN113192173B (zh) | 三维场景的图像处理方法、装置及电子设备 | |
WO2023165198A1 (zh) | 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN117078824A (zh) | 参数拟合方法、装置、设备、存储介质及程序产品 | |
CN114219924B (zh) | 虚拟场景的适配显示方法、装置、设备、介质及程序产品 | |
WO2023142756A1 (zh) | 直播互动方法、装置以及系统 | |
US20070115280A1 (en) | Program, information storage medium, and image generation system | |
CN117437346A (zh) | 图像处理方法、装置、电子设备、存储介质及程序产品 | |
Peddie | Application Program Interface (API) | |
CN116363293A (zh) | 模型渲染方法、装置、计算机设备及计算机可读存储介质 | |
CN115797524A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40069398 Country of ref document: HK |