首页 随笔 乐走天涯 程序资料 评论中心 Tag 论坛 其他资源 搜索 联系我 关于 RSS

关于3D处理的MMX技术:光栅处理(三)


日期: 2000-06-12 14:00 | 联系我 | 关注我: Telegram, Twitter

虽然上面建立的运算可以从MMX技术的并行处理中获得益处,但运算的数目是受限的。而且,他们经常是使用浮点运算的。更多的方便将在下面的在扫描献上花每个点的步骤中体现出来。画一个点需要多种运算,依赖于前面讨论过的那些不同的处理方法,处理的顺序可以是变化的,也可以是不完全包括以下内容的,但一般来说,它们是这样的:

隐藏表面的移动---确定这个点是否被视图中靠近它的其他景象给隐藏。就是说,如果 这个点的z坐标值比与它x,y坐标值相同的已画出的点的z坐标值大,则不要画出这个点。这可通过Z-缓冲或前序排序多边形或扫描线广度来实现。对于Z-缓冲,每个已画好的点的z坐标值必须被重新从缓冲中取出,与新值比较,并根据条件更新。在MMX技术的支持下,一个水平比较和一个集成的与,或操作符可以合并z坐标,就像Intel的Z-缓冲附录中所说的一样。

颜色—通过平面阴影或Gouraud阴影和(或)结构映射来计算点的颜色。MMX技术可以Gouraud阴影化2到4个点。每个点上有3到8个记录。可参看附录中的Gourand阴影的像素点填补和单一化的Gouraud 阴影化的文章。

结构—查看要映射到当前点的结构元素。如果可以线性或二元线性或三元线性过滤,把它们乘或加起来。如果资源位图是调色板(通常情况),结构化可能需要查看一下为每个texel设计的基于软件的调色板。可能要通过一些统计算法来压缩结构,而且可能要包括Gouraud 阴影化来将基础材料颜色或亮色与结构结合起来。MMX指令还可以总括一个不需要位图资源的结构。这样,者用消耗较少的存储带宽和空间及较少的因放大视图而产生的别名和模块。

如果特别的阴影化可行,通过在当前亮度和材料上的值上加或乘,可以高亮一个点。在MMX技术支持下,乘是并不困难的。

如果混合可行,将算出的点与图像上早已存在的点混合。PMADD(集成的乘加)指令再一次大大的加快了速度。MMX技术关于alpha-混合的代码可在Interl的网站上找到。同样,雾化效果也可通过简单的乘加混合运算来创建。

转化成最终用来显示的像素点格式---在上面的流程中是典型的24位,但在屏幕上显示的是16位。同样,在附录中也有关于将24位转化为16位的最佳方法的篇章。

可以抖动一个点的颜色。抖动通常是8位色才需要的,有时16位色也需要。它通过在一种半随机状态下混合一组不同颜色的点来使得一种受限的颜色近似达到更宽广的范围。没有抖动,像天空或日出这样的景色就只能显示出一种“带状”的艺术效果了。

复制,或BLT(一列点的模块的转换)使所有的后台缓冲中的图像转换到显示缓冲(或叫前台缓冲)。SW 处理已做好,传到主存或画面外的存储器,并不直接传到最终显示的区域。这就叫双缓冲,使用这种即使是因为直接写到显示区通常比较慢,望前台缓冲里写同样生成图像,因为CRT射线定期刷新屏幕。缓冲的复制或交换通常通过硬件来加速,有时也叫“页置换”。

可以伸长,放大,复制像素点。伸长可能出现在前面提到的BLT过程中。附录中关于2x8位图像比例的部分讲了怎么做。它将适应16位获24位的图像。

可以用3D图像覆盖或混合2D位图。这种覆盖图在屏幕上产生奇异的图像。通过chromakeying,一些本不应出现的2D矩形位图通常提前被编为一种主要颜色,而且,这种处理器会避免将这种颜色的像素点写入结果。奇异覆盖图的最优代码已经写出了。

在画下一个框架前,清空后备缓冲和Z-缓冲。为了消除存储器中的值(比如0或FF),MMX的指令MOVQ用CPU外部总线最大的带宽来写数据(比如,每3个时钟周期8字节就是66MHz,或是在许多奔腾处理器系列中是177MB/S)。注意,后备缓冲和Z-缓冲应该在主存中就为基于SW的处理分配好空间,从CPU进入到PCI存储器是非常慢的。同样要注意,存在不同的方法来避免每次清空整个缓存。比如,后备缓冲就可能通过“脏的数据块”的跟踪来被部分清空。如果软件通过一个精确的四个框架都有的偏移量来更新Z-缓冲,Z-缓冲则只需每四个框架清空一次。

标签: 3D | MMX 优化

 文章评论
目前没有任何评论.

↓ 快抢占第1楼,发表你的评论和意见 ↓

发表你的评论
如果你想针对此文发表评论, 请填写下列表单:
姓名: * 必填 (Twitter 用户可输入以 @ 开头的用户名, Steemit 用户可输入 @@ 开头的用户名)
E-mail: 可选 (不会被公开。如果我回复了你的评论,你将会收到邮件通知)
反垃圾广告: 为了防止广告机器人自动发贴, 请计算下列表达式的值:
6 x 1 + 4 = * 必填
评论内容:
* 必填
你可以使用下列标签修饰文字:
[b] 文字 [/b]: 加粗文字
[quote] 文字 [/quote]: 引用文字

 
首页 随笔 乐走天涯 猎户星 Google Earth 程序资料 程序生活 评论 Tag 论坛 资源 搜索 联系 关于 隐私声明 版权声明 订阅邮件

程序员小辉 建站于 1997 ◇ 做一名最好的开发者是我不变的理想。
Copyright © XiaoHui.com; 保留所有权利。