Godot官方对于hint的介绍非常简单:"Additionally, Godot provides optional shader hints to make the compiler understand for what the uniform is used"然后给出了简单的范例和可用hint列表。
按照官方文档的说法Godot Shader的hint主要是针对编译器(Compiler)的,会提示编译器变量用途并提供特定的默认值。使用中发现,部分hint在编辑器中也可以起到提示作用,下文仅针对第二种作用加以介绍。
在编写Godot Shader的时候常常要声明uniform
变量,以供我们在编辑器中修改。Shader中很多类型的变量是“一专多能”的,比如vec4
可以当rgba
颜色也可以当普通的四维向量(x,y,z,d)
,某些时候我们可能只想把它当颜色用,这时编辑器中该属性旁要能直接出现调色盘该多好;再比如float
变量,我们可能想把它的取值范围限定在10.0-100.0
之间,这样我们在编辑器中就不会误填一个超出范围的值了。当你有类似需求的时候,就要用到Godot Shader提供的hint
了。
先看一下,Godot 3.1版本为Shader提供的全部可用的hint
使用范例
shader_type spatial;
uniform vec4 color : hint_color;
uniform float amount : hint_range(0, 1);
uniform vec4 other_color : hint_color = vec4(1.0);
效果
小结 实际上在Editor中有作用的只有vec4
的hint_color
和int
及float
的hint_range
。而sampler2D
的所有hint
都仅在Compiler中起作用。 此处如有理解不当请大家指正。