.. _hardware: ================ 硬件定义 ================ DSHL 支持一些内置硬件定义。 您可以在着色器中使用它们来切换硬件特定功能,根据目标平台改变着色器行为等。 这些定义通过 ``hardware.`` 语法访问。 以下是可用定义的列表: - ``metal`` -- Metal API - ``metaliOS`` -- Metal API for iOS - ``vulkan`` -- Vulkan API - ``pc`` -- 已弃用,DirectX 11 API 的别名 - ``dx11`` -- DirectX 11 API - ``dx12`` -- DirectX 12 API - ``xbox`` -- Xbox One 平台 - ``scarlett`` -- Scarlett 平台(又名 Xbox X/S 系列) - ``ps4`` -- PlayStation 4 平台 - ``ps5`` -- PlayStation 5 平台 - ``fsh_4_0`` -- HLSL Shader Model 4.0 version - ``fsh_5_0`` -- HLSL Shader Model 5.0 version - ``fsh_6_0`` -- HLSL Shader Model 6.0 version - ``fsh_6_6`` -- HLSL Shader Model 6.6 version - ``mesh`` -- 如果平台支持网格着色器 - ``bindless`` -- 如果平台支持无绑定纹理 使用示例: .. code-block:: c 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 值将有所不同 } }