UDN
Search public documentation:

PerfDebug_DynamicLightEnvironmentsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 테크니컬 & 프로그래밍 홈 > 퍼포먼스 및 메모리 > 성능 디버깅: Dynamic Light Environment

성능 디버깅: Dynamic Light Environments

Performance Debugging KR 페이지로 돌아가기.

성능 디버깅: Dynamic Light Environment

문제점:

Dynamic Light Environment 의 업데이트가 비용이 많이 먹히는 것으로 나타남.

해결책:

모든 (Mover 라고도 하는) InterpActorKActors 는 Dynamic Light Environment 를 기본으로 가지고 있습니다. 그러나 DLE 업데이트시 광원에 선 검사를 하여, CPU 비용이 꽤나 추가될 수 있습니다. 그러나 동적 오브젝트 상의 라이팅 비용을 줄이기 위해 설정할 수 있는 옵션이 여럿 있습니다.

Light Environment 세팅 중 (게임 스레드 상) 가장 비싼 것에서 싼 순서대로, 사용 시점과 함께 나열해 보겠습니다:

1) bEnabled=True, bDynamic=True (디폴트)

꼭 필요할 때만 사용하십시오. InvisibleUpdateTimeMinTimeBetweenFullUpdates 에 따라 업데이트합니다. 아마도 일정 시점에 동시 활성화되는 수가 50 개 이상이지는 않을 것입니다. 보이고, 플레이어에 가깝거나 움직일 때는 추가 표시여부(visibility) 검사를 합니다.

2) bEnabled=True, bDynamic=False, bForceNonCompositeDynamicLights=True

매우 저렴할 것입니다. environment 는 첫 틱에만 업데이트됩니다. bForceNonCompositeDynamicLights 가 있어야 dynamic light가 거기에 영향을 끼치며, 이는 게임 스레드에 큰 영향을 끼치지 않습니다. 수백개를 놔도 되며, (첫 틱 이후) 유일한 비용은 dynamic light로의 선 검사(와 owner가 보일 때만)입니다. 이는 precomputed shadows 를 사용할 때보다 나아 보이는데, 왜냐면 회전시켜도 라이팅이 올바르게 유지되기 때문입니다. 프랙처 메시에도, GDO에도, 기타 여러 곳에도 사용됩니다. 여기에 비용이 많이 들어간다면, 아마도 코드 측면에서 약간만 최적화시켜주면 될 것입니다.

3) bEnabled=False, bUsePrecomputedShadows=True (프리미티브 컴포넌트 상에서). 또한 다이내믹 채널에서 꺼낸 다음 스태틱 라이팅 채널에 넣어줘야 할 것입니다.

이는 라이트매핑되고, 렌더링하기도 매우 저렴하고, 사실상 (UDynamicLightEnvironmentComponent::Tick 함수가 계속 호출되는 경우를 제외하고는) 게임 스레드 부하가 없을 것입니다. 움직이면 틀려 보일 것입니다.

활성 상태인 light environment 가 몇이나 되나 알아보는 데 사용할 수 있는 콘솔 명령이 있습니다. 콘솔에 SHOWLIGHTENVS 라 치면 그 프레임에 틱되는 환경 전부를 볼 수 있습니다. 출력 형태는 이렇습니다:

Log: LE: SP_MyMap_01_S.TheWorld:PersistentLevel.InterpActor_12.DynamicLightEnvironmentComponent_231 1
Log: LE: SP_MyMap_01_S.TheWorld:PersistentLevel.InterpActor_55.DynamicLightEnvironmentComponent_232 0
Log: LE: SP_MyMap_01_S.TheWorld:PersistentLevel.InterpActor_14.DynamicLightEnvironmentComponent_432 1 ...

줄 끝의 '1' 은 'bDynamic' 이 TRUE 로 설정되었다는 뜻입니다. 레벨 디자이너가 부하를 줄이고자 할 때의 맵 변경 가이드가 될 것입니다.

피드백

엔진 내 퍼포먼스와 메모리에 관한 질문이나 하실 말씀이 있으십니까? unprog3 mailing list 로 올려 주십시오.

Performance Debugging KR 페이지로 돌아가기.