본문 바로가기
DirectX/[팀플] Death's Door 모작

Post Process Effects

by GameStudy 2022. 11. 24.

1. 클래스 구조 

  1.1 현재의 랜더링 구조

    - 카메라가 랜더링을 담당함.

      카메라에는 메인 카메라와 UI 카메라가 있음.

    - 각 카메라가 Render Target을 가지고 있음.

      즉, 메인 카메라도 본인만의 Render Target을

      UI 카메라도 본인만의 Render Target을 가지고 있음.

      그래서 마지막에 Back Buffer의 Render Target->Merge(MainCameraRenderTarget)

      또 Merge(UICameraRenderTarget)을 실행해서 합치는 것.

    - GameEngineLevel::Render()에서 카메라에 종속된 랜더러들을 모두 그린뒤,

      각 카메라의 Post Process Effects가 적용되게끔 코드가 작성되어 있음.

      대략 이런식으로 Post Process Effects가 적용됨.

 

  1.2 GameEnginePostEffect 클래스

    - Copy(수정본): 이 함수를 호출한 Render Target의 내용을 모두 지우고,

      수정본의 내용을 복사해라.

    - Merge(수정본, 블랜드): 이 함수를 호출한 Render Target 위에 수정본의 내용을 덮어 씌워라.

    - Effect(): 이 함수를 호출한 Render Target에 무언가 효과를 줘라. 

 

  1.3 GameEngineBlur 클래스

    - 엔진 팀장님이 만들어 주신 GameEngineBlur 클래스에는 Blur 효과의 방향(수직, 수평, 둘 다)을 정할 수 없음.

      횟수도 정할 수 없고, 화면의 가장 자리만 Blur 효과를 줄 수도 없음. 또, Blur 효과를 먹일 개체는

      선별할 수 있게끔 하고자 함.

    - 이런 부분을 개선하기 위해서 GameEngineBlur를 토대로 ContentsBlur 클래스를 만들고자 함.

 

  1.4 ContentsBlur 클래스

    - 먼저, 카메라를 따로 만듦. 카메라를 만들어서 해당 카메라의 Render Target에 그려지는 개체들만

      Blur 효과를 주고자 함.

    - 몇 가지 엔진 상의 잘못된 점을 찾게 되었고, 엔진 팀장님께 보고드릴 예정.

      일단은 #pragma region ContentsCode로 감싸서 임시 코드를 작성함.

    - ContentsBlur 클래스와 Main Camera와의 상호작용은 정상인데, User0 Camera는 개체가 안보임.

 

    1.4-1 User0 camera 

      - GameEngineLevel::GameEngineLevel()에서 생성됨.

        Perspective / USER0 속성으로 생성됨.

      - Main camera는 Player::Update()에서 Player 위치로 계속 이동됨.

 

    1.4-2 Test Actor

      - TestLevel::Start()에서 생성됨.

      - TestActor::Start()에서는 ChangeCamera(CAMERAORDER::USER0)가 호출됨.

      - Main camera에 띄울 시엔 잘 보이는 것을 확인 함.

      - 다른 동기분들에게 물어보았는데, 2D 포폴 때는 ChangeCamera()로도 잘 되었다고 함.

        지금과 그때의 차이점이라곤 FBXRenderer냐 TextureRenderer냐 차이인데,

        이게 문제였다면 main camera에서도 안보였어야함..

      - 결국 다른 동기분과 상의 하다보니, 다른 생각을 할 수 있게 되어서 해결 아닌 해결..

        카메라엔 문제가 없었고, 크기/자전/위치 문제였음.

 

  1.4-3 수직/수평 Blur 효과 적용 안됨.

      - 분명 수직 수평을 나눠뒀다고 생각했는데, 결과가 이상함..

 

 

 

    

 

  1.5 ContentsBloom 클래스

 

 

'DirectX > [팀플] Death's Door 모작' 카테고리의 다른 글

Deferred Rendering  (0) 2022.12.19
프로젝트 내의 셰이더 구조 고찰  (0) 2022.11.21
나름대로 큰? 규모의 소스코드에서의 shared_ptr 고찰  (0) 2022.11.11
22-11-04  (0) 2022.11.04
22-11-02  (0) 2022.11.02

댓글