수평, 수직 컴퓨트쉐이더 작업 이후에
DrawScreenQuad() 함수 호출시
Effects::BasicFX->SetDiffuseMap(mBlur.GetBlurredOutput());
부분이 이해가 안됩니다. 오타는 분명 아닌것 같은데...
제 생각에는
Effects::BasicFX->SetDiffuseMap(mOffscreenSRV);
이게 맞는거 같아서요
DrawScene()함수에서
mBlur.BlurInPlace(md3dImmediateContext, mOffscreenSRV, mOffscreenUAV, 4);
BlurInPlace함수 안에 들어가 보면
수평 작업 이후 수직 작업할때
Effects::BlurFX->SetInputMap(mBlurredOutputTexSRV);
Effects::BlurFX->SetOutputMap(inputUAV);
순서로 됩니다. 결국 최종적으로 컴퓨트셰이더에서 Write하는 자원뷰는 inputUAV가 맞지 않나요?
그러면 inputUAV에 대응되는 셰이더 리소스뷰가 mOffscreenSRV가 아닌지요?
mBlur.GetBlurredOutput()로 가져오는 자원뷰는
수평 Blur작업까자만 진행된 자원뷰로 보이는데요...
헷갈리네요..
[DX11 입문 제12장] Blur 예제 질문 드립니다.
Moderator: 류광
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
지적하신 게 맞는 것 같습니다. p.513의 1~6을 따른다면 Blur의 화면 밖 텍스처가 A이고 BlurFilter의 텍스처가 B이므로, 최종적으로는 A의 텍스처에 대한 SRV, 즉mOffscreenSRV를 텍스처로 사용하는 게 맞겠습니다.
애초에 설계가 조금 허술한 게 아닌가 싶은데요. 실제로 이 책의 DX12 버전에 있는 예제에서는 BlurFilter 클래스가 좀 더 "실수하기 어렵게" 바뀌었습니다(대신 입력 텍스처를 매번 복사하는 것으로 보이는데, 성능에 어느 정도 영향이 있을지는 모르겠습니다..)
https://github.com/d3dcoder/d3d12book 에 DX12 버전의 모든 예제가 있습니다.
애초에 설계가 조금 허술한 게 아닌가 싶은데요. 실제로 이 책의 DX12 버전에 있는 예제에서는 BlurFilter 클래스가 좀 더 "실수하기 어렵게" 바뀌었습니다(대신 입력 텍스처를 매번 복사하는 것으로 보이는데, 성능에 어느 정도 영향이 있을지는 모르겠습니다..)
https://github.com/d3dcoder/d3d12book 에 DX12 버전의 모든 예제가 있습니다.
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact: