UDN
Search public documentation:
PrecomputedVisibilityKR
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
日本語訳
中国翻译
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
Precomputed Visibility (표시여부 미리계산)
문서 변경내역: Daniel Wright 작성. 홍성진 번역.
개요
게임에 표시여부 미리계산 기능 사용하도록 설정하기
- PlayAreaHeight (플레이어 영역 높이) - 표면에서부터 카메라가 올라갈 수 있는 높이. 보통 키가 가장 큰 플레이어의 눈높이 + 점프 높이 입니다. 기본값은 220 입니다.
레벨에 표시여부 미리계산 기능 사용하도록 설정하기
셀 배치
결과물 시각화
- 먼저 표시여부 미리계산용 레벨을 설정하고서 라이팅 빌드
- 뷰포트를 설정합니다. 1x1 수직분할이 좋습니다. 모든 뷰에 실시간 업데이트를 켜야 합니다. 원근보기 창을 플레이 영역 (내 visibility 볼륨 안, 약간 땅 근처부분)으로 이동하여 셀 내부에 위치시킵니다. 콘솔에 'stat initviews'라 쳐서 원근보기 창에 대한 통계를 켰을 때 'Statically Occluded Primitives'(정적으로 가려진 프리미티브) 값이 0 이외의 값으로 나오면 잘 돌고 있는 것입니다.
- 콘솔에 'ToggleOcclusion'이라 쳐서 동적인 오클루전 시스템을 끕니다. 로그에 'Occlusion queries are now disabled'(오클루전 퀴리 기능이 꺼졌습니다)라는 메시지가 뜰 겁니다. 이를 통해 미리계산된 오클루전 결과만을 볼 수 있습니다.
- 원근보기 창에서 뷰포트 내리펼침 메뉴를 통해 'View Culling/Occlusion'(컬링/오클루전 보기)를 선택합니다.
표시여부 세팅
관련 통계
- 'stat initviews' 아래 '정적으로 가려진 프리미티브'를 통해 절두체 컬링이 일어난 이후 표시여부 미리계산에 의해 생략된 프리미티브가 얼마나 많은지 알아볼 수 있습니다. '가려진 프리미티브'는 표시여부 미리계산 및 동적인 오클루전 시스템 둘 다에 의해 생략되도록 결정된 프리미티브가 몇이나 되는지를 표시해 줍니다. 이 두 통계간의 차이점은 표시여부 미리계산이 놓친 것 중 동적인 오클루전 시스템이 컬링한 프리미티브 수를 표시해 줍니다. 표시여부 미리계산이 잘 돌아가면 '정적으로 가려진 프리미티브'는 '가려진 프리미티브'의 50-80% 사이가 됩니다. 표시여부 미리계산의 오브젝트 컬링이 덜한 이유는 큰 셀에 대한 정보만 저장할 뿐, 동적이거나 마스킹된 가리개(occluder)를 처리하지는 않기 때문입니다. (제한 사항 참고) 주의: 이 통계는 게임내 또는 PIE에서만 신뢰할 수 있으며, 에디터에선 디버그에 관련된 것들도 그려지기에 신뢰할 수 없습니다.
- 'stat initviews' 아래 '오클루전 압축해제'로 표시여부 미리계산 압축을 해제하는데 걸린 시간을 알아볼 수 있습니다.
- 'stat memory' 아래 '표시여부 미리계산 메모리'로 계산하는데 사용된 실행시간 메모리를 표시해 줍니다. 알림: 이 통계는 PIE에서는 신뢰할 수 없으며, 에디터로 체크인 하거나 게임에서 해야 합니다. PIE일 때는 PIE와 에디터 메모리 둘 다 계산되기 때문입니다.
결과
- 가려진 프리미티브 전체 2180개 중에서 정적으로 가려진 것은 1739개
- Xbox 360에서 오클루전 미리계산 없이 한 경우에 비교하면 렌더링 쓰레드 시간이 2.7ms(35.4ms -> 32.7ms) 절약되었습니다. 동적인 오클루전 시스템은 시간이 좀 걸리는 반면, 표시여부 미리계산 기능은 바로 켤 수 있다는 것이 주요 장점입니다. 그래서 코너를 처음 돌거나 화면을 빠르게 돌리는 경우, 제대로 측정하기는 힘들겠습니다만 표시여부 미리계산 기능을 켰을 때의 프레임 시간이 빠를 것입니다.
- 표시여부 미리계산 데이터 크기 627Kb
- 새 지역으로 이동하여 해당 지역에 대해 압축해제를 할 때의 렌더링 쓰레드 버벅임(hitch)은 1ms로 아주 미미합니다.
제한 사항
- 이동가능 오브젝트나 가리개(occluder)를 처리하지 않습니다.
- 불투명하지 않은 가리개는 처리하지 않습니다. 보통 마스킹된 가리개의 구멍은 감지하기 힘들기 때문입니다.
- 표면 위에만 셀을 놓기에, 날아다니는 모드가 있는 게임에서는 별로 득이 되지 않습니다.
- 스트리밍 레벨을 효율적으로 처리하지 못합니다. 모든 데이터는 스트리밍 레벨의 스트림인/아웃되는 곳이 아닌, 지속 레벨에 저장됩니다.
- 정적 그림자를 드리우는 트라이앵글만 가립니다. 즉 lightmapped interpactor(라이트매핑된 보간액터)는 가리지 말아야할 때 가리고, 그림자를 드리우지 않는 이동불가 오브젝트는 정작 가려야 할 때 못가리는 등, 아직 똥오줌을 잘 못가린다는 뜻입니다.
표시여부 문제 버그잡이
-
TogglePrecomputedVisibility
(표시여부 미리계산 토글) - 표시여부 미리계산된 데이터 사용을 토글합니다. -
ShowPrecomputedVisibility
(표시여부 미리계산 표시) - 표시여부 미리계산 셀의 디버그 시각화를 토글합니다.