请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 18805|回复: 51

华中科大2006博士论文(2D图形处理器) [复制链接]

Rank: 4

注册时间
2009-7-4
积分
47
发表于 2009-7-4 21:44:37 |显示全部楼层
在论坛上逛了一天一夜,各种3D图形处理技术让人眼花缭乱。小弟入门新人,实在没有什么拿得出手的资料贡献给大家,这篇博士论文是我看的第一篇图形处理的资料,主要介绍华中科技大学2005年研发的一款2d图形处理器,纯属图形处理的入门读物,请各位大牛勿要见笑!
1

查看全部评分

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32838
发表于 2009-7-4 22:01:33 |显示全部楼层
楼上大侠实在谦虚,感谢共享 :〉 在2D Graphics Accelerator里面,OpenVG和DirectFB也很有价值,前者威力更大。2D矢量变换都是要在三维空间中进行的。

不知道Pure 2D Rasterizer怎么办?我看都是Nurbs/Bezier Curve Line围成的图形,而且还有Concave Primitive和Self-inteaction。用HW实现快速的Ras恐怕有些难度把?我还真没研究过,谁有相关的Paper?

而且2D中还有一点限制和3D不大一样,2D是完全Draw-order Dependency的东西,所以在向FB提交的时候必须In-order。而3D中虽然也有这个限制,但是只要提交的不是带有Alpha的Framgent,这个限制都好说~~


对了,有的大牛说原帖下载不了文档,我在上传一次文档 :〉

使用道具 举报

Rank: 4

注册时间
2009-7-4
积分
47
发表于 2009-7-5 01:27:37 |显示全部楼层
呵呵,专家的点评都在要害上啊,可惜我修行太浅,暂时来说是对牛弹琴了。

使用道具 举报

Rank: 8Rank: 8

注册时间
2009-6-27
积分
157
发表于 2009-7-5 15:34:19 |显示全部楼层
LZ的资料真的是极其完整的2D加速器的工程实现。作者解决了很多实践中才能遇到的问题,比如像抖动算法,
也是我等纸上谈兵之辈所缺少的。不过应用领域所限,还无法涉及矢量加速。

使用道具 举报

Rank: 4

注册时间
2009-7-4
积分
47
发表于 2009-7-5 16:10:33 |显示全部楼层
感谢楼上兄台的总结。兄台所说的“无法涉及矢量加速”是否是指它没有vertex shader,只能完成光栅加速而不能完成几何加速?

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32838
发表于 2009-7-5 20:53:56 |显示全部楼层
Shader通常是指可编程得着色程序,即着色器。在2D Graphics Accelerator中一般不会有这东西。Vertex更应该是3D的概念,不过2D规范里的那些Term我也不是很了解,LZ大侠有兴趣可以看看OpenVG Spec。我知道ICT那边也有的组在做支持OVG的 GPU的项目,是自己做,不是买。这东西虽然在Spec上面都详细写了,还是要实现还有有些困难,我知道炬力一个团队为了做这个一个小玩意前后花了差不多2年时间把,商业的OVG GPU好像只有AMD有IP :〉

至于矢量加速是2D里面一种很久远的技术了,举个例子,比如PDF中无论我们放大多少倍字体都能得到平滑的边缘,这就是矢量绘图的结果。并且文字格式的PDF肯定比图片格式的PDF要小很多,这也是矢量绘图的结果。当年,王选先生就是靠这种技术开创了中文字型压缩的先河,以成就了中国最大的校办企业,北大方正。所以算法的重要性是不言而喻的,无论多么奇思妙想的RTL实现或是Physical实现都不足以和算法的突破相比。矢量图形学是一种很早的技术,LZ大侠有时间可以照本图形学的书先看看。

使用道具 举报

Rank: 1

注册时间
2009-9-10
积分
2
发表于 2009-9-24 17:47:06 |显示全部楼层
有openvg的嗎~

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32838
发表于 2009-9-24 20:21:17 |显示全部楼层
今年会出来几篇OpenVG的国产论文 :〉

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-8-18
积分
3150
发表于 2009-9-25 00:48:34 |显示全部楼层
2D的硬件光栅化不外乎就是把Bezier曲线细分成直线段,然后生成出对应的多边形数据提交给GPU,过了这一步,后面的光栅化过程就像飞一样了。
1

查看全部评分

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-8-18
积分
3150
发表于 2009-9-25 00:52:57 |显示全部楼层
而软件的2D光栅化就非常灵活了,我研究过flash的光栅化代码,他是采用基于扫描线的ActiveEdge算法。我自己实现过一个Tile Base的,从前向后绘制(采用Destination Alpha)的2D渲染引擎,性能非常好。

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32838
发表于 2009-9-25 04:39:28 |显示全部楼层
2D的硬件光栅化不外乎就是把Bezier曲线细分成直线段,然后生成出对应的多边形数据提交给GPU,过了这一步,后面的光栅化过程就像飞一样了。
qiaojie 发表于 2009-9-25 00:48



这就是2D的Tessellation/Subdivision吧?据说分形技术和这个有点渊源? 我想问一下,飞一样的速度是如何做到的?毕竟边缘处的三角形会比较小,可能也就一两个像素大小,而且光栅化的时候还要建立边方程,不是会效率大打折扣么~

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32838
发表于 2009-9-25 04:40:47 |显示全部楼层
而软件的2D光栅化就非常灵活了,我研究过flash的光栅化代码,他是采用基于扫描线的ActiveEdge算法。我自己实现过一个Tile Base的,从前向后绘制(采用Destination Alpha)的2D渲染引擎,性能非常好。 ...
qiaojie 发表于 2009-9-25 00:52



有可能的话欣赏一下大牛的大作 :〉

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2008-12-22
积分
1154
发表于 2009-9-25 09:24:39 |显示全部楼层
是呀,qiaojie大牛,什么时候能看到你的大作呀。要不开个版面专门讨论一下openvg等2d gpu的实现。

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-8-18
积分
3150
发表于 2009-9-25 10:54:45 |显示全部楼层
11# ic.expert

2D矢量图的基本元素分为填充和描边,最后都会转换成多边形进行光栅化,转换成多边形的过程需要把Bezier曲线进行细分,这个只能在CPU上计算。转换后的结果可以缓存起来,不需要每帧都计算。
交给GPU渲染的时候就是一大堆三角形了,现代GPU的三角形渲染能力是远远超出2D所需要的,所以到了GPU之后我认为问题就不大了。

不过目前绝大部分的2D渲染引擎(如Flash,silverlight)都是软件渲染的,一方面是现在的CPU足以胜任2D渲染,另一方面是软件渲染的兼容性要好很多,不会像硬件渲染那样到了集成显卡上就跑不
动的问题,所以现在2D渲染的硬件加速不是很吸引人。
1

查看全部评分

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-8-18
积分
3150
发表于 2009-9-25 10:59:17 |显示全部楼层
有可能的话欣赏一下大牛的大作 :〉
ic.expert 发表于 2009-9-25 04:40


也不是什么大作,引擎是6年前做的并没有公开,这些年来一直有用在一些小游戏的项目中。有用这个引擎搞过一个相册管理软件(不过没有全部完成),有兴趣的话可以发上来给大家玩玩。

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32838
发表于 2009-9-25 13:44:21 |显示全部楼层
11# ic.expert
...
交给GPU渲染的时候就是一大堆三角形了,现代GPU的三角形渲染能力是远远超出2D所需要的,所以到了GPU之后我认为问题就不大了。
...
qiaojie 发表于 2009-9-25 10:54


的确如qiaojie大牛所说,目前CPU的能力很强大,再加上SSE的支持,对于光栅华这种小把戏的确不费什么力气!但是GPU情况有所不同的是,triangle Setup为了建立Edge Function要花费很多时间,若是仅仅光栅化出来三五个Pixel的话,那就大大的得不偿失了。对于小尺寸的三角形,我们可以使用其他的光栅化算法,比如某些基于像素包围盒的算法,往往这些算法都是光栅化micropolygon所用到的类似技术。从而避免计算边方程参数,以提高效率。

所以对于OpenVG上,处于矢量图边缘区域的小三角形来说,为了改进效率应该有更加与众不同的光栅化计算方法吧?不然对嵌入式GPU来说,要做到飞一样的速度还是需要有类似问题的,不知道qiaojie大牛碰到过没有。

对于未来的拥有更加强大的Tessellation能力的GPU来说,不知道我们是不是需要在GPU中放两种类型的Raster Unit ?一种是专门光栅化小尺寸Polygon的~~~,尽管对于小于一个quad Pixel的三角形来说,这可能会降低PS的效率~。

使用道具 举报

Rank: 4

注册时间
2009-10-14
积分
22
发表于 2009-10-14 23:26:13 |显示全部楼层
16# ic.expert

我觉得用硬件实现openvg时,在光栅单元用传统的扫描线或TILE等方法也没啥问题。。

使用道具 举报

Rank: 1

注册时间
2010-2-2
积分
4
发表于 2010-2-4 21:38:44 |显示全部楼层
目前有没有硬件支持或加速openVG的实现啊?另外openVG是否已经足够稳定了?

使用道具 举报

Rank: 9Rank: 9Rank: 9

注册时间
2010-10-9
积分
472
发表于 2010-10-25 23:32:44 |显示全部楼层
回复 14# qiaojie


    11# ic.expert

2D矢量图的基本元素分为填充和描边,最后都会转换成多边形进行光栅化,转换成多边形的过程需要把Bezier曲线进行细分,这个只能在CPU上计算。转换后的结果可以缓存起来,不需要每帧都计算。
交给GPU渲染的时候就是一大堆三角形了,现代GPU的三角形渲染能力是远远超出2D所需要的,所以到了GPU之后我认为问题就不大了。

不过目前绝大部分的2D渲染引擎(如Flash,silverlight)都是软件渲染的,一方面是现在的CPU足以胜任2D渲染,另一方面是软件渲染的兼容性要好很多,不会像硬件渲染那样到了集成显卡上就跑不
动的问题,所以现在2D渲染的硬件加速不是很吸引人。

    大牛,真是一语中的啊!
    顺便问个问题,你说的“转换后的结果可以缓存起来,不需要每帧都计算。”怎么理解啊?感觉如果不是静态的图像的话,这个好像用不太到?
1

查看全部评分

Robert

使用道具 举报

Rank: 9Rank: 9Rank: 9

注册时间
2010-10-9
积分
472
发表于 2010-10-25 23:37:05 |显示全部楼层
回复 16# ic.expert


    感觉几位大牛都是再说Openvg的走的pipeline是3D的pipeline,如果不借助于3D engine,直接实现openvg的2D engine,还有类似的问题吗?
Robert

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32838
发表于 2010-12-20 11:54:14 |显示全部楼层
回复  ic.expert


    感觉几位大牛都是再说Openvg的走的pipeline是3D的pipeline,如果不借助于3D engine ...
Robert 发表于 2010-10-25 23:37



    另外一个问题 ,OVG这种2D 渲染对于图形流水线上下文切换(Graphics pipeline context switch)的实时性要求更高吧?

使用道具 举报

Rank: 4

注册时间
2010-5-26
积分
34
发表于 2010-12-22 11:24:42 |显示全部楼层
正需要了,, 谢谢!! 有用FPGA做图形的加我QQ:471581708 一起讨论。。

使用道具 举报

Rank: 9Rank: 9Rank: 9

注册时间
2009-8-29
积分
292
发表于 2011-4-8 13:39:17 |显示全部楼层
学习一下,项目正在用

使用道具 举报

Rank: 1

注册时间
2011-4-22
积分
7
发表于 2011-4-22 12:02:09 |显示全部楼层
有没有介绍openvg的资料哦

使用道具 举报

Rank: 1

注册时间
2011-4-23
积分
4
发表于 2011-4-23 09:28:39 |显示全部楼层
,新来的飘过

使用道具 举报

Rank: 4

注册时间
2011-9-22
积分
20
发表于 2011-9-22 03:51:52 |显示全部楼层
开始学习这个方面的东西

使用道具 举报

Rank: 1

注册时间
2009-12-5
积分
1
发表于 2011-11-3 12:11:13 |显示全部楼层
开始学习这个方面的东西

使用道具 举报

Rank: 5Rank: 5

注册时间
2011-10-29
积分
83
发表于 2011-11-7 19:09:31 |显示全部楼层
好吧,作为一只菜鸟,我也来看看。

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2011-11-12
积分
603
发表于 2011-11-12 16:05:01 |显示全部楼层
第一次逛这个论坛,对GPU很感兴趣,希望各位大牛多提供一些经典地入门资料,以供学习。

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2011-4-19
积分
1207
发表于 2011-11-15 10:06:28 |显示全部楼层
目前研究directFB中 有没有相关资料呢?
To study patiently and progressively is wonderful

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-2-23 11:00 , Processed in 0.102819 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部