1994 年推出的初代 PlayStation 标志着游戏产业从 2D 向 3D 时代的跨越。与同期竞争对手 Sega Saturn 复杂的多芯片设计不同,Sony 选择了一条 "简单实用" 的架构路线 —— 单芯片 GPU 配合专用的几何变换引擎(GTE),在成本控制与性能表现之间取得了平衡。然而,这种简洁设计也带来了独特的技术限制,直接塑造了 PS1 游戏标志性的视觉风格:低多边形模型、抖动的几何体、扭曲的纹理映射,以及缺乏透视校正的贴图效果。
几何处理管线:GTE 与 GPU 的分工协作
PS1 的图形处理采用双阶段架构,由 Geometry Transformation Engine(GTE)和 GPU 协同完成。GTE 作为 CPU 的协处理器(CP2),专门负责 3D 数学运算,包括矩阵乘法、向量变换、透视投影、光照计算和裁剪操作。这种分工让主 CPU(MIPS R3000A)可以从繁重的浮点运算中解放出来,专注于游戏逻辑处理。
GTE 采用定点数运算而非浮点数,虽然牺牲了部分精度,但换来了更高的执行效率。处理后的顶点数据通过 64 字节 FIFO 缓冲区传递给 GPU,GPU 命令支持绘制三种基本图元:三角形(支持纹理和着色)、矩形(适合 2D 精灵,最大 256×256 像素)、线条(支持着色但无纹理)。这种设计使得开发者可以根据内容类型选择最优的绘制方式 ——3D 场景使用三角形,UI 元素使用矩形。
光栅化阶段采用整数坐标系统,每个坐标直接映射到帧缓冲区的像素中心点。这种设计简化了硬件实现,但代价是缺乏子像素精度。当几何体在屏幕上移动时,顶点会 "吸附" 到最近的像素网格,导致多边形边缘出现明显的抖动和跳跃。这正是 PS1 游戏画面 "颤抖" 感的根本来源。
纹理缓存架构:严苛的内存预算管理
PS1 配备 1MB VRAM,早期机型使用双端口 VRAM(支持并发访问),后期改为单端口 SGRAM 以降低成本。在这 1MB 空间中,需要同时容纳帧缓冲区、纹理数据、颜色查找表(CLUT)以及其他 GPU 资源。
GPU 集成的纹理缓存仅有 2KB,这一容量在今天的标准看来微不足道,但在 1994 年已是务实的工程取舍。2KB 缓存意味着纹理采样必须高度局部化,否则将频繁触发 VRAM 访问,成为性能瓶颈。开发者需要精心设计纹理布局,将相关纹理数据在 VRAM 中连续存放,以最大化缓存命中率。
纹理尺寸被限制在 256×256 像素以内,且仅支持最近邻过滤(Nearest Neighbor),不支持 mipmapping 或任何高级过滤算法。这解释了为何 PS1 游戏中的纹理在近距离观察时呈现明显的块状像素感。同时,仿射纹理映射(Affine Texture Mapping)的使用 —— 即在屏幕空间线性插值 UV 坐标而不考虑深度信息 —— 导致纹理在倾斜表面上产生透视扭曲,尤其是在相机接近垂直角度观察时更为明显。
硬件限制下的渲染优化策略
Ordering Table 替代 Z-buffer
PS1 GPU 最显著的限制之一是缺乏硬件 Z-buffer。与 Nintendo 64 等同期主机不同,PS1 无法在每个像素级别进行深度测试。取而代之的是软件层面的 Ordering Table(OT)机制 —— 一个由 CPU 维护的深度排序结构。
开发者需要手动计算每个图元的深度值,将其插入 Ordering Table 的对应槽位,然后通过 DMA 批量传输给 GPU 按顺序渲染。这种 "画家算法"(从远到近绘制)要求 CPU 承担可见性判定的重任。当多个图元深度相近时,排序近似可能导致闪烁或错误的遮挡关系,这也是 PS1 游戏中常见的视觉瑕疵来源。
帧缓冲区优化与页面翻转
为了缓解 1MB VRAM 的容量压力,PS1 GPU 支持可调整尺寸的帧缓冲区。标准配置为 640×480 分辨率、16 位色深,但开发者可以降低分辨率以腾出更多空间给纹理资源。例如,将帧缓冲区分割为两个 320×480 的缓冲区实现双缓冲页面翻转(Page Flipping),既能消除画面撕裂,又能优化 VRAM 使用效率。
一种典型的优化布局是:两个 320×480 帧缓冲区共占用约 600KB VRAM,剩余约 400KB 用于存储纹理和颜色查找表,配合 2KB 纹理缓存形成完整的内存层次。此外,VRAM 支持混合色深映射 ——16 位帧缓冲区可以与 24 位位图(常用于 FMV 过场动画)共存,进一步提升灵活性。
着色与特效取舍
GPU 提供两种着色模式:Flat shading(平面着色)和 Gouraud shading(高洛德着色)。前者为整个图元应用恒定光照,后者在顶点间插值光照颜色。性能数据显示,Flat shading 的填充率约为 Gouraud shading 的 2.5 倍,这迫使开发者在视觉质量与帧率之间做出权衡。
PS1 在特效方面表现突出,支持半透明混合和颜色抖动(Dithering)。抖动技术通过在相邻像素间交替颜色值,在有限色深下模拟更丰富的色彩过渡,有效缓解了色带(Banding)问题。
技术遗产与启示
PS1 的 GPU 架构体现了 90 年代中期嵌入式图形硬件的典型设计哲学:在硅片成本、散热和功耗的严格约束下,通过软硬件协同优化实现可接受的 3D 性能。其设计选择 —— 定点数运算、无 Z-buffer、仿射纹理映射、有限缓存 —— 虽然带来了诸多视觉限制,但也催生了独特的游戏美学。
理解这些底层约束有助于现代开发者更准确地复刻 PS1 风格,或从中汲取灵感用于复古风格游戏的创作。正如现代 PS1 风格渲染器的实现所示,通过在现代 GPU 上有选择地禁用透视校正、强制像素网格对齐、模拟抖动效果,可以忠实还原那个时代的视觉特征。
参考来源
- Copetti, R. (2019). PlayStation Architecture. https://www.copetti.org/writings/consoles/playstation/
- Colson, D. (2021). Building a PS1 style retro 3D renderer. https://www.david-colson.com/2021/11/30/ps1-style-renderer.html
- PlayStation Technical Specifications. https://en.wikipedia.org/wiki/PlayStation_technical_specifications
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。