# 属性(Properties)

Property 是 CSS 声明外部输入的机制。入口函数除固定参数外需要使用的其他数据,必须先在 Properties { ... } 中声明,再通过声明的属性名称读取。

# 支持的类型

CSS 仅支持以下四种 Property 类型:

声明 数据类型 默认值或资源语法 生效环境
[Float] float [Float] Strength : 1.0 全部
[Vector] vec4 [Vector] Direction : (0.0, 1.0, 0.0, 0.0) 全部
[Color] vec4(RGBA) 十六进制颜色(例如 #FFFFFF00)或 (x, y, z, w) 全部
[Sampler:2D] sampler2D [Sampler:2D] Planet : "textures/Planet" 全部

采样器目前只支持 2D。

# 数据来源

# 作者属性

未使用引擎数据绑定的 Property 可声明默认值:

Properties
{
    [Float] Strength : 1.0
    [Color] Tint : #FFFFFFFF
    [Sampler:2D] DetailTexture : "textures/Detail"
}

# BuiltIn

BuiltIn 将 Property 绑定到引擎提供的只读值:

[Float, BuiltIn: "MinecraftTimeOfDay"] TimeOfDay

MinecraftTimeOfDay 是引擎保留 Uniform 的绑定名,TimeOfDay 是作者在代码中使用的 Property 名称。可用绑定名见保留内置 Uniform

# Exposed

Exposed 以指定名称暴露 Property。该机制用于通过脚本设置属性值:

[Vector, Exposed: "Tint"] TintValue

# 约束

  • [Float]、[Vector] 和 [Color] 可以携带 BuiltIn 或 Exposed 中的一种数据绑定;[Sampler:2D] 不支持这两种绑定。
  • [Sampler:2D] 声明必须提供纹理 URI。
  • 引擎内置值必须显式声明后才能读取,不会自动出现在代码作用域中。
  • BuiltIn Property 的值由引擎填充,CSS 将其作为只读输入使用。
  • Property 是逐材质 Uniform。