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

콘텐츠와 레벨 디자인 최적화를 위한 일반적인 팁과 정보입니다.

Windows
MacOS
Linux

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

아티스트용

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

  • 엘리먼트당 트라이앵글 수가 적정량이 되도록 (예: 엘리먼트당 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

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback