lsfg-vk-v3.1p: gamma shaders

This commit is contained in:
PancakeTAS 2025-07-12 19:01:45 +02:00
parent 3442c9c722
commit 191fc3301e
No known key found for this signature in database
2 changed files with 14 additions and 14 deletions

View file

@ -26,13 +26,13 @@ namespace LSFG::Shaders {
/// ///
/// Initialize the shaderchain. /// Initialize the shaderchain.
/// ///
/// @param inImgs1 Three sets of four RGBA images, corresponding to a frame count % 3. /// @param inImgs1 Three sets of two RGBA images, corresponding to a frame count % 3.
/// @param inImg2 Second Input image /// @param inImg2 Second Input image
/// @param optImg Optional image for non-first passes. /// @param optImg Optional image for non-first passes.
/// ///
/// @throws LSFG::vulkan_error if resource creation fails. /// @throws LSFG::vulkan_error if resource creation fails.
/// ///
Gamma(Vulkan& vk, std::array<std::array<Core::Image, 4>, 3> inImgs1, Gamma(Vulkan& vk, std::array<std::array<Core::Image, 2>, 3> inImgs1,
Core::Image inImg2, std::optional<Core::Image> optImg); Core::Image inImg2, std::optional<Core::Image> optImg);
/// ///
@ -60,11 +60,11 @@ namespace LSFG::Shaders {
}; };
std::vector<GammaPass> passes; std::vector<GammaPass> passes;
std::array<std::array<Core::Image, 4>, 3> inImgs1; std::array<std::array<Core::Image, 2>, 3> inImgs1;
Core::Image inImg2; Core::Image inImg2;
std::optional<Core::Image> optImg; std::optional<Core::Image> optImg;
std::array<Core::Image, 4> tempImgs1; std::array<Core::Image, 2> tempImgs1;
std::array<Core::Image, 4> tempImgs2; std::array<Core::Image, 2> tempImgs2;
Core::Image outImg; Core::Image outImg;
}; };

View file

@ -13,7 +13,7 @@
using namespace LSFG::Shaders; using namespace LSFG::Shaders;
Gamma::Gamma(Vulkan& vk, std::array<std::array<Core::Image, 4>, 3> inImgs1, Gamma::Gamma(Vulkan& vk, std::array<std::array<Core::Image, 2>, 3> inImgs1,
Core::Image inImg2, Core::Image inImg2,
std::optional<Core::Image> optImg) std::optional<Core::Image> optImg)
: inImgs1(std::move(inImgs1)), inImg2(std::move(inImg2)), : inImgs1(std::move(inImgs1)), inImg2(std::move(inImg2)),
@ -23,24 +23,24 @@ Gamma::Gamma(Vulkan& vk, std::array<std::array<Core::Image, 4>, 3> inImgs1,
vk.shaders.getShader(vk.device, "gamma[0]", vk.shaders.getShader(vk.device, "gamma[0]",
{ { 1 , VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER }, { { 1 , VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER },
{ 2, VK_DESCRIPTOR_TYPE_SAMPLER }, { 2, VK_DESCRIPTOR_TYPE_SAMPLER },
{ 9, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE }, { 5, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE },
{ 3, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE } }), { 3, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE } }),
vk.shaders.getShader(vk.device, "gamma[1]", vk.shaders.getShader(vk.device, "gamma[1]",
{ { 1, VK_DESCRIPTOR_TYPE_SAMPLER }, { { 1, VK_DESCRIPTOR_TYPE_SAMPLER },
{ 3, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE }, { 3, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE },
{ 4, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE } }), { 2, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE } }),
vk.shaders.getShader(vk.device, "gamma[2]", vk.shaders.getShader(vk.device, "gamma[2]",
{ { 1, VK_DESCRIPTOR_TYPE_SAMPLER }, { { 1, VK_DESCRIPTOR_TYPE_SAMPLER },
{ 4, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE }, { 2, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE },
{ 4, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE } }), { 2, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE } }),
vk.shaders.getShader(vk.device, "gamma[3]", vk.shaders.getShader(vk.device, "gamma[3]",
{ { 1, VK_DESCRIPTOR_TYPE_SAMPLER }, { { 1, VK_DESCRIPTOR_TYPE_SAMPLER },
{ 4, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE }, { 2, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE },
{ 4, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE } }), { 2, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE } }),
vk.shaders.getShader(vk.device, "gamma[4]", vk.shaders.getShader(vk.device, "gamma[4]",
{ { 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER }, { { 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER },
{ 2, VK_DESCRIPTOR_TYPE_SAMPLER }, { 2, VK_DESCRIPTOR_TYPE_SAMPLER },
{ 6, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE }, { 4, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE },
{ 1, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE } }) { 1, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE } })
}}; }};
this->pipelines = {{ this->pipelines = {{
@ -58,7 +58,7 @@ Gamma::Gamma(Vulkan& vk, std::array<std::array<Core::Image, 4>, 3> inImgs1,
// create internal images/outputs // create internal images/outputs
const VkExtent2D extent = this->inImgs1.at(0).at(0).getExtent(); const VkExtent2D extent = this->inImgs1.at(0).at(0).getExtent();
for (size_t i = 0; i < 4; i++) { for (size_t i = 0; i < 2; i++) {
this->tempImgs1.at(i) = Core::Image(vk.device, extent); this->tempImgs1.at(i) = Core::Image(vk.device, extent);
this->tempImgs2.at(i) = Core::Image(vk.device, extent); this->tempImgs2.at(i) = Core::Image(vk.device, extent);
} }