全局常量
DSHL 支持一些内置的全局常量,您可以在预着色器 Preshader 中获取这些常量,然后在 hlsl 块中使用。
常量列表:
globtm–float4x4世界-视图-投影矩阵projtm–float4x4投影矩阵viewprojtm–float4x4视图-投影矩阵local_view_x, local_view_y, local_view_z, local_view_pos– 逆视图矩阵的 1..4 列, 为float3格式world_local_x, world_local_y, world_local_z, world_local_pos– 世界变换矩阵的 1..4 列, 为float3格式
使用示例:
shader example_shader
{
// 通过预着色器抓取全局常量
(vs)
{
viewprojtm@f44 = viewprojtm;
world_local_x@f3 = world_local_x;
world_local_y@f3 = world_local_y;
world_local_z@f3 = world_local_z;
world_local_pos@f3 = world_local_pos;
}
hlsl(vs)
{
float4 example_vs(float4 pos: POSITION0)
{
// 在 hlsl 中使用全局常量
float3 worldPos = float3(pos.x * world_local_x + pos.y * world_local_y + pos.z * world_local_z + world_local_pos);
return mulPointTm(worldPos, viewprojtm);
}
}
}
Warning
矩阵常量 globtm, projtm, viewprojtm 仅适用于 (vs) 预着色器。