CN112381918A - 图像渲染方法、装置、计算机设备和存储介质 - Google Patents
图像渲染方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112381918A CN112381918A CN202011395294.4A CN202011395294A CN112381918A CN 112381918 A CN112381918 A CN 112381918A CN 202011395294 A CN202011395294 A CN 202011395294A CN 112381918 A CN112381918 A CN 112381918A
- Authority
- CN
- China
- Prior art keywords
- rendering
- cache block
- channel
- shader
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 908
- 238000000034 method Methods 0.000 title claims abstract description 106
- 238000003860 storage Methods 0.000 title claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 154
- 230000008569 process Effects 0.000 claims abstract description 51
- 230000001960 triggered effect Effects 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 129
- 238000005286 illumination Methods 0.000 claims description 48
- 238000004040 coloring Methods 0.000 claims description 36
- 239000000463 material Substances 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 17
- 238000005070 sampling Methods 0.000 claims description 12
- 230000001419 dependent effect Effects 0.000 claims 1
- 230000002829 reductive effect Effects 0.000 abstract description 8
- 239000000872 buffer Substances 0.000 description 30
- 230000000694 effects Effects 0.000 description 19
- 238000005516 engineering process Methods 0.000 description 19
- 238000004364 calculation method Methods 0.000 description 16
- 230000003111 delayed effect Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 239000002184 metal Substances 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 5
- 239000003086 colorant Substances 0.000 description 5
- 239000003550 marker Substances 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 244000025254 Cannabis sativa Species 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 239000004606 Fillers/Extenders Substances 0.000 description 3
- 239000000306 component Substances 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 239000008358 core component Substances 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- -1 normals Substances 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/005—General purpose rendering architectures
-
- 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/55—Radiosity
-
- 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/506—Illumination models
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Image Generation (AREA)
Abstract
本申请涉及一种图像渲染方法、装置、计算机设备和存储介质。所述方法包括:在获取到应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器;预先编译的着色器,是对渲染引擎的原始着色器进行编译生成的;根据渲染指令获取与渲染目标对应的场景数据,将场景数据写入缓存块;基于目标着色器,在缓存块中将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道;在同一渲染通道中对缓存块中的所述场景数据进行图像渲染处理,以在缓存块中得到图像渲染结果。采用本方法能够有效减少图像渲染处理过程中的带宽消耗,同时有效提高了图像渲染处理的效率。
Description
技术领域
本申请涉及图像处理技术领域,特别是涉及一种图像渲染方法、装置、计算机设备和存储介质。
背景技术
渲染是三维计算机图形学中的重要研究课题之一,在图形处理流水线中,渲染是最后一项重要步骤,通过它得到模型与动画最终显示效果。随着计算机图形的不断复杂化,渲染也越来越成为一项重要的技术,被广泛应用于计算机与视频游戏、模拟、影视特效以及可视化设计等场景中。目前出现了各种不同的渲染工具,可以用于集成到更大的建模或者动画包中。
目前的渲染方式通常是通过指定的图形接口和着色器,采用固定的渲染管线进行渲染处理。通常在调用图形接口进行渲染处理的过程中,需要消耗大量资源以及消耗较多时间,对于在较低配置的终端设备上的运行效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够有效减少资源消耗并有效提高渲染效率的图像渲染方法、装置、计算机设备和存储介质。
一种图像渲染方法,所述方法包括:
在获取到应用程序触发的渲染指令后,则
从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与所述应用程序的图形接口对应的目标着色器;所述预先编译的着色器,是对所述渲染引擎的原始着色器进行编译生成的;
根据所述渲染指令获取与渲染目标对应的场景数据,将所述场景数据写入缓存块;
基于所述目标着色器,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道;
在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,以在所述缓存块中得到图像渲染结果。
一种图像渲染装置,所述装置包括:
目标着色器调用模块,用于在获取到应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与所述应用程序的图形接口对应的目标着色器;所述预先编译的着色器,是对所述渲染引擎的原始着色器进行编译生成的;
数据获取模块,用于根据所述渲染指令获取与渲染目标对应的场景数据,将所述场景数据写入缓存块;
渲染处理模块,用于基于所述目标着色器,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道;在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,以在所述缓存块中得到图像渲染结果。
在一个实施例中,上述图像渲染装装置还包括着色器编译模块,用于在所述渲染引擎的原始着色器中,分别配置与各类型的图形接口对应的显式描述函数和标记函数,以编译得到与各所述图形接口对应的着色器;其中,所述显式描述函数用于添加各所述渲染通道的描述信息;所述标记函数,用于标记合并后的渲染通道的起始渲染标识和结尾渲染标识。
在一个实施例中,着色器编译模块还用于在所述渲染引擎的原始着色器中,针对每个类型的图形接口,分别配置与不同类型的图形处理器对应的显式描述函数和标记函数,以编译得到与各类型的所述图形接口对应的着色器。
在一个实施例中,所述目标着色器调用模块还用于当所述应用程序启动运行时,运行所述应用程序中的渲染引擎;所述渲染引擎的渲染硬件接口层中包括不同类型的图形接口;根据所述应用程序的运行平台类型,从所述不同类型的图形接口中,确定所述应用程序中与所述运行平台类型相对应的类型的图形接口。
在一个实施例中,目标着色器中包括与不同类型的图形处理器对应的显式描述函数和标记函数;所述目标着色器调用模块还用于通过图形处理器,从所述目标着色器中调用与所述图形处理器的类型对应的显式描述函数和标记函数;通过所述目标着色器,根据所述显式描述函数和标记函数,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道,以进行图像渲染处理。
在一个实施例中,所述渲染处理模块还用于通过所述目标着色器,根据所述显式描述函数获取各所述渲染通道对应的描述信息;根据各所述渲染通道对应的描述信息,确定各所述渲染通道对应的渲染目标,以及各所述渲染通道之间的依赖关系;根据所述标记函数,在缓存块中将与同一渲染目标对应的具有依赖关系的各所述渲染通道,合并为与所述渲染目标对应的同一渲染通道。
在一个实施例中,每个像素对应的场景数据存储于一个缓存块中;所述渲染处理模块还用于分别调用与每个像素对应的线程,且并行地执行调用的各所述线程,以通过所述目标着色器和所述场景数据对合并后的渲染通道进行图像渲染处理。
在一个实施例中,所述渲染处理模块还用于对与所述渲染目标对应的具有依赖关系的各所述渲染通道,标记各所述渲染通道对应的起始渲染标识和结尾渲染标识;
通过所述目标着色器根据所述缓存块中的所述场景数据,对合并后的渲染通道进行图像渲染处理,并将所述起始渲染标识和所述结尾渲染标识之间的各所述渲染通道得到的中间结果,分别写入所述缓存块中,以在所述缓存块中得到最终的图像渲染结果。
在一个实施例中,所述渲染处理模块还用于通过所述目标着色器根据当前一个缓存块中的所述场景数据,对合并后的渲染通道进行图像渲染处理,并将得到的中间结果存储至缓存块中的相应位置;当根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理完成后,将下一个缓存块作为当前一个缓存块,并重复通过所述目标着色器根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理的步骤。
在一个实施例中,所述渲染处理模块还用于获取各所述渲染通道得到的中间结果;将每一个像素对应的中间结果,分别写入对应的一个缓存块中;各所述像素对应的中间结果的字节占用量,不超过各所述缓存块的内存容量。
在一个实施例中,所述渲染通道包括纹理采样通道和光照着色通道;所述渲染处理模块还用于通过所述目标着色器,根据所述缓存块中的所述场景数据,对所述纹理渲染通道进行图像渲染处理,并将所述纹理渲染通道的纹理结果数据写入所述缓存块中;通过所述目标着色器,根据所述缓存块中的所述纹理结果数据,对所述光照着色通道进行图像渲染处理,并将所述光照着色通道的着色结果数据写入所述缓存块中。
在一个实施例中,所述渲染处理模块还用于从所述缓存块中各像素对应的像素位置,读取各像素对应的纹理结果数据;所述纹理结果数据包括各像素对应的材质属性;根据各像素对应的材质属性,获取与所述材质属性匹配的光照模型;通过所述目标着色器在屏幕空间内,根据各像素对应的光照模型和各所述纹理结果数据,对各像素对应的光照着色通道进行图像渲染处理。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在获取到应用程序触发的渲染指令后,则
从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与所述应用程序的图形接口对应的目标着色器;所述预先编译的着色器,是对所述渲染引擎的原始着色器进行编译生成的;
根据所述渲染指令获取与渲染目标对应的场景数据,将所述场景数据写入缓存块;
基于所述目标着色器,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道;
在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,以在所述缓存块中得到图像渲染结果。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
在获取到应用程序触发的渲染指令后,则
从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与所述应用程序的图形接口对应的目标着色器;所述预先编译的着色器,是对所述渲染引擎的原始着色器进行编译生成的;
根据所述渲染指令获取与渲染目标对应的场景数据,将所述场景数据写入缓存块;
基于所述目标着色器,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道;
在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,以在所述缓存块中得到图像渲染结果。
一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中;所述计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令时实现以下步骤:
在获取到应用程序触发的渲染指令后,则
从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与所述应用程序的图形接口对应的目标着色器;所述预先编译的着色器,是对所述渲染引擎的原始着色器进行编译生成的;
根据所述渲染指令获取与渲染目标对应的场景数据,将所述场景数据写入缓存块;
基于所述目标着色器,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道;
在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,以在所述缓存块中得到图像渲染结果。
上述图像渲染方法、装置、计算机设备和存储介质,在获取到应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器;由于预先编译的着色器是对渲染引擎的原始着色器进行编译生成的,由此在应用程序运行的时候,能够灵活地根据应用程序当前的运行平台的类型调用与其对应的图像接口对应的目标着色器,从而能够适应于各种运行平台。终端进而根据渲染指令获取与渲染目标对应的场景数据,将场景数据写入缓存块;通过目标着色器根据缓存块中的场景数据,在缓存块中将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道进行图像渲染处理,以在缓存块中得到图像渲染结果。由此避免了将各渲染通道得到的中间结果数据写入系统内存导致的大量数据读写消耗,从而有效减少了图像渲染处理过程中的带宽消耗,进而有效提高了图像渲染处理的效率。
附图说明
图1为一个实施例中图像渲染方法的应用环境图;
图2为一个实施例中图像渲染方法的流程示意图;
图3为一个实施例中编译与各图形接口类型分别对应的着色器的示意图;
图4为一个实施例中渲染引擎编辑器的项目设置界面的示意图;
图5为一个实施例中合并渲染通道的示意图;
图6为另一个实施例中图像渲染方法的流程示意图;
图7为一个实施例中图像帧的图像渲染效果的示意图;
图8为一个实施例中图像渲染装置的结构框图;
图9为另一个实施例中图像渲染装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的图像渲染方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。终端102启动应用程序后,从对应的应用程序的服务器104中,获取待渲染图像的场景数据。终端102在获取到应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器;预先编译的着色器,是对渲染引擎的原始着色器进行编译生成的;根据渲染指令获取与渲染目标对应的场景数据,将场景数据写入缓存块;通过目标着色器根据缓存块中的场景数据,将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道进行图像渲染处理,以在缓存块中得到图像渲染结果。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
计算机视觉技术(Computer Vision,CV)计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、OCR、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。可以理解,在本申请的图像渲染方法,就是基于计算机视觉技术,对待渲染的图像进行图像渲染处理,并能够有效提高图像渲染处理的效率。
在一个实施例中,如图2所示,提供了一种图像渲染方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
S202,在获取到应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器;预先编译的着色器,是对渲染引擎的原始着色器进行编译生成的。
图像渲染在计算机图形中是指将三维场景中的物体模型,按照设定好的环境、材质、光照及渲染参数,二维投影成数字图像的过程。也就是将三维的光能传递处理转换为一个二维图像的过程。场景和实体用三维形式表示,更接近于现实世界,便于操纵和变换。在图形流水线中,渲染是最后一项重要步骤,通过它得到模型与动画最终显示效果。
渲染引擎是已经编写好的可实现图像渲染的核心组件或系统,例如一些互交式实时图像应用程序的核心组件。利用渲染引擎可迅速建立应用程序所需的图像渲染功能以辅助程序的运转。
可以理解,终端包括图形处理器、存储器以及显示屏。其中,存储器包括系统内存对应的系统存储器和用于高速数据交换的缓存存储器,缓存存储器中包括缓存块。终端中部署有应用程序,应用程序中部署有渲染引擎。终端通过应用程序运行渲染引擎时,通过图形处理器能够将模型、动画、光影、特效等所有效果实时计算出来,并在终端的显示屏上展示渲染效果。例如,游戏应用程序中的渲染引擎包括Unreal Engine虚幻引擎、Unity引擎等。
其中,应用程序中的渲染器或着色器,通常是通过基于底层图形API(ApplicationProgramming Interface,应用程序接口)构建,图形接口负责与终端的硬件进行通信,以采用适合硬件架构的光栅化方式进行图像渲染处理。例如,常用的图形接口包括Metal图形接口、Vulkan图形接口、OpenGL(Open Graphics Library,开放图形库)图形接口、OpenGLES(OpenGL for Embedded Systems,嵌入式系统开放图形库)图形接口等。其中,Metal是一种低层次的渲染应用程序编程接口。Vulkan是一种跨平台的2D和3D绘图应用程序接口。OpenGL是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口。OpenGL ES是OpenGL三维图形接口的子集,针对移动终端、手持设备、手持游戏机等嵌入式设备而设计。
其中,着色器是用于实现图像渲染的,可替代固定渲染管线的可编辑程序。着色器中包括顶点着色器和像素着色器。其中顶点着色器主要负责顶点的几何关系等的运算,像素着色器主要负责片源颜色等的计算。着色器替代了传统的固定渲染管线,可以实现三维图形学计算中的相关计算。由于其可编辑性,可以实现各种各样的图像效果而不用受显卡的固定渲染管线的限制。
可以理解的是,着色器是穿插在渲染流水线上的一段算法程序,负责将输入的顶点数据以指定的方式和输入的贴图或者颜色等组合起来,然后输出。通常是由图形处理器通过目标着色器读入相应的输入纹理,通过图形处理器的渲染管线对目标色器输入的图像帧进行渲染。然后将渲染后的图像帧写入帧缓存区进行缓存,以最终输出到终端的屏幕上。
其中,应用程序中部署了渲染引擎,渲染引擎中部署有预先编译的、包括不同类型的图形接口对应的着色器。其中,不同类型的图形接口对应的着色器,是通过对渲染引擎的原始着色器进行编译生成的,可以在终端的图形处理器中运行。可以理解,渲染引擎的原始着色器,是指渲染引擎中开源的着色器脚本。渲染引擎的原始着色器通常仅支持指定的图形接口,且针对不同类型的图形接口的功能支持性不同。
通过调用与应用程序当前的运行平台类型所对应的图形接口,能够获取与该图形接口相适应的目标着色器,以适应不同终端的运行平台。从而能够灵活地调用与应用程序的图形接口相适应的预先编译的着色器。
当终端启动应用程序后,运行应用程序以及应用程序中的渲染引擎。应用程序在运行的过程中,可以向终端发送一系列的渲染指令,以对应用程序需要展示的图像场景进行图像渲染处理,以在终端的界面显示相应的图像效果。
终端在获取到应用程序触发的渲染指令后,则通过终端的GPU(GraphicsProcessing Unit,图形处理器),从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器。终端的图形处理器则通过所调用的目标着色器对应用程序中待渲染的图像帧进行相应的图像渲染处理。
S204,根据渲染指令获取与渲染目标对应的场景数据,将场景数据写入缓存块。
其中,在计算机图形处理中,渲染目标是计算机内存中用于绘制待渲染图像帧的缓冲区,也就是包括待渲染图像帧需要绘制的信息的显存缓冲区。可以理解,渲染目标是用于记录像素渲染后的输出结果的一个缓冲区。渲染目标对应一个连续的内存区域,内存区域可以同时存在多个,表示存在多个渲染目标。
图形管道有一个称为后台缓冲区的默认渲染目标,包含要绘制的下一个图像帧的视频内存的一部分。通常,大多数游戏应用程序在后备缓冲区之外将大量的内容绘制到其他渲染目标内,然后编译各图像元素后,将各图像元素组合起来构成最终的后备缓冲。可以理解,在一些场景下,一个待渲染图像帧可以多个渲染目标,通过将一个待渲染图像帧中的不同部分绘制在不同的渲染目标上,然后将属于该待渲染图像帧的渲染目标进行合成,得到该待渲染图像帧对应的最终的图像渲染结果。
场景数据是指待渲染图像帧中图形对象对应的各种场景信息,例如颜色、顶点数据、纹理数据、材质类别、间接光照、法线向量、反射率、法线等数据。其中,纹理是指物体的某个特定表面特征,也就是待渲染图像帧中图形对象对应的表面特征,不同的物体表面会产生不同的纹理图像。对于渲染目标,终端可以获取与当前处理的渲染目标对应的场景数据,例如可以是待渲染图像帧对应的全部场景数据,也可以是待渲染图像帧对应的其中一部分场景数据。
其中,缓存块是基于缓存内存所分配的缓存资源子集,这些资源子集称为TileMemory,即缓存块。将待处理的数据存储至缓存内存,能够有效提高数据的读写性能和处理效率。各缓存块的大小由终端的图形处理器驱动决定,图形处理器可通过渲染管线决定各缓存块存储哪些信息。
终端的图形处理器在渲染时会将屏幕像素分块处理,每一块像素的计算结果数据会先存储在图形处理起的一块专用高速缓存中,整块像素计算完成之后再将图像渲染结果一起写出到外部显存。例如,这块高速缓存在Apple类型的图形处理器上被称作Threadgroup Memory线程组内存,在Mali类型的图形处理器上被称作Tile Buffer平铺缓冲区,在Adreno类型的图形处理器上被称作Gmem内存,这些均可统称为缓存块。
可以理解,待渲染图像帧中包括多个需要渲染的图形对象。图形对象即需要绘制的图形元素,例如人物、车辆、房屋等各种图形元素。图形对象可根据相应的场景数据绘制生成。通常待渲染图像帧对应的场景数据存储在应用程序的安装包中,可从应用程序的安装包中调取待渲染图像帧对应的场景数据,并对调取的场景数据进行图像渲染处理。
终端对图像进行渲染的过程中,根据渲染指令获取与渲染目标对应的场景数据后,首先将获取的场景数据写入缓存块中,以通过目标着色器直接在缓存中根据场景数据对相应的渲染目标进行图像渲染处理。
S206,基于目标着色器,在缓存块中将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道。
可以理解的是,通过基于渲染引擎的原始着色器进行再次编译,从而能够分别得到与不同类型的图形接口对应的着色器。预先编译后的各类型的图形接口对应的着色器,均能够实现基于缓存块的延迟渲染管线的优化处理方式。也就是均能够支持将针对渲染目标具有依赖关系的各渲染通道得到的中间结果数据先写入缓存块中,以在缓存库中进行延迟渲染处理,最后再将在缓存块中得到的图像渲染结果写入系统内存。
其中,依赖关系是指一个活动的变更将会影响到另一个活动的关系。可以理解,具有依赖关系的各渲染通道,表示多个渲染通道中具有数据依赖的渲染通道。也就是其中一个渲染通道的数据会影响另一个渲染通道的处理,比如其中一个渲染通道的处理依赖于另一个渲染通道对应的数据,则表示这两个渲染通道具有依赖关系。其中,多个是指两个以上。
其中,渲染通道,也即RenderPass,是指对待渲染对象的一个渲染过程,也即应用程序对应于一次向图形处理器提交的渲染指令的集合。也可以理解为一个渲染通道就是渲染管线的单次运行。每个渲染通道要渲染哪些图形对象,这些渲染通道就构成了渲染管线。例如,渲染通道可以包括GBuffer Pass几何缓冲通道、Shading Pass光照着色通道等。其中,GBuffer Pass在延迟渲染管线中是指将所有可见物体的各项属性输出到多张纹理中以便之后的光照计算取用的一个步骤,GBuffer指包括位置信息、光照信息、法线信息、材质类别、切线信息、纹理信息等的几何缓冲区,GBuffer Pass输出的结果为中间结果。例如,通常需要4张纹理进行存储。Shading Pass是基于GBuffer Pass输出的中间结果进一步进行光照着色处理的过程。可以理解,中间结果表示在图像渲染处理过程中,各个渲染通道输出的数据。基于这些中间结果进一步进行图像渲染处理,能够得到最终的图像渲染结果。
可以理解的是,渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的并行处理单元。渲染管线就是显示核心中负责给图形配上颜色的一组专门通道。渲染管线的数量一般是以像素渲染流水线的数量乘以每管线的纹理单元数量来表示。渲染流水线通常包括应用阶段、几何阶段和光栅阶段。图形渲染管线的主要功能是根据给定的虚拟相机、三维物体和光源等,生成一个渲染后的二维图像。
在多通道渲染技术中,一个物体通常需要多次渲染操作,每个渲染过程的结果会被累加到最终的呈现结果上。一个渲染通道将图像帧的中间结果数据渲染到缓存内存的缓存块中。针对同一渲染目标的渲染通道之间是相互依赖的,后面的渲染通道会用到前面的渲染通道的数据,如深度信息、几何信息等。最后的渲染通道得到的结果数据,即为最终的图像渲染结果。因此,渲染通道可以理解为是一道道图像渲染处理工序。
具体地,可以采用延迟渲染的方式进行图像渲染处理,即采用延迟渲染管线进行图像渲染处理。其中,延迟渲染是将不接受光照的场景先渲染到几何缓冲区,由几何缓冲区将场景数据渲染到待渲染图像帧中图形对象对应的纹理中,然后再对渲染到纹理中的数据进行光照处理。可以理解,几何缓冲区,用于将场景数据渲染到待渲染图像帧中图形对象对应的纹理中。采用延迟渲染的方式,能够避免对不可见像素点的光照计算,允许通过光源几何体控制光源的着色范围,可以渲染大量光源,可以有效提升多光源场景的渲染效率。对于光源和物体数量较多的场景,延迟渲染的效率远超前向渲染的方式,并且延迟渲染可以极大减少像素着色器的计算压力。
可以理解,各渲染通道包括相应的绘制命令,如对各图像对象的绘制命令。将各渲染通道合并为同一渲染通道,是表示将多个渲染通道的绘制命令,组合为一个整体的渲染通道的绘制命令,被合并的个渲染通道则可以作为该整体的渲染通道中的子渲染通道。
终端获取场景数据后,则通过图形处理器利用目标着色器,根据场景数据对渲染目标对应的各个渲染通道进行处理。其中,目标着色器在进行图像渲染处理的过程中,在缓存块中将与渲染目标对应的具有依赖关系的各渲染通道的绘制命令,组合为一个整体的渲染通道的绘制命令,从而实现将具有依赖关系的各渲染通道合并为同一渲染通道,由此能够在合并后的同一渲染通道中执行各个原始的渲染通道对应的绘制命令,使得对同一渲染通道中的各绘制命令进行处理后所得到中间结果,均写入缓存块中。可以理解,将多个渲染通道的绘制命令,组合为一个整体的渲染通道的绘制命令后,使得合并后的渲染通道中的绘制命令,均采用相同的数据读写方式进行处理。即均从缓存块中读取各绘制命令所需的数据,然后将执行各绘制命令后输出的中间结果也写入缓存块中。由此使得合并后的各个渲染通道的计算都在缓存块中进行处理,从而能够确保合并后的各个渲染通道处理后所得到中间结果数据不会被写入系统内存中。
S208,在同一渲染通道中对缓存块中的场景数据进行图像渲染处理,以在缓存块中得到图像渲染结果。
可以理解,图像渲染结果,是针对渲染目标对一系列的渲染通道处理完成后,得到的最终的结果。
可以理解的是,缓存先于系统内存与处理器交换数据,因此直接从缓存中提取数据并进行处理,数据的读取速率和处理速度较快。
终端的图形处理器通过目标着色器,在缓存块中将与渲染目标对应的具有依赖关系的各渲染通道进行合并后,则在合并后的同一渲染通道中,对缓存块中的场景数据进行图像渲染处理,并将得到最终的图像渲染结果写入缓存块中,以在缓存块中得到图像渲染结果。由此能够有效实现合并后的各个渲染通道的计算都在缓存块中进行处理,从而在缓存块中得到图像渲染结果。
在其中一个实施例中,终端的图形处理器进一步将在缓存块中得到的最终的图像渲染结果写入系统内存。具体地,可以将图像渲染结果写入系统内存的帧缓存中,使得终端的显示屏从帧缓存中读取图像渲染结果,以将图像渲染结果在终端的显示屏上进行显示。
在传统的方式中,在对每一个渲染通道进行处理时,将每一个渲染通道得到的中间结果数据需要写回到系统内存中。对下一个渲染通道进行处理时,再从系统内存中读取相应的中间结果数据进图像渲染处理。而这种方式对各渲染通道进行处理的过程中,需要大量的读写数据以进行计算,在带宽上会造成较大压力。并且现有移动终端的图形处理器与中央处理器通常共享同一物理内存的架构,会增加图形处理器的压力,造成硬件资源浪费。
上述图像渲染方法中,终端在获取到应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器;由于预先编译的着色器是对渲染引擎的原始着色器进行编译生成的,由此在应用程序运行的时候,能够灵活地根据应用程序当前的运行平台的类型调用与其对应的图像接口对应的着色器,从而能够适应于各种运行平台。终端进而根据渲染指令获取渲染目标的场景数据,将场景数据写入缓存块;通过目标着色器根据缓存块中的场景数据,将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道进行图像渲染处理,然后将在缓存块中得到的图像渲染结果写入系统内存,由此避免了将各渲染通道得到的中间结果数据写入系统内存导致的大量数据读写消耗,从而有效减少了图像渲染处理过程中的带宽消耗,进而有效提高了图像渲染处理的效率。
在一个实施例中,在从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器之前,还包括:在渲染引擎的原始着色器中,分别配置与各类型的图形接口对应的显式描述函数和标记函数,以编译得到与各图形接口对应的着色器;其中,显式描述函数用于添加各渲染通道的描述信息;标记函数,用于标记合并后的渲染通道的起始渲染标识和结尾渲染标识。
其中,预先编译的着色器,是对渲染引擎的原始着色器进行编译生成的。因此,在调用与应用程序的图形接口对应的目标着色器之前,还需要预先编译与不同类型的图形接口分别对应的着色器。
开发人员通过对应的编译端,在编译应用程序的过程中,可以编译渲染引擎,也可以直接获取预先编写好的渲染引擎部署在应用程序中。然后基于渲染引擎中已有的原始着色器,编译与不同类型的图形接口分别对应的着色器。
具体地,在基于原始着色器分别编译与各图形接口对应的着色器的过程中,分别配置与各类型的图形接口对应的显式描述函数和标记函数,从而生成与各图形接口对应的着色器。例如,可以在渲染引擎对项目打包时,对渲染引擎中原始的着色器进行编译,分别生成与各类型的图形接口对应的着色器。
对于显式描述函数,具体可以在着色器中配置相应的显式描述函数,以通过显式描述函数添加各渲染通道的描述信息,以及各渲染通道的输入输出参数信息,以确定需要读写哪些渲染目标以建立各渲染通道之间的依赖关系。
对于标记函数,具体可以在着色器中配置标记函数,以按照各渲染通道的渲染序列,在第一个渲染通道之前标记起始渲染标识,比如BeginRenderPass。并在最后一个渲染通道之后标记结尾渲染标识,比如EndRenderPass。以确保各渲染通道所得到的中间数据不被写出到系统内存。
本实施例中,所编译的与各类型的图形接口对应的着色器,均支持基于缓存块的图像渲染处理。针对与移动终端平台对应的主流图形接口,如Metal类型的图形接口、OpenGLES类型的图形接口、Vulkan类型的图形接口等,均提供了对缓存块的使用的支持。例如Metal类型的图形接口可以支持片元函数输入属性,如Fragment Function InputAttribute。OpenGLES类型的图形接口可以支持帧缓冲区读取属性,如FramebufferFetch,以及像素本地存储属性,如PixelLocalStorage。这些特性提供了对缓存块不同程度的支持。
以Metal类型、OpenGLES类型以及Vulkan类型的图形接口为例,如图3所示,为一个实施例中编译与各图形接口类型分别对应的着色器的示意图。具体地,可在编译端编译着色器的过程中,在基于HLSL(High Level Shader Language,高阶着色器语言)着色器中,通过HLSLcc(HLSL Cross Compiler,高阶着色器语言交叉编译器)对渲染引擎的原始着色器进行编译,以编译为与各图形接口分别对应的着色器语言。然后在将原始着色器翻译为目标平台着色器语言的过程中,对不同着色器语言以及不同运行平台类型,生成相兼容的着色器代码。并在编译的过程中,分别在与各图形接口的着色器中配置支持基于缓存块的延迟渲染管线的内置函数,来表示对缓存块的读取,编译后的各类型的图形接口对应的着色器,均能够实现基于缓存块的延迟渲染管线的优化处理方式。从而得到与各图形接口类型分别对应的着色器。
进一步的,在渲染管线中,由于各种类型的运行平台存在差异,可能会导致在某些平台上走不同的执行路径。因此,还可以配置各种类型的运行平台相应的执行路径。在渲染管线中需要检测当前的运行平台的支持情况,执行所配置的相应的执行路径。
对于Vulkan类型的图形接口,只需要将渲染通道的显示描述函数,对应配置为Vulkan类型的图形接口所要求的各个结构体,同时配置每个渲染通道的读写操作一致。
对于OpenGLES类型的图形接口和Metal类型的图形接口,合并渲染通道的操作相对于Vulkan类型的图形接口是隐式的。其中,隐式,是指接口和类都可以访问。所以,图形处理器在运行渲染引擎时,能够直接调用针对图形接口预先配置的显示描述函数和标记函数。只要渲染层调用的目标着色器没有在渲染结尾标识之前提前执行完,即可保证合并具有依赖关系的各渲染通道。
在其中一个实施例中,对于OpenGLES类型的图形接口和Metal类型的图形接口,还可以对各渲染通道配置相关性属性,用于对没有依赖关系的渲染通道对应的帧缓冲区设置非相干的属性信息。在进行图像渲染处理的过程中,目标着色器可以根据各渲染通道之间的依赖关系,获取相关性属性中的属性信息,以识别具有非相干属性的渲染通道。例如在高通平台上,可以通过采用FramebufferFetchNonCoherent函数,配置各渲染通道的相关性属性。对于缓存块上同一个像素对应的非相干的渲染通道,图形处理器则采用不同的线程进行图像渲染处理。由此能够减少缓存块上同一个像素不同线程之间的同步,以增加渲染处理性能。
在其中一个实施例中,在配置渲染引擎的过程中,可以通过在渲染幻引擎编辑器的项目设置界面中增加针对移动终端平台的渲染管线的选择,以及是否开启基于TileMemory优化的开关。例如,如4图所示,为渲染引擎编辑器的项目设置界面,项目设置界面中包括移动平台的着色路径的选项和启用基于缓存块优化渲染的选项。其中,移动平台的着色路径的选项设置为2时,则表示启用延迟渲染管线。启用基于缓存块优化渲染的选项被选中时,则表示启用了基于缓存块的带宽优化。延迟渲染管线和基于缓存块的带宽优化功能开启后,能够在较低功耗情况下在移动设备使用延迟渲染管线以支持大量光源。
在一个实施例中,在渲染引擎的原始着色器中,分别配置与各类型的图形接口对应的显式描述函数和标记函数,以编译得到与各图形接口对应的着色器,包括:在渲染引擎的原始着色器中,针对每个类型的图形接口,分别配置与不同类型的图形处理器对应的显式描述函数和标记函数,以编译得到与各类型的图形接口对应的着色器。
其中,由于不同类型的图形处理器,对各类型的图形接口的扩展程序的支持情况有所不同,因此需要针对不同类型的图形处理器,分别采用适应的扩展程序配置相应的显式描述函数和标记函数,以对各类型图形接口对应的着色器进行优化配置。也就是在每个类型的图形接口所对应的着色器中,还分别配置多个不同类型的图形处理器对应的显式描述函数和标记函数。
例如,对于OpenGLES类型的图形接口对应的着色器,针对Mali类型的图形处理器,采用基于像素本地存储的扩展程序,来进行基于缓存块的优化配置,例如,基于像素本地存储的扩展程序可采用EXT_shader_pixel_local_storage扩展。针对Mali类型以外的图形处理器,则可以采用基于帧缓冲区读取的扩展程序,以进行基于缓存块的优化配置,例如,基于帧缓冲区读取的扩展程序可采用EXT_shader_framebuffer_fetch扩展。
其中,针对基于像素本地存储的扩展程序,如Pixel Local Storage。由于原始的着色器中的基于像素本地存储的扩展程序,不支持MRT(Multiple Render Target,多渲染目标)。因此,可以在与各类型的图形接口对应的着色器中,灵活地配置显示描述函数。在运行时端一旦检测到着色器设置了显式描述函数,就在构建各渲染通道的时候,将除了当前的渲染目标之外的其他渲染目标全部去掉,例如可通过设置Subpass Hint即渲染通道提示信息实现。
另外,由于像素本地存储的扩展程序不支持Fixed Function Blending固定函数混合的方式,即利用图形处理器中相应的硬件单元进行混合的方式,也就是,将扩展程序与图形处理器中的硬件单元进行软硬结合处理的方式,即,图形处理器可以通过可编译的着色器等软件程序,对图形处理器中的渲染管线(即硬件单元)进行资源占用、分配以及调用等处理。通过在使用基于像素本地存储的扩展程序的过程中,对所有渲染通道全部采用Programmable Blending可编程混合的方式(即函数合并处理的方式),从而使得在渲染的过程中能够调整渲染管线。
由于像素本地存储的扩展程序,要求着色器中声明一个结构体,结构体中的成员变量代表将会存储在缓存块中的变量。因此,通过利用着色器中自定义的内置函数,如“FramebufferFetchMRT0()-FramebufferFetchMRT7()”来表示对缓存块的读取,如序号0-7表示对渲染目标0-7的读取。在处理的过程中,若检测到以上函数的使用,就在着色器中添加一个基于像素本地存储的结构体的声明。结构体中包含所有存放在缓存块中的变量。然后将对以上内置函数的引用转换为对基于像素本地存储扩展的结构体成员的读取。而对着色器中各成员的写入并没有使用添加额外内置函数的方式,而是提供直接采用在着色器中进行文本替换的方式。这样一来不会在着色器中添加过多的复杂性,比如过多的针对不同类型的运行平台的分支处理。
其中,每个使用基于像素本地存储的扩展程序的着色器中都必须声明包含所有要存放在缓存块中的成员变量的结构体。每个着色器在运行过程中可能会调用不同的函数,导致每个着色器在处理的时候并不知道完整的基于像素本地存储扩展的结构体中到底有哪些成员。因此,通过在着色器中定义内置函数,即显式描述函数,如“CTGNumberOfColorsToKeepInTileMem()”。以通知着色器一共有多少个渲染目标,将会作为结构体变量存储在缓存块中。
由于一些基于像素本地存储的扩展程序,不支持同时写结构体成员和渲染目标。因此需要指明当前渲染通道中的着色器是最后一批使用基于像素本地存储的扩展程序的着色器。通过在着色器中配置另一个内置函数,即标记函数,例如“CTGPLSColorResolvePass()”,以标明当前的渲染通道是最后一个渲染通道。使得各渲染通道的中间结果不会继续写像素本地存储的结构体中,而是要写入到渲染目标对应的缓存块中。由此,通过采用基于像素本地存储的扩展程序,所有使用了像素本地存储的结构体的各相邻渲染通道就可以被合并为一个渲染通道。
针对Vulkan类型的图形接口对应的着色器中的配置过程与上述方式类似。例如,在Mali类型以外的运行平台上,如Adreno、PowerVR等,使用基于帧缓冲区读取的扩展程序进行优化配置,如EXT_shader_framebuffer_fetch这个扩展。与上述配置方式类似,通过对着色器配置内置函数,来表示对缓存块的读取。在与OpenGLES类型的图形接口对应的着色器中,将这些函数解析为基于帧缓冲区读取的扩展程序所支持的着色器语法,包括在着色器中声明每个待读取的渲染目标为输入属性,并且将内置函数替换为对渲染目标属性的直接引用。
针对Metal类型的图形接口对应的着色器,配置显式描述函数和标记函数的方式,与以上对基于帧缓冲区读取的扩展程序的配置方式类似。同样也可以通过将自定义内置函数,对着色器的返回值进行替换。不同的是要替换为Metal类型的图形接口所要求的语法规则,也就是要在着色器的入口函数的参数列表中添加待读取的渲染目标作为输入参数,并且为设置正确的Raster Order Group光栅组序列以获得正确且高性能的读写同步。
本实施例中,通过在着色器中检测当前的扩展程序支持情况,来选择不同路径的实现,支持了不同类型的运行平台都使用同一个着色器,避免了编译多份着色器可能带来的性能损失。
在一个实施例中,上述方法还包括:当应用程序启动运行时,运行应用程序中的渲染引擎;渲染引擎的渲染硬件接口层中包括不同类型的图形接口;根据应用程序的运行平台类型,从不同类型的图形接口中,确定应用程序中与运行平台类型相对应的类型的图形接口。
其中,渲染引擎包括渲染硬件接口层,即RHI(Render hardware interface,渲染硬件层接口),是一个统一的接口。渲染引擎中的渲染硬件接口层对应着多个图形接口。调用渲染引擎中的渲染硬件接口,就是渲染引擎初始化时候确定当前使用的图形接口对应的着色器以及相应的实现,以保证渲染引擎在不同类型的运行平台下运行结果都一样。
可以理解,图形处理器中也包括渲染层。图形处理器的渲染层通过调用渲染引擎的渲染硬件接口层的接口以处理相应的渲染任务。而不同类型的运行平台对渲染硬件接口层的图形接口都有相应不同的实现。因此,在引擎对项目进行打包的时候,可以选择将多种类型的图形接口对应的着色器的实现,打包至渲染引擎。在应用程序启动初始化时会检测当前运行平台的类型,以调用相适应的图形接口对应的着色器进行图像渲染处理。比如对于Windows类型的运行平台,可选择DirectX类型的图形接口对应的着色器;对于Android类型的运行平台,可选择Vulkan类型的图形接口对应的着色器。
渲染引擎在启动运行之后,通过虚幻引擎的渲染硬件接口层中的各图形接口提供给渲染层使用,以适应不同类型的运行平台。
本实施例中,通过终端在程序启动初始化时,检测应用程序当前的运行平台的类型。当应用程序启动运行时,同时运行应用程序中的渲染引擎。终端的图形处理器则根据应用程序的运行平台类型,从不同类型的图形接口中,确定应用程序中与运行平台类型相对应的类型的图形接口,由此能够调用适应于当前运行平台类型相适应的着色器,以进高效地行图像渲染处理。
在一个实施例中,目标着色器中包括与不同类型的图形处理器对应的显式描述函数和标记函数;基于目标着色器,在缓存块中将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道,包括:通过图形处理器,从目标着色器中调用与图形处理器的类型对应的显式描述函数和标记函数;通过目标着色器,根据调用的显式描述函数和标记函数,在缓存块中将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道。
其中,图形处理器的类型包括多种,例如包括Mali类型、Apple类型、Adreno类型等。针对不同类型的图形处理器,可以在与各图形接口对应的着色器中,分别配置与各种类型的图形处理器适应的显式描述函数和标记函数。
终端在运行应用程序时,检测所调用的目标着色器中针对各类型的图形处理器所配置的各函数。然后终端通过图形处理器从目标着色器中调用与图形处理器的类型对应的显式描述函数和标记函数。
终端进而通过目标着色器,根据调用的显式描述函数和标记函数,将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道,以在缓存块中对合并后的渲染通道进行图像渲染处理。
本实施例中,通过在与各图形接口对应的着色器中,分别配置与各种类型的图形处理器适应的显式描述函数和标记函数,避免了针对不同类的图形处理器编译多份着色器可能带来的性能损失,有效节省了资源消耗。
在一个实施例中,通过目标着色器,根据显式描述函数和标记函数,在缓存块中将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道,包括:通过目标着色器,根据显式描述函数获取各渲染通道对应的描述信息;根据各渲染通道对应的描述信息,确定各渲染通道对应的渲染目标,以及各渲染通道之间的依赖关系;根据标记函数,在缓存块中将与同一渲染目标对应的具有依赖关系的各渲染通道,合并为与渲染目标对应的同一渲染通道。
其中,描述信息是指用于描述各渲染通道的属性的信息,例如各渲染通道的输入参数、输出参数等各种属性信息。通过描述信息可以显式地获取到每个渲染通道的输入参数和输出参数的等各种属性信息,由此能够清楚地获知哪些渲染目标对应的带宽被节省。
终端的图形处理器通过着色器进行图像渲染处理的过程中,可以通过着色器中的显示描述函数获取各个渲染通道对应的描述信息。由于描述信息中包括各渲染通道的输入参数和输出参数等各种属性参数,由此能够根据描述信息确定出各个渲染通道所对应的渲染目标,以及各渲染通道之间的依赖关系。
渲染通道可以看作将一次将几何体渲染到纹理或屏幕上的过程。一个渲染通道中还可以渲染任意数量的几何物体,即图形对象。通常有的渲染效果需要多个渲染通道才能实现。比如先将一个房子渲染到一张纹理贴图上,再用一个渲染通道将这张纹理贴图进行模糊处理,再将结果输出到另一张纹理上,才能得到一个模糊后的房子场景。这通常在一个渲染通道中是无法有效地实现的。通过渲染引擎可以确定每个图像帧中有多少个渲染通道。每个渲染通道要渲染哪些图形对象,这些渲染通道就构成了渲染管线。因此,渲染引擎可以决定渲染管线包含多少个渲染通道,渲染管线决定了渲染引擎最终的渲染效果。
其中,每个渲染通道中还可以包括子渲染通道。例如,每个渲染通道RenderPass可以包含多个子渲染通道Subpass。这些渲染通道或者系渲染通道在一定条件下可以被合并。如图5所示,为一个实施例中合并渲染通道的示意图。例如,渲染通道包括几何缓冲通道GBuffer Pass、贴花通道DecalPass以及光照通道ShadingPass,这三个渲染通道均可视为子渲染通道Subpass。通过目标着色器对渲染通道添加对应的描述信息,可以确定这三个渲染通道是针对渲染目标具有依赖关系的渲染通道。则将这3个子渲染通道Subpass合并形成一个渲染通道RenderPass,使得合并后的各渲染通道得到的中间结果数据的读写,都在缓存块中进行。由此一来,就能够有效节省图像渲染处理过程中的带宽。
具体地,图形处理器进而根据标记函数,在缓存块中将与同一渲染目标对应的具有依赖关系的各渲染通道,合并为与渲染目标对应的同一渲染通道。终端的图形处理器则通过目标着色器根据缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理。
本实施例中,在进行图像渲染处理的过程中,通过目标着色器调用预先编译的显示描述函数和标记函数,能够有效地在缓存块中将与同一渲染目标对应的具有依赖关系的各渲染通道合并为同一渲染通道。由此,这样一来被合并各渲染通道间的中间数据均可以保存在缓冲块中,而不会被写出到系统内,由此有效节省了带宽。
在一个实施例中,每个像素对应的场景数据存储于一个缓存块中;在同一渲染通道中对缓存块中的场景数据进行图像渲染处理,以在缓存块中得到图像渲染结果,包括:分别调用与每个像素对应的线程,且并行地执行调用的各线程,以通过目标着色器和场景数据对合并后的渲染通道进行图像渲染处理。
其中,像素是指在由一个数字序列表示的图像中的一个最小单位。像素由图像的小方格组成的,每一个小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。
可以理解,像素是待渲染图像帧中的最小单位,待渲染图像帧中包括一个或多个图形对象,一个图形对象可以由一个或多个像素组成。
其中,图形处理器在进行图像渲染处理的过程中,可以采用多线程同步处理。通过预先对各种类型的图形接口对应的着色器进行编译,使得各种类型的图形接口对应的着色器均能够从架构上支持多线程渲染。具体地,通过配置的显式描述函数,显式地展示各渲染通道的描述信息,进而根据描述信息确定个渲染通道间的依赖关系,进而根据依赖关系增加并行性,以保证正确的线程同步。例如,可以通过对各渲染通道的输入参数和输出参数添加相应的序列属性信息,确定需要同步线程处理对应的对象。
例如,对于OpenGLES类型的图形接口对应的着色器,通过配置的显式描述函数,显式地展示各渲染通道的描述信息,进而根据描述信息确定个渲染通道间的依赖关系,进而根据依赖关系增加并行性,以保证正确的线程同步。其中,OpenGLES图形接口对应的着色器,针对基于像素本地存储的扩展程序,以及基于帧缓冲区读取的扩展程序,均通过在渲染通道之间设置的依赖关系,确定需要同步线程处理对应的对象。
对于Vulkan类型的图形接口对应的着色器,也可以通过设置各渲染通道之间的依赖关系,来保证各渲染通道之间的线程同步。比如同一个Subpass内部的Drawcall绘制命令之间的同步,则使用管线隔离PipelineBarrier来控制。
对于Metal类型的图形接口对应的着色器,可以通过着色器中对不同输出变量设置不同的光栅组序列属性,即Raster Order Group,来保证各渲染通道之间的线程同步。
终端的图形处理器通过着色器进行图像渲染处理的过程中,图形处理器别调用与每个像素对应的线程,且并行地执行调用的各线程,以通过目标着色器和场景数据对合并后的渲染通道进行图像渲染处理。具体地,图形处理器的每个线程对应一个像素进行计算,并将中间结果数据分别存储在与各像素对应的缓存块中。一个缓存块上不同像素的线程并行执行,对于同一个像素的不同线程,同时保持读写同步。
本实施例中,通过图形处理器分别调用与每个像素对应的线程,且并行地执行调用的各线程,从而能够有效实现线程同步渲染,进而能够有效提高渲染效率。
在一个实施例中,在同一渲染通道中对缓存块中的场景数据进行图像渲染处理,以在缓存块中得到图像渲染结果,包括:对与渲染目标对应的具有依赖关系的各渲染通道,标记各渲染通道对应的起始渲染标识和结尾渲染标识;通过目标着色器根据缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理,并将起始渲染标识和结尾渲染标识之间的各渲染通道得到的中间结果,分别写入缓存块中,以在缓存块中得到最终的图像渲染结果。
其中,目标着色器中包括预先配置的标记函数,用于标记针对各渲染目标的渲染通道的起始渲染标识和结尾渲染标识。由此,图形处理器调用目标着色器对各渲染通道进行处理时,可通过目标着色器中配置的标记函数,标识出针对当前渲染目标的渲染通道的起始渲染标识和结尾渲染标识。
具体地,图形处理器通过目标着色器根据各渲染通道的描述信息,确定具有依赖关系的各渲染通道。然后针对与渲染目标对应的具有依赖关系的各渲染通道,标记出这些渲染通道中的起始渲染标识和结尾渲染标识。图形处理器进而通过目标着色器根据缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理,并将起始渲染标识和结尾渲染标识之间的各渲染通道得到的中间结果,分别写入缓存块中,以在缓存块中得到最终的图像渲染结果。由此能够确保中间数据均写入缓存块,而不会被写出系统内存。
例如,可以通过目标着色器中配置的标记函数,分别定义一个起始渲染标识BeginRenderPass和一个结尾渲染标识EndRenderPass,来启动和结束一个或多个渲染通道,以完成一次渲染一定数量物体到纹理的渲染操作。例如可以通过如下代码表示标记的起始渲染标识和结尾渲染标识:
BeginRenderPass 1//表示所标记的第一个渲染通道的起始渲染标识;
Draw(sun)//表示该第一个渲染通道中针对图形对象为太阳的绘制命令;
Draw(house)//表示该第一个渲染通道中针对图形对象为房屋的绘制命令;
Draw(grass)//表示该第一个渲染通道中针对图形对象为草地的绘制命令;
EndRenderPass//表示所标记的第一个渲染通道的结尾渲染标识;
BeginRenderPass 2//表示所标记的第二个渲染通道的起始渲染标识;
Draw(…)//表示该第二个渲染通道中针对各图形对象的绘制命令;
EndRenderPass//表示所标记的第二个渲染通道的结尾渲染标识。
上述代码表示,每次执行到渲染结尾标识EndRenderPass之后,所有渲染指令就会被提交给图形处理器执行,直到最后渲染结果输出到渲染目标所指向的纹理中。
进一步地,在满足一定条件的情况下,即如果上述两个渲染通道RenderPass是与渲染目标对应的具有依赖关系的渲染通道,则可以将这两个渲染通道就可以合并为一个渲染通道RenderPass。例如,可以将上述两个渲染通道RenderPass1和RenderPass2,都设置为同一渲染通道的子渲染通道Subpass1和子渲染通道Subpass2。例如,可以通过如下代码表示标记的起始渲染标识和结尾渲染标识:
BeginRenderPass 1//表示所标记的第一个渲染通道的起始渲染标识;
Draw(sun)//表示该第一个渲染通道中针对图形对象为太阳的绘制命令;
Draw(house)//表示该第一个渲染通道中针对图形对象为房屋的绘制命令;
Draw(grass)//表示该第一个渲染通道中针对图形对象为草地的绘制命令;
NextSubpass()//表示该第一个渲染通道中下一个子渲染通道的绘制命令;
Draw(…)//表示该第一个渲染通道中下一个子渲染通道中针对各图形对象的绘制命令;
EndRenderPass//表示所标记的第一个渲染通道的结尾渲染标识。
由此,Subpass 1输出的结果会保留在缓存块中,而不是直接输出到系统内存,也就是对应纹理中。由此,Subpass 2就可以直接从相应的缓存块中读取Subpass 1的中间结果数据,从而有效地节省了带宽。
在一个实施例中,在同一渲染通道中对缓存块中的场景数据进行图像渲染处理,以在缓存块中得到图像渲染结果,包括:通过目标着色器根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理,并将得到的中间结果存储至缓存块中的相应位置;当根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理完成后,将下一个缓存块作为当前一个缓存块,并重复通过目标着色器根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理的步骤。
其中,每个缓存块中存储了一个或多个像素对应的场景数据。
终端的图形处理器在对合并后的渲染通道进行图像渲染处理的过程中,可以通过目标着色,首先根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理,同时将各渲染通道分别得到的中间结果,存储至缓存块中的相应位置。
然后图形处理器将下一个缓存块作为当前一个缓存块,并重复当前一个缓存块中的场景数据,重复对合并后的渲染通道进行图像渲染处理的步骤。也就是图形处理器在每个缓存块上执行完合并后的所有的渲染通道后,才会切换到下一个缓存块,并对下一个缓存块重复这个过程。由此能够有效提高对各像素的图像渲染处理的效率。
在一个实施例中,将得到的中间结果存储至缓存块中的相应位置,包括:获取各渲染通道得到的中间结果;将每一个像素对应的中间结果,分别写入对应的一个缓存块中;各像素对应的中间结果的字节占用量,不超过各缓存块的内存容量。
其中,每个像素对应的场景数据以及中间结果,分别存储于对应的一个缓存块中。
具体地,终端的图形处理器通过目标着色器对合并后的各渲染通道进行处理后,获取各渲染通道得到的中间结果,并将每一个像素对应的中间结果,分别写入对应的一个缓存块中。由此,每个像素与缓存块中存储的像素数据是一一对应的,也就是说每个像素在通过目标着色器执行渲染计算时,只需要从当前对应的缓存块的相应位置,读取与其对应的像素的数据即可。
其中,各像素对应的中间结果的字节占用量,不超过各缓存块的内存容量,保证存储的数据量不会超过各缓存块的大小。如果各像素对应的字节占用量超过各缓存块的内存容量,图形处理器则会被迫减小各缓存块中需要存储的数据的内存占用大小,则会导致一定的性能降低。例如,各缓存块的内存容量具体可以为16字节,那么各像素对应的中间结果的字节占用量,可以为每个像素存储16字节信息。通过设定每个像素对应的中间结果的字节占用量,能够有效保证图像渲染处理过程中的数据处理性能和效率。
在一个实施例中,渲染通道包括纹理采样通道和光照着色通道;在同一渲染通道中对缓存块中的场景数据进行图像渲染处理,以在缓存块中得到图像渲染结果,包括:通过目标着色器,根据缓存块中的场景数据,对纹理渲染通道进行图像渲染处理,并将纹理渲染通道的纹理结果数据写入缓存块中;通过目标着色器,根据缓存块中的纹理结果数据,对光照着色通道进行图像渲染处理,并将光照着色通道的着色结果数据写入缓存块中。
其中,渲染通道包括纹理采样通道和光照着色通道,例如纹理采样通道可以为GBuffer Pass,光照着色通道可以为Lighting Pass。GBuffer Pass在延迟渲染管线中,是指将所有可见物体的各项属性输出到多张纹理中以便之后的光照计算取用的一个步骤。例如,纹理采样通道可以采用多渲染目标来生成相应的几何缓冲区,即在一次绘制中将颜色、法线、材质类别、世界空间坐标等分别渲染到相应的纹理数组中。
终端的图形处理器对合并后的渲染通道进行图像渲染处理的过程中,首先通过目标着色器根据缓存块中的场景数据,执行纹理渲染通道的处理,将纹理渲染通道的纹理结果数据写入缓存块中。使得图形处理器的每次一次操作直接从缓存块中提取上一次计算的中间结果进行相应的计算处理。
然后图形处理器继续通过目标着色器根据缓存块中的纹理结果数据,执行光照着色通道的处理,将光照着色通道的着色结果数据写入缓存块中。直到多合并后的个渲染通道均处理完成后,就可以得到对待渲染图形帧对应的最终的图像渲染结果,并仍然写入缓存块中。然后再将缓存块中的图像渲染结果写入系统内存中,以在终端的屏幕上显示渲染后的图像帧。由此避免了将各渲染通道得到的中间结果数据写入系统内存导致的大量数据读写消耗,从而有效减少了图像渲染处理过程中的带宽消耗,进而有效提高了图像渲染处理的效率。
在一个实施例中,如图6所示,提供了另一种图像渲染方法,包括:
S602,在获取到应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器;预先编译的着色器,是对渲染引擎的原始着色器进行编译生成的。
S604,根据渲染指令获取与渲染目标对应的场景数据,将场景数据写入缓存块。
S606,根据各渲染通道对应的描述信息,确定各渲染通道对应的渲染目标,以及各渲染通道之间的依赖关系。
S608,将与同一渲染目标对应的具有依赖关系的各所述渲染通道,合并为与所述渲染目标对应的同一渲染通道;合并后的渲染通道包括纹理采样通道和光照着色通道。
S610,通过目标着色器,根据缓存块中的场景数据,对纹理渲染通道进行图像渲染处理,并将纹理渲染通道的纹理结果数据写入缓存块中。
S612,从缓存块中各像素对应的像素位置,读取各像素对应的纹理结果数据;纹理结果数据包括各像素分别对应的材质属性。
S614,根据各像素对应的材质属性,获取与材质属性匹配的光照模型;通过目标着色器在屏幕空间内,根据各像素对应的光照模型和各纹理结果数据,对各像素对应的光照着色通道进行图像渲染处理,并将光照着色通道的着色结果数据写入缓存块中。
其中,纹理结果数据中包括了各像素分别对应的材质属性,不同的材质属性可以分别通过相应的装照模型进行光照着色处理。
终端的图形处理器通过目标着色器,根据缓存块中的场景数据,执行纹理渲染通道的处理,将纹理渲染通道的纹理结果数据写入缓存块中。在这之后,
具体地,图形处理器通过目标着色器执行光照着色通道的处理时,从缓存块中各像素对应的像素位置,读取各像素对应的纹理结果数据。然后根据当前像素对应的材质属性选择合适的光照模型进行计算。图形处理器进而通过目标着色器在屏幕空间内,根据各像素对应的光照模型和各纹理结果数据,执行与各像素对应的光照着色通道的处理。
由于整个场景已经被渲染到纹理上,光照计算的光照着色通道就只需要从这些纹理结果中,即相应的缓存块直接读取相应的纹理结果数据。这个过程在屏幕空间进行计算即可。这样一来,原本需要在三维空间中进行光照计算的复杂度,被降低到了在二维的屏幕空间,由此大大节省了计算量。
在一个具体的应用场景中,上述图像渲染方法应用于游戏应用程序。游戏应用程序中包括渲染引擎,渲染引擎可以为基于Unreal Engine虚幻引擎进行再次编译得到的渲染引擎。虚幻引擎中包括原始的着色器,通过对虚幻引擎进行再次编译,生成与不同类型的图形接口对应的着色器。
用户可以通过对应的终端启动游戏应用程序,游戏应用程序启动后运行渲染引擎,并向知道的图形处理器发送渲染指令。
终端的图形处理器在获取到游戏应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器。终端的图形处理器进而根据渲染指令获取渲染目标的场景数据,将场景数据写入缓存块。然后通过所调用的目标着色器,根据缓存块中的场景数据,将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道进行图像渲染处理,并将得到的最终的图像渲染结果写入缓存块,最后将在缓存块中得到的图像渲染结果写入系统内存。
具体地,图形处理器通过延迟渲染管线对合并后的渲染通道进行图像渲染处理。其中,合并后的渲染通道可以包括纹理采样通道和光照着色通道。
本实施例中,通过首先对纹理采样通道进行图像渲染处理后。再根据得到的纹理结果数据,采用延迟管线对光照着色通道进行图像渲染处理,能够更加高效地渲染多个不同颜色的光源,由此能够有效提升多光源场景的渲染效率。
如图7所示,为其中一个图像帧的图像渲染效果的示意图。其中,可通过延迟管线分别有效地展示多个不同颜色的光源,从而能够支持大量的光源,使得渲染后的图像更加逼真,有效提高了多光源场景的渲染效率。
在另一个具体的应用场景中,上述图像渲染方法还可以应用于具有图像编辑功能的应用程序,例如各种图像编辑软件、修图软件以及具有图像编辑功能的视频软件等。具有图像编辑功能的应用程序中包括渲染引擎,渲染引擎中包括针对不同类型的图形接口预先编译的着色器。
用户通过对应的终端启动具有图像编辑功能的应用程序后,可通过应用程序编辑各种效果的图像,例如待渲染的图像可以是原始图像或连续的图像帧,还可以是通过摄像装置采集的图像等。用户可以通过具有图像编辑功能的应用程序,对原始图像或连续的图像帧添加各种滤镜特效,以实现各种滤镜效果。应用程序可以根据对待渲染的图像进行编辑,应用程序在进行图像编辑处理过程中,向终端的图形处理器发送渲染指令。
图形处理器在获取到应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器。由此在应用程序运行的时候,能够灵活地根据应用程序当前的运行平台的类型调用与其对应的图像接口对应的目标着色器,从而能够适应于各种运行平台。图形处理器进而根据渲染指令获取渲染目标的场景数据,将场景数据写入缓存块。其中,场景数据中包括待渲染的图像对应的场景数据,还包括用户所选择的滤镜特效对应的滤镜场景数据。
图形处理器然后通过所调用的目标着色器,根据缓存块中的场景数据,将与渲染目标对应的具有依赖关系的渲染通道进行合并。图形处理器通过延迟渲染管线对合并后的渲染通道进行图像渲染处理。其中,合并后的渲染通道可以包括纹理采样通道和光照着色通道,在首先对纹理采样通道进行图像渲染处理后。再根据得到的纹理结果数据,对光照着色通道进行图像渲染处理,由此能够有效提升多光源场景的渲染效率,从而得到较好的渲染效果。
图形处理器将得到的最终的图像渲染结果写入缓存块,最后将在缓存块中得到的图像渲染结果写入系统内存,以根据系统内存中的图像渲染结果,在终端的屏幕上显示渲染后的图像。不仅能够有效减少图像渲染处理过程中的带宽消耗,还有效提高了图像渲染处理的效率。
应该理解的是,虽然图2、6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、6中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种图像渲染装置800,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:目标着色器调用模块802、数据获取模块804、渲染处理模块806和数据写入模块808,其中:
目标着色器调用模块802,用于在获取到应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与应用程序的图形接口对应的目标着色器;预先编译的着色器,是对渲染引擎的原始着色器进行编译生成的;
数据获取模块804,用于根据渲染指令获取与渲染目标对应的场景数据,将场景数据写入缓存块;
渲染处理模块806,用于基于目标着色器,在缓存块中将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道;在同一渲染通道中对缓存块中的场景数据进行图像渲染处理,以在缓存块中得到图像渲染结果。
在一个实施例中,如图9所示,上述图像渲染装置还包括着色器编译模块801,用于在渲染引擎的原始着色器中,分别配置与各类型的图形接口对应的显式描述函数和标记函数,以编译得到与各图形接口对应的着色器;其中,显式描述函数用于添加各渲染通道的描述信息;标记函数,用于标记合并后的渲染通道的起始渲染标识和结尾渲染标识。
在一个实施例中,着色器编译模块还用于801在渲染引擎的原始着色器中,针对每个类型的图形接口,分别配置与不同类型的图形处理器对应的显式描述函数和标记函数,以编译得到与各类型的图形接口对应的着色器。
在一个实施例中,目标着色器调用模块802还用于当应用程序启动运行时,运行应用程序中的渲染引擎;渲染引擎的渲染硬件接口层中包括不同类型的图形接口;根据应用程序的运行平台类型,从不同类型的图形接口中,确定应用程序中与运行平台类型相对应的类型的图形接口。
在一个实施例中,目标着色器中包括与不同类型的图形处理器对应的显式描述函数和标记函数;目标着色器调用模块802还用于通过图形处理器,从目标着色器中调用与图形处理器的类型对应的显式描述函数和标记函数;通过目标着色器,根据调用的显式描述函数和标记函数,在缓存块中将与渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道。
在一个实施例中,渲染处理模块806还用于通过所述目标着色器,根据所述显式描述函数获取各所述渲染通道对应的描述信息;根据各渲染通道对应的描述信息,确定各渲染通道对应的渲染目标,以及各渲染通道之间的依赖关系;根据所述标记函数,在缓存块中将与同一渲染目标对应的具有依赖关系的各渲染通道,合并为与渲染目标对应的同一渲染通道。
在一个实施例中,每个像素对应的场景数据存储于一个缓存块中;渲染处理模块806还用于分别调用与每个像素对应的线程,且并行地执行调用的各线程,以通过目标着色器和场景数据对合并后的渲染通道进行图像渲染处理。
在一个实施例中,渲染处理模块806还用于对与渲染目标对应的具有依赖关系的各渲染通道,标记各渲染通道对应的起始渲染标识和结尾渲染标识;
通过目标着色器根据缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理,并将起始渲染标识和结尾渲染标识之间的各渲染通道得到的中间结果,分别写入缓存块中,以在缓存块中得到最终的图像渲染结果。
在一个实施例中,渲染处理模块806还用于通过目标着色器根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理,并将得到的中间结果存储至缓存块中的相应位置;当根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理完成后,将下一个缓存块作为当前一个缓存块,并重复通过目标着色器根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理的步骤。
在一个实施例中,渲染处理模块806还用于获取各渲染通道得到的中间结果;将每一个像素对应的中间结果,分别写入对应的一个缓存块中;各像素对应的中间结果的字节占用量,不超过各缓存块的内存容量。
在一个实施例中,渲染通道包括纹理采样通道和光照着色通道;渲染处理模块806还用于通过目标着色器,根据缓存块中的场景数据,对纹理渲染通道进行图像渲染处理,并将纹理渲染通道的纹理结果数据写入缓存块中;通过目标着色器,根据缓存块中的纹理结果数据,对光照着色通道进行图像渲染处理,并将光照着色通道的着色结果数据写入缓存块中。
在一个实施例中,渲染处理模块806还用于从缓存块中各像素对应的像素位置,读取各像素对应的纹理结果数据;纹理结果数据包括各像素对应的材质属性;根据各像素对应的材质属性,获取与材质属性匹配的光照模型;通过目标着色器在屏幕空间内,根据各像素对应的光照模型和各纹理结果数据,对各像素对应的光照着色通道进行图像渲染处理。
关于图像渲染装置的具体限定可以参见上文中对于图像渲染方法的限定,在此不再赘述。上述图像渲染装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种图像渲染方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (15)
1.一种图像渲染方法,其特征在于,所述方法包括:
在获取到应用程序触发的渲染指令后,则
从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与所述应用程序的图形接口对应的目标着色器;所述预先编译的着色器,是对所述渲染引擎的原始着色器进行编译生成的;
根据所述渲染指令获取与渲染目标对应的场景数据,将所述场景数据写入缓存块;
基于所述目标着色器,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道;
在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,以在所述缓存块中得到图像渲染结果。
2.根据权利要求1所述的方法,其特征在于,在所述从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与所述应用程序的图形接口对应的目标着色器之前,还包括:
在所述渲染引擎的原始着色器中,分别配置与各类型的图形接口对应的显式描述函数和标记函数,以编译得到与各所述图形接口对应的着色器;
其中,所述显式描述函数用于添加各所述渲染通道的描述信息;所述标记函数,用于标记合并后的渲染通道的起始渲染标识和结尾渲染标识。
3.根据权利要求2所述的方法,其特征在于,所述在所述渲染引擎的原始着色器中,分别配置与各类型的图形接口对应的显式描述函数和标记函数,以编译得到与各所述图形接口对应的着色器,包括:
在所述渲染引擎的原始着色器中,针对每个类型的图形接口,分别配置与不同类型的图形处理器对应的显式描述函数和标记函数,以编译得到与各类型的所述图形接口对应的着色器。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述应用程序启动运行时,运行所述应用程序中的渲染引擎;所述渲染引擎的渲染硬件接口层中包括不同类型的图形接口;
根据所述应用程序的运行平台类型,从所述不同类型的图形接口中,确定所述应用程序中与所述运行平台类型相对应的类型的图形接口。
5.根据权利要求1所述的方法,其特征在于,所述目标着色器中包括与不同类型的图形处理器对应的显式描述函数和标记函数;所述基于所述目标着色器,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道,包括:
通过图形处理器,从所述目标着色器中调用与所述图形处理器的类型对应的显式描述函数和标记函数;
通过所述目标着色器,根据所述显式描述函数和所述标记函数,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道。
6.根据权利要求5所述的方法,其特征在于,所述通过所述目标着色器,根据所述显式描述函数和所述标记函数,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道,包括:
通过所述目标着色器,根据所述显式描述函数获取各所述渲染通道对应的描述信息;
根据各所述渲染通道对应的描述信息,确定各所述渲染通道对应的渲染目标,以及各所述渲染通道之间的依赖关系;
根据所述标记函数,在缓存块中将与同一渲染目标对应的具有依赖关系的各所述渲染通道,合并为与所述渲染目标对应的同一渲染通道。
7.根据权利要求1所述的方法,其特征在于,每个像素对应的场景数据存储于一个缓存块中;所述在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,以在所述缓存块中得到图像渲染结果,包括:
分别调用与每个像素对应的线程,且并行地执行调用的各所述线程,以通过所述目标着色器和所述场景数据对合并后的渲染通道进行图像渲染处理。
8.根据权利要求1所述的方法,其特征在于,所述在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,以在所述缓存块中得到图像渲染结果,包括:
对与所述渲染目标对应的具有依赖关系的各所述渲染通道,标记各所述渲染通道对应的起始渲染标识和结尾渲染标识;
通过所述目标着色器根据所述缓存块中的所述场景数据,对合并后的渲染通道进行图像渲染处理,并将所述起始渲染标识和所述结尾渲染标识之间的各所述渲染通道得到的中间结果,分别写入所述缓存块中,以在所述缓存块中得到最终的图像渲染结果。
9.根据权利要求1所述的方法,其特征在于,所述在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,包括:
通过所述目标着色器根据当前一个缓存块中的所述场景数据,对合并后的渲染通道进行图像渲染处理,并将得到的中间结果存储至缓存块中的相应位置;
当根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理完成后,将下一个缓存块作为当前一个缓存块,并重复通过所述目标着色器根据当前一个缓存块中的场景数据,对合并后的渲染通道进行图像渲染处理的步骤。
10.根据权利要求9所述的方法,其特征在于,所述将得到的中间结果存储至缓存块中的相应位置,包括:
获取各所述渲染通道得到的中间结果;
将每一个像素对应的中间结果,分别写入对应的一个缓存块中;各所述像素对应的中间结果的字节占用量,不超过各所述缓存块的内存容量。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述渲染通道包括纹理采样通道和光照着色通道;所述在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,包括:
通过所述目标着色器,根据所述缓存块中的所述场景数据,对所述纹理渲染通道进行图像渲染处理,并将所述纹理渲染通道的纹理结果数据写入所述缓存块中;
通过所述目标着色器,根据所述缓存块中的所述纹理结果数据,对所述光照着色通道进行图像渲染处理,并将所述光照着色通道的着色结果数据写入所述缓存块中。
12.根据权利要求11所述的方法,其特征在于,所述通过所述目标着色器,根据所述缓存块中的所述纹理结果数据,对所述光照着色通道进行图像渲染处理,包括:
从所述缓存块中各像素对应的像素位置,读取各像素对应的纹理结果数据;所述纹理结果数据包括各像素对应的材质属性;
根据各像素对应的材质属性,获取与所述材质属性匹配的光照模型;
通过所述目标着色器在屏幕空间内,根据各像素对应的光照模型和各所述纹理结果数据,对各像素对应的光照着色通道进行图像渲染处理。
13.一种图像渲染装置,其特征在于,所述装置包括:
目标着色器调用模块,用于在获取到应用程序触发的渲染指令后,则从渲染引擎中的针对不同类型的图形接口预先编译的着色器中,调用与所述应用程序的图形接口对应的目标着色器;所述预先编译的着色器,是对所述渲染引擎的原始着色器进行编译生成的;
数据获取模块,用于根据所述渲染指令获取与渲染目标对应的场景数据,将所述场景数据写入缓存块;
渲染处理模块,用于基于所述目标着色器,在缓存块中将与所述渲染目标对应的具有依赖关系的渲染通道合并为同一渲染通道;在所述同一渲染通道中对所述缓存块中的所述场景数据进行图像渲染处理,以在所述缓存块中得到图像渲染结果。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述的方法的步骤。
15.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011395294.4A CN112381918A (zh) | 2020-12-03 | 2020-12-03 | 图像渲染方法、装置、计算机设备和存储介质 |
PCT/CN2021/127918 WO2022116759A1 (zh) | 2020-12-03 | 2021-11-01 | 图像渲染方法、装置、计算机设备和存储介质 |
EP21899793.0A EP4198909A4 (en) | 2020-12-03 | 2021-11-01 | IMAGE RENDERING METHOD AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIUM |
US17/964,700 US20230033306A1 (en) | 2020-12-03 | 2022-10-12 | Image rendering method and apparatus, computer device, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011395294.4A CN112381918A (zh) | 2020-12-03 | 2020-12-03 | 图像渲染方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112381918A true CN112381918A (zh) | 2021-02-19 |
Family
ID=74590318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011395294.4A Pending CN112381918A (zh) | 2020-12-03 | 2020-12-03 | 图像渲染方法、装置、计算机设备和存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230033306A1 (zh) |
EP (1) | EP4198909A4 (zh) |
CN (1) | CN112381918A (zh) |
WO (1) | WO2022116759A1 (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113052950A (zh) * | 2021-03-31 | 2021-06-29 | 完美世界(北京)软件科技发展有限公司 | 光照计算方法、装置、计算机设备及计算机可读存储介质 |
CN113192173A (zh) * | 2021-05-14 | 2021-07-30 | 腾讯科技(成都)有限公司 | 三维场景的图像处理方法、装置及电子设备 |
CN113223146A (zh) * | 2021-04-23 | 2021-08-06 | 深圳市城市交通规划设计研究中心股份有限公司 | 一种基于三维仿真场景的数据标注方法、装置及存储介质 |
CN113345067A (zh) * | 2021-06-25 | 2021-09-03 | 深圳中微电科技有限公司 | 一种统一渲染方法、装置和统一渲染引擎 |
CN113487714A (zh) * | 2021-06-23 | 2021-10-08 | 北京奇岱松科技有限公司 | 空间对象的渲染方法、装置、计算设备及存储介质 |
CN113487747A (zh) * | 2021-06-25 | 2021-10-08 | 山东齐鲁数通科技有限公司 | 一种模型处理方法、装置、终端及存储介质 |
CN114168060A (zh) * | 2021-12-10 | 2022-03-11 | 天津洪恩完美未来教育科技有限公司 | 电子白板渲染方法、装置、设备和存储介质 |
CN114168098A (zh) * | 2021-12-10 | 2022-03-11 | 天津洪恩完美未来教育科技有限公司 | 电子白板的数据同步方法、装置、设备和存储介质 |
CN114581580A (zh) * | 2022-02-28 | 2022-06-03 | 维塔科技(北京)有限公司 | 渲染图像的方法、装置、存储介质及电子设备 |
WO2022116759A1 (zh) * | 2020-12-03 | 2022-06-09 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
CN114898032A (zh) * | 2022-05-10 | 2022-08-12 | 北京领为军融科技有限公司 | 一种基于着色器存储缓存对象的光点渲染方法 |
CN114972607A (zh) * | 2022-07-29 | 2022-08-30 | 烟台芯瞳半导体科技有限公司 | 加速图像显示的数据传输方法、装置及介质 |
CN115408227A (zh) * | 2022-11-01 | 2022-11-29 | 西安芯瞳半导体技术有限公司 | 一种基于自研显卡的gpu状态调试方法、装置及存储介质 |
CN115482143A (zh) * | 2021-06-15 | 2022-12-16 | 荣耀终端有限公司 | 应用的图像数据调用方法、系统、电子设备及存储介质 |
CN116524104A (zh) * | 2023-07-03 | 2023-08-01 | 腾讯科技(深圳)有限公司 | 渲染数据处理方法、装置、设备及存储介质 |
WO2023160041A1 (zh) * | 2022-02-25 | 2023-08-31 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备、计算机可读存储介质以及计算机程序产品 |
CN116681811A (zh) * | 2022-09-19 | 2023-09-01 | 荣耀终端有限公司 | 图像渲染方法、电子设备及可读介质 |
CN116703689A (zh) * | 2022-09-06 | 2023-09-05 | 荣耀终端有限公司 | 一种着色器程序的生成方法、装置和电子设备 |
CN116883572A (zh) * | 2023-09-06 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 一种渲染方法、装置、设备及计算机可读存储介质 |
CN116912382A (zh) * | 2023-09-14 | 2023-10-20 | 成都帆点创想科技有限公司 | 一种渲染方法、装置及电子设备和存储介质 |
CN117011492A (zh) * | 2023-09-18 | 2023-11-07 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、电子设备及存储介质 |
CN117152320A (zh) * | 2023-02-15 | 2023-12-01 | 荣耀终端有限公司 | 图像处理方法和电子设备 |
CN117372583A (zh) * | 2023-12-08 | 2024-01-09 | 广东咏声动漫股份有限公司 | 一种动画文件处理方法、系统、电子设备及存储介质 |
CN117557701A (zh) * | 2022-08-03 | 2024-02-13 | 荣耀终端有限公司 | 一种图像渲染方法和电子设备 |
CN117710183A (zh) * | 2023-12-14 | 2024-03-15 | 摩尔线程智能科技(北京)有限责任公司 | 渲染指令的传输方法、操作系统、电子设备、存储介质 |
CN117695626A (zh) * | 2023-08-29 | 2024-03-15 | 荣耀终端有限公司 | 游戏数据的识别方法、设备及存储介质 |
CN117893663A (zh) * | 2024-03-13 | 2024-04-16 | 北京大学 | 基于WebGPU的Web图形渲染性能优化方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11880924B2 (en) * | 2021-03-26 | 2024-01-23 | Advanced Micro Devices, Inc. | Synchronization free cross pass binning through subpass interleaving |
CN115170707B (zh) * | 2022-07-11 | 2023-04-11 | 上海哔哩哔哩科技有限公司 | 基于应用程序框架的3d图像实现系统及方法 |
CN116757911B (zh) * | 2023-03-30 | 2024-02-13 | 上海艾特海浦网络科技有限公司 | 基于云储存的智能渲染反馈系统 |
CN117315121A (zh) * | 2023-10-12 | 2023-12-29 | 重庆爱车天下科技有限公司 | 一种基于车规级芯片3d渲染引擎系统 |
CN117611472B (zh) * | 2024-01-24 | 2024-04-09 | 四川物通科技有限公司 | 一种用于元宇宙空间与云渲染的融合方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997610A (zh) * | 2016-01-26 | 2017-08-01 | 阿里巴巴集团控股有限公司 | 一种图像渲染方法、装置及电子设备 |
CN107133909A (zh) * | 2017-03-30 | 2017-09-05 | 北京奇艺世纪科技有限公司 | 一种着色器重组的方法及装置 |
US20170358055A1 (en) * | 2016-06-12 | 2017-12-14 | Apple Inc. | Texture not backed by real mapping |
CN108961382A (zh) * | 2018-07-11 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 一种图像渲染方法、装置和存储介质 |
CN109389663A (zh) * | 2018-10-31 | 2019-02-26 | Oppo广东移动通信有限公司 | 画面渲染方法、装置、终端及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005332195A (ja) * | 2004-05-19 | 2005-12-02 | Sony Computer Entertainment Inc | テクスチャユニット、画像描画装置、テクセル転送方法 |
US8773449B2 (en) * | 2009-09-14 | 2014-07-08 | International Business Machines Corporation | Rendering of stereoscopic images with multithreaded rendering software pipeline |
CN108765534B (zh) * | 2018-05-24 | 2022-06-21 | 武汉斗鱼网络科技有限公司 | 一种图像渲染方法、装置、设备及存储介质 |
CN111408138B (zh) * | 2019-01-04 | 2023-07-07 | 厦门雅基软件有限公司 | 基于游戏引擎的渲染方法、装置及电子设备 |
CN112381918A (zh) * | 2020-12-03 | 2021-02-19 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
-
2020
- 2020-12-03 CN CN202011395294.4A patent/CN112381918A/zh active Pending
-
2021
- 2021-11-01 EP EP21899793.0A patent/EP4198909A4/en active Pending
- 2021-11-01 WO PCT/CN2021/127918 patent/WO2022116759A1/zh unknown
-
2022
- 2022-10-12 US US17/964,700 patent/US20230033306A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997610A (zh) * | 2016-01-26 | 2017-08-01 | 阿里巴巴集团控股有限公司 | 一种图像渲染方法、装置及电子设备 |
US20170358055A1 (en) * | 2016-06-12 | 2017-12-14 | Apple Inc. | Texture not backed by real mapping |
CN107133909A (zh) * | 2017-03-30 | 2017-09-05 | 北京奇艺世纪科技有限公司 | 一种着色器重组的方法及装置 |
CN108961382A (zh) * | 2018-07-11 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 一种图像渲染方法、装置和存储介质 |
CN109389663A (zh) * | 2018-10-31 | 2019-02-26 | Oppo广东移动通信有限公司 | 画面渲染方法、装置、终端及存储介质 |
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022116759A1 (zh) * | 2020-12-03 | 2022-06-09 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
CN113052950B (zh) * | 2021-03-31 | 2021-12-17 | 完美世界(北京)软件科技发展有限公司 | 光照计算方法、装置、计算机设备及计算机可读存储介质 |
CN113052950A (zh) * | 2021-03-31 | 2021-06-29 | 完美世界(北京)软件科技发展有限公司 | 光照计算方法、装置、计算机设备及计算机可读存储介质 |
CN113223146A (zh) * | 2021-04-23 | 2021-08-06 | 深圳市城市交通规划设计研究中心股份有限公司 | 一种基于三维仿真场景的数据标注方法、装置及存储介质 |
CN113192173A (zh) * | 2021-05-14 | 2021-07-30 | 腾讯科技(成都)有限公司 | 三维场景的图像处理方法、装置及电子设备 |
CN113192173B (zh) * | 2021-05-14 | 2023-09-19 | 腾讯科技(成都)有限公司 | 三维场景的图像处理方法、装置及电子设备 |
CN115482143A (zh) * | 2021-06-15 | 2022-12-16 | 荣耀终端有限公司 | 应用的图像数据调用方法、系统、电子设备及存储介质 |
CN115482143B (zh) * | 2021-06-15 | 2023-12-19 | 荣耀终端有限公司 | 应用的图像数据调用方法、系统、电子设备及存储介质 |
CN113487714A (zh) * | 2021-06-23 | 2021-10-08 | 北京奇岱松科技有限公司 | 空间对象的渲染方法、装置、计算设备及存储介质 |
CN113487747A (zh) * | 2021-06-25 | 2021-10-08 | 山东齐鲁数通科技有限公司 | 一种模型处理方法、装置、终端及存储介质 |
CN113345067A (zh) * | 2021-06-25 | 2021-09-03 | 深圳中微电科技有限公司 | 一种统一渲染方法、装置和统一渲染引擎 |
CN113487747B (zh) * | 2021-06-25 | 2024-03-29 | 山东齐鲁数通科技有限公司 | 一种模型处理方法、装置、终端及存储介质 |
CN114168098A (zh) * | 2021-12-10 | 2022-03-11 | 天津洪恩完美未来教育科技有限公司 | 电子白板的数据同步方法、装置、设备和存储介质 |
CN114168060A (zh) * | 2021-12-10 | 2022-03-11 | 天津洪恩完美未来教育科技有限公司 | 电子白板渲染方法、装置、设备和存储介质 |
WO2023160041A1 (zh) * | 2022-02-25 | 2023-08-31 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备、计算机可读存储介质以及计算机程序产品 |
CN114581580A (zh) * | 2022-02-28 | 2022-06-03 | 维塔科技(北京)有限公司 | 渲染图像的方法、装置、存储介质及电子设备 |
CN114898032A (zh) * | 2022-05-10 | 2022-08-12 | 北京领为军融科技有限公司 | 一种基于着色器存储缓存对象的光点渲染方法 |
CN114972607B (zh) * | 2022-07-29 | 2022-10-21 | 烟台芯瞳半导体科技有限公司 | 加速图像显示的数据传输方法、装置及介质 |
CN114972607A (zh) * | 2022-07-29 | 2022-08-30 | 烟台芯瞳半导体科技有限公司 | 加速图像显示的数据传输方法、装置及介质 |
CN117557701A (zh) * | 2022-08-03 | 2024-02-13 | 荣耀终端有限公司 | 一种图像渲染方法和电子设备 |
CN116703689A (zh) * | 2022-09-06 | 2023-09-05 | 荣耀终端有限公司 | 一种着色器程序的生成方法、装置和电子设备 |
CN116703689B (zh) * | 2022-09-06 | 2024-03-29 | 荣耀终端有限公司 | 一种着色器程序的生成方法、装置和电子设备 |
CN116681811A (zh) * | 2022-09-19 | 2023-09-01 | 荣耀终端有限公司 | 图像渲染方法、电子设备及可读介质 |
CN116681811B (zh) * | 2022-09-19 | 2024-04-19 | 荣耀终端有限公司 | 图像渲染方法、电子设备及可读介质 |
CN115408227A (zh) * | 2022-11-01 | 2022-11-29 | 西安芯瞳半导体技术有限公司 | 一种基于自研显卡的gpu状态调试方法、装置及存储介质 |
CN115408227B (zh) * | 2022-11-01 | 2023-01-24 | 西安芯瞳半导体技术有限公司 | 一种基于自研显卡的gpu状态调试方法、装置及存储介质 |
CN117152320A (zh) * | 2023-02-15 | 2023-12-01 | 荣耀终端有限公司 | 图像处理方法和电子设备 |
CN116524104A (zh) * | 2023-07-03 | 2023-08-01 | 腾讯科技(深圳)有限公司 | 渲染数据处理方法、装置、设备及存储介质 |
CN116524104B (zh) * | 2023-07-03 | 2023-10-03 | 腾讯科技(深圳)有限公司 | 渲染数据处理方法、装置、设备及存储介质 |
CN117695626A (zh) * | 2023-08-29 | 2024-03-15 | 荣耀终端有限公司 | 游戏数据的识别方法、设备及存储介质 |
CN116883572B (zh) * | 2023-09-06 | 2023-12-19 | 腾讯科技(深圳)有限公司 | 一种渲染方法、装置、设备及计算机可读存储介质 |
CN116883572A (zh) * | 2023-09-06 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 一种渲染方法、装置、设备及计算机可读存储介质 |
CN116912382B (zh) * | 2023-09-14 | 2023-12-29 | 成都帆点创想科技有限公司 | 一种渲染方法、装置及电子设备和存储介质 |
CN116912382A (zh) * | 2023-09-14 | 2023-10-20 | 成都帆点创想科技有限公司 | 一种渲染方法、装置及电子设备和存储介质 |
CN117011492B (zh) * | 2023-09-18 | 2024-01-05 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、电子设备及存储介质 |
CN117011492A (zh) * | 2023-09-18 | 2023-11-07 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、电子设备及存储介质 |
CN117372583B (zh) * | 2023-12-08 | 2024-04-09 | 广东咏声动漫股份有限公司 | 一种动画文件处理方法、系统、电子设备及存储介质 |
CN117372583A (zh) * | 2023-12-08 | 2024-01-09 | 广东咏声动漫股份有限公司 | 一种动画文件处理方法、系统、电子设备及存储介质 |
CN117710183A (zh) * | 2023-12-14 | 2024-03-15 | 摩尔线程智能科技(北京)有限责任公司 | 渲染指令的传输方法、操作系统、电子设备、存储介质 |
CN117893663A (zh) * | 2024-03-13 | 2024-04-16 | 北京大学 | 基于WebGPU的Web图形渲染性能优化方法 |
CN117893663B (zh) * | 2024-03-13 | 2024-06-07 | 北京大学 | 基于WebGPU的Web图形渲染性能优化方法 |
Also Published As
Publication number | Publication date |
---|---|
EP4198909A1 (en) | 2023-06-21 |
US20230033306A1 (en) | 2023-02-02 |
EP4198909A4 (en) | 2024-02-28 |
WO2022116759A1 (zh) | 2022-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022116759A1 (zh) | 图像渲染方法、装置、计算机设备和存储介质 | |
US9928637B1 (en) | Managing rendering targets for graphics processing units | |
KR101732288B1 (ko) | 스프라이트 그래픽 렌더링 시스템 | |
CN110969685B (zh) | 使用渲染图的可定制渲染管线 | |
CN104205174A (zh) | 图形处理中的拼补着色 | |
CN105684037A (zh) | 图形处理单元 | |
US11094036B2 (en) | Task execution on a graphics processor using indirect argument buffers | |
CN114972607B (zh) | 加速图像显示的数据传输方法、装置及介质 | |
CN111400024A (zh) | 渲染过程中的资源调用方法、装置和渲染引擎 | |
TW201810179A (zh) | 用於虛擬實境和多視角系統之交錯光柵化和像素著色的架構 | |
US8907979B2 (en) | Fast rendering of knockout groups using a depth buffer of a graphics processing unit | |
US20150348315A1 (en) | Dynamic Lighting Effects For Textures Without Normal Maps | |
US20130127849A1 (en) | Common Rendering Framework and Common Event Model for Video, 2D, and 3D Content | |
KR101670958B1 (ko) | 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치 | |
CN113256764A (zh) | 一种光栅化装置、方法及计算机存储介质 | |
Pulli | New APIs for mobile graphics | |
CN106886974A (zh) | 图像加速器设备及相关方法 | |
US10157440B2 (en) | Static data sharing mechanism for a heterogeneous processing environment | |
CN113838180A (zh) | 一种渲染指令处理方法及其相关设备 | |
DE102020106728A1 (de) | Hintergrundschätzung für Objektsegmentierung mittels Grobstufenverfolgung | |
CN116206006A (zh) | 一种基于ue渲染引擎的卡风格直接光照效果渲染方法 | |
JP5864474B2 (ja) | 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法 | |
CN113192173B (zh) | 三维场景的图像处理方法、装置及电子设备 | |
US10062140B2 (en) | Graphics processing systems | |
CN118043842A (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: 40038691 Country of ref document: HK |