圆形渲染

圆形渲染

一个将原版渲染方式改为3D球形渲染的Fabric模组。

游戏机制

圆形渲染

English | 中文

这是一个 Fabric 模组,它将区块渲染修改为以玩家为中心的圆形(或椭圆形)。 默认情况下,它会在一个完美圆形内渲染区块(半径 = 视距 × 16 格)。 你可以选择缩放左/右半径以创建椭圆形,从而剔除更多两侧的区块,同时保持前/后可见范围不变。这能降低 GPU 负载并提高 FPS,且不影响游戏机制。

特性

  • 以玩家为中心呈圆形渲染区块(默认行为)。
  • 可选的椭圆形渲染:前/后半径保持不变,而左/右半径按可配置的系数(renderRadiusScale)缩放。
    • 当 renderRadiusScale = 1.0 时,为完美圆形。
    • 当 renderRadiusScale < 1.0 时,变为椭圆形(左/右更窄)。
  • 可选的垂直范围限制:将渲染限制在玩家上方和下方的特定区块层数内。
  • 区块加载(逻辑更新)仍保持方形,因此所有区块仍会被加载和更新。
  • 预设与自定义模式:可在预定义配置(均衡、性能、激进)之间快速切换,或选择自定义以自由调整所有参数。
  • 兼容 Sodium:
    • 当存在 Sodium 时,配置会显示在视频设置界面中。
    • 没有 Sodium 时,模组使用 JSON 配置文件独立运行。
  • 不影响实体或其他对象——仅影响区块渲染。

依赖

安装

  1. 安装 Fabric Loader。
  2. 从 Releases 页面下载最新的 circular-rendering-<version>.jar。
  3. 将 JAR 放入你的 mods 文件夹。
  4. (可选)如果需要游戏内配置滑块和预设,请安装 Sodium。

配置

已安装 Sodium 时

  1. 前往 选项 → 视频设置。
  2. 向下滚动找到 Circular Rendering 部分。

预设

  • 渲染预设下拉菜单:
    • 均衡:渲染半径比例 = 100%,垂直范围禁用(原版行为,但仍经过优化)。
    • 性能:渲染半径比例 = 80%,垂直范围启用,10 层。
    • 激进:渲染半径比例 = 40%,垂直范围启用,3 层。
    • 自定义:所有滑块解锁,允许你自由调整下方参数。

选择非自定义预设会自动应用其参数并锁定手动控件。

手动配置(仅在选择了“自定义”预设时可用)

  • 渲染半径比例(10% – 100%):
    • 100% = 完美圆形(半径 = 视距 × 16)。
    • 较低的值会使左/右半径变小,将圆形变为椭圆形并剔除更多两侧区块。
  • 启用自定义垂直范围(开关)——启用后,你可以设置:
    • 垂直范围(1–32 层):在玩家上方和下方渲染的区块层数(每层 16 格)。

没有 Sodium 时

模组会在 config/circular-rendering.json 创建 JSON 配置文件。 示例内容:

{
  "renderRadiusScale": 1.0,
  "enableVerticalRange": false,
  "verticalRange": 16,
  "preset": "BALANCED"
}
  • renderRadiusScale – 0.1 到 1.0 之间的双精度值。
    • 1.0 = 完美圆形。
    • < 1.0 = 椭圆形(左/右更窄)。
  • enableVerticalRange – 布尔值,为 true 时启用垂直范围限制。
  • verticalRange – 整数(1–32),在玩家上方和下方渲染的区块层数(每层 = 16 格)。
  • preset – "BALANCED"、"PERFORMANCE"、"AGGRESSIVE" 或 "CUSTOM" 之一。
    • 如果预设不是 "CUSTOM",三个手动参数将被忽略,使用预设的值。
    • 如果预设是 "CUSTOM",则完全按设置使用手动参数。

更改在重启游戏或重新加载区块后生效。

工作原理

  • 原版模式(无 Sodium): 模组注入 LevelRenderer.cullTerrain,并使用以下形状过滤区块列表:

    (forward² / a²) + (right² / b²) ≤ 1
    

    其中 a = 视距 × 16(固定的前/后半径),b = a × renderRadiusScale(左/右半径)。 当 b = a 时,形状为圆形。如果启用了垂直范围,它还会检查区块 Y 层。

  • Sodium 模式: 注入点取决于 Minecraft 版本:

    • MC 26.1.2 及以上: 模组重定向 OcclusionCuller.visitNode 内的 testDistance 调用。这在基于图的遮挡剔除遍历中直接用椭圆公式替换了 Sodium 默认的圆柱形距离检查,同时保留了完整的剔除结构。
    • MC 26.1.1 及以下: 模组注入 OcclusionCuller.isWithinRenderDistance,对椭圆(或垂直范围)之外的区块返回 false,从而有效地将它们从 Sodium 的可见集合中过滤掉。

两种方法都只影响区块渲染;区块加载保持方形,因此游戏机制(红石、实体 AI 等)在所有位置都能正常工作。

兼容性

  • Minecraft 版本支持状态:
版本 支持状态
26.2 ✅
26.1.2 ✅
26.1.1 ✅
26.1 ✅
1.21.11 ✅
更低版本 将不支持
  • 与 Sodium 0.8.6+ 完全兼容(两个模组可一起使用)。
  • 应与大多数不大量修改区块渲染的其他模组兼容。如果遇到问题,请报告。

从源代码构建

克隆仓库并运行:

./gradlew build

构建的 JAR 将位于 build/libs/。

许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。