CN117689790B - 基于缓冲区的像素渲染保序方法、系统及存储介质 - Google Patents

基于缓冲区的像素渲染保序方法、系统及存储介质 Download PDF

Info

Publication number
CN117689790B
CN117689790B CN202410115657.6A CN202410115657A CN117689790B CN 117689790 B CN117689790 B CN 117689790B CN 202410115657 A CN202410115657 A CN 202410115657A CN 117689790 B CN117689790 B CN 117689790B
Authority
CN
China
Prior art keywords
pixel
pixels
processed
input
rendering
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202410115657.6A
Other languages
English (en)
Other versions
CN117689790A (zh
Inventor
莫潘良
钟伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Icube Corp ltd
Original Assignee
Icube Corp 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 Icube Corp ltd filed Critical Icube Corp ltd
Priority to CN202410115657.6A priority Critical patent/CN117689790B/zh
Publication of CN117689790A publication Critical patent/CN117689790A/zh
Application granted granted Critical
Publication of CN117689790B publication Critical patent/CN117689790B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

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

Abstract

本发明提供了一种基于缓冲区的像素渲染保序方法、系统及存储介质,包括:光栅化模块对一个图元进行光栅化,得到屏幕上在图元内部的像素,光栅化模块将像素、以及像素信息发送至着色器执行单元簇,同时光栅化模块将像素信息发送至光栅化处理单元的处理队列中;着色器执行单元簇收到光栅化模块发送的像素及像素信息后,将像素分发至色器执行单元簇内的空闲指令核,对像素执行片段着色器程序;指令核对像素执行完毕片段着色器程序后,将对应的像素及像素信息发送至缓冲区中,并由缓冲区判断是否将该像素发送至光栅化处理单元进行处理。本发明的有益效果是:本发明保证了GPU 3D渲染像素的顺序按照渲染图元顺序进行,使GPU渲染正确进行。

Description

基于缓冲区的像素渲染保序方法、系统及存储介质
技术领域
本发明涉及GPU渲染技术领域,尤其涉及基于缓冲区的像素渲染保序方法、系统及存储介质。
背景技术
在OpenGL标准渲染管线中,像素的混合(blending)处理流程主要是从片段着色器获取片段颜色输出,并将它们与这些输出映射到的颜色缓冲区中的颜色组合在一起。在进行像素混合流程时,GPU硬件需要保证像素的渲染顺序(下文简称像素保序),否则对半透明像素和全透明像素进行渲染时容易产生渲染错误。在现代GPU OpenGL渲染管线中,像素混合流程发生在光栅化处理单元(Raster Operations Units, ROPs),即像素经片段着色器输出至该单元时,GPU硬件需要保证像素均被按图元渲染顺序进行渲染。
同时,现代GPU中,像素的片段着色器程序执行存在很大程度的并行性。虽然光栅化模块可以保证在输出像素至片段着色器执行时是按照图元渲染顺序发送的,但是片段着色器的执行对每个像素而言存在一定时间上的不确定性,可能出现按图元顺序后渲染的图元像素快于按图元顺序先渲染的图元像素输出至光栅化处理单元,进而使后渲染的图元像素比原应先渲染的图元像素更早的写进颜色缓冲区的情况。在这种情况下,若渲染的图元间存在重合像素,则可能造成部分像素渲染错误(如图1、2所示)。
发明内容
本发明提供了一种基于缓冲区的像素渲染保序方法,在GPU进行OpenGL渲染流程的着色器执行单元簇和光栅化处理单元之间增加一块缓冲区,该像素渲染保序方法包括如下步骤:
步骤S1:光栅化模块对一个图元进行光栅化,得到屏幕上在图元内部的像素,所述像素是需要被渲染的像素,光栅化模块将像素、以及像素信息发送至着色器执行单元簇,同时光栅化模块将像素信息发送至光栅化处理单元的处理队列中;
步骤S2:着色器执行单元簇收到光栅化模块发送的像素及像素信息后,将像素分发至色器执行单元簇内的空闲指令核,对像素执行片段着色器程序;
步骤S3:指令核对像素执行完毕片段着色器程序后,将对应的像素及像素信息发送至缓冲区中,并由缓冲区判断是否将该像素发送至光栅化处理单元进行处理。
作为本发明的进一步改进,像素信息包括像素坐标、所属图元索引、所属渲染索引。
作为本发明的进一步改进,在所述步骤S3中,缓冲区收到像素和像素信息后,不断查询遍历所有光栅化处理单元的非空处理队列中的待处理像素,综合处理队列中的像素信息和缓冲区收到的像素信息进行判断,将缓冲区收到像素和像素信息简称为输入像素,将处理队列中的像素信息简称为待处理像素,判断规则包括如下步骤:
步骤1:获取输入像素;
步骤2:获取第一个待处理像素;
步骤3:判断待处理像素的所属渲染索引是否大于输入像素的所属图元索引,若是,那么执行步骤a;否则执行步骤4;
步骤4:判断待处理像素的所属图元索引是否大于输入像素的所属图元索引,若是,那么执行步骤a;否则执行步骤5;
步骤5:判断待处理像素和输入像素是否重合,若是,那么执行第一处理步骤,否则执行第二处理步骤;
步骤a:获取下一个待处理像素,然后执行步骤3;
第一处理步骤:返回等待信号,缓冲区对输入像素等待设定时间,然后缓冲区将输入像素发送至光栅化处理单元进行处理;
第二处理步骤:返回发送信号,缓冲区将输入像素输出到光栅化处理单元进行处理。
作为本发明的进一步改进,在所述步骤5中,若待处理像素坐标与输入像素坐标相等,说明待处理像素和输入像素重合。
作为本发明的进一步改进,当GPU使用基于瓦片的光栅化方法时,在所述步骤5中,通过瓦片判断待处理像素和输入像素是否重合。
作为本发明的进一步改进,在所述步骤5中:
若两个瓦片的左下角像素坐标相同,则两个瓦片的所有像素重合,判定待处理像素和输入像素重合;
若输入瓦片左下角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合;
若输入瓦片右下角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合;
若输入瓦片左上角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合;
若输入瓦片右上角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合。
本发明还提供了一种基于缓冲区的像素渲染保序系统,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现本发明所述像素渲染保序方法的步骤。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现本发明所述的像素渲染保序方法的步骤。
本发明的有益效果是:本发明保证了GPU 3D渲染像素的顺序按照渲染图元顺序进行,使GPU渲染正确进行。
附图说明
图1是正确渲染顺序的像素渲染顺序示例图;
图2是错误渲染顺序的像素渲染顺序示例图;
图3是本发明的原理图;
图4是本发明的缓冲区的判断流程图。
实施方式
如图3所示,本发明公开了一种基于缓冲区的像素渲染保序方法,在GPU进行OpenGL渲染流程的着色器执行单元簇和光栅化处理单元之间增加一块缓冲区,用于对片段着色器输出的像素进行重新排序。该像素渲染保序方法包括如下步骤:
步骤S1:光栅化模块对一个图元进行光栅化,得到屏幕上在图元内部的像素,所述像素是需要被渲染的像素,光栅化模块将像素、以及像素信息(像素信息包括像素坐标、所属图元索引、所属渲染索引)发送至着色器执行单元簇,同时光栅化模块将像素信息发送至光栅化处理单元的处理队列中;
步骤S2:着色器执行单元簇收到光栅化模块发送的像素及像素信息后,将像素分发至色器执行单元簇内的一些空闲指令核,对像素执行片段着色器程序;
步骤S3:指令核对像素执行完毕片段着色器程序后,将对应的像素及像素信息发送至缓冲区中,并由缓冲区判断是否将该像素发送至光栅化处理单元进行处理。
在所述步骤S3中,缓冲区收到像素和像素信息(下文简称为输入像素)后,不断查询遍历所有光栅化处理单元的非空处理队列中的待处理像素,综合处理队列中的像素信息(下文简称待处理像素)和缓冲区收到的像素信息进行判断,如图4所示,判断规则包括如下步骤:
步骤1:获取输入像素;
步骤2:获取第一个待处理像素;
步骤3:判断待处理像素的所属渲染索引是否大于输入像素的所属图元索引,若是(意味着待处理像素在OpenGL渲染顺序上要后于输入像素),那么执行步骤a;否则执行步骤4;
步骤4:判断待处理像素的所属图元索引是否大于输入像素的所属图元索引,若是(意味着待处理像素在图元渲染顺序上要后于输入像素),那么执行步骤a;否则执行步骤5;
步骤5:判断待处理像素和输入像素是否重合,若是,那么执行第一处理步骤,否则执行第二处理步骤;
步骤a:获取下一个待处理像素,然后执行步骤3;
第一处理步骤:返回等待信号,缓冲区对输入像素等待设定时间,输入像素需要等待光栅化处理单元对待处理像素处理完毕后,缓冲区再将输入像素发送至光栅化处理单元进行处理;
第二处理步骤:返回发送信号,缓冲区将输入像素输出到对应光栅化处理单元进行处理。
作为本发明的一个实施例,在所述步骤5中,若待处理像素坐标与输入像素坐标相等,说明待处理像素和输入像素重合。
作为本发明的另一个实施例,当GPU使用基于瓦片的光栅化方法时,像素重合判断不再是简单的判断两个像素的坐标是否相同,而是改为以下规则,在所述步骤5中:
若两个瓦片的左下角像素坐标相同,则两个瓦片的所有像素重合,判定待处理像素和输入像素重合;
若输入瓦片左下角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合;
若输入瓦片右下角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合;
若输入瓦片左上角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合;
若输入瓦片右上角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合。
本发明保证了GPU 3D渲染像素的顺序按照渲染图元顺序进行,使GPU渲染正确进行。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (7)

1.一种基于缓冲区的像素渲染保序方法,其特征在于,在GPU进行OpenGL渲染流程的着色器执行单元簇和光栅化处理单元之间增加一块缓冲区,该像素渲染保序方法包括如下步骤:
步骤S1:光栅化模块对一个图元进行光栅化,得到屏幕上在图元内部的像素,所述像素是需要被渲染的像素,光栅化模块将像素、以及像素信息发送至着色器执行单元簇,同时光栅化模块将像素信息发送至光栅化处理单元的处理队列中;
步骤S2:着色器执行单元簇收到光栅化模块发送的像素及像素信息后,将像素分发至色器执行单元簇内的空闲指令核,对像素执行片段着色器程序;
步骤S3:指令核对像素执行完毕片段着色器程序后,将对应的像素及像素信息发送至缓冲区中,并由缓冲区判断是否将该像素发送至光栅化处理单元进行处理;
在所述步骤S3中,缓冲区收到像素和像素信息后,不断查询遍历所有光栅化处理单元的非空处理队列中的待处理像素,综合处理队列中的像素信息和缓冲区收到的像素信息进行判断,将缓冲区收到像素和像素信息简称为输入像素,将处理队列中的像素信息简称为待处理像素,判断规则包括如下步骤:
步骤1:获取输入像素;
步骤2:获取第一个待处理像素;
步骤3:判断待处理像素的所属渲染索引是否大于输入像素的所属图元索引,若是,那么执行步骤a;否则执行步骤4;
步骤4:判断待处理像素的所属图元索引是否大于输入像素的所属图元索引,若是,那么执行步骤a;否则执行步骤5;
步骤5:判断待处理像素和输入像素是否重合,若是,那么执行第一处理步骤,否则执行第二处理步骤;
步骤a:获取下一个待处理像素,然后执行步骤3;
第一处理步骤:返回等待信号,缓冲区对输入像素等待设定时间,然后缓冲区将输入像素发送至光栅化处理单元进行处理;
第二处理步骤:返回发送信号,缓冲区将输入像素输出到光栅化处理单元进行处理。
2.根据权利要求1所述的像素渲染保序方法,其特征在于:像素信息包括像素坐标、所属图元索引、所属渲染索引。
3.根据权利要求1所述的像素渲染保序方法,其特征在于:在所述步骤5中,若待处理像素坐标与输入像素坐标相等,说明待处理像素和输入像素重合。
4.根据权利要求1所述的像素渲染保序方法,其特征在于:当GPU使用基于瓦片的光栅化方法时,在所述步骤5中,通过瓦片判断待处理像素和输入像素是否重合。
5.根据权利要求4所述的像素渲染保序方法,其特征在于,在所述步骤5中:
若两个瓦片的左下角像素坐标相同,则两个瓦片的所有像素重合,判定待处理像素和输入像素重合;
若输入瓦片左下角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合;
若输入瓦片右下角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合;
若输入瓦片左上角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合;
若输入瓦片右上角坐标位于待处理瓦片内部,则两个瓦片存在像素重合,判定待处理像素和输入像素重合。
6.一种基于缓冲区的像素渲染保序系统,其特征在于,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现权利要求1-5中任一项所述像素渲染保序方法的步骤。
7.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现权利要求1-5中任一项所述的像素渲染保序方法的步骤。
CN202410115657.6A 2024-01-29 2024-01-29 基于缓冲区的像素渲染保序方法、系统及存储介质 Active CN117689790B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410115657.6A CN117689790B (zh) 2024-01-29 2024-01-29 基于缓冲区的像素渲染保序方法、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410115657.6A CN117689790B (zh) 2024-01-29 2024-01-29 基于缓冲区的像素渲染保序方法、系统及存储介质

Publications (2)

Publication Number Publication Date
CN117689790A CN117689790A (zh) 2024-03-12
CN117689790B true CN117689790B (zh) 2024-05-14

Family

ID=90137419

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410115657.6A Active CN117689790B (zh) 2024-01-29 2024-01-29 基于缓冲区的像素渲染保序方法、系统及存储介质

Country Status (1)

Country Link
CN (1) CN117689790B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111062858A (zh) * 2019-12-27 2020-04-24 西安芯瞳半导体技术有限公司 高效的提前渲染方法、装置及计算机存储介质
CN116958375A (zh) * 2022-04-20 2023-10-27 象帝先计算技术(重庆)有限公司 图形处理器、系统、装置、设备及方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4977712B2 (ja) * 2005-12-01 2012-07-18 スウィフトフット グラフィックス アーベー ディスプレースクリーン上に立体画像をレンダリングするコンピュータグラフィックスプロセッサならびにその方法
US8922555B2 (en) * 2009-10-07 2014-12-30 Nvidia Corporation Pixel shader output map
US8624899B2 (en) * 2010-09-27 2014-01-07 Microsoft Corporation Arc spline GPU rasterization for cubic Bezier drawing
KR20170025099A (ko) * 2015-08-27 2017-03-08 삼성전자주식회사 렌더링 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111062858A (zh) * 2019-12-27 2020-04-24 西安芯瞳半导体技术有限公司 高效的提前渲染方法、装置及计算机存储介质
CN116958375A (zh) * 2022-04-20 2023-10-27 象帝先计算技术(重庆)有限公司 图形处理器、系统、装置、设备及方法

Also Published As

Publication number Publication date
CN117689790A (zh) 2024-03-12

Similar Documents

Publication Publication Date Title
US6891533B1 (en) Compositing separately-generated three-dimensional images
US9224227B2 (en) Tile shader for screen space, a method of rendering and a graphics processing unit employing the tile shader
US7015913B1 (en) Method and apparatus for multithreaded processing of data in a programmable graphics processor
US7385607B2 (en) Scalable shader architecture
US8339409B2 (en) Tile-based graphics system and method of operation of such a system
US7307628B1 (en) Diamond culling of small primitives
US6876360B2 (en) Image generation method and device used thereof
CN107003964B (zh) 处理未对准块传送操作
US20140118351A1 (en) System, method, and computer program product for inputting modified coverage data into a pixel shader
US10235793B2 (en) Graphics processing systems
US20090027383A1 (en) Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
JPH0683970A (ja) 三角形描画装置及び方法
US8395619B1 (en) System and method for transferring pre-computed Z-values between GPUs
KR20160051154A (ko) 렌더링 방법, 렌더링 장치 및 전자 장치
US20080198166A1 (en) Multi-threads vertex shader, graphics processing unit, and flow control method
US20090058848A1 (en) Predicted geometry processing in a tile based rendering system
US20130141448A1 (en) Graphics Command Generation Device and Graphics Command Generation Method
US7898549B1 (en) Faster clears for three-dimensional modeling applications
US8228337B1 (en) System and method for temporal load balancing across GPUs
KR20230073222A (ko) 깊이 버퍼 프리-패스
US8525843B2 (en) Graphic system comprising a fragment graphic module and relative rendering method
US10192348B2 (en) Method and apparatus for processing texture
CN117689790B (zh) 基于缓冲区的像素渲染保序方法、系统及存储介质
US7623132B1 (en) Programmable shader having register forwarding for reduced register-file bandwidth consumption
JPH0714029A (ja) 線描画装置及び方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant