专利名称:图形芯片设计中图形像素生成算法的硬件实现的制作方法
图形芯片设计中图形像素生成算法的硬件实现技术领域
本发明主要涉及到3D图形芯片设计中的像素生成和着色领域,特指基于像素测 试,像素纹理,像素融合的3D绘图的实现。
背景技术:
在屏幕上绘制几何体、文本及图像时,(图形处理芯片)GPU要完成一些计算,以便 实现旋转、平移、缩放、确定光照、将物体投影到透视图中、判断窗口中哪些像素会受影响以 及确定这些像素应该以何种颜色绘制。
在OpenGL确定了应该生成的像素及绘制颜色后,仍需要几个处理过程来控制如 何将该像素绘制到帧缓存中,以及确定是否需要这样做。如果该像素超出了窗口或比帧缓 存中的像素距视点的距离更远,则该像素就不必画出。
一旦输入的像素通过了所有测试,就可以计算该像素的正确颜色,并将它与颜色 缓存中的当前内容按某种方式合并起来。
首先,如果该像素在三角形中并且给像素指定了纹理,则应当先从纹理图片中获 得纹理颜色,并将该纹理颜色RGBA值指定给该像素;如果像素在反走样线段中,则还需要 根据线段在该像素上的占用比计算alpha值,将前景色与纹理颜色进行融合。
然后进入融合操作,混合将输入像素的R、G、B、A值与存储在当前位置的像素的对 应值结合起来。可以使用不同的混合操作。混合操作是否发生取决于输入alpha值与存储 在像素中的alpha值。最后将处理完成后的像素点依次写入帧存,即完成了三维制图中的 像素着色,后续的图象显示,即是从不断修改和替换的帧存中读取数据。发明内容
本发明要解决的问题就在于针对现有技术存在的技术难点,本发明提供了一种 结构简单明快、能够快速流水完成3D绘图中像素生成的各个功能操作的实现方式。
本发明采用的技术方案是,3D图形芯片中应用时,当3D图元生成模块生成一个新 的像素时,这一像素将包含很多信息分别为三维水平垂直和深度坐标(χ,y,z)、纹理坐标 (8,0、红绿蓝颜色分量(民6,8)以及透明度分量(Alpha)。3D图形芯片中的像素生成模块 即需根据以上的四组属性值,生成将要显示的真实像素点阵,并写入图形显示缓存中1)根据输入像素的横纵坐标(x,y)与外部接口设定的剪取矩形框的对角线的左上和右 下两个坐标点的横纵坐标(x,y),进行比较。如果此时输入像素的横纵坐标(x,y)值均在 剪取矩形框的两个设定的坐标点之间,则可视为剪取测试成功;否则失败。如果该像素满足 测试的要求,即并将该输入像素写入FIFO,否则该像素将会被删除;2)从上级FIFO中读出像素,根据输入像素横纵坐标(x,y)以及外部接口设定的深度缓 存的起始地址和行宽度,读取当前深度缓存中保存的显存中已有像素点距离屏蔽的远近即 当前显示像素点的深度值(ζ)。将读取的深度值按照当前外部接口设定的测试方案与当前 输入像素的深度值比较,以判定当前输入像素是否需要覆盖当前帧存中已有的像素点(深度测试);3)如果当前像素通过测试,将深度测试通过的像素点写入下一级FIFO;并将该像素的 深度值(ζ)回写到深度缓存;4)从上级FIFO中读出像素,根据输入像素的纹理横纵坐标(s,t)以及外部接口设定的 纹理缓存的起始地址和行宽度,读取并计算当前像素的纹理值,完成纹理与像素当前色度 信息(A,R,G,B)的融合;5)将完成纹理计算与融合的像素写入下一级FIFO;6)从上级FIFO中读出像素,根据输入像素的横纵坐标(χ,y)以及显示缓存的起始地址 和行宽,读取当前像素显存对应坐标的已有像素信息,完成透明度(Alpha)融合,并回写更 新显存中对应位置的像素信息(A,R, G, B)值。
图1是本发明所述像素生成单元的实现框图; 图2是本发明所述像素剪取测试的原理图; 图3是本发明所述像素深度测试的原理图。
具体实施方式
以下将结合附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明设计为3D图形处理芯片中的着色(Render)模块,一共分为像 素测试、像素纹理,像素融合并帧缓存回写三个部分。
首先当单元接收到一个新的有效像素时,本设计会将像素的横纵坐标,与设定的矩形 框的对角线坐标A、B两点坐标(分别为xA,yA和xB,yB)进行比对,当输入像素的横纵坐标 值(xy)符合如下比较算法χΑ < χ < xB并且yA < y < yB,即上式比较值正确,则认为当前像素属于剪取矩形框 中。如果新的有效像素符合剪取框和Alpha值限定的要求,新像素将被写入FIFO,此处的 FIFO的深度可根据上层3D图元生成模块像素生成速度与下一级模块深度比较模块Cache 命中率的评估适当的选择,以缓冲图元生成模块与像素生成模块的平均速率。如图2所示, C、D、E及F四个点将被忽略,H点将会被写入FIFO。
接着的像素深度测试首先在外存空间开辟一深度缓存空间,将帧存中已有像素 点的深度值(即帧存已有像素点到显示视角的距离远近值)存储于这一深度缓存中。本部 分模块会自动的从上一级FIFO中读取有效像素的信息,依次进行深度缓存地址计算、从 深度缓存中读取当前坐标点对应的像素深度数据读取,将当前输入的像素深度值和深度缓 存中读取出的深度值(帧存已有像素的深度值)进行比较。如果深度测试成功(即新输入 的像素距离当前显示视角的距离比帧存中已有像素点更近),本设计单元需要将新的像素 信息写入下一级FIFO,同时将深度缓存中存储的深度值替换为新像素的深度值。如图3所 示,新的像素点A1将会替换原有帧存中相同横纵坐标(x,y)的^点。
后续的像素纹理填充此处纹理填充流水的从上一级FIFO中读取有效像素,主要执行 的是纹理目标值的计算,在这里我们采用简化的二维插值运算,纹理目标值与当前像素 颜色值的融合,最后完成向下一级FIFO写入(权利4和5)。
最后的帧存融合与回写此处帧存融合与回写流水的从上一级FIFO中读取有效像素 根据像素坐标(X,y)计算像素在帧存中的实际地址,读取帧存中像素的颜色值,完成当前输 入像素与帧存像素的融合之后,将融合的像素颜色值回写到帧存。
与现有技术相比,本发明的优点就在于1、逻辑简单明了,本发明提出的像素生成的实 现结构并未采用很复杂的算法,都是比较利于硬件实现的算法,带来的好处就是逻辑简单。 2、性能优良,在像素生成过程中,主要的三个功能模块深度测试、纹理加载以及像素帧存 融合与回写都需要读取外部存储器,特在主要三个模块之间增加了 FIFO作为缓冲,在各模 块内部实现分段的流水的情况下,充分保证各模块存储访问单元响应速率的平衡。3、使用 方便本发明提出的像素生成实现方式可重用性即移植性比较好,可以在嵌入式图形芯片 设计中很方便的移植及重用。
权利要求
1.像素测试(筛选),其特征过程为根据输入像素的横纵坐标(X,y)及透明度(Alpha) 分量将超出绘图区或透明度过大以及过小的像素筛选(即剪取测试和Alpha测试)并将满足 绘图要求的像素写入FIFO;从上级FIFO中读出像素,根据输入像素横纵坐标(xy)以及深度 缓存的起始地址和行宽,读取当前深度缓存中保存的显存中已有3.点距离屏蔽的远近即 当前显示像素点的深度值(ζ);将读取的深度值与当前输入像素的深度值比较,以判定当前 像素是否覆盖当前帧存中已有的像素点(深度测试),如果当前像素通过测试,则将像素传 输至权利3并将该像素的深度值(ζ)回写到深度缓存,将深度测试通过的像素点写入下一 级 FIFO。
2.像素纹理填充,其特征过程为从上级FIFO中读出像素,根据输入像素的纹理横纵 坐标(s,t)以及纹理缓存的起始地址和行宽,计算出该像素纹理颜色的物理地址,读取出相 邻的以纹理坐标周边的四个纹理像素,将四个纹理像素值进行二维插值计算得到当前像素 的实际纹理值,完成纹理与像素当前输入像素色度信息(A,R, G,B)的融合,将完成纹理计算 与融合的像素写入下一级FIFO。
3.像素透明度融合,其特征过程为从上级FIFO中读出像素,根据输入像素的横纵坐 标(χ,y)以及显示缓存的起始地址和行宽,读取当前像素显存对应坐标的已有像素信息,完 成透明度(Alpha)融合,并回写更新显存中对应位置的像素信息(A,R, G, B)值。
全文摘要
本发明公开了一种结构简单明快、能够快速流水完成3D绘图中所要求的像素绘制的各个功能操作的系统实现方案。它能连续的串行流水接收上级模块输入的像素横纵、深度坐标、纹理坐标以及各颜色值,连续的完成以下操作像素的透明度(Alpha)测试根据像素的透明度完成像素筛选;像素剪取测试根据像素的横纵坐标筛选设定矩形框以外的像素点;像素深度测试根据像素距离屏幕的远近对像素完成筛选;像素纹理映射根据像素的纹理坐标和设定的纹理图片完成纹理加载;以及像素帧存融合将当前像素的颜色值与帧存中同一位置像素点颜色值的混合。
文档编号G06T1/20GK102034221SQ201010555850
公开日2011年4月27日 申请日期2010年11月22日 优先权日2010年11月22日
发明者焦永, 石大勇, 赵威特, 陈宝民, 陈怒兴, 龙斌, 龚晓 申请人:长沙景嘉微电子有限公司