diff --git a/implementations/Crafter.Graphics-Window.cpp b/implementations/Crafter.Graphics-Window.cpp index 2b65ee1..cf4e749 100644 --- a/implementations/Crafter.Graphics-Window.cpp +++ b/implementations/Crafter.Graphics-Window.cpp @@ -622,26 +622,15 @@ void Window::Update() { } void Window::Render() { - #ifdef CRAFTER_GRAPHICS_RENDERER_SOFTWARE - // elements.erase(std::remove(elements.begin(), elements.end(), static_cast(nullptr)), elements.end()); - // std::sort(elements.begin(), elements.end(), [](Transform* a, Transform* b){ return a->anchor.z < b->anchor.z; }); - renderer.Render(); - #ifdef CRAFTER_GRAPHICS_WINDOW_WAYLAND - wl_surface_attach(surface, buffer, 0, 0); - wl_surface_commit(surface); - wl_surface_damage(surface, 0, 0, 10000, 100000); - #endif - #endif - #ifdef CRAFTER_GRAPHICS_RENDERER_VULKAN - // Acquire the next image from the swap chain - Device::CheckVkResult(vkAcquireNextImageKHR(Device::device, swapChain, UINT64_MAX, semaphores.presentComplete, (VkFence)nullptr, ¤tBuffer)); +// Acquire the next image from the swap chain + VulkanDevice::CheckVkResult(vkAcquireNextImageKHR(VulkanDevice::device, swapChain, UINT64_MAX, semaphores.presentComplete, (VkFence)nullptr, ¤tBuffer)); submitInfo.commandBufferCount = 1; submitInfo.pCommandBuffers = &drawCmdBuffers[currentBuffer]; VkCommandBufferBeginInfo cmdBufInfo {}; cmdBufInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - Device::CheckVkResult(vkBeginCommandBuffer(drawCmdBuffers[currentBuffer], &cmdBufInfo)); + VulkanDevice::CheckVkResult(vkBeginCommandBuffer(drawCmdBuffers[currentBuffer], &cmdBufInfo)); VkImageSubresourceRange range{}; range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; @@ -664,15 +653,7 @@ void Window::Render() { vkCmdPipelineBarrier(drawCmdBuffers[currentBuffer], VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, 0, 0, nullptr, 0, nullptr, 1, &image_memory_barrier); - onUpdate.Invoke({startTime, startTime-lastFrameBegin}); - #ifdef CRAFTER_TIMING - totalUpdate = std::chrono::nanoseconds(0); - updateTimings.clear(); - for (const std::pair*, std::chrono::nanoseconds>& entry : onUpdate.listenerTimes) { - updateTimings.push_back(entry); - totalUpdate += entry.second; - } - #endif + onRender.Invoke(); vkCmdBindPipeline(drawCmdBuffers[currentBuffer], VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, rtPipeline); VkBindDescriptorSetsInfo bindDescriptorSetsInfo{ @@ -685,7 +666,7 @@ void Window::Render() { }; vkCmdBindDescriptorSets2(drawCmdBuffers[currentBuffer], &bindDescriptorSetsInfo); - Device::vkCmdTraceRaysKHR(drawCmdBuffers[currentBuffer], &raygenRegion, &missRegion, &hitRegion, &callableRegion, width, height, 1); + VulkanDevice::vkCmdTraceRaysKHR(drawCmdBuffers[currentBuffer], &raygenRegion, &missRegion, &hitRegion, &callableRegion, width, height, 1); VkImageMemoryBarrier image_memory_barrier2 { @@ -702,9 +683,9 @@ void Window::Render() { vkCmdPipelineBarrier(drawCmdBuffers[currentBuffer], VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, 0, 0, nullptr, 0, nullptr, 1, &image_memory_barrier2); - Device::CheckVkResult(vkEndCommandBuffer(drawCmdBuffers[currentBuffer])); + VulkanDevice::CheckVkResult(vkEndCommandBuffer(drawCmdBuffers[currentBuffer])); - Device::CheckVkResult(vkQueueSubmit(Device::queue, 1, &submitInfo, VK_NULL_HANDLE)); + VulkanDevice::CheckVkResult(vkQueueSubmit(VulkanDevice::queue, 1, &submitInfo, VK_NULL_HANDLE)); VkPresentInfoKHR presentInfo = {}; presentInfo.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR; presentInfo.pNext = NULL; @@ -718,14 +699,13 @@ void Window::Render() { presentInfo.waitSemaphoreCount = 1; } - VkResult result = vkQueuePresentKHR(Device::queue, &presentInfo); + VkResult result = vkQueuePresentKHR(VulkanDevice::queue, &presentInfo); if(result == VK_SUBOPTIMAL_KHR) { CreateSwapchain(); } else { - Device::CheckVkResult(result); + VulkanDevice::CheckVkResult(result); } - Device::CheckVkResult(vkQueueWaitIdle(Device::queue)); - #endif + VulkanDevice::CheckVkResult(vkQueueWaitIdle(VulkanDevice::queue)); } #ifdef CRAFTER_TIMING