首页> 中国专利> 图形芯片设计中图形像素生成算法的硬件实现

图形芯片设计中图形像素生成算法的硬件实现

摘要

本发明公开了一种结构简单明快、能够快速流水完成3D绘图中所要求的像素绘制的各个功能操作的系统实现方案。它能连续的串行流水接收上级模块输入的像素横纵、深度坐标、纹理坐标以及各颜色值,连续的完成以下操作:像素的透明度(Alpha)测试:根据像素的透明度完成像素筛选;像素剪取测试:根据像素的横纵坐标筛选设定矩形框以外的像素点;像素深度测试根据像素距离屏幕的远近对像素完成筛选;像素纹理映射:根据像素的纹理坐标和设定的纹理图片完成纹理加载;以及像素帧存融合:将当前像素的颜色值与帧存中同一位置像素点颜色值的混合。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-09-12

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06T1/20 变更前: 变更后: 申请日:20101122

    专利权人的姓名或者名称、地址的变更

  • 2012-05-23

    授权

    授权

  • 2011-06-15

    实质审查的生效 IPC(主分类):G06T1/20 申请日:20101122

    实质审查的生效

  • 2011-04-27

    公开

    公开

说明书

技术领域

本发明主要涉及到3D图形芯片设计中的像素生成和着色领域,特指基于像素测试,像素纹理,像素融合的3D绘图的实现。 

背景技术

在屏幕上绘制几何体、文本及图像时,(图形处理芯片)GPU要完成一些计算,以便实现旋转、平移、缩放、确定光照、将物体投影到透视图中、判断窗口中哪些像素会受影响以及确定这些像素应该以何种颜色绘制。 

在OpenGL确定了应该生成的像素及绘制颜色后,仍需要几个处理过程来控制如何将该像素绘制到帧缓存中,以及确定是否需要这样做。如果该像素超出了窗口或比帧缓存中的像素距视点的距离更远,则该像素就不必画出。 

一旦输入的像素通过了所有测试,就可以计算该像素的正确颜色,并将它与颜色缓存中的当前内容按某种方式合并起来。 

首先,如果该像素在三角形中并且给像素指定了纹理,则应当先从纹理图片中获得纹理颜色,并将该纹理颜色RGBA值指定给该像素;如果像素在反走样线段中,则还需要根据线段在该像素上的占用比计算alpha值,将前景色与纹理颜色进行融合。 

然后进入融合操作,混合将输入像素的R、G、B、A值与存储在当前位置的像素的对应值结合起来。可以使用不同的混合操作。混合操作是否发生取决于输入alpha值与存储在像素中的alpha值。最后将处理完成后的像素点依次写入帧存,即完成了三维制图中的像素着色,后续的图象显示,即是从不断修改和替换的帧存中读取数据。 

发明内容

本发明要解决的问题就在于:针对现有技术存在的技术难点,本发明提供了一种结构简单明快、能够快速流水完成3D绘图中像素生成的各个功能操作的实现方式。 

本发明采用的技术方案是,3D图形芯片中应用时,当3D图元生成模块生成一个新的像素时,这一像素将包含很多信息分别为:三维水平垂直和深度坐标(x,y,z)、纹理坐标(s,t)、红绿蓝颜色分量(R,G,B)以及透明度分量(Alpha)。3D图形芯片中的像素生成模块即需根据以上的四组属性值,生成将要显示的真实像素点阵,并写入图形显示缓存中

1)根据输入像素的横纵坐标(x,y)与外部接口设定的剪取矩形框的对角线的左上和右下两个坐标点的横纵坐标(x,y),进行比较。如果此时输入像素的横纵坐标(x,y)值均在剪取矩形框的两个设定的坐标点之间,则可视为剪取测试成功;否则失败。如果该像素满足测试的要求,即并将该输入像素写入FIFO,否则该像素将会被删除;

2)从上级FIFO中读出像素,根据输入像素横纵坐标(x,y)以及外部接口设定的深度缓存的起始地址和行宽度,读取当前深度缓存中保存的显存中已有像素点距离屏蔽的远近即当前显示像素点的深度值(z)。将读取的深度值按照当前外部接口设定的测试方案与当前输入像素的深度值比较,以判定当前输入像素是否需要覆盖当前帧存中已有的像素点(深度测试); 

3)如果当前像素通过测试,将深度测试通过的像素点写入下一级FIFO;并将该像素的深度值(z)回写到深度缓存;

4)从上级FIFO中读出像素,根据输入像素的纹理横纵坐标(s,t)以及外部接口设定的纹理缓存的起始地址和行宽度,读取并计算当前像素的纹理值,完成纹理与像素当前色度信息(A,R,G,B)的融合;

5)将完成纹理计算与融合的像素写入下一级FIFO;

6)从上级FIFO中读出像素,根据输入像素的横纵坐标(x,y)以及显示缓存的起始地址和行宽,读取当前像素显存对应坐标的已有像素信息,完成透明度(Alpha)融合,并回写更新显存中对应位置的像素信息(A,R,G,B)值。

附图说明

图1是本发明所述像素生成单元的实现框图;图2是本发明所述像素剪取测试的原理图;图3是本发明所述像素深度测试的原理图。 

  

具体实施方式

以下将结合附图和具体实施例对本发明做进一步详细说明。 

如图1所示,本发明设计为3D图形处理芯片中的着色(Render)模块,一共分为像素测试、像素纹理,像素融合并帧缓存回写三个部分。 

  

首先当单元接收到一个新的有效像素时,本设计会将像素的横纵坐标,与设定的矩形框的对角线坐标A、B两点坐标(分别为xA,yA和xB,yB)进行比对,当输入像素的横纵坐标值(xy)符合如下比较算法:

xA < x < xB 并且 yA < y < yB,即上式比较值正确,则认为当前像素属于剪取矩形框中。如果新的有效像素符合剪取框和Alpha值限定的要求,新像素将被写入FIFO,此处的FIFO的深度可根据上层3D图元生成模块像素生成速度与下一级模块深度比较模块Cache命中率的评估适当的选择,以缓冲图元生成模块与像素生成模块的平均速率。如图2 所示,C、D、E及F四个点将被忽略, H点将会被写入FIFO。

接着的像素深度测试:首先在外存空间开辟一深度缓存空间,将帧存中已有像素点的深度值(即帧存已有像素点到显示视角的距离远近值)存储于这一深度缓存中。本部分模块会自动的从上一级FIFO中读取有效像素的信息,依次进行:深度缓存地址计算、从深度缓存中读取当前坐标点对应的像素深度数据读取,将当前输入的像素深度值和深度缓存中读取出的深度值(帧存已有像素的深度值)进行比较。如果深度测试成功(即新输入的像素距离当前显示视角的距离比帧存中已有像素点更近),本设计单元需要将新的像素信息写入下一级FIFO,同时将深度缓存中存储的深度值替换为新像素的深度值。如图3所示,新的像素点A1将会替换原有帧存中相同横纵坐标(x,y)的A2点。 

  

后续的像素纹理填充:此处纹理填充流水的从上一级FIFO中读取有效像素,主要执行的是:纹理目标值的计算,在这里我们采用简化的二维插值运算,纹理目标值与当前像素颜色值的融合,最后完成向下一级FIFO写入(权利4和5)。

  

最后的帧存融合与回写:此处帧存融合与回写流水的从上一级FIFO中读取有效像素根据像素坐标(x,y)计算像素在帧存中的实际地址,读取帧存中像素的颜色值,完成当前输入像素与帧存像素的融合之后,将融合的像素颜色值回写到帧存。

  

与现有技术相比,本发明的优点就在于:1、逻辑简单明了,本发明提出的像素生成的实现结构并未采用很复杂的算法,都是比较利于硬件实现的算法,带来的好处就是逻辑简单。2、性能优良,在像素生成过程中,主要的三个功能模块:深度测试、纹理加载以及像素帧存融合与回写都需要读取外部存储器,特在主要三个模块之间增加了FIFO作为缓冲,在各模块内部实现分段的流水的情况下,充分保证各模块存储访问单元响应速率的平衡。3、使用方便:本发明提出的像素生成实现方式可重用性即移植性比较好,可以在嵌入式图形芯片设计中很方便的移植及重用。

  

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号