硬件定义
DSHL 支持一些内置硬件定义。 您可以在着色器中使用它们来切换硬件特定功能,根据目标平台改变着色器行为等。
这些定义通过 hardware.<platform> 语法访问。
以下是可用定义的列表:
metal– Metal APImetaliOS– Metal API for iOSvulkan– Vulkan APIpc– 已弃用,DirectX 11 API 的别名dx11– DirectX 11 APIdx12– DirectX 12 APIxbox– Xbox One 平台scarlett– Scarlett 平台(又名 Xbox X/S 系列)ps4– PlayStation 4 平台ps5– PlayStation 5 平台fsh_4_0– HLSL Shader Model 4.0 versionfsh_5_0– HLSL Shader Model 5.0 versionfsh_6_0– HLSL Shader Model 6.0 versionfsh_6_6– HLSL Shader Model 6.6 versionmesh– 如果平台支持网格着色器bindless– 如果平台支持无绑定纹理
使用示例:
shader example_shader
{
if (hardware.metal) {
dont_render;
// 此着色器不会被编译到Metal平台上
}
hlsl {
int var = 0;
##if hardware.dx12
var = 12;
##elif hardware.dx11
var = 11;
##endif
// dx11 和 dx12 平台的 var 值将有所不同
}
}