CN102142150B - 基于分块渲染的gpu中锯齿线段的生成 - Google Patents
基于分块渲染的gpu中锯齿线段的生成 Download PDFInfo
- Publication number
- CN102142150B CN102142150B CN201110064784A CN201110064784A CN102142150B CN 102142150 B CN102142150 B CN 102142150B CN 201110064784 A CN201110064784 A CN 201110064784A CN 201110064784 A CN201110064784 A CN 201110064784A CN 102142150 B CN102142150 B CN 102142150B
- Authority
- CN
- China
- Prior art keywords
- line segment
- piece
- coordinate
- scale
- current block
- 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
Landscapes
- Image Generation (AREA)
Abstract
本发明公开了一种基于分块渲染算法实现的GPU中锯齿线段的生成技术,它是在线段已完成分块的基础上进行的,它包括根据线段所在块和线段生成方向确定块内线段的左右(或上下)交点;交点数据写入存储器;从存储器中取出线段后的宽度为1的坐标生成;根据线段宽度扩展坐标;根据块边界的裁剪等步骤,该实现方式可以配合分块渲染算法完成锯齿线段的快速生成。
Description
技术领域
本发明主要涉及到基于分块渲染的GPU设计领域,特指基于分块渲染的GPU中锯齿线段的生成。
背景技术
分块渲染技术是为了缓解传统GPU中频繁访存导致效率低下而提出的。传统GPU采用固定流水线技术,渲染一个图元要经过Z测试、纹理、Alpha测试、融合等多个读写存储器的过程,一个像素可能经过多次访存之后并不需要真正写入帧存,由此带来的性能损失是很大的。为了缓解这一问题,分块渲染技术就被提出来,这种技术是将绘图区划分为若干个大小相等的块,将图元按块划分完成之后,在绘制时按照块的顺序绘制,这就保证了绘制当前块的时候,只需要缓存当前块的信息即可,等当前块全部绘制完成之后再将当前块写回帧存,大大减少了访存次数。
三角形分块渲染技术已经比较成熟,但在GPU应用中,有时需要绘制大量的线段(如地图绘制),如果对三角形使用了分块渲染而线段不采用,那么由于线段的局部性比较差,可能会导致运行效率更低,因此需要对线段也采用分块渲染的技术。
发明内容
本发明要解决的问题就在于:针对现有技术存在的技术难点,本发明提供了一种基于分块渲染的GPU中锯齿线段的生成技术,该实现技术逻辑简单、渲染速度快。
(1)根据线段所在确切块号计算该块的有效覆盖范围:
设X和Y方向的块号分别为Tx和Ty,绘图区范围为ScreenX和ScreenY,那么该块覆盖的有效范围可以如下得到:
对于左、下范围的计算,由于所得到的块号均为正数,所以该块的左边界为ScaleXmin={Tx,6’h0},下边界为ScaleYmin={Ty,6’h0};
对于右、上范围的计算:
if ({Tx,6’h3f}>ScreenX) ScaleXmax={ Tx,6’h3f }
else ScaleXmax= ScreenX
if ({Ty,6’h3f}>ScreenY) ScaleYmax={ Ty,6’h3f }
else ScaleYmax= ScreenY
(2)根据线段生成的方向计算线段在块内生成时的坐标范围:
当沿X方向生成线段时,需要计算左右范围:
根据公式
计算线段与块的左边界和右边界的y交点;
根据以下条件取确切交点:
若线段起始点x坐标大于当前块的左边界x坐标,取线段的起始点,否则取计算得到的块的左边界;若线段终点的x坐标大于当前块的右边界x坐标,取计算得到的块的右边界,否则取线段的终点坐标, 这样就得到当前块内需要绘制的线段坐标;
(3)根据分块渲染算法的思想需要将待绘制图元全部收集完成后再进行绘制,所以需要将当前计算得到的线段的边界写入存储器;
(4)当开始绘制以后,将线段数据从存储器读出,按照锯齿线段的生成算法生成宽度为1的线段,然后将线段按照实际宽度进行扩展,得到想要绘制的线段的宽度;
(5)当线段坐标生成之后,由于前面的计算只是考虑了线段左右边界,所以生成的线段坐标会有一些像素并不在当前绘制的块中,因此需要对得到的像素进行裁剪:
本发明的优点就在于:1、逻辑简单:本发明提出的锯齿线段生成技术算法比较简单,有利于硬件实现;2、渲染速度快:将线段分块之后,在渲染某一块时,不论三角形还是线段都只会在本块内渲染,片上缓存也只需要存储当前块的信息即可,当前块渲染完毕再将当前缓冲区的内容写入帧存。
附图说明
图1是本发明实现的基于分块渲染的GPU中锯齿线段生成结构
具体实施方式
以下将结合附图和具体实施例对本发明做进一步详细说明。
如图1所示,为本发明实现的基于分块渲染的GPU中锯齿线段生成结构。将线段分块并得到线段所在的确切块号之后,根据线段所在确切块号和绘图区域的大小计算该块的有效覆盖范围;根据线段生成的方向计算线段在块内生成时的坐标范围,以沿X方向生成线段为例,需要计算左右范围,计算线段与块的左边界和右边界的y交点,若线段起始点x坐标大于当前块的左边界x坐标,取线段的起始点,否则取计算得到的块的左边界,若线段终点的x坐标大于当前块的右边界x坐标,取计算得到的块的右边界,否则取线段的终点坐标,这样就得到当前块内需要绘制的线段坐标;根据分块渲染算法的思想需要将待绘制图元全部收集完成后再进行绘制,所以需要将当前计算得到的线段的边界写入存储器;将线段数据从存储器读出,按照锯齿线段的生成算法生成宽度为1的线段,然后将线段按照实际宽度进行扩展,得到想要绘制的线段的宽度;当线段坐标生成之后,由于前面的计算只是考虑了线段左右(或上下)边界,所以生成的线段坐标会有一些像素并不在当前绘制的块中,因此需要对得到的像素进行裁剪,得到绘制的有效像素。
Claims (1)
(1)根据线段所在确切块号计算该块的有效覆盖范围:
设X和Y方向的块号分别为Tx和Ty,绘图区范围为ScreenX和ScreenY,那么该块覆盖的有效范围可以如下得到:
对于左、下范围的计算,由于所得到的块号均为正数,所以该块的左边界为ScaleXmin={Tx,6’h0},下边界为ScaleYmin={Ty,6’h0};
对于右、上范围的计算:
if ({Tx,6’h3f}>ScreenX) ScaleXmax={ Tx,6’h3f }
else ScaleXmax= ScreenX
if ({Ty,6’h3f}>ScreenY) ScaleYmax={ Ty,6’h3f }
else ScaleYmax= ScreenY
(2)根据线段生成的方向计算线段在块内生成时的坐标范围:
当沿X方向生成线段时,需要计算左右范围:
根据公式
计算线段与块的左边界和右边界的y交点;
根据以下条件取确切交点:
若线段起始点x坐标大于当前块的左边界x坐标,取线段的起始点,否则取计算得到的块的左边界;若线段终点的x坐标大于当前块的右边界x坐标,取计算得到的块的右边界,否则取线段的终点坐标, 这样就得到当前块内需要绘制的线段坐标;
(3)根据分块渲染算法的思想需要将待绘制图元全部收集完成后再进行绘制,所以需要将当前计算得到的线段的边界写入存储器;
(4)当开始绘制以后,将线段数据从存储器读出,按照锯齿线段的生成算法生成宽度为1的线段,然后将线段按照实际宽度进行扩展,得到想要绘制的线段的宽度;
(5)当线段坐标生成之后,由于前面的计算只是考虑了线段左右边界,所以生成的线段坐标会有一些像素并不在当前绘制的块中,因此需要对得到的像素进行裁剪:
。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110064784A CN102142150B (zh) | 2011-03-17 | 2011-03-17 | 基于分块渲染的gpu中锯齿线段的生成 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110064784A CN102142150B (zh) | 2011-03-17 | 2011-03-17 | 基于分块渲染的gpu中锯齿线段的生成 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102142150A CN102142150A (zh) | 2011-08-03 |
CN102142150B true CN102142150B (zh) | 2012-10-17 |
Family
ID=44409634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110064784A Active CN102142150B (zh) | 2011-03-17 | 2011-03-17 | 基于分块渲染的gpu中锯齿线段的生成 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102142150B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6285375B1 (en) * | 1999-02-05 | 2001-09-04 | International Business Machines Corporation | Algorithm to transform generalized polygons to trapezoids |
CN101978393A (zh) * | 2008-03-20 | 2011-02-16 | 高通股份有限公司 | 用于图形渲染的多阶段细分 |
-
2011
- 2011-03-17 CN CN201110064784A patent/CN102142150B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6285375B1 (en) * | 1999-02-05 | 2001-09-04 | International Business Machines Corporation | Algorithm to transform generalized polygons to trapezoids |
CN101978393A (zh) * | 2008-03-20 | 2011-02-16 | 高通股份有限公司 | 用于图形渲染的多阶段细分 |
Also Published As
Publication number | Publication date |
---|---|
CN102142150A (zh) | 2011-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102096897B (zh) | 基于分块渲染的gpu中块存储策略的实现 | |
CN101840566A (zh) | 一种基于gpu并行计算的实时阴影生成方法及系统 | |
JP2002506547A (ja) | 3次元の三角形描画におけるブロック及びバンド志向走査 | |
CN102737097A (zh) | 基于lod透明纹理的三维矢量实时动态叠加技术 | |
CN102890829A (zh) | 一种基于gpu的渲染地形的方法 | |
CN102292748A (zh) | 基于区块的3d计算机图形系统中的多级显示控制列表 | |
CN102819820A (zh) | 基于分块渲染的gpu中多管线渲染的实现方法 | |
CN101976432B (zh) | 图形芯片设计中分级裁剪策略的实现 | |
CN101261743A (zh) | 一种基于规则网格的大规模地形漫游模拟方法 | |
Kipfer et al. | GPU construction and transparent rendering of iso-surfaces | |
CN103400404A (zh) | 一种高效渲染位图运动轨迹的方法 | |
CN101794199A (zh) | 基于高速磁盘缓存的计算机磁盘性能加速方法 | |
CN102096935B (zh) | 基于分块渲染的gpu中反走样线段的生成 | |
CN104317754B (zh) | 面向异构计算系统的跨步数据传输优化方法 | |
CN108897847A (zh) | 基于局部敏感哈希的多gpu密度峰值聚类方法 | |
CN102136154B (zh) | 一种动漫制作方法及装置 | |
CN102436673A (zh) | 一种大规模室外场景的阴影绘制方法 | |
CN103106412B (zh) | 薄片类介质识别方法和识别装置 | |
CN103310409A (zh) | 一种Tile-based渲染架构GPU的三角形快速分块方法 | |
CN102142150B (zh) | 基于分块渲染的gpu中锯齿线段的生成 | |
CN102542611A (zh) | 一种三维空间物体拾取方法 | |
US11397615B2 (en) | Methods and apparatuses for coalescing function calls for ray-tracing | |
CN102270351A (zh) | 基于分块渲染的gpu中线段分块技术的实现 | |
CN108629734B (zh) | 图像几何变换方法、装置及终端 | |
CN202771491U (zh) | 一种大规模三维动画的渲染装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: 410205 Hunan province Changsha Hexi Lugu high tech Zone base Lu Jing Road No. 2 Changsha Productivity Promotion Center Patentee after: Changsha Jingjia Microelectronic Co., Ltd. Address before: 410205 Hunan province Changsha Hexi Lugu high tech Zone base Lu Jing Road No. 2 Changsha Productivity Promotion Center Patentee before: Changsha Jingjia Microelectronics Co., Ltd. |