블로그 이미지
˙Jisoo

카테고리

분류 전체보기 (98)
Programming (35)
Game Project (23)
Almighty Engine (8)
Daily Life (19)
Photo Shots (11)
Total22,055
Today43
Yesterday77
그동안 텍스쳐를 불러올 때 D3DXCreateTextureFromFile() 을 사용했는데 스프라이트 쪽에선 뭔가 효율성이 떨어지는 것 같아서 새로 만들고 있는 스프라이트 엔진은 D3DXCreateTextureFromFileEX() 를 사용하게 되었다.

D3DXCreateTextureFromFileEX() 의 파라미터값 중에서
Width , Height 부분이 있는데 D3DX_DEFAULT 를 사용하면 D3DXCreateTextureFromeFile() 처럼 그냥 기본적으로 텍스쳐의 값을 받아오는 것 같다. 하지만 D3DX_DEFAULT 대신 D3DX_DEFAULT_NONPOW2 로 지정 해 준다면 2의 승수가 아닌 텍스쳐 파일도 늘어지거나 깨지는 현상이 발생하지 않는다.
그리고 MipLevel 파라미터.
보통 NULL 로 사용하는데 이렇게 할 경우 불러와진 텍스쳐 크기를 대상으로 모든 레벨의 밉맵을 생성한다고 한다.
텍스쳐의 크기가 커지면 커질수록 밉맵이 많아 질텐데 스프라이트에 밉맵...... 필요할까?
이녀석의 값을 1 로 지정해주면 밉맵을 생성하지 않는다고 한다.
MipLevel 파라미터를 NULL 로 해주었을 경우 (모든 밉맵 자동생성)  0.0045초 의 시간이 경과하였다.
MipLevel 파라미터를 1 로 지정 해주었을 경우 (밉맵 생성하지 않음) 0.0015초 의 시간이 경과하였다.
테스트에 사용된 그림은 140 * 210 짜리 아주 작은 텍스쳐 하나다. 이 작은 텍스쳐도 3배정도의 시간이 걸리는데 해상도가 올라가면 올라갈 수록 차이는 커질 듯 싶다.

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

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
다중캐릭터  (0) 2009/08/11
Posted by ˙Jisoo

댓글을 달아 주세요

  1. 2009/12/02 13:36 온새미  댓글주소  수정/삭제  댓글쓰기

    그리고 원본 이미지 파일 크기가 640*480인데 800*600으로 불러오려고 하면 메모리상엔 800*600으로 불러오는데 시간은 더 늘어나는... 나같은 경우엔 스케일링이 귀찮아서 저렇게했는데 로딩속도가 완전 느려졌지 ㅋㅋ 그래서 그냥 원본크기대로 로딩하고 스케일링을 하는듯 ㅇ<-<

    • 2009/12/05 10:03 Jisoo  댓글주소  수정/삭제

      불러올때 늘려서 불러오는 방법도 있었군하...
      매번 스케일 맞추기 귀찮았는데 좋은데!?ㅋㅋㅋㅋㅋㅋㅋ

    • 2009/12/05 21:05 온새미  댓글주소  수정/삭제

      대신에 그렇게되면 자동으로 밉맵을 생성하는듯하니까 로딩속도가 더 느려지더라고 ㅋㅋ

    • 2009/12/10 05:28 Jisoo  댓글주소  수정/삭제

      매번 스케일버ㅏ꾸기 귀찮은 UI 들만 해주면 괜찮을거같기두한데..
      상황에 맞춰 쓰는게 중요한데 여러가지 상황에 맞게 쓸려니 생각할게 많아지는군 ㅠ_ㅠ







시차맵핑만 들어간 상태면 빛의 변화가 크지 않는 한 잘 구분이 되질 않는데

(시차맵핑이 들어간건지 아님 원래 텍스쳐에 그런 음영이 있는건지 잘 모르죠..)
이렇게 스펙큘러 값을 넣어주면 카메라의 움직임에 따라 입체적으로 보이게 됩니다.
물론 실제로 튀어나오고 들어간건 아닙니다. 착시현상을 이용한 기법입니다.
현재 Diffuse 텍스쳐의 좌표를 받아와서 노멀맵 텍스쳐와 높이맵 텍스쳐 그리고 빛의 방향과의
관계에 따라
텍스쳐의 좌표를 조금씩 이동시켜줍니다.
그렇기 때문에 비스듯한 각도에서 보면 그럴싸 하게 울퉁불퉁 해 지지만 수평으로 바라보면 그냥 평면상태입니다.
실제로 버텍스값을 바꾸는 게 아닌 착시현상을 이용한 방법이라 어쩔수 없는 방법이랄까요,
하지만 점점 하드웨어가 발달해 감에 따라 DX11에선 실제로 버텍스값을 바꿔버리는 테셀레이션 기술을 선보였습니다. (전전 포스트 참조)









네. 이게 바로 구글에 있던 오바마 그림입니다 -_-;;
시차맵핑을 좀 더 자세히 보여드리고자 특별히 높은 해상도의 텍스쳐를 사용했습니다.
이것이 가장 베이스가 되는 텍스쳐입니다. 보통 Diffuse Texture 라고 하네요



이건 Heightmap Texture 입니다.
실제 게임을 만드는 회사에선 자금 여유가 된다면 이런것도 정교하게 처리 해 주겠죠
하지만 저는 그냥 흑백으로 바꿔줍니다 ㅋㅋ




위의 HeightMap 을 토대로 이런식으로 NormalMap Texture 가 나오게 됩니다.
괴상하게 생겼지요. 그냥 일반 Height Map에는 높이값이 0~255로 들어가게 되는데 노멀맵의 경우에는 말그대로 노멀 값이 들어가게 됩니다.
노멀맵이 어떤식으로 저장되는지는 모르겠는데 프로그래밍 상에서
3차원벡터값으로 있는걸 r,g,b에 대입해서 사용하는 것 같네요..





오바마의 얼굴 / 옆에 내리는 비 부분을 유심히 봅시다.





쉐이더 계산들에 다른값을 넘겨주면서 계산을 하니 이런 문제점도 생겼습니다.
경계면이 너무 뚜렷하게 구분되서 오히려 더 어색해졌네요..
대체 왜 이런걸까 고민하다가 다른 모델 파일을 불러와서 테스트 해 봤더니 정상적으로 나오는걸 보면
각도가 급격히 변화하는 부분에서 탄젠트값이 비정상적으로 들어가 있는 것 같습니다.





다른 모델 파일에 같은 쉐이더가 적용 된 모습입니다.
어느부분에도 아까와 같은 이상현상은 일어나지 않았습니다.

알록달록 한건 스펙큘러값이 엉뚱한 텍스쳐에 들어가 있기 때문에 그런거고요..



이 화면을 보고 있자니 어째 생각나는게 ...



ㅡ.ㅡ;;;

'Game Project > PairPlay' 카테고리의 다른 글

PairPlay Parallax bump mapping 적용  (2) 2009/11/22
PairPlay 쉐이더 적용 영상  (0) 2009/11/21
Pair Play 2차 테스트판 릴리즈  (2) 2009/11/16
Pair Play 1차 테스트판 릴리즈  (2) 2009/11/15
Pair Play 기능 추가  (2) 2009/11/04
Pair Play 개발 진행률  (0) 2009/11/02
Posted by ˙Jisoo

댓글을 달아 주세요

  1. 2009/11/22 19:07 온새미  댓글주소  수정/삭제  댓글쓰기

    것보단 난 무서웠어 ㅠㅠ..ㅋㅋ



저번 2차 배포버전 이후로는 그래픽쪽만 손대고 있습니다.
버텍스쉐이더/픽셀쉐이더 모두 1.1 로 처리 가능한 것들인데 컴파일이 안되서 2.0 으로 하였습니다.
따라서 버텍스/픽셀 쉐이더 2.0 이상 지원이 되는 VGA카드에서 정상작동됩니다.
일단 라이트 계산을 D3DX에서 제공해 주던 라이트를 끄고 쉐이더쪽에서 노멀로 계산하도록 해놓고, 광이 나도록 Phong 반사 계산을 추가하였습니다.
블럭들의 폴리곤수가 적은편이라 픽셀 단위로 계산 해 주었습니다.
그리고 그냥 Phong 반사 공식대로 집어넣으면 현재 게임상에서 라이트가 Directional Light 로 되어있어서 모든블럭의 반사가 똑같이 나와서 단조로운 면이 있기에 그 부분도 약간 수정을 해 주었습니다.
라이트는 그대로 Directional Light 인데 ViewMatrix와 WorldMatrix를 이용해서 Spot Light 처럼 보이게 한 눈속임 방식이라 카메라의 포지션이 아닌 보는 방향이 변해도 빛의 계산이 조금씩 달라집니다.

'Game Project > PairPlay' 카테고리의 다른 글

PairPlay Parallax bump mapping 적용  (2) 2009/11/22
PairPlay 쉐이더 적용 영상  (0) 2009/11/21
Pair Play 2차 테스트판 릴리즈  (2) 2009/11/16
Pair Play 1차 테스트판 릴리즈  (2) 2009/11/15
Pair Play 기능 추가  (2) 2009/11/04
Pair Play 개발 진행률  (0) 2009/11/02
Posted by ˙Jisoo

댓글을 달아 주세요



왼쪽부터 그냥 diffuse맵 / 노멀맵 적용 / 시차맵 적용 / Steep 시차맵 적용
그냥 Parralx Mapping 만 해도 상당한데 Steep Parallax Mapping 은 완전 모델링을 해 놓은 것 같다..
이걸 보면서 느낀점은 Steep Parallax Mapping를 고안 해 낸 것도 대단하지만 DX11의 Tessellation 기술이 참  =_=
물론 테셀레이션은 실제로 폴리곤수를 조절하기에 시차맵핑은 구현기술 자체가 다르지만..
난 이제야 노멀맵핑 하는 수준인데 언제 따라잡을까...?


덤으로 DX11의 Tessellation 기능!



테셀레이션 OFF


테셀레이션 ON

계단을 따로 모델링 하지 않아도 될 정도..?

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

Terrain LOD 작업중..  (0) 2009/12/31
D3DXCreateTextureFromFileEx()  (4) 2009/11/30
Parallax Mapping (시차 맵핑) 의 위엄  (2) 2009/11/21
BeginPass() / EndPass()  (2) 2009/11/20
다중캐릭터  (0) 2009/08/11
Mesh Hierarchy Animation  (0) 2009/08/09
Posted by ˙Jisoo

댓글을 달아 주세요

  1. 2009/11/21 14:15 온새미  댓글주소  수정/삭제  댓글쓰기

    으잌 아 쩌는거같아 정말 ㅇㅈㄴ...

쉐이더 적용으로 한층 더 밝아진 블럭들!


이번에 프로그램을 쉐이더 기반으로 바꾸면서 참 이상한 곳에서 헤메고 있다.
일단 램버트비어법칙을 적용 한 간단한 조명 처리는 하였으나 몇가지 문제점이 발생했었다.
쉐이더 코드중 픽셀쉐이더 부분에서 출력 해 주는 부분은

return In.Color * 1.2f ;

으로 되어 있었는데 이렇게 놔두면 텍스쳐가 있어야 할 부분에 텍스쳐가 출력되질 않는다.
그래서 텍스쳐와 조명값을 같이 전달해 주도록 해 주었다. (곱센연산)

return tex2D(newSampler,In.Tex) * (In.Color * 1.2f) ;

이렇게 하면 또 문제점이 텍스쳐 부분은 정상적으로 나오지만 텍스쳐가 없는 부분은 텍스쳐의 값이 없기에 검은색으로 나왔다..
그래서 덧셈 연삼으로 바꾸어 보았다..............

return tex2D(newSampler,In.Tex) + (In.Color * 1.2f) ;

그럴싸 하게 나오는 것 같지만 역시나 텍스쳐 부분은 너무 밝아서 이건 안되겠다 싶었다.

이런 이유로 쉐이더 속에 플래그를 하나 설정해주고 텍스쳐 부분일 경우에는
return tex2D(newSampler,In.Tex) * (In.Color * 1.2f) ;
를 리턴 해주고 텍스쳐가 없는 부분일 경우에는
return In.Color * 1.2f ;
로 리턴을 해주도록 했다.

쉐이더 코드 쪽에는 문제가 없는데 이제 다시 렌더링을 처리하는 부분에서 문제가 생겼다.
바로 BeginPass() 와 EndPass() ...........
문법이 바뀐지 얼마 안된건지, 쉐이더 책들에는 BeginPass()와 EndPass()가 아닌 그냥 Pass() 로 나와있었다.
그냥 시작하는 부분에 BeginPass() EndPass() 였으면 얼마나 좋았을까..
하지만 이 녀석 속에서 쉐이더쪽으로 값을 전달해 주는거랑 밖에서 값을 전달해 주는 거랑 결과가 달랐다.
BeginPass() EndPass() 속에서 선언을 해야 할 때가 있고 밖에서 선언을 해야 할 때가 있는지..
BeginPass() EndPass() 속에서 텍스쳐값을 전달 해 주면 엉뚱한 텍스쳐값이 넘어가 버렸다. 게다가 주변의 환경에 따라 자꾸 텍스쳐들이 변경되어서 참 난감했다..
우선 텍스쳐값을 BeginPass() EndPass() 밖에서 전달 해 준걸로 해결은 했는데 확실히 알질 못해서 해결을 했는데도 아직도 머리만 아프다.

그리고 BeginPass 사이에서 값들을 전달해주면 정상적으로 변경이 되지 않고 마지막으로 전달해 준 값만 적용 되는 듯 싶었다.
플래그 값이 마지막으로 설정 해 준 값으로만 고정되어 있었다.
그래서 BeginPass() EndPass() 를 메쉬 부분마다 따로 지정해줬다.

pEffect -> SetTexture("Tex",텍스쳐);
pEffect -> SetBool("isTexture",true);      // 플래그 값변경도 BeginPass 아래서 하니 제대로 적용이 되질 않았다
pEffect -> BeginPass(0);
pMesh -> DrawSubset(0);
pEffect -> EndPass();

pEffect -> SetBool("isTexture",false);
pEffect -> BeginPass(0);
pMesh -> DrawSubset(1);
pEffect -> EndPass();

아예 이런식으로..
해결은 했으나 더욱 더 미궁속으로 빠져든다 ㅠ_ㅠ

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

D3DXCreateTextureFromFileEx()  (4) 2009/11/30
Parallax Mapping (시차 맵핑) 의 위엄  (2) 2009/11/21
BeginPass() / EndPass()  (2) 2009/11/20
다중캐릭터  (0) 2009/08/11
Mesh Hierarchy Animation  (0) 2009/08/09
LOD 적용  (4) 2009/07/31
Posted by ˙Jisoo

댓글을 달아 주세요

  1. 2009/11/21 01:40 온새미  댓글주소  수정/삭제  댓글쓰기

    셰이더를 공부해야하지만 그전에 3D부터...ㅋ

 

Pair Play 의 2차 테스트버전을 공개합니다.
게임 플레이 부분에선 바로 전 버전과 별 차이는 없으며 배경음과 효과음이 추가되었습니다. (용량이 약간 더 커졌습니다..)
파일 올릴데가 마땅치가 않네요 10MB를 넘겨서 블로그는 첨부가 안되고..음..........


마음에 드는 곳 한군데서만 받으세요!
PairPlay #다운로드1 (ideebee)
PairPlay #다운로드2 (RapidShare)
PairPlay #다운로드3 (file dropper)
PairPlay #다운로드4 (go2upload)
PairPlay #다운로드5 (media fire)

'Game Project > PairPlay' 카테고리의 다른 글

PairPlay Parallax bump mapping 적용  (2) 2009/11/22
PairPlay 쉐이더 적용 영상  (0) 2009/11/21
Pair Play 2차 테스트판 릴리즈  (2) 2009/11/16
Pair Play 1차 테스트판 릴리즈  (2) 2009/11/15
Pair Play 기능 추가  (2) 2009/11/04
Pair Play 개발 진행률  (0) 2009/11/02
Posted by ˙Jisoo

댓글을 달아 주세요

  1. 2009/11/16 17:08 온새미  댓글주소  수정/삭제  댓글쓰기

    ㅎㅎ 컴퓨터를 계속 켜놓는다면 배리즈 웹쉐어로 직접 다운로드 서버를 만들어보는건 어떠니?ㅋㅋ 나도 그렇게 하려고 했는데 게임을 접어버려서 ㅠㅠ...

    • 2009/11/17 16:41 Jisoo  댓글주소  수정/삭제

      내컴으로 직접 공유하면 편하긴 한데 블룸필드의 미칠듯한 전기세 ㄸㅐ문에................









Pair Play (페어플레이) 1차 테스트버전을 공개합니다.
아직 소리도 안나고 버그도 많아 많이 모자르지만 슬슬 여러 시스템에서 테스트를 해 보고 발견되는 버그들을 수정해야 할 때가 되었다고 생각하여 급히 전체적인 틀을 짜고 공개를 하게 되었습니다.
이곳을 직접 통해서 알게되신 분은 얼마 없으시겠지만.. 지나가다 라도 한번씩 받으셔서 실행여부 등 짧게 남겨주고 가셨으면 좋겠네요..ㅎㅎ

실행환경 / 실행여부 와 CREDIT의 Thanks for playing 부분에 기록될  닉네임과 한마디(내용무관) 을 적어주시면 되겠습니다!

다른 게임을 또 기획중인데 언제가 될진 모르겠지만 기대 해 주세요! ㅎㅎ 페어플레이 업데이트 역시 소홀히 하지 않겠습니다.


'Game Project > PairPlay' 카테고리의 다른 글

PairPlay 쉐이더 적용 영상  (0) 2009/11/21
Pair Play 2차 테스트판 릴리즈  (2) 2009/11/16
Pair Play 1차 테스트판 릴리즈  (2) 2009/11/15
Pair Play 기능 추가  (2) 2009/11/04
Pair Play 개발 진행률  (0) 2009/11/02
최근 만들고 있는 녀석입니다..  (0) 2009/11/01
Posted by ˙Jisoo

댓글을 달아 주세요

  1. 2009/11/16 13:58 온새미  댓글주소  수정/삭제  댓글쓰기

    우왕ㅋ굳ㅋ 나에게도 3D하는법을 ㅠㅠ...



슬슬 게임적 요소들을 추가 하고 있습니다.
저번과 달라진점은..
LOD를 추가하였습니다. 카메라에서 멀어지면 그냥 육면체로 출력하도록 하였습니다. (원래는 챔버박스..)
그런데 과부화 테스트(100 * 100 개 렌더링)를 해보니 그닥 성능적으로 차이가 나질 않네요 ㅠ.ㅠ
그리고 경로 표시기능이 추가되었습니다.
블럭이 제거 될 때 검색된 경로를 표시해줍니다. 전에는 이 기능이 없어서 뭔가 허전했지요..
하지만 아직도 뭔가 허전합니다. 제거 될 때 검색 경로 표시 뿐만 아니라 뭔가 이펙트를 넣어줘야 할 것 같습니다.
점수 계산은 기본 제거 점수로 5점이 들어가고 콤보에 따라서 훨씬 많은 점수 획득이 가능하도록 하였습니다.
아직 인터페이스를 전혀 만들어놓질 않아서 글씨만 나오니 초라해보이네요 ㅋㅋ
어서 게임적인 부분 완성하고 인터페이스 작업도 해야겠습니다..

'Game Project > PairPlay' 카테고리의 다른 글

PairPlay 쉐이더 적용 영상  (0) 2009/11/21
Pair Play 2차 테스트판 릴리즈  (2) 2009/11/16
Pair Play 1차 테스트판 릴리즈  (2) 2009/11/15
Pair Play 기능 추가  (2) 2009/11/04
Pair Play 개발 진행률  (0) 2009/11/02
최근 만들고 있는 녀석입니다..  (0) 2009/11/01
Posted by ˙Jisoo

댓글을 달아 주세요

  1. 2009/11/04 19:34 온새미  댓글주소  수정/삭제  댓글쓰기

    오... 마작?ㅋㅋ
    잘만들었다... 난 3D언제하지...ㅇ<-<
    어디서 그런걸 배우나여 으헣헣



일단 게임 제목은 Pair Play (Fair play 가 아닙니다..ㅋㅋ) 로 정하였고 이제 스테이지별로 크기와 난이도(패의종류 수)만 지정하면 자동으로 생성되는 함수도 넣어놓았습니다.
시험끝나고 빨리빨리 진행좀 할려나 했더니 하필 조별과제에 조장까지 하는 바람에 또 더뎌지겠네요 ㅠ_ㅠ
그래도 간단한 작업들인만큼 주말마다 짬을내서 어서 게임다운 모습을 갖추어야 겠습니다 ㅎㅎ

'Game Project > PairPlay' 카테고리의 다른 글

PairPlay 쉐이더 적용 영상  (0) 2009/11/21
Pair Play 2차 테스트판 릴리즈  (2) 2009/11/16
Pair Play 1차 테스트판 릴리즈  (2) 2009/11/15
Pair Play 기능 추가  (2) 2009/11/04
Pair Play 개발 진행률  (0) 2009/11/02
최근 만들고 있는 녀석입니다..  (0) 2009/11/01
Posted by ˙Jisoo

댓글을 달아 주세요




블로그를 너무 오랜만에 하네요.. 새 학기 시작하고 놀기만 하니 블로그가 손에 잡히지가 않더군요 ㅠ_ㅠ;

중간고사 기간에 심심해서 핸드폰 게임을 하던게 이렇게 직접 만들게 되었습니다..
핸드폰 게임 중에 그림팡팡 (ㅡ,.ㅡ;) 이라는 짝맞추기 게임이 있는데 3D화 시켜보면 어떨까 싶더라구요 ㅎㅎ
넷마블과 한게임에는 사천성이라는 이름으로 서비스 되고 있습니다.

이제 1학년을 마치면 산업체에 지원을 해보려고 포트폴리오를 만들고 있는데 여기저기서 말을 들어보면 완성된 게임이 하나쯤은 있어야 한다고 합니다..
그전에 제작중이던 멀티 스킨드애니메이션 부분에서 막힌 프로젝트는 계속 진행한다 하더라도 기간이 좀 오래걸릴 것 같아 메인프로젝트로 놓고 계속 천천히 진행하고, 그 동안 지금 보시는 것과 같은 간단한 게임들을 완성하는 쪽으로 할 예정입니다..

현재 진행 된 단계는 동영상에서 보시다시피 블럭들을 출력하고 짝이 맞는지 확인 한 뒤에 선택이 유효한지 확인하는 것 까지 하였습니다.


지금은 이런 식으로 스테이지 파일을 받아오는 방식으로 진행되고 스테이지 클래스를 초기화 하는(불러오는) 방식은
initTable(파일이름);
처럼 되어있습니다. 스테이지 파일을 따로 받아오는 이유는 게임도중 특별한 모양으로 지정되어있는 스테이지가 있도록 구현할 예정이기 때문입니다.
일반 스테이지를 불러오는 방식인 initTable(가로,세로,문양갯수); 는 아직 구현을 안해서..
여러가지 테스트가 끝났으니 이제 구현을 해놔야 겠습니다..ㅎㅎ

그나저나 게임 이름을 못정해서 난감합니다 ㅠㅠ

'Game Project > PairPlay' 카테고리의 다른 글

PairPlay 쉐이더 적용 영상  (0) 2009/11/21
Pair Play 2차 테스트판 릴리즈  (2) 2009/11/16
Pair Play 1차 테스트판 릴리즈  (2) 2009/11/15
Pair Play 기능 추가  (2) 2009/11/04
Pair Play 개발 진행률  (0) 2009/11/02
최근 만들고 있는 녀석입니다..  (0) 2009/11/01
Posted by ˙Jisoo

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함