Add labels for render passes and framebuffers
This commit is contained in:
parent
482c7ef748
commit
1ba9222a43
11 changed files with 30 additions and 5 deletions
|
@ -215,11 +215,15 @@ struct GFXComputePipelineCreateInfo {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GFXFramebufferCreateInfo {
|
struct GFXFramebufferCreateInfo {
|
||||||
|
std::string label;
|
||||||
|
|
||||||
GFXRenderPass* render_pass;
|
GFXRenderPass* render_pass;
|
||||||
std::vector<GFXTexture*> attachments;
|
std::vector<GFXTexture*> attachments;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GFXRenderPassCreateInfo {
|
struct GFXRenderPassCreateInfo {
|
||||||
|
std::string label;
|
||||||
|
|
||||||
std::vector<GFXPixelFormat> attachments;
|
std::vector<GFXPixelFormat> attachments;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,8 @@ public:
|
||||||
// misc operations
|
// misc operations
|
||||||
GFXSize get_alignment(const GFXSize size) override;
|
GFXSize get_alignment(const GFXSize size) override;
|
||||||
|
|
||||||
|
GFXCommandBuffer* acquire_command_buffer() override;
|
||||||
|
|
||||||
void submit(GFXCommandBuffer* command_buffer, const int identifier) override;
|
void submit(GFXCommandBuffer* command_buffer, const int identifier) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -432,7 +432,6 @@ void GFXVulkan::copy_texture(GFXTexture* from, GFXBuffer* to) {
|
||||||
console::error(System::GFX, "Copy Texture->Buffer unimplemented!");
|
console::error(System::GFX, "Copy Texture->Buffer unimplemented!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GFXFramebuffer* GFXVulkan::create_framebuffer(const GFXFramebufferCreateInfo& info) {
|
GFXFramebuffer* GFXVulkan::create_framebuffer(const GFXFramebufferCreateInfo& info) {
|
||||||
GFXVulkanFramebuffer* framebuffer = new GFXVulkanFramebuffer();
|
GFXVulkanFramebuffer* framebuffer = new GFXVulkanFramebuffer();
|
||||||
|
|
||||||
|
@ -457,6 +456,8 @@ GFXFramebuffer* GFXVulkan::create_framebuffer(const GFXFramebufferCreateInfo& in
|
||||||
|
|
||||||
vkCreateFramebuffer(device, &framebufferInfo, nullptr, &framebuffer->handle);
|
vkCreateFramebuffer(device, &framebufferInfo, nullptr, &framebuffer->handle);
|
||||||
|
|
||||||
|
name_object(device, VK_OBJECT_TYPE_FRAMEBUFFER, (uint64_t)framebuffer->handle, info.label);
|
||||||
|
|
||||||
framebuffer->width = ((GFXVulkanTexture*)info.attachments[0])->width;
|
framebuffer->width = ((GFXVulkanTexture*)info.attachments[0])->width;
|
||||||
framebuffer->height = ((GFXVulkanTexture*)info.attachments[0])->height;
|
framebuffer->height = ((GFXVulkanTexture*)info.attachments[0])->height;
|
||||||
|
|
||||||
|
@ -536,6 +537,8 @@ GFXRenderPass* GFXVulkan::create_render_pass(const GFXRenderPassCreateInfo& info
|
||||||
|
|
||||||
vkCreateRenderPass(device, &renderPassInfo, nullptr, &renderPass->handle);
|
vkCreateRenderPass(device, &renderPassInfo, nullptr, &renderPass->handle);
|
||||||
|
|
||||||
|
name_object(device, VK_OBJECT_TYPE_RENDER_PASS, (uint64_t)renderPass->handle, info.label);
|
||||||
|
|
||||||
renderPass->numAttachments = static_cast<unsigned int>(descriptions.size());
|
renderPass->numAttachments = static_cast<unsigned int>(descriptions.size());
|
||||||
renderPass->hasDepthAttachment = hasDepthAttachment;
|
renderPass->hasDepthAttachment = hasDepthAttachment;
|
||||||
|
|
||||||
|
@ -779,6 +782,10 @@ GFXSize GFXVulkan::get_alignment(GFXSize size) {
|
||||||
return (size + minUboAlignment / 2) & ~int(minUboAlignment - 1);
|
return (size + minUboAlignment / 2) & ~int(minUboAlignment - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GFXCommandBuffer* GFXVulkan::acquire_command_buffer() {
|
||||||
|
return new GFXCommandBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
void GFXVulkan::submit(GFXCommandBuffer* command_buffer, const int identifier) {
|
void GFXVulkan::submit(GFXCommandBuffer* command_buffer, const int identifier) {
|
||||||
vkWaitForFences(device, 1, &inFlightFences[currentFrame], VK_TRUE, std::numeric_limits<uint64_t>::max());
|
vkWaitForFences(device, 1, &inFlightFences[currentFrame], VK_TRUE, std::numeric_limits<uint64_t>::max());
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ DoFPass::DoFPass(GFX* gfx, Renderer* renderer) : renderer(renderer) {
|
||||||
aperture_texture = assetm->get<Texture>(file::app_domain / "textures/aperture.png");
|
aperture_texture = assetm->get<Texture>(file::app_domain / "textures/aperture.png");
|
||||||
|
|
||||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||||
|
renderPassInfo.label = "Depth of Field";
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA_32F);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA_32F);
|
||||||
|
|
||||||
renderpass = gfx->create_render_pass(renderPassInfo);
|
renderpass = gfx->create_render_pass(renderPassInfo);
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
GaussianHelper::GaussianHelper(GFX* gfx, const prism::Extent extent) : extent(extent) {
|
GaussianHelper::GaussianHelper(GFX* gfx, const prism::Extent extent) : extent(extent) {
|
||||||
// render pass
|
// render pass
|
||||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||||
|
renderPassInfo.label = "Gaussian";
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA_32F);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA_32F);
|
||||||
|
|
||||||
renderPass = gfx->create_render_pass(renderPassInfo);
|
renderPass = gfx->create_render_pass(renderPassInfo);
|
||||||
|
|
|
@ -16,7 +16,7 @@ void ImGuiPass::initialize() {
|
||||||
io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset;
|
io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset;
|
||||||
io.BackendFlags |= ImGuiBackendFlags_RendererHasViewports;
|
io.BackendFlags |= ImGuiBackendFlags_RendererHasViewports;
|
||||||
|
|
||||||
#if !defined(PLATFORM_TVOS) && !defined(PLATFORM_IOS)
|
#if !defined(PLATFORM_TVOS) && !defined(PLATFORM_IOS) && !defined(PLATFORM_WINDOWS)
|
||||||
load_font("OpenSans-Regular.ttf");
|
load_font("OpenSans-Regular.ttf");
|
||||||
#endif
|
#endif
|
||||||
create_font_texture();
|
create_font_texture();
|
||||||
|
|
|
@ -778,12 +778,14 @@ void Renderer::createDummyTexture() {
|
||||||
|
|
||||||
void Renderer::createOffscreenResources() {
|
void Renderer::createOffscreenResources() {
|
||||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||||
|
renderPassInfo.label = "Offscreen";
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA_32F);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA_32F);
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
||||||
|
|
||||||
offscreenRenderPass = gfx->create_render_pass(renderPassInfo);
|
offscreenRenderPass = gfx->create_render_pass(renderPassInfo);
|
||||||
|
|
||||||
renderPassInfo = {};
|
renderPassInfo = {};
|
||||||
|
renderPassInfo.label = "Offscreen Unorm";
|
||||||
renderPassInfo.attachments = {GFXPixelFormat::RGBA8_UNORM};
|
renderPassInfo.attachments = {GFXPixelFormat::RGBA8_UNORM};
|
||||||
|
|
||||||
unormRenderPass = gfx->create_render_pass(renderPassInfo);
|
unormRenderPass = gfx->create_render_pass(renderPassInfo);
|
||||||
|
@ -813,6 +815,7 @@ void Renderer::createOffscreenResources() {
|
||||||
|
|
||||||
if(viewport_mode) {
|
if(viewport_mode) {
|
||||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||||
|
renderPassInfo.label = "Viewport";
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA8_UNORM);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA8_UNORM);
|
||||||
|
|
||||||
viewportRenderPass = gfx->create_render_pass(renderPassInfo);
|
viewportRenderPass = gfx->create_render_pass(renderPassInfo);
|
||||||
|
@ -1001,6 +1004,7 @@ void Renderer::createGaussianResources() {
|
||||||
|
|
||||||
void Renderer::createBRDF() {
|
void Renderer::createBRDF() {
|
||||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||||
|
renderPassInfo.label = "BRDF Gen";
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::R8G8_SFLOAT);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::R8G8_SFLOAT);
|
||||||
|
|
||||||
brdfRenderPass = gfx->create_render_pass(renderPassInfo);
|
brdfRenderPass = gfx->create_render_pass(renderPassInfo);
|
||||||
|
|
|
@ -61,6 +61,7 @@ SceneCapture::SceneCapture(GFX* gfx) {
|
||||||
|
|
||||||
// render pass
|
// render pass
|
||||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||||
|
renderPassInfo.label = "Scene Capture Cube";
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::R8G8B8A8_UNORM);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::R8G8B8A8_UNORM);
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
||||||
|
|
||||||
|
@ -423,6 +424,7 @@ void SceneCapture::createIrradianceResources() {
|
||||||
irradianceFramebuffer = gfx->create_framebuffer(info);
|
irradianceFramebuffer = gfx->create_framebuffer(info);
|
||||||
|
|
||||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||||
|
renderPassInfo.label = "Irradiance";
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::R8G8B8A8_UNORM);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::R8G8B8A8_UNORM);
|
||||||
|
|
||||||
irradianceRenderPass = gfx->create_render_pass(renderPassInfo);
|
irradianceRenderPass = gfx->create_render_pass(renderPassInfo);
|
||||||
|
|
|
@ -295,10 +295,12 @@ void ShadowPass::create_render_passes() {
|
||||||
|
|
||||||
// render pass
|
// render pass
|
||||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||||
|
renderPassInfo.label = "Shadow";
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
||||||
|
|
||||||
render_pass = gfx->create_render_pass(renderPassInfo);
|
render_pass = gfx->create_render_pass(renderPassInfo);
|
||||||
|
|
||||||
|
renderPassInfo.label = "Shadow Cube";
|
||||||
renderPassInfo.attachments.clear();
|
renderPassInfo.attachments.clear();
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::R_32F);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::R_32F);
|
||||||
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
||||||
|
|
|
@ -98,6 +98,7 @@ void SMAAPass::create_textures() {
|
||||||
|
|
||||||
void SMAAPass::create_render_pass() {
|
void SMAAPass::create_render_pass() {
|
||||||
GFXRenderPassCreateInfo createInfo = {};
|
GFXRenderPassCreateInfo createInfo = {};
|
||||||
|
createInfo.label = "SMAA";
|
||||||
createInfo.attachments = {GFXPixelFormat::R16G16B16A16_SFLOAT};
|
createInfo.attachments = {GFXPixelFormat::R16G16B16A16_SFLOAT};
|
||||||
|
|
||||||
render_pass = engine->get_gfx()->create_render_pass(createInfo);
|
render_pass = engine->get_gfx()->create_render_pass(createInfo);
|
||||||
|
|
|
@ -72,6 +72,8 @@ int platform::open_window(const std::string_view title, const prism::Rectangle r
|
||||||
|
|
||||||
engine->add_window(window, 0, rect.extent);
|
engine->add_window(window, 0, rect.extent);
|
||||||
|
|
||||||
|
app->initialize_render();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,8 +156,6 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow
|
||||||
|
|
||||||
app_main(engine);
|
app_main(engine);
|
||||||
|
|
||||||
app->initialize_render();
|
|
||||||
|
|
||||||
MSG msg = { };
|
MSG msg = { };
|
||||||
while (GetMessage(&msg, NULL, 0, 0))
|
while (GetMessage(&msg, NULL, 0, 0))
|
||||||
{
|
{
|
||||||
|
@ -207,8 +207,9 @@ LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
HCURSOR arrowCursor = LoadCursor(NULL, IDC_ARROW);
|
HCURSOR arrowCursor = LoadCursor(NULL, IDC_ARROW);
|
||||||
SetCursor(arrowCursor);
|
SetCursor(arrowCursor);
|
||||||
|
|
||||||
engine->begin_frame(1.0f / 60.0f);
|
|
||||||
engine->update(1.0f / 60.0f);
|
engine->update(1.0f / 60.0f);
|
||||||
|
|
||||||
|
engine->begin_frame(1.0f / 60.0f);
|
||||||
engine->render(0);
|
engine->render(0);
|
||||||
|
|
||||||
if(engine->is_quitting()) {
|
if(engine->is_quitting()) {
|
||||||
|
|
Reference in a new issue