render: float color formats in nrhi (RGBA16F + R11G11B10F)
This commit is contained in:
parent
7f6a5b5b7c
commit
a8e28405f9
3 changed files with 19 additions and 0 deletions
|
|
@ -59,6 +59,12 @@ enum class Format : uint32_t {
|
||||||
kBC3_UNORM,
|
kBC3_UNORM,
|
||||||
kBC4_UNORM,
|
kBC4_UNORM,
|
||||||
kBC5_UNORM,
|
kBC5_UNORM,
|
||||||
|
// Float color formats (HDR render targets), appended so existing values
|
||||||
|
// stay stable across exe/dll pairs. Both are color-renderable and
|
||||||
|
// blendable on every target backend (D3D12 FL11+, Vulkan core, MoltenVK);
|
||||||
|
// kR11G11B10_FLOAT has no alpha channel and stores no sign bits.
|
||||||
|
kR16G16B16A16_FLOAT,
|
||||||
|
kR11G11B10_FLOAT,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Block dimensions/bytes for the copy math (1x1 for uncompressed).
|
// Block dimensions/bytes for the copy math (1x1 for uncompressed).
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,10 @@ DXGI_FORMAT ToDxgi(Format format) {
|
||||||
return DXGI_FORMAT_R16G16_UNORM;
|
return DXGI_FORMAT_R16G16_UNORM;
|
||||||
case Format::kR10G10B10A2_UNORM:
|
case Format::kR10G10B10A2_UNORM:
|
||||||
return DXGI_FORMAT_R10G10B10A2_UNORM;
|
return DXGI_FORMAT_R10G10B10A2_UNORM;
|
||||||
|
case Format::kR16G16B16A16_FLOAT:
|
||||||
|
return DXGI_FORMAT_R16G16B16A16_FLOAT;
|
||||||
|
case Format::kR11G11B10_FLOAT:
|
||||||
|
return DXGI_FORMAT_R11G11B10_FLOAT;
|
||||||
case Format::kR32_FLOAT:
|
case Format::kR32_FLOAT:
|
||||||
return DXGI_FORMAT_R32_FLOAT;
|
return DXGI_FORMAT_R32_FLOAT;
|
||||||
case Format::kR32G32_FLOAT:
|
case Format::kR32G32_FLOAT:
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,12 @@ VkFormat ToVkFormat(Format format) {
|
||||||
case Format::kR10G10B10A2_UNORM:
|
case Format::kR10G10B10A2_UNORM:
|
||||||
// Identical bit layout to DXGI_FORMAT_R10G10B10A2_UNORM.
|
// Identical bit layout to DXGI_FORMAT_R10G10B10A2_UNORM.
|
||||||
return VK_FORMAT_A2B10G10R10_UNORM_PACK32;
|
return VK_FORMAT_A2B10G10R10_UNORM_PACK32;
|
||||||
|
case Format::kR16G16B16A16_FLOAT:
|
||||||
|
return VK_FORMAT_R16G16B16A16_SFLOAT;
|
||||||
|
case Format::kR11G11B10_FLOAT:
|
||||||
|
// Identical bit layout to DXGI_FORMAT_R11G11B10_FLOAT (R in the low
|
||||||
|
// bits of the packed 32).
|
||||||
|
return VK_FORMAT_B10G11R11_UFLOAT_PACK32;
|
||||||
case Format::kR32_FLOAT:
|
case Format::kR32_FLOAT:
|
||||||
return VK_FORMAT_R32_SFLOAT;
|
return VK_FORMAT_R32_SFLOAT;
|
||||||
case Format::kR32G32_FLOAT:
|
case Format::kR32G32_FLOAT:
|
||||||
|
|
@ -123,6 +129,9 @@ uint32_t FormatBytesPerBlock(Format format) {
|
||||||
case Format::kR32_FLOAT:
|
case Format::kR32_FLOAT:
|
||||||
case Format::kD32_FLOAT:
|
case Format::kD32_FLOAT:
|
||||||
return 4;
|
return 4;
|
||||||
|
case Format::kR11G11B10_FLOAT:
|
||||||
|
return 4;
|
||||||
|
case Format::kR16G16B16A16_FLOAT:
|
||||||
case Format::kR32G32_FLOAT:
|
case Format::kR32G32_FLOAT:
|
||||||
return 8;
|
return 8;
|
||||||
case Format::kR32G32B32_FLOAT:
|
case Format::kR32G32B32_FLOAT:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue