유니티 모바일에서 부하가 덜먹는 쓸만한 포스트프로세스 정리

1 분 소요

모바일기기에서 부하가 덜먹는 쓸만한 포스트프로세스 정리

Bloom

설명

  • Radius에 따라 Iteration되는 단계가 1~7단계까지(Pass number도 차이남)
  • Color Only
  • Multi pass
  • Prefilter(1Pass), Uber(1Pass)
  • DownSampling(2 ~ 8Pass), UpSampling(1 ~ 7Pass)

Performance

  • CPU : 5~7ms
  • GPU : Default(1.89ms), Expensive(2.82ms)
  • Pass수에 비해 큰 차이는 없음.
  • radius에 따라 Iteration 개수(Pass수) 조절가능
  • Iteration이 늘더라도 RenderTarget의 Resolution은 1/4씩 줄어 Pass의 수에 비해 CPU, GPU에 부담이 적은편

FXAA(Fast Approximate Anti-Aliasing)

설명

  • Pixel의 contrast를 이용하여 Edge를 찾아 Edge 부분만 적절히 보간해주는 방식
  • NVIDIA에 의해 개발된 알고리즘
  • Color Only
  • 1Pass 알고리즘
  • Preset의 Option에 따라 Sampling과 ALU의 수가 변화하며 성능 및 퍼포먼스에 영향
  • Resolution에 영향을 받지만 Scene의 복잡도와는 별개

Perfomance

  • CPU : 1Pass라 부하 거의 없음(1~2ms이내)
  • GPU : Preset에 따라 퍼포먼스가 다름
  • Extream Qulity(4.53ms), Default(4.78ms), Extream Performance(5.99ms)
  • Preset으로 Sampling수 조절 가능

Chromatic Aberration

설명

  • 스크린 공간의 UV값을 이용
  • Single Pass
  • Uber Shader에서 모두 처리됨.

Performance

  • CPU : 1~2ms
  • Pass가 적고 Depth, Normal이 필요하지않아 CPU는 적게 사용
  • GPU : 2~4ms
  • Intensity가 클수록 Sampling이 많아짐

Grain

설명

  • 필름의 금속성 은에 의해 발생하는 광학 효과
  • Color Grading은 툴에 의하여 LUT를 PreProcessing하여 사용하는 반면 UserLut은 LUT를 포토샵등으로 변화한 후 사용
  • Multi Pass
  • GenerateGrain(1Pass)
  • Uber Shader에서 사용(1Pass)

Performance

  • CPU : 1ms내외(거의 없음)
  • GPU : 0.42ms(Colored Off) 1.16ms(Colored on)
  • Colored를 On시 ALU 연산을 3배 더 사용

Color Grading & User Lut

설명

  • LookupTexture를 이용하여 이미지의 컬러와 명도를 교정하는 과정
  • Color Grading은 툴에 의하여 LUT를 PreProcessing하여 사용하는 반면 UserLut은 LUT를 포토샵등으로 변화한 후 사용
  • Color Only
  • Single Pass
  • Uber Shader에서 모두 처리됨

Performance

  • CPU : 거의 없음
  • GPU : 1ms 이내

Vignette

설명

  • 이미지의 중심에 포커를 맞추기위해 테두리를 어둡게 하는 효과
  • 스크린 공간의 UV값을 이용
  • Single Pass
  • Uber Shader에서 모두 처리됨

Performance

  • CPU : 거의 없음
  • GPU : 1ms 미만

Post Processing Optimization전략

Performance가 아쉬운 상황이라면 꼭 필요한 PostProcessing만 사용

  • SSR(Screen Space Reflection), AO(Ambient Occlusion), MotionBlur, TAA(Temporal Anti Aliasing), Chromatic Aberration등 비교적 무거운 PostProcessing의 사용 검토
  • Bloom은 Performance가 어느정도 많이 먹으나 Radius를 조절하거나 Iteration시 추가적인 해상도 줄이기(Default: 1/4)를 시도해볼만 함.
  • Color Grading은 비교적 가벼운 연산이므로 부담없이 사용

Post Processing을 완전 사용하지 않는다면 PostProcessingBehaviour를 disable하는 것이 좋음.

  • Enable만 되더라도 Post Processing을 하기 위해 RT(Render Target)생성 및 Blit을 추가하게 됨.

CPU부하 줄이기

  • MultiPass의 수를 줄이기
  • Depth, DepthNormal을 사용하는 PostProcessing에 대하여 생각해볼 필요가 있음.

GPU부하 줄이기

  • MultiPass의 수 줄이기
  • Blit호출 감소로 렌더링 되는 Pixel의 수를 줄일 수 있음.
  • Sampling 수 줄이기(Option)
  • ALU연산 축소(Option)
  • RenderTarget의 Resolution 줄이기

Power사용 줄이기

  • 고정 프레임 사용
  • CPU, GPU사용 줄이기(GPU가 특히 Power를 많이 차지함)
  • Sampler 수를 줄여 Bandwidth

출처

모바일 환경에서의 포스트 프로세싱 퍼포먼스 가이드 Unite 강연

태그:

카테고리:

업데이트: