-
[Unreal 게시판] Precomputed Visibility Volume의 역할과 필요성2014.11.03 PM 01:49
Question>
Precomputed Visibility Volume은 정확히 어떤 역할을 하는건가요?
Precomputed Visibility Volume
Precomputed Visibility Volumes are used primiarly for performance optimization.
These volumes store the visibility of Actors for their location in the world.
These should be placed only in areas the Player can access.
플레이어가 다니는 곳에 배치하라던데 이유는 무었인가요 ?
Precomputed Visibility Volume 은 정확히 어떤 역할을 하는건가요 ?
-------------------------------------------------------------
Answer>
아직까지 unreal engine 4 관련 site에는
위와 관련해서 명확하게 설명된 자료가 없네요.-_-;;;;;;;
그래서, unreal engine 3의 자료로 설명하겠습니다.^^;;;;;;;;;
우선 아래 link 내용을 처음부터 끝까지 정독해 주시고요.
특히, 두번째와 세번째 사진을 유심히 봐 주세요.^^
(내용이 많지는 않습니다.^^;;;;)
http://udn.epicgames.com/Three/PrecomputedVisibilityKR.html
'Precomputed Visibility Volume의 역할'을 간단하게 요약하면, 아래와 같습니다.
" player가 특정 위치에 있을 때,
player가 그 위치에서 조금이라도 보일 수 있는 'actor(대부분 static actor)'들의 정보
를 가지고 있는 '(link의 두번째와 세번째 사진에 있는)작은 보라색 상자들'을 만드는 것.^^;;;;;; "
'Precomputed Visibility Volume의 역할'은 이렇게 요약할 수 있습니다.
다소 황당하겠지만, 이게 전부입니다.^^;;;;;
그럼 '왜 작은 보라색 상자들을 만들어야 합니까?-_-+'라고 물으실 수 있는데요.
그건 'static culling' 때문입니다.
참고로 3D graphics에서 'culling'이란,
camera에 보이는 객체와 보이지 않는 객체를 판단해서,
보이지 않는 객체를 배제해서,(즉, 보이지 않는다면, CPU와 GPU 연산에서 아예 제외.)
program의 성능을 높이는 기술을 말하고요.^^
PC용 unreal engine의 경우,
기본적으로 CPU와 GPU의 성능이 어느 정도 보장되기 때문에
'dynamic culling'(보이지 않는 객체를 실시간 수식으로 판단)으로
처리해도 아~무~ 문제가 없습니다.^^
하지만,
mobile용 unreal engine의 경우에는
actor(대부분 static actor)가 많아 질 때, CPU와 GPU의 성능을
극대화시켜도 제대로 frame이 나오지 않기 때문에..-_-;;;;;
PC용 unreal engine처럼
'dynamic culling'으로 처리할 경우, 상당한 성능 저하가 야기됩니다.-_-;;;;;;
그래서,
culling의 성능 향상을 위해 'static culling'이 필요한 거고요~ ^^
그리고,
이 'static culling'을 위한 정보는
'Precomputed Visibility Volume'을 unreal editor로 배치하고 build만 하면,
나머지는 unreal editor가 자동으로 만들어 줍니다~ +_+
P.S.
PC용 unreal engine에서
'Precomputed Visibility Volume'을 쓰는 것도 성능향상에 도움이 되기는 합니다만,
다만, PC는 CPU와 GPU가 워낙 강력해서, static culling의 실효성은 낮은 편입니다.
그런 이유로 'Precomputed Visibility Volume'은
PC용 unreal game 제작에는 사용되지 않는 경우가 많습니다.^^;;;;;;
하지만,
mobile game이나 console game에서는 성능을 극한까지 끌어 내기 위해,
'Precomputed Visibility Volume'을 대부분 사용합니다.
(예> Infinty Blade, Gear of War, ...)
https://docs.unrealengine.com/latest/KOR/Platforms/Mobile/Performance/index.html
위 link 내용처럼 아예 개발지침으로 박아 놓기도 합니다.^^;;;;;
따라서, unreal engine으로 mobile game 만든다면, 이건 필수사항입니다.@_@;;;;
P.S.2
'Precomputed Visibility Volume'이 가시성 정보를
자동으로 생성해 주는 장점이 있지만,
정보의 정확도가 낮고, data의 용량이 과도하게 커질 수 있다는 단점이 있습니다.^^;;;;;;
이런 경우,
'Precomputed Visibility Override Volume'을 사용합니다.
'Precomputed Visibility Override Volume'의 경우,
보일 수 있는 가능성이 있는 actor의 정보와
보이지 않을 수 있는 가능성이 있는 actor의 정보를 모두 수동으로 입력합니다.-_-;;;;;;;
(이거 엄청난 노가다입니다.T_T)
참고로 iPhone 3GS에서 작동되었던 'Epic Citadel'의 경우,
모든 culling 정보를 'Precomputed Visibility Override Volume'으로 처리했습니다.-_-;;;;;;
(즉, 'Epic Citadel'은 가시성 정보를 모두 수동으로 입력했다는 얘기입니다.T_T)
요약하면,
unreal engine으로 만든 '보기 좋은 결과물'들은
'unreal engine이 기적이나 환상을 만드는 3D engine'이라서가 아니라..^^;;;;;;;;;;
개발자의 '노력'과 '정성'의 산물이라는 점을 기억하셨으면 합니다.^^
Tag:
안기훈, Kee Hoon Ahn, 언리얼, Unreal, UDK, iPhone, iPad, app, 앱, iOS
댓글 : 0 개
user error : Error. B.