728x90

DirectX 21

행렬(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)가 나올 때까지 순서대로 행렬 곱연..

[UE] 언리얼 엔진 DirectX 11 RHI 렌더링 분석 노트

DirectX SDK API 핵심 요소를 언리얼엔진의 어떤 모듈에서 호출하는지 구조 살펴보기. ... typedef ID3D11DeviceContext FD3D11DeviceContext; typedef ID3D11Device FD3D11Device; struct ID3D11DynamicRHI { ... } ... class FD3D11DynamicRHI : public ID3D11DynamicRHI, public IRHICommandContextPSOFallback { ... TRefCountPtr Direct3DDeviceIMContext; TRefCountPtr Direct3DDevice; TArray Viewports; ... } FD3D11DynamicRHI::InitD3DDevice() { ...

Unreal 엔진 2023.09.12

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..

DirectX 11 스터디 - 텍스쳐 UV맵핑 (ShaderResourceView)

이전 노트에서 인덱스버퍼까지 다룸. 2023.09.06 - [게임 개발 자료/게임 개발 스터디] - DirectX 11 스터디 노트 - 도형 만들어보기 (Create Geometry) + 인덱스 버퍼 + 버텍스 셰이더, 픽셀 셰이더 이번엔 Shader Resource View 를 생성해서 png 텍스쳐 파일을 로드하고 버텍스컬러 대신 uv 좌표를 입력해서 폴리곤 위에 텍스쳐를 띄워본다. 1. ShaderResourceVIew 생성 / 리소스 로드 2. 셰이더 수정 3. 랜더링 함수 호출 이 순서로 진행. 1. ShaderResourceVIew 생성 / 리소스 로드 ID3D11ShaderResourceView 생성. 이 때 텍스쳐 리소스도 같이 로드. // ComPtrPSSetShader(_pixelSha..

DirectX 11 스터디 노트 - 도형 만들어보기 (Create Geometry) + 인덱스 버퍼 + 버텍스 셰이더, 픽셀 셰이더

Vertex 구조체를 만들어 Vertex Data 를 구성하고, ID3D11Buffer 를 생성해서 ID3D11Device 의 CreateBuffer 함수로 VertexBuffer 를 만들어준다. void Game::CreateGeometry() { // VertexData { _vertices.resize(3); _vertices[0].position = Vec3(-0.5f, -0.5f, 0.f); _vertices[0].color = Color(1.f, 0.f, 0.f, 1.f); _vertices[1].position = Vec3(0.f, 0.5f, 0.f); _vertices[1].color = Color(0.f, 1.f, 0.f, 1.f); _vertices[2].position = Vec3(0..

DirectX 11 스터디 노트 - 장치 초기화 (Create Device)

DeviceAndSwapChain 생성 HRESULT hr = ::D3D11CreateDeviceAndSwapChain( nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, 0, nullptr, 0, D3D11_SDK_VERSION, &desc, _swapChain.GetAddressOf(), _device.GetAddressOf(), nullptr, _deviceContext.GetAddressOf() ); D3D11CreateDeviceAndSwapChain 함수 (디스플레이 어댑터와 렌더링에 사용되는 스왑 체인을 나타내는 디바이스를 만듭니다.) https://learn.microsoft.com/ko-kr/windows/win32/api/d3d11/nf-d3d11-d3d11..

DXGI란? DXGI(DirectX Graphics Infrastructure) 개요

DXGI란? DXGI 는 DirectX Graphics Infrastructure 의 약어. 그래픽 요소들의 일부가 상대적으로 느리게 진화하는 것을 고려하여 하위 수준 작업과 DirectX 그래픽 런타임이 독립적으로 동작할 수 있도록 추상화 레이어를 제공하기 위한 것. DXGI는 향후에 공통 프레임워크를 제공하려 그래픽 구성 요소들을 다룰 수 있도록 함. DXGI 는 Microsoft Direct3D 10 부터 지원. 이전 버전까지는 이전 버전(DX9)의 Direct3D에서는 하드웨어 디바이스 열거, 렌더링된 프레임을 출력에 표시, 감마 제어 및 전체 화면 전환 관리와 같은 하위 수준 작업이 Direct3D 런타임에 포함되어 있었음. 이제 이러한 작업들이 DXGI에서 구현. DXGI의 목적은 커널 모드 ..

728x90
반응형