mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-25 08:30:13 +00:00
Fix WMO wall collision, normal mapping, POM backfill, and M2/WMO rendering performance
- Fix MOPY flag check (0x08 not 0x01) for proper wall collision detection - Cap MAX_PUSH to PLAYER_RADIUS to prevent gradual clip-through - Fix WMO doodad quaternion component ordering (X/Y swap) - Linear normal map strength blend in shader for smooth slider control - Enable shadow sampling for interior WMO groups (covered outdoor areas) - Backfill deferred normal/height maps after streaming with descriptor rebind - M2: prepareRender only iterates animated instances, bone dirty flag - M2: remove worker thread VMA allocation, skip unready bone instances - WMO: persistent visibility vectors, sequential culling - Add FSR EASU/RCAS shaders
This commit is contained in:
parent
16c6c2b6a0
commit
a4966e486f
25 changed files with 1467 additions and 352 deletions
|
|
@ -252,14 +252,22 @@ bool VkContext::createAllocator() {
|
|||
bool VkContext::createSwapchain(int width, int height) {
|
||||
vkb::SwapchainBuilder swapchainBuilder{physicalDevice, device, surface};
|
||||
|
||||
auto swapRet = swapchainBuilder
|
||||
auto& builder = swapchainBuilder
|
||||
.set_desired_format({VK_FORMAT_B8G8R8A8_UNORM, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR})
|
||||
.set_desired_present_mode(VK_PRESENT_MODE_FIFO_KHR) // VSync
|
||||
.set_desired_extent(static_cast<uint32_t>(width), static_cast<uint32_t>(height))
|
||||
.set_image_usage_flags(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT)
|
||||
.set_desired_min_image_count(2)
|
||||
.set_old_swapchain(swapchain) // For recreation
|
||||
.build();
|
||||
.set_old_swapchain(swapchain);
|
||||
|
||||
if (vsync_) {
|
||||
builder.set_desired_present_mode(VK_PRESENT_MODE_FIFO_KHR);
|
||||
} else {
|
||||
builder.set_desired_present_mode(VK_PRESENT_MODE_IMMEDIATE_KHR);
|
||||
builder.add_fallback_present_mode(VK_PRESENT_MODE_MAILBOX_KHR);
|
||||
builder.add_fallback_present_mode(VK_PRESENT_MODE_FIFO_RELAXED_KHR);
|
||||
}
|
||||
|
||||
auto swapRet = builder.build();
|
||||
|
||||
if (!swapRet) {
|
||||
LOG_ERROR("Failed to create Vulkan swapchain: ", swapRet.error().message());
|
||||
|
|
@ -1026,14 +1034,22 @@ bool VkContext::recreateSwapchain(int width, int height) {
|
|||
VkSwapchainKHR oldSwapchain = swapchain;
|
||||
|
||||
vkb::SwapchainBuilder swapchainBuilder{physicalDevice, device, surface};
|
||||
auto swapRet = swapchainBuilder
|
||||
auto& builder = swapchainBuilder
|
||||
.set_desired_format({VK_FORMAT_B8G8R8A8_UNORM, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR})
|
||||
.set_desired_present_mode(VK_PRESENT_MODE_FIFO_KHR)
|
||||
.set_desired_extent(static_cast<uint32_t>(width), static_cast<uint32_t>(height))
|
||||
.set_image_usage_flags(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT)
|
||||
.set_desired_min_image_count(2)
|
||||
.set_old_swapchain(oldSwapchain)
|
||||
.build();
|
||||
.set_old_swapchain(oldSwapchain);
|
||||
|
||||
if (vsync_) {
|
||||
builder.set_desired_present_mode(VK_PRESENT_MODE_FIFO_KHR);
|
||||
} else {
|
||||
builder.set_desired_present_mode(VK_PRESENT_MODE_IMMEDIATE_KHR);
|
||||
builder.add_fallback_present_mode(VK_PRESENT_MODE_MAILBOX_KHR);
|
||||
builder.add_fallback_present_mode(VK_PRESENT_MODE_FIFO_RELAXED_KHR);
|
||||
}
|
||||
|
||||
auto swapRet = builder.build();
|
||||
|
||||
if (oldSwapchain) {
|
||||
vkDestroySwapchainKHR(device, oldSwapchain, nullptr);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue