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

    [Direct11] 30. Direct3D Tesselation

    1. Direct3D Tesselation 1.1 Tesselation 1.1.1 Tesselation Stage - 주어진 기하구조를 더 작은 삼각형들로 분할, 새로 생긴 정점들의 위치를 적절한 방법으로 조정 - GPU상의 동적 LOD, 메시의 세부수준을 카메라와의 거리나 기타 요인에 따라 동적으로 조정 - 효율적인 물리 및 애니메이션 계산, 물리와 애니메이션을 저다각형 메시에 대해 수행 - 저다각형 메시를 테셀레이션해서 고다각형 버전으로 만듦, 낮은 주파수에서 수행함으로 계산량을 줄일 수 있음 - 메모리에는 저다각형 버전을 담아두고, GPU에서 테셀레이션을 통해 즉석으로 고다각형 버전을 생성, 메모리 절약 - 테셀레이션을 사용하는 경우 응용 프로그램은 입력 조립기 단계에서 삼각형들을 제출하지 않음 -..

    [Direct11] 29. EX App Program - Blur System

    1. EX App Program 1.1 Blur System 1.1.1 C++ 응용프로그램 void BlurFilter::BlurInPlace(ComPtr dc, ComPtr inputSRV, ComPtr inputUAV, int32 blurCount) - 계산 셰이더를 실행하여 Render to Texture를 흐림 - A에 대한 세이더 자원 뷰를 계산 셰이더의 입력, B에 대한 순서 없는 뷰를 계산 셰이더의 출력 설정 - 스레드 그룹들을 배분해서 수평 흐리기 작업을 수행 D3DX11_TECHNIQUE_DESC techDesc; Effects::BlurFX->HorzBlurTech->GetDesc(&techDesc); for (uint32 p = 0; p < techDesc.Passes; ++p) { ..

    [Direct11] 28. Direct3D Compute Shader - Blur System

    1. Direct3D Compute Shader 1.1 Blur System 1.1.1 Blur Algorithm - 원본 이미지의 각 픽셀Pij에 대해 그 픽셀Pij를 중심으로한 M ✕ N 픽셀 행렬의 가중 평균 계산 - 그 가중 평균을 결과의 ij 픽셀로 설정, M과 N을 홀수로 두면 항상 자연스러운 중앙 성분 존재 - 가중치의 합이 1, 합이 1보다 작으면 색상 성분이 작아져 원본 이미지보다 어두워 지는 반면 크면 밝아짐 - 합이 1인 가중치들을 결정하는 방법인 가우스 흐리기 사용하여 가우스 함수로 구한 가중치들을 사용 - 가우스 흐리기는 분리 가능으로 알려짐, 2차원 흐리기를 다음과 같이 1차원 흐리기로 나누어 적용 - 입력 이미지 I를 1차원 수평 가우스 흐리기 핵으로 흐림, 단계 I의 결과를 ..