蛋白石之光

蛋白石之光

一个通用的彩色光照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 颜色关联。

展示

原版

image

Complementary

image

BSL

image

Photon

image

Mellow

image

VulkanMod

image

面向开发者

// 监听 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 注册兼容