tessellation 2

[Tessellation] quad tesselation순서 및 patch control point 계산

Quad 그리는 코드는 다음과 같습니다.context->IASetPrimitiveTopology( D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST); 텍스춰 좌표로 따졌을 때, (0,0) -> (1,0) - > (0,1) -> (1,1) CW(시계방향)이라도 이렇게 하지 않으면 왜곡이 생길 수 있습니다. 그리고 그릴 때 draw로 해도되고, drawIndexed로 해도 됩니다. index개수와 순서가 잘 맞기만 한다면요. 예를들어 사각형 3개를 가로로 나란히 그릴 때 vertex 8개, index 12개가 필요합니다. drawIndexed로 그려도 각 패치에 vertex들이 patch control point로서 잘 들어갑니다. 또한 Hull shader에서 테셀레..

Graphics Techniques 2025.01.06

[렌더링 파이프라인] Subdivision의 개념

렌더링 파이프라인에서 첫 초기화시 몇가지 버퍼를 gpu에 메모리를 저장해야 합니다. 텍스쳐메모리, 각 메쉬의 vertex버퍼, constant버퍼등을 저장합니다. 하지만 초기화 시 mesh의 vertex들의 수가 많다면 시간이 오래 걸리게 됩니다. cpu에서 gpu로 데이터를 보내는데 시간이 오래걸리기 때문입니다. 따라서 gpu에 보내는 데이터의 크기를 줄이면 줄일수록 좋습니다. subdivision의 개념은 어떠한 메쉬를 vertex의 수를 적게 그린 후, 각 삼각형을 4개로 분할하여 다시 그려주는 것입니다. 구를 예를들어 보자면, 다음 구는 vertex의 수를 적게 하고 그린 예시입니다. 하지만 여기서 삼각형을 여러개로 분할하면 어떻게 될까요?다음 그림에서 삼각형을 이렇게 4개로 나눕니다. 새로 생긴..

Graphics Techniques 2024.12.04