Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
D3D11 Replay support for Issue #2858
This is a PR in a sequence of PRs which all together complete the implementation of the feature.
Future PRs will cover replay support for D3D12, Vulkan and extending the automated overlay tests
GL_Overlay_Test
,D3D11_Overlay_Test
,D3D12_Overlay_Test
,VK_Overlay_Test
.The feature enables supporting shader exported depth for the Depth Test overlay by replaying the draw using the pixel shader from the capture instead of a replacement shader. Depth test passing pixels are identified by using the stencil buffer to generate a stencil mask.
If the depth buffer used for the draw does not have a stencil buffer then a new depth buffer is created with a depth+stencil format and a fullscreen pass is used to copy depth from the original depth buffer to the newly created depth+stencil buffer.
Changes to existing implementation
Tested on Windows using changes to
D3D11_Overlay_Test
The change makes the pixel shader write out depth 0.0 for a small rectangle just bottom-left of the centre
Before (using v1.29) : the rectangle of output depth 0.0 is shown as failing the depth test
Depth Buffer format
![image](https://private-user-images.githubusercontent.com/39392/280767057-e67f678a-9728-4ea6-876a-ac03c4a218a8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyOTk3NjQsIm5iZiI6MTczOTI5OTQ2NCwicGF0aCI6Ii8zOTM5Mi8yODA3NjcwNTctZTY3ZjY3OGEtOTcyOC00ZWE2LTg3NmEtYWMwM2M0YTIxOGE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE4NDQyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFhODAyNWQ5NjY2MTg0NTQ3MWQ0YTNiZTc0NGRjZTc2ZTg3MzExZTUzYjUxN2IwOWI5N2E2ODQ4MjdiNmI4ZDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.oBMRVuDL9BcGQEreeaplPaa8lL_d1VKEz46eeTVWqCk)
![image](https://private-user-images.githubusercontent.com/39392/280767227-7bab3887-31ce-41e2-b9ff-d8026df8837f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyOTk3NjQsIm5iZiI6MTczOTI5OTQ2NCwicGF0aCI6Ii8zOTM5Mi8yODA3NjcyMjctN2JhYjM4ODctMzFjZS00MWUyLWI5ZmYtZDgwMjZkZjg4MzdmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE4NDQyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ2YjY0MDgwM2RiMzQ4NWE0ZDE1ODgxNjM2YWYyNDhjZGUyNzA0YmUxNWJmZmRmNjNlMWVlZTA2NDNiNzE0MzMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.37IurMLxMZWxuUkmJMZEMxO54bQISovh2mUXmjVrjmU)
![image](https://private-user-images.githubusercontent.com/39392/280767384-6f61b872-19c2-4aae-8883-ca2e3d401ee6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyOTk3NjQsIm5iZiI6MTczOTI5OTQ2NCwicGF0aCI6Ii8zOTM5Mi8yODA3NjczODQtNmY2MWI4NzItMTljMi00YWFlLTg4ODMtY2EyZTNkNDAxZWU2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE4NDQyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkwNDJmNzk0NGJmNTFjZGJkMWY0Njk3MzMwOTdjZmZmYjE2YmIwYzkxYmQ5OTUyOTIyZTczODI3NTVjOTY3ZDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.wMaqbgyl8O1MQ07oV2AL4KbGke2do8WImYOIOKXMqBw)
![image](https://private-user-images.githubusercontent.com/39392/280767522-bff2ded8-a7c4-4237-8032-c3b62701e94b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyOTk3NjQsIm5iZiI6MTczOTI5OTQ2NCwicGF0aCI6Ii8zOTM5Mi8yODA3Njc1MjItYmZmMmRlZDgtYTdjNC00MjM3LTgwMzItYzNiNjI3MDFlOTRiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE4NDQyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU1NTVmNjQ1ZmY5NmFjNzFjNzM0OGM2MzZjMjA3MDdkYjg5M2VhZGI5MDgwZjNjYTdkYTE1YTJkN2ZmMjVkYjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.yFoR7-MajHZih8EL_rrfPknTkCFmaNx9HeVuMVbMJ7s)
D24_S8
Depth Buffer format
D32_S8
Depth Buffer format
D16
MSAADepth Buffer format
D32
MSAAAfter : the rectangle of output depth 0.0 is shown as passing the depth test
Depth Buffer format
![image](https://private-user-images.githubusercontent.com/39392/280767871-2fdcd76b-2457-429d-b18e-9ec98630f3dd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyOTk3NjQsIm5iZiI6MTczOTI5OTQ2NCwicGF0aCI6Ii8zOTM5Mi8yODA3Njc4NzEtMmZkY2Q3NmItMjQ1Ny00MjlkLWIxOGUtOWVjOTg2MzBmM2RkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE4NDQyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYyNjI3NDFiNGEzNzA1ZDBmNjNkYjFkOWNmN2I3ZWIwYTQ3NzFiNWM2ZGQyYzYxMDQ3ODI2MTgzYmU1MTA3OGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.mB1ANybSFH7hENndH_F2QV2Shb9TWl4lr82BRt-nl0s)
![image](https://private-user-images.githubusercontent.com/39392/280767942-4cb0e9e0-ce5d-4044-b77d-353ef416a5ac.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyOTk3NjQsIm5iZiI6MTczOTI5OTQ2NCwicGF0aCI6Ii8zOTM5Mi8yODA3Njc5NDItNGNiMGU5ZTAtY2U1ZC00MDQ0LWI3N2QtMzUzZWY0MTZhNWFjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE4NDQyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAwOTUzNzExNjFhYzJmMzBiMjAxYzhjNjY4OWJjNmQ5MWExODczZjIxYTliMjdkNjBlOGU3ZTA0NTg2NDA4NDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.8Iu2MuCII7KZ2muVCwoN-m1ivkVnmQPyCipSL8wx9zg)
![image](https://private-user-images.githubusercontent.com/39392/280768132-fa3a86e2-2fab-4352-93ab-c4f4742850f8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyOTk3NjQsIm5iZiI6MTczOTI5OTQ2NCwicGF0aCI6Ii8zOTM5Mi8yODA3NjgxMzItZmEzYTg2ZTItMmZhYi00MzUyLTkzYWItYzRmNDc0Mjg1MGY4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE4NDQyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQwYTU5ODIzMjlmNmVmNWRlYjc4YWUyNjFiYTYzYWFjZjgwNGZhYWU2NjU4ZDgwMjY1NTA0NWY2MzQwYTdjMGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.k1dpsPWkOxI4AnTH58k_OXsx_e7ouyPBHEVuXBwAi0Y)
![image](https://private-user-images.githubusercontent.com/39392/280768213-c4f6f80d-c4f7-4539-a75d-4c27fad7bdfa.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyOTk3NjQsIm5iZiI6MTczOTI5OTQ2NCwicGF0aCI6Ii8zOTM5Mi8yODA3NjgyMTMtYzRmNmY4MGQtYzRmNy00NTM5LWE3NWQtNGMyN2ZhZDdiZGZhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE4NDQyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTllNzI3OGJhZmQ3ODFlOGI1NWJlZDRiMmZjNzI3NTcyZTJjYzM4YTY1M2NhYThiZGE4MDE4ZDNmMWNlZDI2ZTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.RrdVpgMVQX-fHSQ2q0PIndimKWAJT3iuk0P_TbVpQIM)
D24_S8
Depth Buffer format
D32_S8
Depth Buffer format
D16
MSAADepth Buffer format
D32
MSAA