Direct3D 지형시스템 만들기 : 멀티텍스쳐링 + 안개
Programming/DirectX / 2009/07/25 20:45
이번에는 멀티텍스쳐링과 안개 기능을 넣었습니다.
처음에 멀티텍스쳐링이 안되서 고생을 했는데 알고보니 멀티텍스쳐의 레이어의 개수만큼 지형을 렌더링해줘야되더라구요.
뭐가 잘못되서 그렇게 되는건지 원래 그런건지는 잘 모르겠지만 원래 이런거라면 쓸데없는 연산이 너무 많아져서 나중에 손을 봐야겠네요..
이런 쓸데없는 연산낭비를 해결하기위해 보통 쉐이더로 텍스쳐스플래팅을 구현하는 것 같습니다.
나중에 LOD 구현을 할때도 쉐이더가 필수적이라 LOD 작업 할 때 쉐이더를 적용 할 예정입니다.
LOD가 적용될 때 버텍스가 사라졌다 나타났다 하기때문에 uv좌표가 손실되서 쉐이더가 필수적이라고 하는 것 같습니다.
전에 올렸던 산 맵을 불러온 화면.
현재 텍스쳐들의 상황을 보자면...
모래바닥 --- BaseTexture
풀 --- Blending Texture
풀# --- Blending Texture Alpha Map
바위 --- Blending Texture
바위# --- Blending Texture Alpha Map
라이트맵 --- Light Map
이런 구조로 텍스쳐가 로드되어있고
모래바닥 (modulate) 라이트맵
지형 렌더링 // 1pass
풀 * 풀# (modulate) 라이트맵
지형 렌더링 // 2pass
바위 * 바위# (modulate) 라이트맵
지형 렌더링 // 3pass
이런 순서로 렌더링 되고 있습니다.
풀#,바위# 알파맵은 따로 그래픽툴에서 그리는 것이 아닌 자동으로 알파맵이 생성됩니다.
기준은 경사입니다.
평지와 이루는 경사가 가파른부분에 바위를 칠하고 그것보다 조금 덜 가파른곳에 풀을 칠하는 형태입니다.
아래는 풀# , 바위# 알파맵입니다.
왼쪽이 풀# 알파맵이고 오른쪽이 바위# 알파맵입니다.
검은부분은 텍스쳐가 적용되지 않고 하얀색으로 갈 수록 텍스쳐의 진하기가 강해집니다.
확인을 해보기 위해 테스트용으로 만들어놓았던 맵파일입니다...
이렇게보니 의도를 파악하기 쉽죠?
덕분에 이런 거칠은 지형도 그냥 지형맵만 만들어주면 알아서 텍스쳐 알파맵을 생성해주니 굉장히 편합니다.
텍스쳐 알파맵 자동생성은 이렇게 두세겹 적용 / 경사기반 까지만으로 해두고 다른 프로그래밍에도 좀 투자를 한 뒤 나중에 여유가 생길때 마다
여러 공식을 만들어서 자동지형생성 알고리즘을 새롭게 만들예정입니다.
풍경보는걸 좋아해서인지 다른것보다 지형에 집착이 강합니다...ㅎㅎ;
Terrain.Render(float age = 30.0f) 이런식으로 하면 지형의 30년 후 변화된 모습이 렌더링되도록 age 기반의 지형시스템을 꼭 만들고 싶습니다 @_@;
아 참... 안개기능에 대해서 안썼는데 정말 써보려고하니 쓸게없네요............;;
그냥 다렉에 기본으로 있는 기능으로 쓴거라...
다음에 쉐이더를 이용한 멋진 안개를 만들면 그때 또 써보도록 하겠습니다...!
'Programming > DirectX' 카테고리의 다른 글
| LOD 적용 (0) | 2009/07/31 |
|---|---|
| 이것저것 섞다보니.... (0) | 2009/07/28 |
| Direct3D 지형시스템 만들기 : 멀티텍스쳐링 + 안개 (0) | 2009/07/25 |
| Direct3D 지형 시스템 만들기 : 라이트맵 적용 + 버텍스 블러링 (0) | 2009/07/20 |
| Direct3D 지형시스템 라이트맵 생성 작업 (0) | 2009/07/20 |
| Direct3D 지형시스템 버텍스 노멀 계산 추가 (0) | 2009/07/18 |


댓글을 달아 주세요