프로그래밍/셰이더

유니티 셰이더 최적화팁

JinFluenza 2018. 8. 1. 11:10
주요 셰이더 최적화 7가지

프레임 단위에서는 게임 코드보다 셰이더 코드가 수행하는 작업이 훨씬 더 많습니다. 다음의 최적화를 사용하여 성능/FPS 속도를 쾌적하게 유지할 수 있습니다.

  1. 비상수 연산을 최소화하세요. 상수 또는 "dynamic uniforms"(예: x=4/33, x=4xsin(24))를 사용하세요.
  2. 스칼라 값(float, int)을 벡터 값(float3, float4)보다 먼저 곱하세요.
  3. 알파테스트의 경우를 포함하여 가급적 폐기 명령을 지양하세요(주로 모바일에 적용됨). 오버드로우에 유의하세요.
  4. 가능한 한 버텍스 셰이더 내로 계산을 제한하세요.
  5. 벡터 작동이 결과의 모든 구성요소를 사용하지 않는 경우, 가능한 한 벡터 작동에 대한 쓰기 마스크를 지정하세요.
  6. 동적으로 설정된 값/non-uniforms(if-else, loops)에 기반하여 브랜칭을 수행하지 마세요.
  7. 작동(예: discard(), floor() 등)이 렌더러 모델(OpenGL 2, OpenGL 3, OpenGL ES 등)과 하드웨어에 미치는 영향을 확인하세요.


출처 - https://unity3d.com/kr/how-to/shader-profiling-and-optimization-tips