dx11프로젝트 – 테셀레이션(Curved PN Triangles)

만들어둔 모델을 가지고 부드럽게 보이려면 어떻게 해야되나..라고 생각해서 베지어함수를 쓰면 될까 했는데 삼각형 리스트로 만들어둔 모델에 적용하기는 무리. 샘 플을 찾아보니 Curved PN Triangles이라는 기법에 대한 샘플이 있다. pdf문서를 읽어봤는데 일단 제대로 이해하지는 못했다. 코드로 만들어놓고 고치다보면 이해가 되겠지…라는 생각으로 일단 코드만 뜯어서 dx11엔진에다 집어넣었다. 일단 효과는 확실한데 노말맵을 병행해야 그럴싸한 결과물을 얻을 수 있을것 … More dx11프로젝트 – 테셀레이션(Curved PN Triangles)

dx11프로젝트 – 테셀레이션

DX샘플을 참고해서 일단 테셀레이션 기능을 끼워넣었다. 컨트롤포인트를 다루는 방법이 상당히 여러가지 있을것 같은데 현재까지는 Normal Map과 Height Map을 이용해서 조정하는거 외엔 모르겠다. 캐릭터를 매끈하게 뽑고 싶다면 Normal Map,Height Map을 사용하는 것보다는 컨트롤 포인트에서 베지어함수를 쓸 수 있어야 할것 같은데 아직 방법을 모른다. 좀 더 연구해봐야지. 하여간 기본적인 구현은 했다.

dx11엔진 프로젝트 – 렌더타겟으로 그림자처리 & 툰쉐이딩(외곽선제외)

영 진도가 안나갔었는데 그래픽 카드를 바꾸고 나니 의욕이 좀 생겼다. 툰테이블 텍스쳐를 이용한 툰쉐이딩과 버텍스별 라이팅 처리를 끝냈다. 렌더텍스쳐 클래스도 제대로 구현해놨다. 렌더텍스쳐와 LiPSM을 이용해서 캐릭터 그림자를 구현했다. 이 와중에 갖가지 문제들을 해결하고 코드를 정리했다. 생각보다 오래 걸렸다. 렌더텍스쳐 코드를 완료한 시점에서 그림자 처리는 반나절이면 될거라고 생각했는데 사소한 문제들을 잡느라 결국 밤샜다. 기본 기능은 대충 … More dx11엔진 프로젝트 – 렌더타겟으로 그림자처리 & 툰쉐이딩(외곽선제외)

dx11 엔진 프로젝트 – 현재까지 진척상황

게임을 플레이하기 위한 기본 기능들은 대충 구현했다. 실시간 라이팅,그림자 처리는 전혀 되어있지 않다. 렌더타겟도 구현되어있지 않으므로 포스트이펙트는 물론 물효과 등도 전혀 사용할 수 없다. HW오클루젼 컬링도 구현되어있지 않아서 DX9버젼에 비해서 더 느리다. 하여간 게임을 돌릴 수 있는 정도의 프레임워크를 만들어놨다는걸로 일단 만족. 차차 개선시켜나가자. 위쪽이 DX9버젼, 아래가 DX11버젼. DX9 DX11

dx11 – 폰트와 스프라이트 처리

예전 d3d9 엔진에선 텍스쳐 캐싱을 이용해서 꽤 고속으로 폰트를 렌더링  했었다. D3DXFONT보다 10배쯤은 빨랐다. 감히 생각건데 남들보다 꽤 잘 만들었다고 생각한다. 나중에는 클리어타입폰트에 대한 처리,그림자기능,외곽선 기능까지 추가해서 요즘 시대에도 뒤지지 않게 만들었었다. 이걸 이번에 D3D11에서 구현하려니 문제가 있었다. 리소스로부터 읽기가 가능한 타입은 STAGING타입뿐이다. 그런데 STAGING타입은 쉐이더에 리소스로 지정할 수 없다. 뭐 된다고 해도 그런식으로 하면 속도가 … More dx11 – 폰트와 스프라이트 처리

dx11 포팅 프로젝트 – uv애니, 빌보드 오브젝트, 알파처리

어제 아침부터 오후까지 코드를 짜서 uv애니를 처리하고 나서 빌보드 오브젝트를 처리했다. 모자란 잠을 보충하고 장보러 나갔다 들어와서 새벽부터 운동 시작. 새벽 5시경까지 발차기1000번 푸쉬업 1000번의 기본 수련을 완료. 그대로 잘까 하다가 잠도 안오고 해서 알파블랜딩 코드까지 완성지으려고 PC앞에 앉았다. 몇 줄 코딩이면 충분할줄 알았는데..이런 시봉. 결국 밤샜다. 아무리 해도 텍스쳐의 알파성분이 1로만 나왔다. 블랜딩 상태 … More dx11 포팅 프로젝트 – uv애니, 빌보드 오브젝트, 알파처리

dx11 필드처리-(타일텍스쳐*알파맵*라이트맵)

오전에 5시간 정도 작업해서 필드 지오메트리쪽은 처리해놓고 퍼질러 잤다. 오후 5시쯤부터 4시간 정도 작업해서 텍스쳐링까지 일단 완료했다. hlsl코드는 몇 분만에 후딱 작성했는데 dx11의 알파블랜딩 체계를 몰라서 애먹었다. 하다보니 dx11쪽이…인터페이스 체계가 더 일관된거 같기도 하다. 아무래도 dx9는 고정파이프라인과 쉐이더 파이프라인이 공존하다보니 깔끔함과는 거리가 멀었던것 같다. uv애니 구현해놓고 코드 정리좀 한 다음 2D개체 처리로 넘어가야겠다.

dx11 필드처리(와이어프레임모드)

몇 일간 계속 퍼질러 자고 놀러다니느라 상당히 늦어졌다. 필드쪽은 예전에 작업할때도 워낙 복잡하게 짰던 부분이라 포팅이 쉽지 않기도 했다. 과거에는 인덱스 버퍼와 버텍스 버퍼의 생성을 최대한 줄이기 위해 별별 짓을 다 했다. 그 덕에 꽤 복잡한 리소스 관리체계를 갖게 되었는데, 이제 dx11버젼을 만드는 마당에 굳이 그런 기능들은 필요없을것 같다. 드라이버도 충분히 안정적이고 비디오메모리도 충분하니까. 그래서 … More dx11 필드처리(와이어프레임모드)

dx11 라이트맵 처리

dx11의 리소스 관리 체계를 이해하지 못해서 삽질한게 30%. 사소한 코딩 실수를 눈치채지 못하고 삽질한게 50%. 귀찮아서 퍼질러졌던게 20%. 해서 라이트맵 매쉬 처리가 늦어졌다. 하여간 우여곡절 끝에 dx11버젼의 엔진에도 라이트맵 처리 코드를 집어넣었다. 적어도 그림자와 포스트 이펙트 정도까진 2월달 가기 전에 다 쑤셔넣는게 목표인데 잘 되려나… 좌측이 DX9엔진, 우측이 DX11엔진.

회사 관두고 나서 알게 된 버그 하나

전에 회사에서 ‘프로젝트 엡실론’ 알파테스트를 세번 하는 동안 유져들로부터 날라온 덤프중에 정말 죽어도 모르겠다 싶은 힙크래시 관련 덤프가 있었다. 맵 로딩중에 힙이 크래시하는 현상이었는데 186번의 주간빌드를 진행하면서 퇴사하는 그 날까지 원인을 밝히지 못했던 딱 한개의 버그였다. 3차 알파가 끝나고 한달이 지날때까지도 그 버그를 잡으려고 별 쇼를 다 했었다. Application Verifier에서 페이지힙 켜놓고 맵 체인지를 3000번씩 … More 회사 관두고 나서 알게 된 버그 하나