블로그 이미지
˙Jisoo

카테고리

분류 전체보기 (98)
Programming (35)
Game Project (23)
Almighty Engine (8)
Daily Life (19)
Photo Shots (11)
Total22,054
Today42
Yesterday77

'2009/12'에 해당되는 글 4건

  1. 2009/12/31 Terrain LOD 작업중..
  2. 2009/12/28 카메라 기변
  3. 2009/12/26 Per-Pixel Point Light
  4. 2009/12/26 클라이언트 윈도우 영역 크기를 정확히 맞추기 (2)

LOD를 하기위해 이미 버텍스들이 꽉 차 있는 지형정보를 어떻게 바꿔야 할까 고민하고 있었는데 해골책을 보니 해결책을 찾은 것 같습니다.
그동안 LOD를 적용시키기 위해 버텍스값을 바꾸는건줄 알았는데 해골책에 Frustum culling 에서 인덱스버퍼를 바꿔주며 렌더링 하는 것을 보고 LOD도 인덱스버퍼를 바꾸는걸로 해봤더니 간단히 적용이 되었습니다.. ㅋ_ㅋ


눈으로 직접 볼때 까지도 LOD의 중요성을 크게 못느꼈는데 찍히는 삼각형의 갯수를 확인해보고 LOD의 중요성을 다시한번 깨닫게 되었습니다. -_-;;
가장 위 부터 오리지날 지형과 각각 2,4,8,16 단계로 쪼갠 지형입니다.
한 단계가 올라갈수록 그려지는 삼각형의 갯수가 1/4 만큼 줄어듭니다.
다음은 쿼드트리를 이용해서 지형을 나눠주고 거리에 따라서 LOD값을 적용시켜주면 되겠지요.

'Programming > DirectX' 카테고리의 다른 글

Terrain System LOD 추가  (0) 2010/01/03
Terrain System 에 Frustum Culling 적용!  (2) 2010/01/01
Terrain LOD 작업중..  (0) 2009/12/31
D3DXCreateTextureFromFileEx()  (4) 2009/11/30
Parallax Mapping (시차 맵핑) 의 위엄  (2) 2009/11/21
BeginPass() / EndPass()  (2) 2009/11/20
Posted by ˙Jisoo

댓글을 달아 주세요

카메라 기변

Daily Life / 2009/12/28 23:14
Panasonic | DMC-FX01 | 1/4sec | F/2.8 | 4.6mm | ISO-80
Panasonic | DMC-FX01 | 1/4sec | F/2.8 | 4.6mm | ISO-80
Panasonic | DMC-FX01 | 1/4sec | F/2.8 | 4.6mm | ISO-80


기변 타이밍을 노리다 결국 500D로 기변하였습니다...
3개월 사용에 980컷이라는 거의 사용도 안한걸 다른 중고시세보다 낮게 가져와서 좋네요 *-_-*
내일 스키장갔다가 이제 다시 버닝!!
Posted by ˙Jisoo

댓글을 달아 주세요



PointLight을 픽셀단위로 처리하였습니다.
이론적으로는 별로 어렵지 않은데 아직도 헷갈리는 clamp 함수..
언제 한번 쉐이더 함수들 공부를 다시 해야겠습니다..

실시간으로 처리를 하기 때문에 라이트 갯수가 많아지면 과부화가 심해질 것 같습니다.
실무에서는 여러개의 라이트 갯수를 어떻게 처리하는지 궁금하네요.
대충 생각해보면 정적인 라이트들은 로딩할때 라이트맵으로 만들어놓고 동적인 라이트들만 최소한의 갯수로 실시간 처리를 하려나..

'Programming > Shader' 카테고리의 다른 글

Screen-Space Alpha Mask 따라하기  (0) 2010/05/20
Per-Pixel Point Light  (0) 2009/12/26
Posted by ˙Jisoo

댓글을 달아 주세요

API에서 CreateWindow() 를 이용하여 새 윈도우를 생성할때 집어넣는 윈도우의 가로/세로 사이즈는 클라이언트 크기와 다릅니다.
dwStyle 을 WS_POPUP 으로 설정 해 놓으면 문제 없겠지만 일반적으로는 WS_CAPTION,WS_MINIMIZEBOX 등의 플래그를 넣어주는데 이렇게 되면 클라이언트 윈도우의 실제 영역은 ( 가로세로 크기 - 타이틀바 크기, 시스템메뉴 크기 ) 등이 됩니다.

큰 차이는 아니지만 예를 들어 1024 x 768 의 해상도를 기준으로 프로젝트를 진행하면 모든 그래픽 자원들도 이에 베이스를 두어 진행하게 되는데
이때 클라이언트 영역과 사이즈가 틀어진다면 끝부분이 잘려보이는 현상이 생기겠지요.

우리는 이 문제점을 AdjustWindowRect() 를 통해 해결할 수 있습니다.
AdjustWindowRect(__inout LPRECT lpRect, __in DWORD dwStyle, __in BOOL bMenu);
lpRect 부분에는 out 용 RECT 를 지정해 주고, dwStyle 에는 CreateWindow에서 생성한 dw플래그 값들을 넣어줍니다. bMenu 는 시스템 메뉴를 사용중인지 여부를 묻는 것 입니다.

주의할 점은 AdjustWindowRect() 는 우측부분, 아래부분만을 늘려주는 것이 아닌, 상/하/좌/우 늘리는 것을 기준으로하기 때문에 left/top 에 있는 차이값을 right/bottom 에 각각 더해주시면 됩니다.

rcWindow 에 { 0, 0, 1024 , 768 } 값이 지정되어 있다고 하면
AdjustWindowRect를 호출했을 시
rcWindow 의 값은 { -3, -29, 1027, 771 } 식으로 변형이 됩니다.

문제는 AdjustWindowRect가 모든테마/모든윈도우에서 제대로 작동하는지 모르겠네요. XP/기본테마 상태에서만 테스트를 해봤기때문에..

'Programming > API' 카테고리의 다른 글

클라이언트 윈도우 영역 크기를 정확히 맞추기  (2) 2009/12/26
Posted by ˙Jisoo

댓글을 달아 주세요

  1. 2010/04/30 13:48 날자고도  댓글주소  수정/삭제  댓글쓰기

    윈7에서 해봤는데, 잘됩니다

    • 2010/04/30 14:37 ˙Jisoo  댓글주소  수정/삭제

      앗.. 글을 쓴지 좀 된 지금까지도 윈7에서 테스트를 해보질 못해서 궁금했는데 답변 감사합니다! ^^

최근에 달린 댓글

최근에 받은 트랙백

글 보관함