考虑到EE所做的一切工作,是否还有什么遗漏? 其实就是最后一步: 显示!
这有个简单而快速的专用芯片: 图形合成器(Graphics Synthesizer,"GS"),运行频率约为147.46 MHz。 它内置4 MB DRAM,可在内部进行所有处理。 因此,无需访问主内存。 嵌入式RAM(eDRAM)根据所需的数据类型使用不同的总线连接。
与本网站之前评测过的其他图形系统相比,GS的功能较少。 不过,它的运行速度非常快。
架构设计
GPU只进行光栅化处理,即...... 生成像素、贴图、应用光照和其他一些效果。 这意味着没有顶点变换(这些由VPU完成)。 此外,这是一条固定功能流水线,因此也没有花哨的调整或着色器,只能使用固定的着色模型(如高洛德(Gouraud)着色)。
看起来很简单吧? 那么,让我们深入了解一下每个阶段会发生什么。
预处理
EE通过向嵌入式DRAM中填充所需素材(纹理位图和颜色查找表,后者也称为"CLUT")来启动图形合成器,为GS的寄存器赋值以对其进行配置,最后发出绘图命令(显示列表),指示GS在屏幕的特定位置绘制基元(点、线、三角形、精灵等)。
此外,GS还会预处理一些后续计算所需的数值。 最值得注意的是数字微分算法值,它将在绘制过程中用于插值。
光栅化
着色器利用之前计算出的值,从基元生成像素。 该单元可同时生成8个像素(带纹理)或16个像素(不带纹理),每个像素条目都包含计算出的以下属性:
- RGBA: 对应于红、绿、蓝和Alpha(透明度)的梯度。
- Z值: 用于后一阶段的深度测试。
- 雾: 可选项,用于模拟环境中的雾。
- 纹理属性: 包含将在下一阶段使用的纹理在DRAM中的地址和其他属性(坐标、详细程度、滤镜等)。
它还会执行剪切测试(Scissoring Tests),根据X/Y值剔除框架区域外的多边形,某些像素属性会转到"像素测试"阶段进行进一步检查。 此外,还可从Gouraud和Flat两种选项中选择一种进行照明。
然后,数据包被传送到"纹理贴图"引擎,但每个属性都由一个专门的"子引擎"来操作,这样就可以并行处理不同的属性。
形成纹理
该阶段由一个大型像素单元驱动,一次最多可计算16个像素,在这里纹理将被映射到多边形(即现在的像素)上。 此外,这里还应用了雾和抗锯齿效果。
纹理映射是从DRAM中定义为纹理缓冲区的区域获取的,不过该区域与一个名为纹理页缓冲区(Texture Page Buffer)的独立区域相互连接,后者似乎是一种纹理缓存机制。 CLUT也使用该页面系统进行映射。 这两个元素都使用512位总线进行检索。
像素单元执行透视校正,将纹理映射到基元上(与之前的仿射映射方法相比,这是一项重大改进)。 此外,它还提供双线性和三线性过滤功能,后者与混合映射纹理一起使用。
测试
在这里,如果某些像素不符合某些要求,就会被舍弃。 因此,将进行以下测试:
- Alpha测试: 将像素的Alpha值(透明度)与 "标准"值进行比较。 这是因为在某些情况下,要求Alpha值在一定范围内或大于/小于任意值。
- 目的地 Alpha 测试: 在将像素绘制到帧缓冲区之前,再次检查像素的Alpha值。
- 深度测试: 将像素的Z值与Z缓冲区中相应的Z值进行比较。 这样可以避免处理隐藏在其他像素后面的像素。
后处理
最后一个阶段可以使用本地DRAM中的上一帧缓冲区,在新像素上应用一些特效:
- Alpha混合(Alpha Blending): 将当前缓冲区的颜色与内存中之前缓冲区的颜色合并。
- 抖动(Dithering): 需要对较大的RGBA值进行修剪,因此可以使用抖动来缓和精度损失。
- 钳制输出(Colour Clamping): 在应用Alpha混合等操作后,新的RGB值可能会超出有效范围(0-255),因此可以通过钳位将值设置在有效范围内。
- 格式化: 它将流水线中生成的最终帧缓冲区转换为可存储在内存中的格式。
最后,新的帧缓冲区和更新的Z缓冲区将通过1024位总线写入内存。
后后处理
GS内部有一个名为可编程CRT控制器(Programmable CRT Controller,"PCRTC")的专用组件,可将内存中的帧缓冲区发送到视频输出端,这样就能在电视上看到帧。 但这还不是全部:它还包含一个名为合并电路(Merge Circuit)的特殊块,可以将两个独立的帧缓冲区进行Alpha混合(如果游戏想重复使用上一帧来形成新的帧,它就很有用)。 生成的帧可以通过视频信号输出和/或写回内存。
更好的模型
尽管如此,这肯定会给已经闻名遐迩的角色带来更好的设计。 来看看这个"前后对比"吧:

"现代版本"中可用的互动模型
PS1的古惑狼(Crash Bandicoot)(1996)
732个三角形

"现代版本"中可用的互动模型
古惑狼2(2001)
2226个三角形
以下是新游戏系列中的角色,这些角色的建模从头到尾都非常精细:

"现代版本"中可用的互动模型
王国之心(Kingdom Hearts)(2002)
2744个三角形

"现代版本"中可用的互动模型
勇者斗恶龙8(Dragon Quest VIII)(2004)
2700个三角形
值得一提的是,勇者斗恶龙等游戏采用了一种名为卡通着色/三渲二(Cel Shading)的自定义光照模型(我之前提到过这个术语),不过我在之前的文章中解释过,这主要是由GPU负责的。 在PS2中,所需的色彩计算大概是由Emotion Engine完成的,因为GS不像其他GPU那样灵活。
视频输出
如前所述,PCRTC通过视频信号发送帧缓冲。 该接口可使用多种格式播放视频(可与任何地理区域的电视机配合使用):
- PAL:以50 Hz的频率发送高达640x512像素的逐行扫描(576p)或隔行扫描(576i)。
- 市场上没有游戏使用576p。 虽然有些游戏支持逐行模式,但使用的是480p模式。
- NTSC:最高640x448像素,60 Hz,逐行扫描 (480p) 或隔行扫描 (480i)。
- VESA: 最高1280x1024像素。
- 数字电视(DTV): 在逐行模式下最高可达720x480像素,在隔行模式下最高可达1920x1080。
- 通过调整PCRTC设置,游戏也可以强制输出1080p格式。 不过,这种模式没有文档记录,因此会出现不可预知的行为。
- 这是否意味着PS2可以"显示高清"? 从技术上讲......是的,但我认为大多数游戏工作室都不会冒着性能下降的风险,去采用一种尚未普及的格式。

从背面看游戏机右侧。 显示交流电源接口、数字音频接口和AV多路输出。
可供选择的模式很多,但归根结底都是2000年代初采用的格式,这就把范围缩小到了PAL和NTSC。 此外,尽管PAL提供了比NTSC更高的分辨率,但一些NTSC游戏的欧洲版本还是采用了遮幅(letterboxing)方法来掩盖未使用的水平线,并降低刷新率以适应50Hz的限制(我称这些为"差劲的移植"!)。
视频输出端口(多路A/V端口)非常方便。 它可以传输RGB、色差、S-Video和复合视频信号。 因此,所有重要的信号都在这里,无需专用适配器或内部修改。






