2017-12-19 12 views
1

학교 프로젝트에 간단한 광선 추적기를 만드는 것은 계산 쉐이더가 삼각형이나 다른 프리미티브를 음영 처리하는 것으로 가정 한 것입니다. 이것을 위해 backbuffer-surface에 직접 계산 쉐이더에 써서 결과를 imideatly로 표시하고 싶습니다. 나는 그것이 DX12에서 작동하도록 할 수는 없지만 DX11에서 가능하다는 것을 확실히 알고 있습니다.D3D12 backbuffer 서페이스를 UAV로 사용

나는 이것에 대해 그렇게 많은 정보를 수집 할 수없는,하지만 난 알아 내려고 시도 동일한 문제를 논의이 gamedev 스레드 https://www.gamedev.net/forums/topic/673687-d3d12-use-compute-shader-to-write-to-swap-chain-backbuffer/
을 발견하고 그들은 해결하기 위해 내 이동을했다 결론 (쓰기에 올 것 같다 파이프 라인에서 샘플링). 나는 이것이 dx12에서 이루기가 불가능하다는 것을 완전히 받아 들일 수 없다. 왜 그 기능을 제거하겠습니까? 큐잉 시스템이이 기능을 필요로하지 않는 오버 헤드를 제거 할 수 있습니까?

별도의 텍스처에 쓰지 않고 파이프 라인에서 샘플링하거나 백 버퍼에 복사하지 않고 레이 트레이서를 유지할 수있는 방법이 있습니까? 실적을 달성하기위한 최선의 대안은 무엇입니까?

답변

0

답변에 액세스해야합니다. 이들은 스왑 체인에서 멀티 샘플 표면을 사용하는 것과 동일한 방식으로 UAV를 생성하는 기능을 제거했습니다.

swapchain 표면에서 UAV를 인증 할 때의 문제점은 UAV가 일어나는 일을 추적하지 않아야한다는 것입니다. DX12는 UAV의 런타임시 100 % 휘발성 인 설명자 힙에 의존합니다 (렌더링 대상은 CPU면에만 있으며 추적 가능합니다).

Microsoft는 데스크톱 프레젠테이션의 동작을 보장하기 위해 스왑 체인 표면 상태를 강력하게 추적해야하므로 UAV 바인딩을 거부하도록 선택합니다.