Added functionality for graphics system to render to swapchain image when SHEDITOR is disabled. #241
Binary file not shown.
Binary file not shown.
|
@ -10,6 +10,6 @@ vec2 CreateQuad(in uint vertexID)
|
|||
|
||||
void main()
|
||||
{
|
||||
vec2 vertexPos = CreateQuad(gl_VertexIndex) - vec2(0.5f);
|
||||
vec2 vertexPos = 2 * (CreateQuad(gl_VertexIndex) - vec2(0.5f));
|
||||
gl_Position = vec4 (vertexPos, 0.0f, 1.0f);
|
||||
}
|
Binary file not shown.
|
@ -80,8 +80,8 @@ namespace Sandbox
|
|||
SHSystemManager::CreateSystem<SHCameraSystem>();
|
||||
SHSystemManager::CreateSystem<SHUISystem>();
|
||||
|
||||
std::system("FontCompiler.exe ../../Assets/Fonts/SegoeUI.ttf");
|
||||
std::system("FontCompiler.exe ../../Assets/Fonts/ALGER.ttf");
|
||||
//std::system("FontCompiler.exe ../../Assets/Fonts/SegoeUI.ttf");
|
||||
//std::system("FontCompiler.exe ../../Assets/Fonts/ALGER.ttf");
|
||||
|
||||
SHSystemManager::CreateSystem<SHGraphicsSystem>();
|
||||
SHGraphicsSystem* graphicsSystem = static_cast<SHGraphicsSystem*>(SHSystemManager::GetSystem<SHGraphicsSystem>());
|
||||
|
|
|
@ -565,8 +565,10 @@ namespace SHADE
|
|||
{
|
||||
cmdBuffer->BindPipeline(renderToSwapchainImageSystem->GetPipeline());
|
||||
|
||||
newSubpass->BindDescriptorInputDescriptorSets (cmdBuffer, frameIndex);
|
||||
|
||||
// draw a quad.
|
||||
cmdBuffer->DrawIndexed(4, 0, 0);
|
||||
cmdBuffer->DrawArrays(4, 1, 0, 0);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace SHADE
|
|||
, inputReferences{}
|
||||
, name { name }
|
||||
, graphStorage{ renderGraphStorage }
|
||||
, inputImageDescriptors {SHGraphicsConstants::NUM_FRAME_BUFFERS}
|
||||
, inputImageDescriptorSets{}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -67,7 +67,7 @@ namespace SHADE
|
|||
, exteriorDrawCalls{ std::move(rhs.exteriorDrawCalls) }
|
||||
, graphStorage{ rhs.graphStorage }
|
||||
, inputNames{ std::move(rhs.inputNames) }
|
||||
, inputImageDescriptors{ std::move(rhs.inputImageDescriptors) }
|
||||
, inputImageDescriptorSets{ std::move(rhs.inputImageDescriptorSets) }
|
||||
, inputDescriptorLayout{ rhs.inputDescriptorLayout }
|
||||
, inputSamplers{ rhs.inputSamplers }
|
||||
, name { rhs.name }
|
||||
|
@ -102,7 +102,7 @@ namespace SHADE
|
|||
exteriorDrawCalls = std::move(rhs.exteriorDrawCalls);
|
||||
graphStorage = rhs.graphStorage;
|
||||
inputNames = std::move(rhs.inputNames);
|
||||
inputImageDescriptors = std::move(rhs.inputImageDescriptors);
|
||||
inputImageDescriptorSets = std::move(rhs.inputImageDescriptorSets);
|
||||
inputDescriptorLayout = rhs.inputDescriptorLayout;
|
||||
inputSamplers = rhs.inputSamplers;
|
||||
name = std::move(rhs.name);
|
||||
|
@ -202,6 +202,8 @@ namespace SHADE
|
|||
void SHSubpass::Execute(Handle<SHVkCommandBuffer>& commandBuffer, Handle<SHVkDescriptorPool> descPool, uint32_t frameIndex) noexcept
|
||||
{
|
||||
commandBuffer->BeginLabeledSegment(name);
|
||||
|
||||
|
||||
// Ensure correct transforms are provided
|
||||
superBatch->UpdateBuffers(frameIndex, descPool);
|
||||
|
||||
|
@ -221,6 +223,14 @@ namespace SHADE
|
|||
UpdateWriteDescriptors();
|
||||
}
|
||||
|
||||
void SHSubpass::BindDescriptorInputDescriptorSets(Handle<SHVkCommandBuffer> cmdBuffer, uint32_t frameIndex) const noexcept
|
||||
{
|
||||
if (!inputImageDescriptorSets.empty())
|
||||
{
|
||||
cmdBuffer->BindDescriptorSet(inputImageDescriptorSets[frameIndex], SH_PIPELINE_TYPE::GRAPHICS, SHGraphicsConstants::DescriptorSetIndex::RENDERGRAPH_RESOURCE, { });
|
||||
}
|
||||
}
|
||||
|
||||
void SHSubpass::AddExteriorDrawCalls(std::function<void(Handle<SHVkCommandBuffer>&, uint32_t)> const& newDrawCall) noexcept
|
||||
{
|
||||
exteriorDrawCalls.push_back(newDrawCall);
|
||||
|
@ -237,6 +247,8 @@ namespace SHADE
|
|||
if (inputNames.empty())
|
||||
return;
|
||||
|
||||
inputImageDescriptorSets.resize(SHGraphicsConstants::NUM_FRAME_BUFFERS);
|
||||
|
||||
std::vector<SHVkDescriptorSetLayout::Binding> bindings{};
|
||||
|
||||
for (auto& input : inputReferences)
|
||||
|
@ -280,7 +292,7 @@ namespace SHADE
|
|||
}
|
||||
}
|
||||
|
||||
//// maybe do this in handle resize?
|
||||
// maybe do this in handle resize?
|
||||
UpdateWriteDescriptors();
|
||||
}
|
||||
|
||||
|
@ -296,7 +308,7 @@ namespace SHADE
|
|||
|
||||
|
||||
// For every frame's descriptor set
|
||||
for (auto& group : inputImageDescriptors)
|
||||
for (auto& group : inputImageDescriptorSets)
|
||||
{
|
||||
if (group)
|
||||
group.Free();
|
||||
|
|
|
@ -55,8 +55,11 @@ namespace SHADE
|
|||
//! For getting attachment reference indices using handles
|
||||
std::unordered_map<uint64_t, uint32_t> const* resourceAttachmentMapping;
|
||||
|
||||
//! Descriptor set group to hold the images for input
|
||||
std::vector<Handle<SHVkDescriptorSetGroup>> inputImageDescriptors;
|
||||
//! Descriptor set group to hold the images for input. We have 3 here just in case
|
||||
//! one of the images is a swapchain image. Practically speaking its not likely not
|
||||
//! swapchain images will end up being images used in descriptor sets, but this is
|
||||
//! to have the support for it. The cost is not much.
|
||||
std::vector<Handle<SHVkDescriptorSetGroup>> inputImageDescriptorSets;
|
||||
|
||||
//! Descriptor set layout for allocating descriptor set for inputs
|
||||
Handle<SHVkDescriptorSetLayout> inputDescriptorLayout;
|
||||
|
@ -104,6 +107,7 @@ namespace SHADE
|
|||
// Runtime functions
|
||||
void Execute(Handle<SHVkCommandBuffer>& commandBuffer, Handle<SHVkDescriptorPool> descPool, uint32_t frameIndex) noexcept;
|
||||
void HandleResize (void) noexcept;
|
||||
void BindDescriptorInputDescriptorSets (Handle<SHVkCommandBuffer> cmdBuffer, uint32_t frameIndex) const noexcept;
|
||||
|
||||
void Init(SHResourceHub& resourceManager) noexcept;
|
||||
|
||||
|
|
Loading…
Reference in New Issue