본문 바로가기

Shader

Tone Mapping과 Temporal Anti-Aliasing

포스트 프로세스 머티리얼을 만들다보면 Before Tone Mapping, After Tone Mapping 등을 설정해야 할 때가 있다. 이것이 무슨 의미인지 알아보도록 하겠다

 

 

*Tone Mapping 톤매핑

: 톤매핑은 HDR 값을 LDR 영역 값으로 돌리도록 해주는 프로세스입니다.

 

 

*HDR

: 보통 씬의 픽셀이 렌더링 될때 , 빛의 최대강도는 1.0에서 짤립니다. HDR 렌더링은 이러한 제한을 제거하고 픽셀에 조명 강도를 1.0 이상으로 저장할 수 있게 합니다. 모니터도 일반적으로 빛의 강도를 0.0~1.0으로만 표현할 수 있고, 이 영역은 보이는 영역으로 다시 리맵핑 되어야 합니다. 이것은 톤 매핑이라는 프로세스를 통해 달성됩니다. (주: 조명 강도가 1.0 이상으로 높게 저장된 조명 값은 톤매핑이라는 과정을 통해 모니터의 한계인 1.0 안으로 조정됩니다 )

 

 

  • PostProcessInput0: Scene + SeparateTranslucency
  • PostProcessInput1: SeparateTranslucency
  • PostProcessInput2: Scene without Translucency

 

 

*Before Tone Mapping

: PostProcessInput0 provides the scene color with all lighting in HDR. Use this to fix issues with temporal antialiasing and GBuffer lookups e.g. depth, normals.

만약에 오브젝트 가장자리가 지글거린다면 After Tone Mapping으로 되어있을텐데 이걸 Before Tone Mapping으로 바꿔주면 된다. 그러니깐 Temporal Anti-Aliasing이 적용됐다고 할 수 있다.

Jiggling means that this shader is happening just a little bit out of order from where it should be so we have to correct that by changing it to 'Before Tone Mapping'.

 

 

*After Tone Mapping

: Preferred location for performance as the color is LDR and therefore requires less precision and bandwidth. This is after tone mapping and color grading.

 

 

*Before Translucency

: This is even earlier in the pipeline than 'Before Tonemapping' before translucency was combined with the scene color. Note that SeparateTranslucency is composited later than normal translucency.

 

 

*Replacing the Tone Mapper

: PostProcessInput0 provides the HDR scene color, PostProcessInput1 has the SeparateTranslucency (Alpha is mask), PostprocessInput2 has the low resolution bloom input.

 

 

*Temporal Anti-Aliasing (TAA)

:오브젝트의 가장자리가 지글거리는 효과를 없애주는 역할을 한다

 

 

 

++ 유니티에서 Before Tonemapping, After Tonemapping, Before Translucency 설정하기

> 유니티는 Shader Graph에서 하는게 아니라 Renderer Data에서 해준다. Project 폴더에서 Assets > Settings에서 URP-Hugh Fidelity-Renderer를 찾는다. 그리고 Inspector 창에서 Add Renderer Feature를 해준다. 그리고 Injection Point라는 세팅에서 Before Rendering  Transparent, Before Rendering Post Processing, After Rendering Post Processing 중에서 골라주면 된다