DirectX 11(DX11)은 다른 플랫폼(예: Metal 또는 OpenGL ES)에서 지원되지 않는 많은 작업을 지원합니다. 따라서 항상 DX11이 아닌 지원이 적은 플랫폼에서 셰이더 동작을 잘 정의해야 합니다. 다음은 고려해야 할 몇 가지 경우입니다.
범위를 벗어난 메모리 액세스가 잘못되었습니다. DX11은 읽을 때 일관되게 0을 반환할 수 있으며 문제없이 일부 쓰기를 읽을 수 있지만 지원이 적은 플랫폼은 GPU를 충돌시킬 수 있습니다. DX11 특정 해킹, 스레드 그룹 크기의 배수와 일치하지 않는 버퍼 크기, 버퍼의 시작 또는 끝에서 이웃하는 데이터 요소를 읽으려는 시도 및 유사한 비호환성을 주의해야 합니다.
리소스를 초기화합니다. 새 버퍼와 텍스처의 내용은 정의되지 않습니다. 일부 플랫폼은 모두 0을 제공하지만 다른 플랫폼에서는 NaN을 포함할 수 있습니다.
컴퓨트 셰이더가 선언한 모든 리소스를 바인딩합니다. 셰이더가 브랜칭으로 인해 현재 상태의 리소스를 사용하지 않는다는 사실을 알고 있어도 리소스가 바인딩되어 있는지 확인해야 합니다.
GetDimensions 쿼리도 지원하지 않습니다. 필요한 경우 버퍼 크기 정보를 상수로 셰이더에 전달합니다.RWTextures<T>에 대해 이미지 포맷 한정자를 요구합니다.| GraphicsFormat | RenderTextureFormat | HLSL 유형 | GLSL 이미지 포맷 한정자 |
|---|---|---|---|
| R32G32B32A32_SFloat | ARGBFloat | float4 | rgba32f |
| R16G16B16A16_SFloat | ARGBHalf | min16float4/half4 | rgba16f |
| R32G32_SFloat | RGFloat | float2 | rg32f |
| R16G16_SFloat | RGHalf | min16float2/half2 | rg16f |
| B10G11R11_UFloatPack32 | RGB111110Float | min10float3 | r11f_g11g_b10f |
| R32_SFloat | RFloat | float | r32f |
| R16_SFloat | RHalf | min16float/half | r16f |
| R16G16B16A16_UNorm | ARGB64 | unorm min16float4/half4 | rgba16 |
| A2B10G10R10_UNormPack32 | ARGB2101010 | unorm min10float4 | rgb10_a2 |
| R8G8B8A8_UNorm | ARGB32 | unorm float4 | rgba8 |
| R16G16_UNorm | RG32 | unorm min16float2/half2 | rg16 |
| R8G8_UNorm | RG16 | unorm float2 | rg8 |
| R16_UNorm | R16 | unorm min16float/half | r16 |
| R8_UNorm | R8 | unorm float | r8 |
| R16G16B16A16_SNorm | 미지원 | snorm min16float4/half4 | rgba16_snorm |
| R8G8B8A8_SNorm | 미지원 | snorm float4 | rgba8_snorm |
| R16G16_SNorm | 미지원 | snorm min16float2/half2 | rg16_snorm |
| R8G8_SNorm | 미지원 | snorm float2 | rg8_snorm |
| R16_SNorm | 미지원 | snorm min16float/half | r16_snorm |
| R8_SNorm | 미지원 | snorm float | r8_snorm |
| R32G32B32A32_SInt | ARGBInt | int4 | rgba32i |
| R16G16B16A16_SInt | 미지원 | min16int4 | rgba16i |
| R8G8B8A8_SInt | 미지원 | min12int4 | rgba8i |
| R32G32_SInt | RGInt | int2 | rg32i |
| R16G16_SInt | 미지원 | min16int2 | rg16i |
| R8G8_SInt | 미지원 | min12int2 | rg8i |
| R32_SInt | RInt | int | r32i |
| R16_SInt | 미지원 | min16int | r16i |
| R8_SInt | 미지원 | min12int | r8i |
| R32G32B32A32_UInt | 미지원 | uint4 | rgba32i |
| R16G16B16A16_UInt | RGBAUShort | min16uint4 | rgba16ui |
| R8G8B8A8_UInt | 미지원 | 미지원 | rgba8ui |
| R32G32_UInt | 미지원 | uint2 | rg32ui |
| R16G16_UInt | 미지원 | min16uint2 | rg16ui |
| R8G8_UInt | 미지원 | 미지원 | rg8ui |
| R32_UInt | 미지원 | uint | r32ui |
| R16_UInt | 미지원 | min16uint | r16ui |
| R8_UInt | 미지원 | 미지원 | r8ui |
| A2B10G10R10_UIntPack32 | 미지원 | 미지원 | rgb10_a2ui |