
蛋白石之光
一个通用的彩色光照API,支持自动与Iris Shaders和VulkanMod兼容。
OpalLight —— 彩色光照 API
概述
OpalLight 为 Minecraft 提供了一个通用的彩色光照 API。与常见的全屏着色器方案不同,OpalLight 采用逐方块、体素级别的 RGB 光照传播——颜色通过 BFS 穿过方块,随距离衰减,在 RGB 通道间混合,并取每个通道内的最强值。这意味着彩色光照能够正确渲染到转角周围和复杂几何结构的环境,而不是屏幕空间的后处理特效。
关键优势:自动兼容绝大多数 Iris 光影包,无需用户任何配置。同时完全支持 VulkanMod 渲染器。
核心特性
强大的彩色光照 API
- 数据驱动 + 事件驱动:通过 JSON 数据文件注册彩色光源,或通过
ModificationEvent以编程方式注册。 - 支持 StatePropertiesPredicate:同一方块的不同方块状态可以发出不同颜色的光。
- 零侵入集成:任何模组中的任何方块都能发出彩色光照——只需注册数据或监听事件即可。
真实颜色传播
- 体素级 BFS 光照传播,基于曼哈顿距离进行线性衰减。
- 逐通道多光源合并:不同通道自然混合,相同通道取最强值,因此移除一个光源时结果依然精确。
- 无论地形多么复杂,角落、缝隙和洞穴都能正确照亮。
广泛兼容性
- Iris Shaders:自动兼容绝大多数光影包,无需手动选择兼容配置。
- VulkanMod:原生支持 Vulkan 渲染器。
- 自定义着色器使用 Core Profile GLSL 150,符合标准以避免渲染冲突。
示例:彩色灯笼
内置七个彩色灯笼作为 API 使用演示:
| 灯笼 | 合成配方 |
|---|---|
| 红 / 橙 / 黄 / 绿 / 青 / 蓝 / 紫 灯笼 | 原版灯笼 + 对应染料(无序合成) |
每个灯笼都通过 OpalLight 的 API 注册,展示了方块如何与 RGB 颜色关联。
展示
原版

Complementary

BSL

Photon

Mellow

VulkanMod

面向开发者
// 监听 ModificationEvent 为任意方块注册彩色光照
@SubscribeEvent
public static void onLightModification(LightDataLoader.ModificationEvent event) {
event.getDataByBlock().put(
MyBlocks.GLOWING_CRYSTAL,
List.of(new LightDataLoader.OpalData(new OpalColor(0.2f, 0.8f, 1.0f), Optional.empty()))
);
}
或者将 JSON 文件放入 assets/<modid>/opal_data/ 目录下,即可实现零代码集成。
兼容性
| 项目 | 状态 |
|---|---|
| Iris Shaders | 自动兼容绝大多数光影包 |
| VulkanMod | 完全支持 |
| NeoForge 1.21.1 | 原生平台 |
| 其他模组的发光方块 | 通过 API 注册兼容 |
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。