영상은 y좌표 -3600까지 내려가는영상


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec86fa11d0283110260b998d7cfa8997b92765228f1b721551259e1e617a9bd58a6e05bb6f1b60276208b41d7c01b6f94e7d4d1ba96118b5383e

놓치고 있던 부분을 발견했다.

청크의 메쉬를 만들기 위해 모든 청크매니저의 리스트에 

        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좌표를 정육면체와 동일하게 적용시켜줘서 텍스쳐가 뭉개졌었음

이런식으로

viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec86fa11d0283110260b998d7cfa8997b92765228c1b7221bda7c78dcb0ee3c159853a760abd6f7dd74427ae2bdd87ab68f0814a2090780eea74



그래서 변형되는 버텍스 좌표에 맞춰서 uv도 잘라줬음.


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec86fa11d0283110260b998d7cfa8997b92765228c1b7221bda7c78dcb0ee3c159853a760abd6f7dd74427ae2bdd87a761a1831f77977824226e


끊기긴 하지만 이런식으로 무늬가 있는 텍스쳐를 입힐거면 이게 최선인듯. 아예 모든 경우별로 별개의 텍스쳐를 준비할 수는 없잖아



멋져보여서 와이어프레임 쉐이더 기능도 추가해봤음


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec86fa11d0283110260b998d7cfa8997b92765228c1b7221bda7c78dcb0ee3850cd053700dbe699ee5bc0d7aa884b88cb5d4dd46a949


그리디 메쉬

viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec86fa11d0283110260b998d7cfa8997b92765228c1b7221bda7c78dcb0ee3850cd053700dbe699ee5bc0f7cf986ef8ebdd0dd46a949






그리고 답을 찾지 못한 문제


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec86fa11d0283110260b998d7cfa8997b92765228c1b7221bda7c78dcb0ee3c159853a760abd6f7dd74427ae2bdd86fb69a6d14f7fcc78ed81f9


이런 안개를 추가하려고 엄청 이것저것 알아봤는데 도저히 안나와서 쉐이더 공부하러 갈거임


유니티에서 기본으로 제공하는 fog는 단일색상으로 멀리있는 블록에 덧입히는 방식이라 스카이박스의 색과 일치시켜야 하고(사실 일치시켜도 어색함)

결정적으로 Transparent쉐이더가 사용된 모든 물체에 적용이 안됨.


내 생각에는 내가 블록쉐이더, 물 쉐이더를 사용한다 했을 때,

각각의 쉐이더 안에서 플레이어와의 거리와 비교해서 일정거리 이상 떨어질 때 스카이박스의 색을 입혀야 할 것 같음


근데 쉐이더 문법을 몰라서 해메다가 그냥 이건 쉐이더를 공부하고 다시 하기로 함


아니 진짜 어떻게 이렇게까지 정보가 없을수가 있지? 진짜 진짜 답답해 죽는줄 

복셀 영상들 보면 다들 아무렇지도 않게 이런 기능 사용하던데 자괴감이 밀려오더라