此函数允许在着色器中使用角ID。
它为所有正在使用的着色器设置一个全局状态,当启用时,着色器从输入颜色值中"窃取"2位;一个来自红色值的最低位,一个来自蓝色值的最低位。然后可以在着色器中恢复这些值,以确定您正在处理的顶点(即哪个角落)。
注意 当使用 顶点缓冲区和基元 时,此功能将不起作用,因为每个顶点的颜色数据均由用户处理。
蓝色分量的最低位存储最高有效位,红色分量的最低位存储最低有效位。您可以通过执行以下操作来计算顶点着色器中的角ID:
vec2 rem = mod(in_Colour.rb * 255., 2.); int corner_id = int(dot(vec2(1., 2.), rem));
下表列出了可能的值及其对应的角点位置:
红色最低位 | 蓝色最低位 | 角ID | 位置 |
---|---|---|---|
0 | 0 | 0 | Top-left |
1 | 0 | 1 | Top-right |
0 | 1 | 2 | Bottom-right |
1 | 1 | 3 | Bottom-left |
注意 角 ID 按顺时针方向连续编号,左上角从 0 开始编号。
shader_enable_corner_id(enable);
参数 | 类型 | 描述 |
---|---|---|
enable | Boolean | 启用(true)或禁用(false)此函数。 |
N/A
shader_enable_corner_id(true);
上面的代码将启用所有着色器的角点ID的颜色位。