CN117689790B - 基于缓冲区的像素渲染保序方法、系统及存储介质 - Google Patents
基于缓冲区的像素渲染保序方法、系统及存储介质 Download PDFInfo
- 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
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 53
- 238000000034 method Methods 0.000 title claims abstract description 30
- 239000012634 fragment Substances 0.000 claims abstract description 15
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004321 preservation Methods 0.000 claims description 2
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000002156 mixing Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 206010038933 Retinopathy of prematurity Diseases 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing 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中任一项所述的像素渲染保序方法的步骤。
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)
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)
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 | 삼성전자주식회사 | 렌더링 방법 및 장치 |
-
2024
- 2024-01-29 CN CN202410115657.6A patent/CN117689790B/zh active Active
Patent Citations (2)
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 |