Skip to content

保留内置 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 绑定名数据类型有效分量说明
MinecraftTimeOfDayfloat—归一化的一天时间,从正午开始
MinecraftElapsedFrameTimefloat—当前帧经过的时间,单位为秒
MinecraftCameraFacingDirectionvec4xyz当前相机朝向
MinecraftCameraPositionvec4xyz当前相机世界位置
MinecraftLastCameraFacingDirectionvec4xyz上一帧相机朝向
MinecraftLastCameraPositionvec4xyz上一帧相机世界位置

Upgradeable: No ​

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

BuiltIn 绑定名数据类型有效分量说明
MinecraftBiomeIDfloat—相机所在生物群系的数字 ID
MinecraftCloudHeightfloat—云层的世界空间高度
MinecraftDayfloat—自创建世界以来的游戏内天数
MinecraftDimensionIDfloat—当前维度枚举
MinecraftLocalClientIDfloat—分屏多人游戏中的本地玩家 ID
MinecraftMoonIntensityfloat—月光照度,单位 lux
MinecraftMoonPhasefloat—月相枚举 0..7
MinecraftRenderDistancefloat—当前渲染距离
MinecraftSunIntensityfloat—阳光照度,单位 lux
MinecraftWeatherIDfloat—当前天气位域;0 表示晴天
MinecraftSunDirectionvec4xyz指向太阳的方向;只在主世界设置
MinecraftCloudColorvec4rgb当前云颜色
MinecraftFogColorvec4rgb当前雾颜色
MinecraftMoonColorvec4rgb当前月亮颜色
MinecraftSunColorvec4rgb当前太阳颜色

枚举取值 ​

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 属性具有相同的跨版本兼容风险。