7cea8477b5836ef738ec98b21fd7040380ac300ce4d4eb61fd7f


그래픽 버그는 캡콤이 고쳐도 모드로 다시 만들고 싶을 정도로 웃음벨인데 이게 사실 컴공에서 그래픽스 과제 하다보면 자주 볼 수 있는 현상임


영미권에선 이미 LOD bug라고 부르는 현상




06bb8275e8ea1faf6592ff965bde763261ced66f424bd8a2ab99e9083fc8dde75b0a9673d54152a96a80883de5d970e8d8264ae82b377ee349e1fe6445b28efe93bc478761c35e683a43c73259e88f693dda63412f118f1ba44721a71ea264d0963ead95b75c


a65614aa1f06b3679234254958db343a2c50ae84a41f94fc178265


요즘은 잘 없는데 예전에 게임 그래픽 옵션 중에 LOD 어쩌고가 이런식으로 동작함




몬헌 와일즈는 이 LOD를 너무 빡세게 걸어서 문제고 반대로는 시티즈 스카이라인2 사례가 있음


이 미친 새끼들은 이런 도시를 쳐 그려놓고 LOD를 전혀 안 걸었는데


3eaeef25e0836ef43fe682e112d0726829702b14de62f9f89fde998a30b4fe3123d3820e6f11e459647e5d262bb752d6d25be1d9da3e21d10a0dd1fa4273c68aeac0b0aa5b


저 풍경에서 조그만한 사람 1명이 1건물 만큼 리소스를 쳐먹는데, 식당으로 비유하자면 순대국밥집에서 석박지를 1국밥 가격 쳐 받고 팔았다는 거임


자세한 내용은 시티즈 스카이라인 2 최적화 문제발생의 근본적인 이유 를 보면 얼마나 최적화를 개판쳐놨는지 사례가 있는데, 이 건 또 어떻게 돌아갔냐 싶은 부분이 있다.


대충 화면에 안 보이는 것만 안 그리게 해뒀으면 버텍스(폴리곤) 안 줄여도 되겠지? 라는 방식의 최적화를 수행했음





다시 몬헌으로 돌아와서 몬헌은 화면이 휙휙 돌아가기 때문에 당장 화면에 안 보인다고 안 그려둘 수 없는 상황임


그래서 어떻게든 최대한 모든 정보를 들고 있어야 하고, 대신 이 들고 있는 정보를 최적화 하는 접근법으로 구현된건데, 여기서 동적 LOD가 버그를 발생시킴



75b9d120b7863afe3be785b64e85763cbbbfc09c99ee884b58dcfaa780d1fd4673cd44e6e09913584392e35f1ff5a1f7ab65dbb54486489f04


이상적으로는 위와 같이 자연스럽게 줄어들어야하지만



2ebcd72ff69f6ae87eb1d19528d5270334724d7b667a15

(대충 구글링해서 퍼온 LOD 어쩌고 논문 이미지)


원래 LOD 계산식이 대충 비슷하게 줄이는거라 오차가 생길 수 밖에 없음, 그리고 동적으로 줄어들게 구현하다보면 저 버텍스(꼭지점, 폴리곤)의 위치를 잘 못 계산하는 순간이 오는데


이 오차가 발생하면서 버텍스가 이상한 위치로 튀게되고 대관절 이게 무슨 일이지가 발생한다. 아마 음수로 쳐박힌게 아닐까 싶음




24b0d768efc23f8650bbd58b3680766b622d22


저 버그가 왜 유독 크게 튀어 보이냐면 그건 또 몬헌이 독특하게 만든게 있는데, 시티즈랑 정 반대로 카메라에 안 찍히는 것도 계속 들고 있기 때문임


몬헌은 카메라가 계속 빠르게 돌아가는 게임이기 때문에 리프레임워크 디버깅 모드 켜서 보면 대충 화면 뒤에 있는 것도 내 화면에 보이는 것 처럼 유지하려고 하는게 있음 (라썬브)


그 결과 라썬브도 모드 박살나면 아래와 같은 현상이 있었다


7cea8477b5806bf53ae698a518d604030e2a00b97119c283c1f5



즉 아까 봤던 시티즈랑 정 반대로, 내 화면에 없더라도 어떻게든 그래픽 메모리에 올려두려고 실제 눈에 보이는 것 보다 큼,


GPU가 자동으로 최적화 하는걸 막는 로직인데, 아마 이게 복합적으로 튀면서 잘 못 계산된 LOD가 내 화면에 없어도 눈뽕을 유발하게 됨


식당으로 비유하자면 순대국밥집에서 시키지도 않은 선지를 실수로 넣어주고 있는거임





세줄요약)


최적화

테스트

덜했내