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 {
|
||||
std::string label;
|
||||
|
||||
GFXRenderPass* render_pass;
|
||||
std::vector<GFXTexture*> attachments;
|
||||
};
|
||||
|
||||
struct GFXRenderPassCreateInfo {
|
||||
std::string label;
|
||||
|
||||
std::vector<GFXPixelFormat> attachments;
|
||||
};
|
||||
|
||||
|
|
|
@ -54,6 +54,8 @@ public:
|
|||
// misc operations
|
||||
GFXSize get_alignment(const GFXSize size) override;
|
||||
|
||||
GFXCommandBuffer* acquire_command_buffer() override;
|
||||
|
||||
void submit(GFXCommandBuffer* command_buffer, const int identifier) override;
|
||||
|
||||
private:
|
||||
|
|
|
@ -432,7 +432,6 @@ void GFXVulkan::copy_texture(GFXTexture* from, GFXBuffer* to) {
|
|||
console::error(System::GFX, "Copy Texture->Buffer unimplemented!");
|
||||
}
|
||||
|
||||
|
||||
GFXFramebuffer* GFXVulkan::create_framebuffer(const GFXFramebufferCreateInfo& info) {
|
||||
GFXVulkanFramebuffer* framebuffer = new GFXVulkanFramebuffer();
|
||||
|
||||
|
@ -457,6 +456,8 @@ GFXFramebuffer* GFXVulkan::create_framebuffer(const GFXFramebufferCreateInfo& in
|
|||
|
||||
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->height = ((GFXVulkanTexture*)info.attachments[0])->height;
|
||||
|
||||
|
@ -536,6 +537,8 @@ GFXRenderPass* GFXVulkan::create_render_pass(const GFXRenderPassCreateInfo& info
|
|||
|
||||
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->hasDepthAttachment = hasDepthAttachment;
|
||||
|
||||
|
@ -779,6 +782,10 @@ GFXSize GFXVulkan::get_alignment(GFXSize size) {
|
|||
return (size + minUboAlignment / 2) & ~int(minUboAlignment - 1);
|
||||
}
|
||||
|
||||
GFXCommandBuffer* GFXVulkan::acquire_command_buffer() {
|
||||
return new GFXCommandBuffer();
|
||||
}
|
||||
|
||||
void GFXVulkan::submit(GFXCommandBuffer* command_buffer, const int identifier) {
|
||||
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");
|
||||
|
||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||
renderPassInfo.label = "Depth of Field";
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA_32F);
|
||||
|
||||
renderpass = gfx->create_render_pass(renderPassInfo);
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
GaussianHelper::GaussianHelper(GFX* gfx, const prism::Extent extent) : extent(extent) {
|
||||
// render pass
|
||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||
renderPassInfo.label = "Gaussian";
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA_32F);
|
||||
|
||||
renderPass = gfx->create_render_pass(renderPassInfo);
|
||||
|
|
|
@ -16,7 +16,7 @@ void ImGuiPass::initialize() {
|
|||
io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset;
|
||||
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");
|
||||
#endif
|
||||
create_font_texture();
|
||||
|
|
|
@ -778,12 +778,14 @@ void Renderer::createDummyTexture() {
|
|||
|
||||
void Renderer::createOffscreenResources() {
|
||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||
renderPassInfo.label = "Offscreen";
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA_32F);
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
||||
|
||||
offscreenRenderPass = gfx->create_render_pass(renderPassInfo);
|
||||
|
||||
renderPassInfo = {};
|
||||
renderPassInfo.label = "Offscreen Unorm";
|
||||
renderPassInfo.attachments = {GFXPixelFormat::RGBA8_UNORM};
|
||||
|
||||
unormRenderPass = gfx->create_render_pass(renderPassInfo);
|
||||
|
@ -813,6 +815,7 @@ void Renderer::createOffscreenResources() {
|
|||
|
||||
if(viewport_mode) {
|
||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||
renderPassInfo.label = "Viewport";
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::RGBA8_UNORM);
|
||||
|
||||
viewportRenderPass = gfx->create_render_pass(renderPassInfo);
|
||||
|
@ -1001,6 +1004,7 @@ void Renderer::createGaussianResources() {
|
|||
|
||||
void Renderer::createBRDF() {
|
||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||
renderPassInfo.label = "BRDF Gen";
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::R8G8_SFLOAT);
|
||||
|
||||
brdfRenderPass = gfx->create_render_pass(renderPassInfo);
|
||||
|
|
|
@ -61,6 +61,7 @@ SceneCapture::SceneCapture(GFX* gfx) {
|
|||
|
||||
// render pass
|
||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||
renderPassInfo.label = "Scene Capture Cube";
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::R8G8B8A8_UNORM);
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
||||
|
||||
|
@ -423,6 +424,7 @@ void SceneCapture::createIrradianceResources() {
|
|||
irradianceFramebuffer = gfx->create_framebuffer(info);
|
||||
|
||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||
renderPassInfo.label = "Irradiance";
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::R8G8B8A8_UNORM);
|
||||
|
||||
irradianceRenderPass = gfx->create_render_pass(renderPassInfo);
|
||||
|
|
|
@ -295,10 +295,12 @@ void ShadowPass::create_render_passes() {
|
|||
|
||||
// render pass
|
||||
GFXRenderPassCreateInfo renderPassInfo = {};
|
||||
renderPassInfo.label = "Shadow";
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
||||
|
||||
render_pass = gfx->create_render_pass(renderPassInfo);
|
||||
|
||||
renderPassInfo.label = "Shadow Cube";
|
||||
renderPassInfo.attachments.clear();
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::R_32F);
|
||||
renderPassInfo.attachments.push_back(GFXPixelFormat::DEPTH_32F);
|
||||
|
|
|
@ -98,6 +98,7 @@ void SMAAPass::create_textures() {
|
|||
|
||||
void SMAAPass::create_render_pass() {
|
||||
GFXRenderPassCreateInfo createInfo = {};
|
||||
createInfo.label = "SMAA";
|
||||
createInfo.attachments = {GFXPixelFormat::R16G16B16A16_SFLOAT};
|
||||
|
||||
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);
|
||||
|
||||
app->initialize_render();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -154,8 +156,6 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow
|
|||
|
||||
app_main(engine);
|
||||
|
||||
app->initialize_render();
|
||||
|
||||
MSG msg = { };
|
||||
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);
|
||||
SetCursor(arrowCursor);
|
||||
|
||||
engine->begin_frame(1.0f / 60.0f);
|
||||
engine->update(1.0f / 60.0f);
|
||||
|
||||
engine->begin_frame(1.0f / 60.0f);
|
||||
engine->render(0);
|
||||
|
||||
if(engine->is_quitting()) {
|
||||
|
|
Reference in a new issue