mirror of
https://github.com/Heretek-AI/game-engine.git
synced 2026-11-07 10:55:58 -10:00
parity: 100 HDR scene target constants (R16G16B16A16_SFLOAT, sampled)
This commit is contained in:
1 parent
cb6a74483a
commit
58380e1e06
3 files changed
+35
-4
No files matched your search
@@ -87,6 +87,19 @@ inline constexpr std::uint32_t kForwardTilePx = 16;
|
||||
inline constexpr std::uint64_t kVisibilityBytesPerPx = 8;
|
||||
// HDR shade target: RGBA16F = 8B/px... recorded as R32G32B32A32F-safe 16B.
|
||||
inline constexpr std::uint64_t kHdrBytesPerPx = 16;
|
||||
#if defined(ENGINE_RENDERER_HAS_VULKAN)
|
||||
// P4-02 HDR scene target: the shade pass renders linear-HDR radiance here
|
||||
// (VK_FORMAT_R16G16B16A16_SFLOAT, sampled by the post pass). The swapchain
|
||||
// image stays an LDR present target — the post pass (ACES + sRGB) is the
|
||||
// only writer to it.
|
||||
inline constexpr VkFormat kHdrSceneFormat =
|
||||
VK_FORMAT_R16G16B16A16_SFLOAT;
|
||||
// P4-02 HDR image usage: COLOR_ATTACHMENT (shade-pass render target) +
|
||||
// SAMPLED (post-pass shader input, SHADER_READ_ONLY_OPTIMAL after the
|
||||
// shade->post barrier).
|
||||
inline constexpr VkImageUsageFlags kHdrSceneUsage =
|
||||
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT;
|
||||
#endif
|
||||
|
||||
// Framebuffer-indexed pass ids (execution order in the default M3-03 graph:
|
||||
// vis -> shade -> post; custom passes slot between shade and post).
|
||||
|
||||
@@ -58,7 +58,13 @@ using VkImageLayout = std::uint32_t;
|
||||
using VkAccessFlags2 = std::uint64_t;
|
||||
using VkPipelineStageFlags2 = std::uint64_t;
|
||||
inline constexpr VkFormat VK_FORMAT_UNDEFINED = 0;
|
||||
inline constexpr VkFormat VK_FORMAT_R8G8B8A8_UNORM = 37;
|
||||
inline constexpr VkFormat VK_FORMAT_B8G8R8A8_UNORM = 44;
|
||||
inline constexpr VkFormat VK_FORMAT_R8G8B8A8_SRGB = 43;
|
||||
// P4-02: HDR scene target (shade pass output, post pass input):
|
||||
// R16G16B16A16_SFLOAT, Vulkan numeric value 91 (Unspecified extension,
|
||||
// core since 1.0 — matches <vulkan/vulkan.h> on SDK builds).
|
||||
inline constexpr VkFormat VK_FORMAT_R16G16B16A16_SFLOAT = 91;
|
||||
inline constexpr VkFormat VK_FORMAT_D32_SFLOAT = 126;
|
||||
inline constexpr VkImageLayout VK_IMAGE_LAYOUT_UNDEFINED = 0;
|
||||
inline constexpr VkImageLayout VK_IMAGE_LAYOUT_GENERAL = 1;
|
||||
|
||||
@@ -190,7 +190,7 @@ auto test_gpu() -> int {
|
||||
pipes_ok = engine::test::GoldenBuildShadePost(
|
||||
&g, bt.set_layout(), kPbr_shade_vertSpv, kPbr_shade_vertSpvWords,
|
||||
kPbr_shade_fragSpv, kPbr_shade_fragSpvWords,
|
||||
VK_FORMAT_R16G16B16A16_SFLOAT, kPost_vertSpv, kPost_vertSpvWords,
|
||||
engine::renderer::kHdrSceneFormat, kPost_vertSpv, kPost_vertSpvWords,
|
||||
kPost_fragSpv, kPost_fragSpvWords, VK_FORMAT_R8G8B8A8_UNORM,
|
||||
create_set_layout, create_pipe_layout, create_pipes, destroy_mod, &sp);
|
||||
}
|
||||
@@ -356,15 +356,27 @@ auto test_gpu() -> int {
|
||||
&g, VK_FORMAT_R32G32_UINT, kW, kH,
|
||||
VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_STORAGE_BIT,
|
||||
&vis_img) &&
|
||||
// P4-02 HDR scene target: float format, color-attachment write in
|
||||
// the shade pass + sampled input to the post pass (the only
|
||||
// consumer of the HDR contents; swapchain stays LDR below).
|
||||
engine::test::GoldenMakeImage(
|
||||
&g, VK_FORMAT_R16G16B16A16_SFLOAT, kW, kH,
|
||||
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT,
|
||||
&hdr_img) &&
|
||||
&g, engine::renderer::kHdrSceneFormat, kW, kH,
|
||||
engine::renderer::kHdrSceneUsage, &hdr_img) &&
|
||||
engine::test::GoldenMakeImage(
|
||||
&g, VK_FORMAT_R8G8B8A8_UNORM, kW, kH,
|
||||
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
|
||||
&ldr_img);
|
||||
check(imgs_ok, "hdr-golden: images allocated");
|
||||
// Contract: the engine constant really is the SFLOAT HDR format and
|
||||
// carries both usage bits the frame record needs.
|
||||
check(engine::renderer::kHdrSceneFormat ==
|
||||
VK_FORMAT_R16G16B16A16_SFLOAT,
|
||||
"hdr-golden: HDR format is R16G16B16A16_SFLOAT");
|
||||
check((engine::renderer::kHdrSceneUsage &
|
||||
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) != 0 &&
|
||||
(engine::renderer::kHdrSceneUsage &
|
||||
VK_IMAGE_USAGE_SAMPLED_BIT) != 0,
|
||||
"hdr-golden: HDR usage is attachment+sampled");
|
||||
if (!imgs_ok) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user