From 5a639797d24db85aaf3da9ab2d98ac5848687736 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sat, 5 May 2018 15:15:09 +0200 Subject: [PATCH] [d3d11] Fix stencil component mapping in shader resource views Fixes terrain rendering in Far Cry 5. --- src/d3d11/d3d11_device.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index 57a71b0b..843d7b71 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -383,6 +383,13 @@ namespace dxvk { viewInfo.aspect = formatInfo.Aspect; viewInfo.swizzle = formatInfo.Swizzle; + // Shaders expect the stencil value in the G component + if (viewInfo.aspect == VK_IMAGE_ASPECT_STENCIL_BIT) { + viewInfo.swizzle = VkComponentMapping { + VK_COMPONENT_SWIZZLE_ZERO, VK_COMPONENT_SWIZZLE_R, + VK_COMPONENT_SWIZZLE_ZERO, VK_COMPONENT_SWIZZLE_ZERO }; + } + switch (desc.ViewDimension) { case D3D11_SRV_DIMENSION_TEXTURE1D: viewInfo.type = VK_IMAGE_VIEW_TYPE_1D;