728x90

게임 개발 자료 79

DirectX 11 스터디 - 모듈화 (2), 렌더링을 책임질 Pipeline클래스 작성

앞에서 Geometry, VertexData 부터 Output Merger 의 BlendState까지 모두 모듈화 해서 DX COM객체를 캡슐화 했고, 이번엔 모듈화한 객체들을 가지고 Rendering Pipeline 을 실제 수행하는 객체를 작성해본다. 파이프라인에서 고유하게 존재하고 사용되어야 하는 모듈들과, 3D 물체마다 값/설정이 변경되어야 하는 모듈을 구분한다. 3D 물체마다 설정이 변경되어야 하는 객체들을 별도로 그룹화 해서 PipelineInfo 구조체로 묶어준다. 렌더링 파이프라인에 이 구조체를 기준으로 설정을 바꿔서 태워주면 새로운 물체를 그릴 수 있게 됨. PipelineInfo 는 아래 구성 요소가 포함됨. 여기서 ConstantBuffer는 3D 메시마다 필요할 수도, 필요하지 않을..

DirectX 11 스터디 - 모듈화 (1)

앞선 스터디 과정에서는 하나의 클래스에 DirectX 객체들을 모두 모아서 구현했었음. 한 클래스에 모아서 구현했던 객체들과 개념, 동작들은 아래와 같음. DirectX 핵심 객체 : Device, DeviceContext, SwapChain Render Target : SwapChain 에서 백버퍼를 가져와서 RenderTarget 생성 RenderBegin : 렌더타겟뷰 셋팅, 클리어. 뷰포트 셋팅. RenderEnd : 에서 SwapChain->Present 호출해서 백버퍼 고속복사로 화면 갱신. Geometry 데이터 생성 및 관리 Vertex Buffer, Index Buffer 생성 Input Layout 생성 및 설정 Vertex Shader, Pixel Shader Texture 로드, S..

일본 유니티 개발자가 언리얼 엔진에 입문하면서 느낀 생각의 차이점

일본에서 10년간 유니티를 사용하다가 UE 를 이제 막 시작해서 1주일 정도 사용해본 분의 경험담. 표현 중 기억에 남는 재밌는 글이 있어서 스크랩. (원문 내용을 부분부분 스크랩 한 글이라 존댓말이 섞여있음.) 구성 - 원문 핵심 정리 - 전체 요약 원문 핵심 정리 결론부터 언리얼 엔진은 simple가 아니라 easy이다. 언리얼 엔진은 "(FPS|TPS|3D 액션 게임) 쯔꾸르"이다. 여기서 쯔꾸르 특성 참고. RPG를 만드는데 필요한 기능은 모두 갖추어져 있으며, 그 안에서 완결되는 것이라면 간단(easy)으로 만들 수 있습니다. 하지만, 아오오니 등이 유명한 것처럼 RPG 이외에도 만들 수 있습니다. 조금 힘들지만. 그래서 UE도 FPS/TPS/3D 액션 게임을 만드는 데 특화된 게임 엔진이라고 ..

행렬(Matrix) 스터디 - 실습 및 SimpleMath for DirectXMath

DirectX 행렬식 계산 편의를 위해 DirectXTK 의 DirectXMath 랩핑 모듈이 필요. SimpleMath.h/.cpp/.iln 파일들. 아래에서 다운로드 받을 수 있음. https://github.com/microsoft/DirectXTK/blob/3b3fd6cfc962c7ffdd03c311a6f6d6364ce96b0a/Inc/SimpleMath.inl SimpleMath.h 를 보면 아래와 같이랩핑한 DirectX 하위 클래스들을 확인할 수 있음. 여기서 Vector 시리즈와 Matrix 가 앞에서 학습한 행렬 수식과 관련된 클래스들. Matrix 메소드를 보면 앞에서 다뤘던 역행렬, 전치, Translation, Scale, Rotation 행렬 생성 시리즈들을 모두 볼 수 있음. 해..

행렬(Matrix) 스터디 - 좌표계 변환, World 변환, View 변환, Projection 변환 행렬

좌표계 변환 행렬 A좌표계에서 B좌표계로 변환하는 행렬. 좌표계 A에서 좌표계 B로의 변환 행렬은 일반적으로 각 축의 방향 벡터와 원점의 이동을 나타냄. v = [x, y, z, 1] | u_x u_y u_z 0 | | v_x v_y v_z 0 | | w_x w_y w_z 0 | | Qx Qy Qz 1 | 역기서 u, v, w 는 A좌표계의 방향 단위 백터를 B좌표계 기준으로 표현한 것. Q요소는 대상 좌표계 B 의 원점에서 A좌표계 원점의 좌표. 로컬 좌표계의 좌표들을 월드 좌표계로 변환해야할 때, 계층 순서대로 부모의 좌표계 SRT 행렬들을 곱해주는 방식으로 활용 됨. World 변환 행렬 로컬(모델)좌표계의 SRT 를 부모의 SRT 변환 행렬을 World(Root)가 나올 때까지 순서대로 행렬 곱연..

행렬(Matrix) 스터디 - 개요, 기초, SRT(Scale, Rotation, Translation) 변환 행렬

행렬에 대한 스터디 노트 항등행렬 (Identity Matrix) 주어진 행렬과 곱했을 때 아무 변화도 주지 않는 정사각 행렬. 역행렬 Inverse Matrix) 곱했을 때 항등행렬이 되는 역할을 하는 행렬. 우측 상단에 -1 로 표기. 전치행렬 (Transpose Matrix) 원래 행렬의 행과 열을 바꾼 새로운 행렬. 우측 상단에 T 로 표기. (Transpose) 직교행렬 (Orthogonal Matrix) 행렬의 행끼리 또는 열끼리 서로 수직(직교)하고 크기가 1인 행렬. (직교행렬의 역행렬은 전치행렬과 같다) A 1x4 행렬과 B 4x4 행렬의 곱셈 C[1,1] = A[1,1]*B[1,1] + A[1,2]*B[2,1] + A[1,3]*B[3,1] + A[1,4]*B[4,1] C[1,2] = A..

게임 엔진(Game Engine) 목록 2023.09.12

게임 엔진 목록 Unity Engine Unreal Engine Godot Kilowatt Cocos 2D Lumberyard Libgdx Construct Stencyl GameMaker Studio CryEngine Marmalade Phaser GameSalad Buildbox 유니티 에셋 스토어 링크 https://assetstore.unity.com?aid=1011lvz7h 에셋스토어 여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다. assetstore.unity.com

DirectX 11 스터디 - 렌더링 파이프라인 기초 핵심 정리

먼저 렌더링 파이프라인 기본 스테이지 순서 (중간중간 세부 스테이지는 스킵) IA > VS > RS > PS > OM Input-Assembler Stage Vertex Shader Stage Rasterizer Stage Pixel Shader Stage Output-Merger Stage 아래 3가지가 명령을 내리는 핵심. D3D11Device D3D11DeviceContext DXGISwapChain (DXGI (DirectX Graphics Infrastructure) : 기술 발전 속도가 느리거나 고전적인 요소들을 모아둔 기반 인터페이스.) Device 는 객체를 생성할 때 주로 사용. DevieContext 를 생성한 객체를 활용해서 명령을 내릴 때 주로 사용. SwapChain 은 전면/후면..

DirectX 11 스터디 - 래스터라이저 스테이트, 샘플 스테이트, 블렌드 스테이트

1. 래스터라이저 스테이트를 생성/설정하고 Render() 함수에서 전달해준다. ID3D11RasterizerState 를 생성하고, ~_DESC 에 설정값을 담아 생성한다. 그리고 Render() 함수에서 Pixel Shader 에 적용되도록 전달함. ComPtr _rasterizerState; void Game::CreateRasterizerState() { D3D11_RASTERIZER_DESC desc; ZeroMemory(&desc, sizeof(desc)); desc.FillMode = D3D11_FILL_SOLID; desc.CullMode = D3D11_CULL_BACK; desc.FrontCounterClockwise = false; // 시계방향/반시계방향 = Clockwise / Co..

DirectX 11 스터디 - 상수 버퍼 (Constant Buffer)

버텍스 데이터/매쉬 데이터를 건들지 않고, Shader 에 버퍼 데이터를 넘겨서 버텍스셰이더를 통해 변경되도록 처리해본다. 순서는 아래와 같다. 1. 상수버퍼 생성 2. DeviceContext 에 버퍼 매핑 3. 렌더 함수에서 버퍼 전달 아래는 수정한 코드 블럭들 // 멤버 선언 TransformData _transformData; ComPtr _constantBuffer; // 구조체 선언 struct TransformData { Vec3 offset; float dummy; // 16byte 로 정렬해야 하기 때문에 더미 멤버를 추가. }; // 버퍼 생성 void Game::CreateContantBuffer() { D3D11_BUFFER_DESC desc; ZeroMemory(&desc, siz..

728x90
반응형