본문 바로가기

포트폴리오 /DirectX 11

(9)
[ Eunbi's Farm ]최종영상 1. 프로젝트 개요 A. 게임 컨셉 i. 좋아하는 게임인 HayDay를 3D로 제작하고싶어서 만들게 된 프로젝트 ii. 밤과 낮을 추가해 게임 맵이 더욱 다양하도록 제작 B. 기본 게임 플레이 i. 심고싶은 농작물을 재배하며 팜을 키워나가는 게임 ii. 상점에서 재배한 농작물과 물품을 교환하여 구매할 수 있다. 2. 게임 구성요소 A. 맵 i. 섬으로 이루어져 있는 맵. 섬을 벗어나면 강이 나온다. (밤과 낮 컨셉) B. 조작 마우스 픽킹으로 플레이어를 움직임. 마우스 픽킹으로 농작물 커스터마이징 가능 마우스 픽킹으로 상점에서 물건 구매 가능 ui 컨트롤 가능
[ Eunbi's Farm - DirectX 11 ] 최종 점검 [ 밤에 본 농장의 모습 ] [ 낮에 본 농장의 모습 ] [ 최종점검 ] 시작 : 2018년 1월 말~ 전체맵 생성완료 UI / 인벤토리 추가 상점시스템 추가 9개 작물 모두 추가완료 성장시스템 완료 ->타이머가 추가로 필요하다 밤/낮 시스템 완료 > 해야할것 밤/낮 시스템에서 점조명의 많은 생성으로 인해 프레임저하 가로등을 위한 Light를 한번에 처리할수 있는 쉐이더를 LightAcc 타겟에 추가로 생성중..
[Eunbi's Farm -DirectX11 & MFC] Animation Tool MFC를 활용한 애니메이션 툴입니다. 1. Drag And Drop으로 FBX메쉬를불러옵니다.> DragQueryFile( ) 함수 사용. FullPath 받아와주기. > _wsplitpath_s( )로 파일명에서 확장자명을 분리해주기.> 현재 씬에 오브젝트 생성. 메쉬 FullPath로부터 분리하기. > FbxManager / FbxScene / FbxImporter / FbxIOSettings 생성 ,> Fbx로부터 정보 불러오기 2. 클립 로딩> 만들어진 오브젝트에 Animation3D 컴포넌트 추가 > startTime, endTime, KeyFrame, MatrixTransform 받아오기, Animation3DClip에 넣어주기 3. 클립 추가> AnimationClip을 Animation3D..
[ Eunbi's Farm - DirectX 11 ] 툰 쉐이딩과 림라이트 (Toon Shading & RimLight) [ Rim Light & Toon Shading On ] [ Rim Light & Toon Shading Off] [ Toon Shading ] 카툰 렌더링은 사실적인 렌더링 기법과 비교해서 친근한 느낌을 준다는 장점을 가지고 있습니다.카툰 렌더링은 윤곽선과 음영을 얼마만큼 효과적으로 표현할수 있느냐에 따라서 결과가 달라집니다. 카툰 렌더링은 모델 윤곽선을 라인 드로잉 스타일로 표현하는 방법과, 모델의 내부를 단순화된 음영으로 표현하는 두 가지 과정으로 나누어집니다. 포트폴리오에서는 두 가지를 모두 충족하는 툰 쉐이딩을 구현하였습니다. 1. 모델 내부를 단순화된 음영으로 표현하는 기법 디퍼드 라이트를 이용하므로, LightACC를 해주는 부분에서 빛의 감쇄를 3등분으로 나누어 주는 연산을 하였습니다. 예..
[ Eunbi's Farm - DirectX 11 ] 파티클 시스템 [ 파티클 시스템 ] 파티클시스템이란? 무작위한 방식으로 움직이는 입자들의 집합을 모형화한것이며, 비, 연기, 폭파, 마법, 발사체같은 다양한 현상과 사물을 흉내내는데 쓰인다. 2D 스프라이트와 다르게 3차원공간에서 터지는 이펙트이므로 조금 더 사실적이며, 속도와 방향을 지정할 수 있다는 면에서 장점이다.하지만 2D스프라이트보다는 연산량이 많고, 두단계 쉐이더를 거쳐야하기 때문에 무겁다는 단점이 있다. [ Stream- Output ] GPU에서 텍스처와 깊이/스텐실버퍼에 자료를 기록하며, 후면 버퍼에도 기록한다. 스트림 출력 단계를 이용하면, 기하셰이더에서 출력한 정점들이 정점버퍼에 기록되게 할 수 있다. 그리고 저장된 점들을 렌더링파이프라인에 입력해서 그리는 것이 가능하다. 스트림 출력을 사용하는 경..
[Eunbi's Farm - DirectX11] 흐르는 물 구현하기 [ 흐르는 물 구현하기 ] DetailTexture의 UV만 바꿔주면 되기 때문에 쉐이더 기술중에 쉬운 편이다. 넘겨주어야 할 것은 일단 BaseTexture와 DetailTexture. UV는 기본적으로 0.0~1.0 사이의 값을 가지고 있지만, 그 이상을 벗어나면 다시 0.0에 해당하는 값을 가지게 된다. 즉, 1.1은 0.1에 해당하는 텍스쳐를 가지는 것이다. 다음 그림과 같이 하트모양의 텍스쳐 여러개가 이어져있는 형식이다. 이것을 이용하면 0.0~1.0에 해당하는 UV를 BaseTexture에 적용을 해 주고, DetailLevel을 지정하여 input으로 들어온 UV에 곱해주면 0~ DetailLevel의 값을 가지게 되고 이는 연속된 텍스쳐로 이루어 져 있으므로, 자잘한 텍스쳐 여러개가 맵핑 ..
[Eunbi's Farm - DirectX11] 디퍼드 렌더링 * 포워드 라이팅 : 각 Mesh에 대하여 각 광원에 관한 것을 모두 그려야 한다. N개의 광원과 M개의 Mesh가 포함된 씬을 표현하기 위해서는 NxM번의 드로우 콜이 필요하다. 이 호출수가 크기 때문에 FPS를 확보하면서 그릴 수 있는 Object 수에 한계가 있다. > 해결책? GPU가 다중 렌더링 타겟(MRT)을 보편적으로 지원함으로써 씬 렌더링과 광원 렌더링을 구분하는 해결책이 제시되었다. 이 경우 드로우 호출이 M+N번으로 감소한다. 이러한 접근 방식을 GBuffer라 한다. GBuffer는 씬의 각 점에 대한 정보를 갖는 최종 렌더링되는 픽셀 수와 같은 크기의 렌더타겟 이미지의 집합이며 기본적으로 씬의 각 픽셀에 대한 Depth, Normal정보를 가진다. *디퍼드 라이팅 : 깊이와 노멀정보..
[Eunbi's Farm -DirectX11 & MFC] Terrain & Object Tool DirectX11 & MFC를 사용한 툴입니다 [Object Tool] 오브젝트의 Collider는 타 오브젝트나 마우스와 충돌하면 빨강/ Terrain과 충돌하면 파랑으로 색을 바꿔주었고, DDT 지형 Picking을 이용하여 오브젝트 툴을 구현하였습니다. Rotate나 Scale도 지정 가능합니다. 오브젝트를 모두 원하는 자리에 놓은 후에는 SAVE 버튼을 통해 자체포멧으로 내보내며, Client 프로젝트에서 불러올 수 있게 됩니다. [Terrain Splatting Tool]스플래팅 Alpha를 마우스를 통해 수정할 수 있게 하여 실시간으로 Terrain을 칠할 수 있는 툴입니다. 각 Alpha텍스쳐들은 Reset기능을 통해 다시 만들 수 있으며 총 5개의 이미지로 칠할 수 있습니다. DDT 지형 ..