언어:
페이지 정보
엔진 버전:
언리얼 엔진

아티스트와 디자이너를 위한 퍼포먼스 지침

언리얼 엔진

콘텐츠 제작 및 레벨 디자인시 퍼포먼스 향상을 위한 일반적인 지침은 이렇습니다.

아티스트용

  • 오브젝트별 엘리먼트의 수를 최소화합니다.

  • 엘리먼트당 트라이앵글 수가 적정량이 되도록 (예: 엘리먼트당 300+) 모델을 합칩니다.

  • 불투명 머티리얼은 최적의 Z 버퍼 컬링으로 인해 가장 빠르며, 마스크드는 약간 느리고, 반투명이 오버드로 때문에 가장 느립니다.

  • UV 이음새와 하드 에지는 하드웨어에 추가적인 버텍스로 이어지므로, 제한하는 것이 좋습니다. 최악의 경우 하드 에지가 있는 하이 폴리 메시는 모델링 프로그램에서 보고된 것보다 버텍스 수가 세 배나 많아집니다.

  • 스키닝된 메시에 대한 버텍스 처리 비용은 스태틱 메시에 대한 것보다 높습니다.

  • 버텍스 처리 비용은 모프 타깃을 추가할 때나 월드 포지션 오프셋을 사용할 때 커집니다. 텍스처 룩업도 캐시로 인해 꽤나 느려질 수 있습니다.

  • 테셀레이션은 비용이 꽤 많이 추가되어, 가급적 피해야 할 것입니다. 보통 테셀레이션을 미리 적용한 메시가 더 빠릅니다.

  • 매우 큰 메시를 나누면 컬링에 더욱 좋아집니다. 뷰 컬링에만 해당하는 것으로, 라이트 컬링은 보통 입자가 더욱 고운 경우에 해당합니다.

  • 텍스처 포맷이 작을 수록 머티리얼이 빨라집니다 (예: DXT1 은 픽셀당 4 비트, DXT5 는 픽셀당 8 비트, ARGB 미압축은 픽셀당 32 비트입니다).

  • 텍스처 해상도가 낮을수록 (확대했을 때) 빨라집니다. 심지어 가끔은 더욱 부드러워 질 수도 있는데, 바이리니어 필터링으로 인해 텍스처 포맷이 표현할 수 있는 것보다 많은 셰이더로 이어질 수 있기 때문입니다.

  • 셰이더 인스트럭션과 텍스처 룩업 수가 적은 머티리얼은 빠르게 실행됩니다. 머티리얼을 최적화시키려면, 머티리얼 에디터 통계와 셰이더 복잡도 뷰모드를 사용하세요.

  • 텍스처가 작은 스케일에서도 보이는 경우 절대 밉맵을 끄지 말아야 텍스처 캐시 미스로 인해 느려지는 현상을 피할 수 있습니다.

  • 일부 머티리얼 표현식은 비싼 것이 있습니다 (sin, pow, cos, divide, Noise). 빠른 표현식은 다음과 같습니다: multiply, add, subtract, 0 과 1 을 사용할 때의 clamp().

  • 셰이딩 모델마다 비용이 다릅니다: Unlit 이 가장 빠르고, Lit 이 평균적으로 가장 많이 사용되며, 나머지 모델은 조금 더 비쌉니다.

레벨 디자이너용

  • 스테이셔너리 / 다이내믹 라이트 갯수를 제한합니다.

  • 에리어 라이트 소스는 약간 더 비싸니 가급적 피합니다.

  • 작은 오브젝트는 컬링이 원활해 지도록 그리기 거리를 조절합니다.

  • LOD 전환이 적극적으로 일어나도록 범위 구성이 되었는지 확인하세요. LOD 한 레벨당 버텍스 수를 최소 두 배는 사용합니다. 이에 대한 최적화는, 와이어프레임을 검사해 보면 단색 부분이 문제를 나타냅니다. Simplygon 통합을 사용해 보면, 몇 분 밖에 걸리지 않습니다.

  • 원점이 비슷한 라이트를 합쳐보세요. 예를 들어 차량 전조등은 하나의 라이트에다 라이트 함수를 사용하여 두 개로 보이게끔 만들 수 있습니다.

  • 스태틱 라이트가 가장 빠르며, 스테이셔너리 라이트는 조금 덜하고, 다이내믹 라이트가 가장 비쌉니다.

  • 감쇠 반경과 라이트 원뿔 각도를 필요한 최소치로 제한합니다.

  • 다이내믹/스테이셔너리 포인트 라이트가 가장 비싸고, 디렉셔널 라이트는 약간 더 싸며, 스포트 라이트가 최선입니다. 섀도맵 생성 비용은 그림자를 드리우는 오브젝트의 라이트 프러스텀에 비례합니다.

  • 라이트 함수는 비용이 추가되며 (실제 비용은 머티리얼에 달렸습니다) 라이트가 타일형 라이트로 렌더링되는 것을 방지할 수 있습니다.

  • IES 프로파일은 비용이 추가되며 (라이트 함수보다는 덜합니다) 라이트가 타일형 라이트로 렌더링되는 것을 방지할 수 있습니다. 스포트라이트 원뿔 각도로 똑같은 효과를 낼 수 있는데도 IES 를 사용하는 것은 좋지 않습니다.

  • 빌보드, 임포스터 메시, 스카이박스 텍스처를 사용하여 디테일한 지오메트리를 효율적으로 모방해 낼 수 있습니다.

  • 좋은 레벨 디자인은 컬링을 고려합니다 (시야를 가리는 것을 잘 써서 퍼포먼스를 높입니다). r.VisualizeOccludedPrimitives 로 검사해 볼 수 있습니다.

  • Light Propagation Volume 은 피하거나, 써야 한다면 GIReplace 머티리얼 표현식 사용 또는 대부분의 오브젝트에서 꺼 주는 방식으로 비용을 제한하시기 바랍니다.

  • 그림자 드리우기는 오브젝트 단위든 라이트 단위든, 가급적 끕니다.

  • 에디터의 ProfileGPU (Ctrl + Shift + ,) 를 사용하여 무엇이 느린지에 대한 정보를 빠르게 얻을 수 있습니다.

  • 데칼 퍼포먼스 비용은 거기에 커버되는 픽셀 수에 비례합니다.

Occluded.png

CONSOLE: r.VisualizeOccludedPrimitives 1