a16711aa372a07f43eed878a47801b6d36620eaaf7d9313200c951a0a1ddf92ece5c3cfad83e47e84e86a1e20379


a16711aa372a07f43eed878a47801b6d36620eaaf7da383205c951aba1ddf92e698728441164a863bbb3646aa730


a16711aa372a07f43eed878a47801b6d36620eaaf7da383207c151aca8d8f92e1c4e32f9cdd544eb4eb8216fb9f1


a16711aa372a07f43eed878a47801b6d36620eaaf7da383206c351aba1dff92ee635c6fb1200df5b8ba188c68211


a16711aa372a07f43eed878a47801b6d36620eaaf7da383206c951aaaec0a73002688783a8658a49ad671f0382


a16711aa372a07f43eed878a47801b6d36620eaaf7da393205c651abacd9f92edbb57ac1f065306903ba5d5bdbd5


a16711aa372a07f43eed878a47801b6d36620eaaf7da393204c251afaddaf92e84c60e09c7c25de5146874930e32


a16711aa372a07f43eed878a47801b6d36620eaaf7da393204c751a9a1d8f92ee5c1034af69c38f328eaa7afb8c1


서로 다른 바이옴에서 완전히 다른 지형함수를 이용하면서, 완벽하게 부드럽게 이어주는 방법을 떠올려냈음. 

이제 산은 험하게, 평야는 평평하게 만들 수 있음.



이게 왜 기쁘냐면, 내가 1년 전에 하던게 있음. 그때도 서로 다른 바이옴에서 다른 지형함수를 이어줬는데, 결과가 이랬음.

이 당시에는 만족했지만, 지금 와서 생각해보면 엉망임.


a16711aa372a07f43eed868a47811b6f796ba7500fcf5a5c3a2cb1c847f6937c47673433752be15df7877280a97dd2



그리고 지형의 높이가 서로 달라도 이어줄 수가 있음.

조금 많이 과장되었지만 이런식으로


a16711aa372a07f43eed878a47801b6d36620eaaf7d93f3205c151a0a0dbf92e2588dc5b71edb25b4826e159bcbf


a16711aa372a07f43eed878a47801b6d36620eaaf7d93f3205c751a9aed6f92efedd8e203a42d214464a51039991



a16711aa372a07f43eed878a47801b6d36620ea9f7d83a3207c551aba0d6f92ed01171f3b77723a652101e5498fb


a16711aa372a07f43eed878a47801b6d36620ea9f7d83a3206c251acaedcf92e5e25e5d71f988a00dc528634d65e

높이를 바이옴 생성에 이용하는게 아니라, 바이옴 생성을 먼저하고 거기에 맞춰서 높이를 설정할수가 있게 됨.

바다나 강을 원하는 위치에 원하는 경로로 설치할수가 있게 된거임.


이제 밑의 블렌딩 맵을 만들 수 있게 되었으니, 바이옴 생성을 순전히 노이즈에 기대지 않아도 됨.

내가 원하는대로 바이옴을 배치하고, 그 위에 강이나 바다 바이옴을 알고리즘 위에서 직접 배치할 수가 있게 되었음.


가장 쉬운 예로 바이옴 경계선은 전부 강이다 라는 규칙을 가지고 만들면, 

바이옴 경계선에서 강 바이옴을 넣어주고, 강 바이옴에서 높이가 낮은 지형을 배치하고, 해당 높이에 물이 오도록 만들어주면 되겠지.




구현하기 위해서는 바이옴 블렌딩 맵이라는게 필요함.

물론 그냥 노이즈로 계산해도 가능하긴 할거임. 근데 난 좀 더 바이옴 생성에 직접적인 영향을 끼치고 싶어서 이런식으로 구현했음.


이런식으로 정의된 바이옴 맵을

2fbf8168f5dc3f8650bbd58b368074657af3


이런식으로 만들어줘야 함. (윗 맵은 과거에 생성한 바이옴맵이라 살짝 다름)

2fbf8268f5dc3f8650bbd58b36877c69612e


변수를 조정해서 블렌딩 맵에서 범위를 조정해주면 이런식으로 높이가 섞이는 속도를 정해줄 수가 있음.


a16711aa372a07f43eed878a47801b6d36620ea9f7d83f3204c051a1a9d7f92e512f61e2438805c75c14d5552133

a16711aa372a07f43eed878a47801b6d36620ea9f7d83a3206c251acaedcf92e5e25e5d71f988a00dc528634d65e


하나 보너스로 얻는 이득이 있다면, 위에서 만든 블렌딩 맵을 gpu로 보내주면, 

이제 정점데이터에 추가로 아무것도 안넣어도 바이옴을 정확하게 gpu가 알아낼 수 있음.





아무도 관심 없겠지만 그래도 신나서 올려봤어. 어제 하루종일 이거 생각한다고 끙끙 앓았거든.

결과가 연속적이라는 증거를 찾아야 해서 힘들었어. 


쉬어야 하는데 머릿속에 있는것 때문에 쉴수가 없어.

오늘 새벽에 일어나는데 과장없이 평소의 3배정도 피곤하더라. 조만간 쓰러질지도 몰라.