채널톡 아이콘

인프런 커뮤니티 질문&답변

ohtak6843님의 프로필 이미지

작성한 질문수 1

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

렌더 타겟을 SRV로 사용하려고 합니다.

작성

·

103

0

렌더 타겟을 SRV로 사용을 하려고 합니다.

우선 결론을 말씀드리면 기존에 투명 파티클인 Bubble 파티클 뒤에 보이는 픽셀들에

굴절 효과를 추가하려고 합니다.

그러기 위해 렌더 타겟을 텍스쳐로 만들어서 SRV로 파티클 셰이더에 텍스쳐로 보내려고 합니다.

 

제가 시도해본 과정입니다.

image.png

Scene의 RenderFinal 함수에서 shared_ptr로 renderTargetTexture을 가져와서

제가 만든 Resources 클래스의 멤버 변수인 _renderTargetTexture에 Set 하였습니다.

(원래는 리소스의 상태를 렌더 타겟에서 SRV로 수정을 했어야 하나, 결과가 똑같아서 제외하였습니다.)

image.png

그리고 파티클 시스템의 FinalUpdate에서 RenderTargetTexture를 가져와서 0번 텍스쳐에 Set을 해주었습니다.

 

아래는 실행 결과입니다.

image.png

빨간색으로 표시된 부분은 제가 기존에 만들어봤던 파티클들이고

파란색으로 표시된 부분은 렌더 타겟을 텍스쳐로 만들어 셰이더에 전달한 것을 출력하는 파티클들 입니다.

결과를 보면 렌더 타겟에 보이는 빨간 부분 파티클들이 제대로 파란색 표시된 쪽에 출력이 된 것을 확인할 수 있었습니다.

그러나 렌더 타겟으로 파티클을 띄웠으면 배경이나 (가운데 잘 안보이지만) 구 객체도 같이 출력이 되었어야 하는데 파티클들만 출력이 된 것을 확인할 수 있었습니다.

아마 예상으로는 구나 배경(디퍼드 렌더링)을 찍는 0번 카메라와 파티클(포워드 렌더링)을 찍는 1번 카메라 중 1번 카메라만 렌더 타겟 텍스쳐로 전달이 되어서 발생하는 문제라고 생각했습니다.

 

PIX로 디버깅을 해본 결과

image.png

여기는 또 이상하게 렌더 타겟에 보이는 모든 객체들이 셰이더에 SRV로 잘 전달이 되었다고 나오고 있습니다.

 

렌더링이 올바르게 되지 않는 결과를 알고 싶습니다.

또한 투명 파티클 뒤의 픽셀들을 굴절시키는 다른 좋은 방법이 있다면 그것 또한 알고 싶습니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. ohtak6843님 질문에 답변드리겠습니다.

렌더 타겟을 SRV로 사용하는 과정에서 발생한 문제에 대해 설명드리겠습니다. 현재 파티클 외에 배경이나 다른 객체들이 렌더 타겟 텍스처에 포함되지 않는 문제를 겪고 계신 것 같습니다. 이 문제는 주로 렌더링 시에 잘못된 카메라 또는 렌더 패스 설정으로 인해 발생할 수 있습니다.

예상 원인 및 해결 방법:

  1. 카메라 설정 확인:

    • 사용 중인 카메라가 올바르게 설정되어 있는지 확인하세요. 예를 들어, 구체나 배경을 캡처하는 카메라와 파티클을 캡처하는 카메라가 다를 수 있기 때문에, 두 카메라가 모두 같은 렌더 타겟을 설정하는지 확인해야 합니다.
  2. 렌더 타겟 Texture 재설정 여부:

    • 각 렌더 패스가 시작될 때 RenderTargetTexture가 올바르게 설정되고 있는지 확인해 보세요. 가끔 초기화나 셋업 과정에서 누락된 설정이 있을 수 있습니다.
  3. 렌더 상태 변경:

    • 렌더링 상태나 셰이더 설정이 잘못되어 전체 씬이 아닌 일부 오브젝트에만 영향을 줄 수 있습니다. 각 객체가 올바른 셰이더와 파이프라인을 통해 렌더링되고 있는지 점검하세요.
  4. PIX 디버깅 확인:

    • PIX에서 SRV 연결이나 리소스 상태가 예상과 다르게 출력될 수 있습니다. 이를 통해 정확하게 어느 단계에서 문제가 발생하는지를 확인하세요.
  5. 굴절 효과:

    • 파티클 뒤 픽셀을 굴절시키기 위한 더 나은 방법으로는 각 오브젝트의 깊이와 노멀 정보를 이용하여 굴절 효과를 계산하는 방법이 있습니다. 이에 관련하여 “Screen Space Refraction” 또는 “Post-Processing Effects”에 대한 자료를 참고하시면 유용할 것입니다.

참고 URL:

  1. Transition 질문있읍니다. - 바이패스 및 렌더링 상태 변경에 관한 설명이 도움이 될 것입니다.

  2. Texture 샘플링 관련해서 질문이 있습니다. - 텍스처 샘플링과 셰이더에서의 처리 과정을 이해하는데 유익한 정보가 포함되어 있습니다.

추가로 질문해 주신 방법 등에 대한 직접적인 예시가 없다면 직접 문서화를 통해 문제를 해결해 나가거나, 보다 심화된 셰이더 과정을 학습하셔서 나중에 더욱 복잡한 효과를 구현해보시는 것도 좋겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.