# 保留内置 Uniform(Built-in Uniforms)

本页列出引擎为 Custom Surface Shader 保留的 Minecraft* Uniform。CSS 不能直接按保留名称读取这些值;使用某个值前,必须声明一个带 BuiltIn 绑定的 Property,并通过该 Property 的名称读取。

# 声明语法

Properties
{
    [Vector, BuiltIn: "MinecraftSunDirection"] SunDirection
    [Float, BuiltIn: "MinecraftTimeOfDay"] TimeOfDay
}

引擎仅负责填充已声明的内置值。数据按以下类型上传:

  • 标量使用 float,即使它表示整数、枚举或位域;
  • 位置、方向和颜色使用 vec4,通常读取 xyz 或 rgb,w 未使用。

# Upgradeable: Yes

Upgradeable: Yes 表示后续 Custom Surface Shading 与游戏版本承诺继续支持该值,依赖该值的材质具备规格所述的升级兼容保证。

BuiltIn 绑定名 数据类型 有效分量 说明
MinecraftTimeOfDay float 归一化的一天时间,从正午开始
MinecraftElapsedFrameTime float 当前帧经过的时间,单位为秒
MinecraftCameraFacingDirection vec4 xyz 当前相机朝向
MinecraftCameraPosition vec4 xyz 当前相机世界位置
MinecraftLastCameraFacingDirection vec4 xyz 上一帧相机朝向
MinecraftLastCameraPosition vec4 xyz 上一帧相机世界位置

# Upgradeable: No

Upgradeable: No 表示规格不保证后续版本继续支持该值;该值可能变化或移除,依赖它的材质可能失效。此标记不表示该值在 r21u12 中已经弃用。开发者升级项目版本时,如果项目使用了本节中的 Uniform,应对照目标版本文档确认其名称、类型和语义,并在必要时修改实现。

BuiltIn 绑定名 数据类型 有效分量 说明
MinecraftBiomeID float 相机所在生物群系的数字 ID
MinecraftCloudHeight float 云层的世界空间高度
MinecraftDay float 自创建世界以来的游戏内天数
MinecraftDimensionID float 当前维度枚举
MinecraftLocalClientID float 分屏多人游戏中的本地玩家 ID
MinecraftMoonIntensity float 月光照度,单位 lux
MinecraftMoonPhase float 月相枚举 0..7
MinecraftRenderDistance float 当前渲染距离
MinecraftSunIntensity float 阳光照度,单位 lux
MinecraftWeatherID float 当前天气位域;0 表示晴天
MinecraftSunDirection vec4 xyz 指向太阳的方向;只在主世界设置
MinecraftCloudColor vec4 rgb 当前云颜色
MinecraftFogColor vec4 rgb 当前雾颜色
MinecraftMoonColor vec4 rgb 当前月亮颜色
MinecraftSunColor vec4 rgb 当前太阳颜色

# 枚举取值

# MinecraftDimensionID

维度
0 主世界(Overworld)
1 下界(Nether)
2 末地(The End)

# MinecraftWeatherID

天气使用位域,可以同时包含多个标志。

位值 天气
1 << 0 雨(Rain)
1 << 1 雪(Snow)
1 << 2 浮游生物(Plankton)
1 << 3 红色孢子(Red Spores)
1 << 4 蓝色孢子(Blue Spores)
1 << 5 灰烬(Ash)
1 << 6 白色灰烬(White Ash)

# MinecraftMoonPhase

月相
0 满月(Full)
1 亏凸月(Waning Gibbous)
2 上弦月(First Quarter)
3 残月(Waning Crescent)
4 新月(New)
5 娥眉月(Waxing Crescent)
6 下弦月(Last Quarter)
7 盈凸月(Waxing Gibbous)

维度、天气和月相可使用内置函数中的辅助函数解码。相关辅助函数与对应 Upgradeable: No 属性具有相同的跨版本兼容风险。