영상은 y좌표 -3600까지 내려가는영상
놓치고 있던 부분을 발견했다.
청크의 메쉬를 만들기 위해 모든 청크매니저의 리스트에
vertices.Capacity = 1500;
uv.Capacity = 1500;
uv2.Capacity = 1500;
triangles.Capacity = 2000;
waterVertices.Capacity = 1000;
waterTriangles.Capacity = 1500;
waterUv.Capacity = 1000;
이런걸 해놨음.
대충 0.1메가바이트임.
청크를 9000개 로드하고 있으면, 900메가바이트겠지. 이게 메쉬에 들어가는 데이터의 양임.
그런데, 이 리스트를 메쉬와 별개로 각 청크마다 가지고 있으니깐, 900메가바이트를 한번 더 소모하겠지.
이를 해결하기 위해서 리스트 역시 풀링을 시킬 계획임.
청크를 처음 로드하는 순간 가져오고, 로드가 끝난 후 반환해주는 식으로.
한번에 메쉬 업데이트가 400개 일어나기 때문에 리스트는 400개? 600개? 정도면 충분하기 때문임.
지금까지 괜히 9000개씩이나 가지고 있었던거임.
그동안 뭐했냐면
엄청 많던 버그를 다 해결했음
간헐적으로 프레임이 뚝 떨어지던(가비지 콜렉터로 추측) 문제 거의 다 해결했음
마인크래프트의 텍스쳐 몇개를 입혀봤음
region이 로드되지 않았을때, 플레이어가 계속 움직여도 오류가 안나고, 결국에는 다 로드된 후, 청크까지 로드되도록 함
가장 기억에 남는 버그가 뭐였냐면
난 블록의 버텍스를 변형시켜주는데, uv좌표를 정육면체와 동일하게 적용시켜줘서 텍스쳐가 뭉개졌었음
이런식으로
그래서 변형되는 버텍스 좌표에 맞춰서 uv도 잘라줬음.
끊기긴 하지만 이런식으로 무늬가 있는 텍스쳐를 입힐거면 이게 최선인듯. 아예 모든 경우별로 별개의 텍스쳐를 준비할 수는 없잖아
멋져보여서 와이어프레임 쉐이더 기능도 추가해봤음
그리디 메쉬
그리고 답을 찾지 못한 문제
이런 안개를 추가하려고 엄청 이것저것 알아봤는데 도저히 안나와서 쉐이더 공부하러 갈거임
유니티에서 기본으로 제공하는 fog는 단일색상으로 멀리있는 블록에 덧입히는 방식이라 스카이박스의 색과 일치시켜야 하고(사실 일치시켜도 어색함)
결정적으로 Transparent쉐이더가 사용된 모든 물체에 적용이 안됨.
내 생각에는 내가 블록쉐이더, 물 쉐이더를 사용한다 했을 때,
각각의 쉐이더 안에서 플레이어와의 거리와 비교해서 일정거리 이상 떨어질 때 스카이박스의 색을 입혀야 할 것 같음
근데 쉐이더 문법을 몰라서 해메다가 그냥 이건 쉐이더를 공부하고 다시 하기로 함
아니 진짜 어떻게 이렇게까지 정보가 없을수가 있지? 진짜 진짜 답답해 죽는줄
복셀 영상들 보면 다들 아무렇지도 않게 이런 기능 사용하던데 자괴감이 밀려오더라
스케일 지리노
고수추
내 생각에 안개는 그냥 어느 거리 이상의 엔티티를 렌더링 안하면 되지 않을까하는데
렌더링 안하는게 아니라 스카이박스 색으로 페이드아웃 되어야 자연스러워 보임 청크 단위로 맵을 로드해서 애초에 일정거리 밖의 청크는 지금도 로드를 안함. 렌더링도 안하고 청크가 로드되지 않은 부분을 숨겨주고 싶어서 끝부분을 안개처럼 페이드아웃 시켜주려고
개추