索尼克06的错失机会
在构建《马拉松重新编译》的过程中,我们深入挖掘了《索尼克06》的许多核心系统,包括渲染。06年各个地区的外观差异很大,从《危机城》中的相当不错,到《城堡镇》中的完全平坦和令人沮丧。《危机城》有反射、粒子效果、戏剧性的光照。《城堡镇》让我很伤心。这确实让人想知道,到底出了什么问题?如果你查看我们所拥有的有限的测试版内容录像,我们会看到许多最终游戏中没有出现的效果。《王国谷》拥有完整的凹凸贴图,《城堡镇》有更复杂的几何形状和植物,而《新城》的碰撞暗示在开发的某个时期有非常不同的建筑布局。测试版的《城堡镇》有适当的光照和阴影。来源:TCRF 事实证明,许多被删除的内容实际上仍然在游戏中,但由于性能原因在原版中并未启用。即使是在削减视觉效果的情况下,这款游戏在真实硬件上也难以达到目标帧率。考虑到《索尼克团队》在推出游戏时面临的压力,不足为奇的是,这些功能成为了首先被删除的特性。着色器 这些功能究竟是如何被禁用的呢?这归结为在整个过程中使用的多种不同的着色器变体。《索尼克06》中的大多数事物都是使用地形着色器或广告牌着色器渲染的(尽管名字中有广告牌,但广告牌并不是真正的广告牌)。这两个着色器都有许多变体,每个变体的特性水平编号为00-07。一般来说,数字越高,特性集越好。这些着色器尚未完全反编译,因此我无法以100%确定的方式说明每个差异,但以下是广告牌变体的粗略特性表。这里的CSM代表级联阴影贴图,这是06使用的阴影技术。| 光照 | CSM | 点光源 | 双纹理混合 | |-----|-----|-------|---------| | 00 | 无 | 否 | 否 | | 01 | 顶点 | 否 | 是 | | 02 | 顶点 | 否 | 否 | | 03 | 顶点 | 是 | 是 | | 04 | 像素 | 是 | 否 | | 05 | 像素 | 否 | 否 | | 06 | 像素 | 否 | 是 | | 07 | 像素 | 是 | 是 | 你想猜一下游戏中使用最频繁的着色器是什么吗?没错,就是广告牌02 。这并不是最糟糕的着色器,但绝对是最糟糕的之一。因此,是的,游戏中使用最多的着色器仅具有每顶点光照,没有CSM支持,也没有点光源。如果你在想为什么许多东西看起来如此暗淡,这就是原因。游戏的大部分内容都不是用任何东西渲染的,除了最基本的反射纹理和环境光。如果你对每种着色器的使用情况和位置感到好奇,我做了一个方便的表格,包含了在HedgeDocs上每种着色器的描述。不幸的是,由于不同变体之间的输入/输出布局,替换它们并不像你希望的那么简单。我目前的尝试大多不成功,基本上只是导致各种技术以某种方式崩溃。此外,每种材料使用的纹理在对象的.xno文件中定义。可能某些.xno文件根本没有像正常情况下那样引用它们的其他贴图,如法线贴图,尽管它们仍然存在于游戏文件中,因此仅仅替换着色器是不够的。使用广告牌07着色器的《城堡镇》。阴影确实未正确应用于建筑物。阴影贴图 所以关于那些阴影贴图,它们并没有完全摆脱问题。游戏设置最多支持4个级联。每个级联用于相机视锥体沿着视角的一部分,以保持用于解析阴影的像素数量在不同距离之间相对一致。然而,似乎CSM也在最后时刻遭遇了一些性能削减。使用的级联级别由GenerateCSMLevels和GenerateCSMObjects定义。级别通常指的是地形/静态元素,而对象则指的是其他对象。大多数区域将使用全部4个级联,除了twn_a和一些测试关卡,其中GenerateCSMLevels降级为3,GenerateCSMObjects降级为2,大大缩短了阴影渲染的距离。多人游戏在所有地方也降低了级联数。即使阴影确实正确渲染,它们也容易出现严重的阴影粉刺,这是使用这类技术时常见的伪影。通常通过在阴影贴图样本中添加一个小的epsilon值来解决这一问题,但《索尼克团队》没有这样做,我对着色器的了解也不足以尝试添加这个。索尼克耳朵上的阴影粉刺。在原版中,阴影偶尔也会模糊不清。对象可以设置它们是否会对阴影贴图产生影响,有时他们设置错误,导致像索尼克在《危机城》中的滑雪板没有阴影,以及艾莉斯的裙子在索尼克的故事过场动画中缺少阴影。解决这些问题并不容易,因为这可能需要直接编辑对象本身,或者找到和纠正渲染代码中对象的复杂钩子。点光源 在我看来,这是被删除的内容中最遗憾的部分之一。
阅读全文 →本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡