| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 백준
- 백준 1260 c++
- 2565번
- 다음소수
- directx12 그리기 연산2
- 2075번
- 백준 c++ 24479번
- 다익스트라
- 랜더링 파이프라인
- 백준 24444 c++
- 4134번
- 루트서명
- Perforce
- C++
- 뱀과사다리게임
- 24779
- 애니메이션
- unrealengine
- WinAPI
- BFS
- 11286번
- DirectX12
- 바이토닉 수열
- 드래곤플라이트 모작
- lis응용
- 그리기 연산
- dx12 정리
- dx12
- 2d 박스충돌
- Unreal
- Today
- Total
목록DirectX (10)
game-1 님의 블로그
1. 래스터화기 상태래스터화기는 3D 정점 정보를 2D픽셀로 변환하는 과정입니다.이때 어떤 방식으로 삼각형을 자를지 앞면 뒷면을 어떻게 판단할지 등을 설정하는 것이 래스터화기 상태입니다. 래스터화 단계는 래스터화기 상태를 통해서 구성합니다.이 상태를 대표하는 것이 다음과 같은 D3D12_RASTERIZER_DESC 구조체입니다. D3D12_RASTERIZER_DESC rasterDesc = {};rasterDesc.FillMode = D3D12_FILL_MODE_SOLID; // 또는 WIREFRAMErasterDesc.CullMode = D3D12_CULL_MODE_BACK; // 또는 FRONT, NONErasterDesc.FrontCounterClockwise = FALSE; // 시계 방향..
1. 상수 버퍼의 생성상수 버퍼는 GPU에 데이터를 전달하기 위한 자원입니다.일반적으로 Upload Heap에서 생성해서 CPU가 자주 갱신할 수 있도록 합니다. cbuffer cbPerObject : register(b0){ float4x4 gWorldViewProj;}; 정점 버퍼나 색인 버퍼와는 다르게 상수 버퍼는 CPU가 프레임당 한 번 갱신하는 것이 일반적입니다.예를 들어 카메라가 매 프레임 이동한다면, 프레임마다 상수 버퍼를 새 시야 행렬로 갱신해야 할 것입니다.따라서 상수 버퍼는 기본 힙이 아니라 업로드 힙에 만들어야 합니다. 그래야 cpu가 버퍼의 내용을 갱신할 수 있습니다.2. 상수 버퍼의 갱신상수 버퍼는 Upload Heap에 있기 때문에 Map()함수로 CPU가 접근할 수 ..
정점은 3D 그래픽을 구성하는 기본단위이고,DX12에서 정점 데이터를 렌더링하려면 입력 배치(Input Layout)을 정의해야합니다. Input LayOut은 정점의 데이터 형식과 구조를 GPU에 알리는 역할을 합니다.1. 정점 구조체(Vertex Structure)directx3d의 정점에는, 공간적 위치 이외의 추가적인 자료를 부여할 수 있습니다. 원하는 자료를 가진 커스텀 정점 형식을만들려면,우선 그러한 자료를 담을 구조체를 정의하여야 합니다. (일반적으로 구조체를 사용합니다.)다음은 두가지 예시 입니다. Vertex1의 경우, pos와 Color값을 담은 모습입니다. 2. 입력 레이아웃(Input LayOut)정점 구조체를 정의한 다음에는 정점 구조체의 각 필드,즉 정점의 각 성분으로 무엇을..
DirectX12 study기하 셰이더기본 도형을 입력받아 추가적인 도형을 생성하거나 변경할 수 있습니다. 삼각형 목록을 그리는 경우, 기하 셰이더에는 삼각형을 정의하는 정점 세 개가 입력됩니다. 기하 셰이더 이점1. 기하구조를 gpu에서 생성하거나 파괴할 수 있습니다. 입력 기하구조를 여러 개의 기하구조들로 확장할 수도 있고, 조건에 따라 입력 기하구조를 폐기할 수도 있습니다.2. 기하학적 효과를 쉽게 구현 할 수 있습니다. (ex 실루엣 생성, 법선 벡터 시각화)3. LOD 기술과 결합하여 최적화 가능합니다. 기하 셰이더의 역할1. 입력된 기본 도형을 증식하거나 제거할 수 있습니다.이를 통해, 하나의 점을 여러 개의 점으로 변환 가능합니다.하나의 삼각형을 여러 개의 삼각형으로 확장 가능합니다.특정 ..
DirectX12 study테셀레이션 단계테셀레이션은 주어진 메시의 삼각형들을 더 잘게 쪼개서 새로운 삼각형들을 만드는 과정입니다.새로운 위치에 삼각형들을 이동함으로써 원래 메시에는 없는 세부적인 특징을 만들어 낼 수 있습니다. 1. 카메라에 가까운 삼각형들에는 테셀레이션을 적용해서 세부도를 높이고, 먼 삼각형들에는 테셀레이션을 적용하지 않는 방식으로 세부수준 메커니즘을 구현할 수 있습니다. 2. 메모리에는 적은 수의 삼각형(저다각형 메시)들로 이루어진 메시를 담아두고 즉석에서 삼각형들을 추가함으로써 메모리를 절약할 수 있습니다. 3.애니메이션이나 물리 처리 같은 연산들을 단순한 저다각형 메시에 대해 수행하고, 테셀레이션된 고다각형 메시는 렌더링에만 사용함으로써 계산량을 줄일 수 있습니다. DX..
Q1. ) 각 모형을 자신의 국소 좌표계(Local Space)에서 정의하는 주요 장점은 무엇인가?① 정점 좌표를 카메라 기준으로 직접 저장할 수 있어 효율적이다.② 하나의 오브젝트를 여러 위치에 배치할 때 동일한 데이터를 재사용할 수 있다.③ 모든 오브젝트를 월드 좌표계에서 직접 배치해야 하므로 좌표 계산이 줄어든다.④ 국소 좌표계를 사용하면 객체 간 충돌 처리가 필요 없어지므로 성능이 향상된다. Q2.정점 셰이더(Vertex Shader)를 사용하는 주요 이유는 무엇인가?① 3D 모델의 정점 데이터를 화면 좌표로 변환하고, 조명 등의 그래픽 효과를 적용하기 위해 사용된다.② 모든 픽셀의 색상을 결정하는 역할을 수행한다.③ CPU에서 모든 정점 데이터를 직접 계산하는 것이 더 효율적이므로 이를 돕기 ..
정점 셰이더를 왜 사용하는가? 정점 셰이더를 사용하면 GPU에서 정점 변환을 빠르게 수행할 수 있습니다.CPU가 아닌 GPU에서 정점 변환을 수행할 수 있기 때문에 성능이 향상될 수 있기때문에 사용합니다. 또한, 화면에 그려지는 모든 정점들은 이 정점 쉐이더를 거쳐가기 때문에,다양한 효과를 정점에 적용할 수 있다는 이점이 있습니다. DirectX12 study정점 셰이더입력 조립기에서 기본 도형들의 정보를 만든 후에-> 정점들의 정보가 정점 셰이더 단계로 넘어갑니다. 이때 받은 정점들의 정보들을 바탕으로 지역 좌표를 실제 정점을 렌더링하는 월드 위에 좌표로 변환해주는 작업을 해줍니다.1. 국소 공간과 세계 공간 국소공간은 모델이 처음 정의된 좌표 공간으로 개별 객체 기준의 좌표계를 의미합니다.이를 씬 ..
오늘은 DirectX12에서의 렌더링 파이프라인에 대해 알아볼 것입니다.렌더링 파이프라인이란 3차원 공간을 2차원인 화면 모니터에 그려내는 일련의 과정으로 볼 수 있습니다. DirectX12 study 1. 3차원의 환상사람이 2차원 화면을 통해서 3차원의 부피와 공간적 깊이감을 느끼려면 어떤 것이 필요할지를 생각해보면 됩니다. 다음은 대표적인 예시들입니다.투영(Projection): 3D 공간의 객체를 2D 화면에 변환하는 과정광원(Lighting): 그림자, 반사 등의 효과로 현실감을 추가텍스처(Texture): 표면의 질감을 표현하는 이미지쉐이더(Shader): GPU에서 수행되는 프로그램으로, 객체의 색상과 조명을 계산 DX12에서는 이러한 기술들을 조합하여, 실제로 존재하는 것처럼 보이는 3D ..
오늘은 CH4에서 CPU와 GPU의 상호작용과 Direct3D의 초기화에 대해 알아볼 것입니다.DX12는 Explicit API로, cpu와 gpu의 상호작용을 개발자가 직접 관리해야 합니다. DirectX12 study2 1. 명령 대기열과 명령 목록(Command Queue, Command List) 명령 대기열 생성D3D12_COMMAND_LIST_TYPE_DIRECT: gpu가 직접 실행 가능한 기본적인 명령 리스트CreateCommandQueue() : gpu가 실행할 명령을 처리하는 대기열 생성D3D12_COMMAND_QUEUE_DESC queueDesc = {};queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;queueDesc.Flags = D3D12_C..
Dx12에 대해서는 "DirectX12를 이용한 3D 게임 프로그래밍 입문"책으로 학습할 것이다. 그 중 chapter4에서는 표면, 픽셀 형식, 페이지 전환, 깊이 버퍼링, 다중표본화 ,성능 카운터로 시간을 측정하는 법과그 시간을 이용해서 초당 렌더링된 프레임 수를 계산하는 방법 등에 대해서 알아 볼 것이다. DirectX12 -Study1 목표1. 3차원 그래픽 하드웨어의 프로그래밍에서 Direct3D의 역할을 개괄적으로 이해2. Direct3D에서 COM의 역할3. 2차원 이미지의 저장 방식, 페이지 전환, 깊이 버퍼링, 다중표본화 같은 기초 그래픽 개념들 학습4. 성능 카운터 함수들을 이용해서 고해상도 타이머 값을 얻는 방법 5. Direct3D를 초기화하는 방법 파악6. 이 책의 모든 예..