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 |
댓글