地平线修复

创作者: hakasapl
已更新:2026-08-07 05:28:52
13.7MB

关于此 MOD

一个让天际省地平线更符合现实的SKSE插件


地平线修复是一个 开源 SKSE插件 通过在原版地图远处添加额外水域,改善地平线外观,营造无限地平线的错觉。

需要注意的是,在天际模组社区中流传的“地平线修复”一词通常指天空与地平线的融合。然而在现实生活中,晴朗天气下天空通常不会与地平线融合。之前的大多数“地平线修复”尝试都是将其融合,因为如果不这样做,就会像上面截图前那样看起来——嗯,不太好看。本模组不涉及任何形式的融合处理。不过,如果天气模组作者希望达到那样的视觉效果,他们完全可以自由地结合本模组继续实现融合。

地平线修复功能已完善,并已准备好进行更大范围的测试,因此此版本将作为测试版发布。如果您喜欢这个模组,请记得点赞支持,如果您有GitHub账号,我会很感激您能给我点个星标。 仓库!

性能
虽然我目前尚未进行正式的基准测试,但请注意,此模组将增加数百次水面绘制调用,如果你受CPU性能限制(这在打过多模组的上古卷轴5中很常见),这会影响你的游戏性能。在我的测试中,最坏情况下水面绘制调用从约40次跳升至约600次。你可以通过降低配置中的iWaterSkirtRimQuality选项来大幅减少这一数字。每降低一档,绘制调用大约会减半,但请注意这样做会牺牲地平线处的平滑度。

兼容性
  • 兼容 与 社区着色器
  • 兼容 带着 ENBSeries - 请确保您已下载ENBSeries的某个版本。 2026年7月12日或之后
  • 天气模组到处都是 兼容, 然而,你的天气模组的作者很可能是针对原版天空和地平线制作的,因此可能会出现一些视觉上的怪异之处,尤其是如果他们自带天空网格的话。此外,许多天气模组使用远处雾来隐藏地平线,而这与本模组搭配时可能看起来不对。很可能需要修改一些天气模组才能获得正确的效果。
  • 兼容 包括所有世界空间(包括模组添加的)
  • 应该这样 完全兼容 与其他一切都能兼容,但如果发现不兼容的地方,请告诉我!
技术细节
与普遍认知相反,这并非简单地增加更多水体LOD瓦片就能实现,我们克服了诸多重大引擎挑战。对于那6位对此工作原理感兴趣的朋友,感谢你们的到来!本节将围绕该插件的几个特定方面展开。请注意,尽管本节内容相当技术性,但为简明起见,已做了适当抽象化处理。 我的代码 如果你想深入了解,这些内容应该有详细的注释说明,或者你也可以直接问我。

其中有些内容稍微过时了,等1.0版本发布后我会更新整个部分。

建造水之围裙
水裙效果就是你所看到的LOD水面延伸至地平线的部分,这是本模组最重要的组成部分。构建这一效果需要以下几个步骤:
  • 模板发现 该插件会遍历TES::objLODWaterRoot下的场景图,尝试从原版地图中寻找合适的“供体”瓦片。每个BSTriShape会根据其顶点数量进行评分。顶点数最少的那个被选为供体瓦片。这样做是为了避免克隆包含额外几何体的瓦片。若出现平局,则使用世界边界最大的那个。
  • 布局与克隆 现在,裙边将开始构建。每个瓦片都从步骤1中选择的供体瓦片克隆而来。尝试根据配置中fWaterSkirtRadius指定的半径放置这些瓦片,跳过玩家当前所在的LOD32大小的瓦片。每个候选瓦片都会被检查,看它是否完全位于计算出的圆形之外。如果是,则将其丢弃。如果它介于内部和外部之间,则将其分割为4个更小的瓦片,然后重复此步骤N次,其中N是配置中的iWaterSkirtRimQuality值。这将使裙边的轮廓变成一个平滑的近似圆形,从地图上观看时显示为一个圆形。
  • 摆放 - 现在布局已确定且瓦片已克隆,还必须将其放置。每个瓦片的高度默认与地图的海洋(NAM4 水面高度)相同。可以使用配置选项 fWaterSkirtZOffset 对其进行偏移。布局中的所有瓦片都放置在 NiNode HSF_WaterSkirtRoot 下。如果 bWaterSkirtDrawLast 为 1,则它们随后被附加到场景图中的 TES::lodLandRoot 下,这确保它们会在游戏自身的 LOD 水面之后绘制,这对于某些 ENBSeries 效果很重要。
  • 生命周期 裙摆会在单元格分离事件(当玩家移动或加载到新单元格时)以及游戏初始加载时重建。此外还设有路径逻辑,确保在室内时裙摆停止渲染。更新时外部瓦片仅被重新放置,而不会重新计算布局。

此图从俯视角度展示了上述内容,并未按比例绘制。



水体裙边剔除
由于游戏默认的远裁剪距离,那些放置的瓦片通常会被直接剔除。本插件的早期版本通过修改游戏的远裁剪距离来规避此问题。然而,这破坏了一些原版特效以及CS/ENB中的某些效果,因此需要采用不同的方案。取而代之的是,水裙中的每个瓦片将其模型绑定半径设置为1e9,这使其与所有可能的视锥体相交,同时配合kAlwaysDraw标志。这导致引擎绝不会剔除这些瓦片。但这同样是个问题,因为现在我们每帧都必须渲染所有瓦片。

为了解决这个问题,实现了一个自定义的剔除算法。通过挂钩大气层中的SkyObject::Update,每次事件触发时都会从NiCamera::world和viewFrustrum重建6个视锥体平面。此外,每个瓦片的包围球会沿着相机到瓦片的射线方向收缩,直至距离远平面一半距离处的球面上。由于角范围得以保留,四个侧面平面仍能正确剔除屏幕外的瓦片,而视野内的瓦片则得以保留。

水面裙边深度
尽管上述步骤都已执行,瓦片仍然无法渲染。这是因为光栅化器会裁剪掉z高度超出视口深度范围的片段。因此,我们还需挂钩`BSWaterShader::SetupGeometry`和`BSWaterShader::RestoreGeometry`。当这些挂钩遇到水面裙边瓦片时,会重新绑定视口,并将`maxDepth`设置为`1 - 8/2^24`。该常量相当于24位深度缓冲区中远平面下方8个量化单位,始终比1.0值更近。这样,这些瓦片就能在空旷的地平线间隙中赢得深度测试,但在存在真实几何体的地方则必定失败。正因如此,瓦片才能被绘制在真实地图上,且不会引发问题。

致谢与相关链接
感谢 alandtse 为了支持VR!
感谢 po3 以及RE社区对commonlib的贡献!
感谢社区着色器开发者们与我合作完成其中部分工作。
感谢Boris(ENBSeries作者)与我合作解决此模组与ENB的兼容性问题。




上古卷轴5:天际 特别版 的热门 MOD

探索适用于 上古卷轴5:天际 特别版 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

2025-12-16 11:53:50

前置必备Mod

修改与Mod必备前置工具

ModOrganizerTeam2024-08-04 16:31:44

Mod Organizer(MO)是一个用于管理任意大小的Mod集合的工具。它是专门为那些喜欢尝试mods的人设计的,因此需要一种简单可靠的方法来安装和卸载它们。

天空用户界面

schlangster2017-10-04 05:03:26

界面优雅,对电脑友好,并具有许多高级功能。

非官方《上古卷轴5:天际》特别版补丁 - USSEP

Arthmoor2025-09-01 07:56:09

一款针对《上古卷轴V:天际特别版》的综合性错误修复模组。非官方天际特别版补丁(简称USSEP)的目标是最终修复《天际特别版》中所有尚未被官方修复的错误。

静态网格改进模组 - SMIM

Brumbek2018-07-05 02:28:26

这是一个旨在大幅提升《上古卷轴5:天际》中无数静态3D模型外观的大型项目。简而言之,我希望通过这个项目让天际的建筑、杂物、家具和景观更加美观。

SKSE插件的地址库

meh3212024-02-14 09:19:54

包含头文件和数据库,以便轻松实现 SKSE DLL 插件的版本独立性。

比赛菜单

expired69782024-01-27 03:38:17

角色创建菜单全面改版,新增多种自定义功能,例如多种RGBA战纹、身体彩绘、手部彩绘和脚部彩绘。(需要SKSE)

Fores Skyrim SE-FNIS SE中的新闲置

NexusModsCaretaker2020-02-19 01:47:03

Skyrim没有可能的自定义动画?错误的。FNIS行为允许添加不同类型的动画到游戏:闲置/姿势,顺序,家具,配对,杀戮,生物,等等。

使用 Xmod 解锁 上古卷轴5:天际 特别版 的全部潜力 — 今天就探索这些顶级 MOD!