[Unity] 포스트 프로세싱
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
아래 문서를 참고해서 작성했습니다
https://docs.unity3d.com/kr/2019.4/Manual/BestPracticeMakingBelievableVisuals8.html
포스트 프로세싱은 이미 렌더링된 씬 위에 렌더링 효과를 더하는 작업이다. 각 효과는 최종 결과물을 만들기 전에 렌더링된 화면 위에 겹쳐서 표시된다.
가장 큰 장점은 기존 콘텐츠를 수정하지 않고도 즉시 시각 효과를 입혀 씬 품질을 끌어올릴 수 있다는 점이다. 사실적인 씬을 위해 모든 효과를 다 쓸 필요는 없지만, 시스템을 이해해두면 상황에 맞는 효과를 골라 쓰고 각 효과에 따르는 위험(성능·아티팩트)을 피할 수 있다.
이 글에서 다룰 효과: 앰비언트 오클루전 / 스크린 공간 반사 / 피사계심도 / 모션 블러 / 블룸 / 색 수차·그레인·비네트
포스트 프로세싱 방식의 AO는 주로 뎁스 같은 스크린 공간 데이터를 기반으로 하기 때문에 보통 SSAO(Screen Space Ambient Occlusion)라고 부른다. 주변광에 셰이딩을 적용할 때 정확도가 뛰어나며, 특히 정적 씬과 오클루전 상호작용이 없는 동적 게임 오브젝트에서 효과적이다.
주의할 점은 과도한 오클루전이다. 오프라인 모델링 툴에서 오브젝트별로 베이크한 AO, 광원 베이킹의 AO, 그리고 SSAO가 겹치면 AO가 세 겹으로 쌓이게 된다. 따라서 SSAO는 다른 AO 솔루션과 균형을 맞춰 설정해야 한다. 지나치면 개방된 영역이 필요 이상으로 어두워진다.

SSR은 SSAO처럼 현재 Scene 뷰를 사용해 광선 추적으로 반사의 근사치를 계산한다. 노멀 큐브맵 캡처 반사를 보완하는 정확한 반사를 더해주므로, 사실적인 결과물을 위해서는 활성화가 권장된다.
단점:
디퍼르 렌더링: 조명 계산을 씬을 그리는 시점이 아니라 나중으로 미루는(deferred) 렌더링 방식
대형 센서 카메라로 촬영한 것 같은 영화적 느낌을 줄 수 있는 효과다. 씬에서 인식되는 스케일을 바꾸는 데도 쓰이는데, 틸트 시프트 렌즈의 축소 효과처럼 실제 풍경을 미니어처 모형처럼 보이게 만들 수 있다.
틸트 시프트는 카메라 렌즈 기법이다
- 틸트(Tilt) — 렌즈를 기울이는 것. 초점이 맞는 면(초점 평면)의 각도를 바꿔.
- 시프트(Shift) — 렌즈를 위아래·좌우로 평행 이동시키는 것. 원근 왜곡을 보정해.
약간의 모션 블러는 프레임 간 전환을 더 사실적이고 자연스럽게 블렌드해준다. 다만 멀미(motion sickness) 위험을 줄이는 것도 중요하다. 특히 1인칭·3인칭 카메라처럼 씬 이동 차이가 큰 경우 주의해야 한다. 60FPS라도 카메라를 빠르게 좌우로 돌리면 떨리는 것처럼 보이는 광각 뷰가 그 예다.
개인적으로 3d 멀미가 있어서 항상 설정에서 끄고 시작한다.
현실에서 블룸은 광선 초점이 정확히 맞지 않는 렌즈로 인한 현상으로, 품질이 낮은 렌즈나 글로우 필터에서 나타난다. 블룸을 쓰면 흐릿하고 부드러운 이미지를 연출하거나, 고강도·밝은 조명 요소를 다르게 표현할 수 있다.

주의: 과도하게 쓰면 역효과다. 고강도 픽셀이 너무 많고 강도 임계값의 블룸이 지나치게 빨리 시작되면 이미지가 뭉개진다. 임계값을 정할 때는 발광 표면 값, 씬 조명 설정, 시각 적응(눈 순응) 활성화 여부를 함께 고려해야 한다.
세 효과 모두 실제 카메라 시스템의 결함을 시뮬레이션하는 것으로, 각 결함의 원리를 알면 더 적절히 활용할 수 있다.
현재 진행중인 프로젝트에서도 비네트 기법을 쓸 수도 있어서 나중에 적용되면 글로 써보겠습니다.
사실 그래픽적인 감각이 부족해서 이론을 알아도 내가 만들 게임에 뭐가 어울릴지 잘 모르겠지만 그래도 알아두면 나쁠건 없어서 정리를 해봤다. 아래 싸이트에서 실습하는 방법이 나오는데 나중에 실습해보면서 공부하고 싶다.
참고자료
https://ljhyunstory.tistory.com/369#google_vignette
유니티 문서
https://docs.unity3d.com/kr/2019.4/Manual/BestPracticeMakingBelievableVisuals8.html
SerializeReference
![[Unity] 튜토리얼 설계](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1787322579554-zopplu/_____2026-08-21_232731.png)
튜토리얼 설계
![[Unity] Event Trigger Component](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1786976296699-a3tu75/_____2026-08-17_231353.png)
Unity Event Trigger 컴포넌트
![[Unity] 튜토리얼 설계](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1787322579554-zopplu/_____2026-08-21_232731.png)
![[Unity] Event Trigger Component](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1786976296699-a3tu75/_____2026-08-17_231353.png)