C++ Algorithm & Study/Game Math & DirectX 11

    [Direct11] 33. 3D Direct Application - Instancing & Culling

    1. 3D Direct Application 1.1 Instancing 1.1.1 Instancing - 한 장면에서 같은 물체를 여러 번 그리되 위치나 방향, 척도, 재질, Texture 등을 다르게 하여 그림 - 각 인스턴스마다 매번 정점 자료와 Index 자료를 파이프라인에 공급하는 것은 낭비 - 물체의 Local Space 공간을 기준으로 한 기하구조 자료의 복사본 하나만 저장 후 필요에 따라 그림 - 메모리가 절감되긴 하지만 물체 당 API 호출 부담을 줄어들지 않음, API 호출 부담이 없도록 인스턴싱을 구현 1.1.1.1 Vertex Shader - 하드웨어 인스턴싱에서 정점과 Index 자료 외에 각 인스턴스별 자료도 입력 조립기에 공급 - 파이프라인은 그 자료를 이용하여 메시의 인스턴스를..

    [Direct11] 32. 3D Direct Application - Camera

    1. 3D Direct Application 1.1 Camera 1.1.1 View Space - 시야 공간은 카메라에 부착된 좌표계, 카메라는 이 좌표계의 원점에 위치해 z축을 바라봄 - 세계 공간에서 시야 공간으로의 좌표 변경 변환을 시야 변환, 해당 변환 행렬을 시야 행렬이라 부름 - 세계 공간에서 시야 공간으로부터 변환 행렬을 수행하려면 역행렬을 통해 변환 행렬을 구함 - 실제 물체를 이동하는것이 아닌 기준계가 세계 공간 좌표계에서 카메라 공간 좌표계로 변경 1.1.2 Cemera System - 카메라 클래스를 생성하여 중요한 두 종류의 정보를 저장 - 카메라 좌표계를 규정하는 속성, 세계공간에서 시야 공간 좌표계의 해당하는 벡터 - 카메라 렌즈에 비유할 수 있는 시야 절두체를 규정하는 속성, ..

    [Direct11] 31. EX App Program - Quad Tesselation

    1. EX App Program 1.1 Quad Tesselation 1.1.1 C++ 응용 프로그램 - 제어점 네 개를 담는 정점 버퍼를 생성 및 사각형 패치를 입력 조립기 단계에 제출하는 함수 적용 D3D11_BUFFER_DESC vbd; XMFLOAT3 vertices[4]; D3D11_SUBRESOURCE_DATA vinitData; HR(_device->CreateBuffer(&vbd, &vinitData, _quadPatchVB.GetAddressOf())); md3dIediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_T0P0L0GY_4_C0NTR0L_P0INT_PATCHLIST); 1.1.2 Hull Shader PatchTess Constant..