👩🏻‍💻기초지식/DirectX 5

[DX] AABB, OBB 충돌

AABB (Axis-Aligned Bounding Box, 축 정렬 경계 상자) AABB 충돌은 객체를 좌표축에 평행하는 직육면체의 상자를 만들고, 이 상자들이 서로 겹치는지를 확인하여 객체 간에 충돌을 판단하는 방법입니다. 박스가 좌표 축에 정렬되어 있기 때문에, 박스를 이루는 면의 노말 벡터들이 곧 X, Y, Z 축과 일치하는 모양입니다. 따라서 객체의 x, y, z 좌표의 최솟점과 최댓점을 구하여 정의가 가능합니다. 더보기 최솟점과 최댓점의 차에 0.5를 곱해 AABB의 중점과 거리를 구할 수 있습니다. 중점 = 0.5 (Vmin - Vmax) 거리 = 0.5 (Vmax - Vmin) 이러한 방법으로, 회전함에 따라 객체의 크기도 계속 변하게 되고, 축에 일치된 모양이기 때문에 AABB끼리의 충돌 ..

[DX] 렌더링 파이프라인

순서 렌더링 파이프라인은 IA(Input Assembly)인 "입력 조립" 단계부터 시작하여, 버텍스 쉐이더, 헐 쉐이더, 테셀레이션 쉐이더, 도메인 쉐이더, 지오메트리 쉐이더를 거치고, (스트림 출력 단계 SO) , 래스터라이저, 픽셀 쉐이더, Output Merge인 출력병합 단계로 마무리 됩니다. 단계별 간단한 설명 1. 입력 조립 - 입력 조립 단계는 GPU가 렌더링 할 데이터에 대한 정점 버퍼들을 CPU에게 받아서 기본 도형인 프리미티브 토폴로지를 설정하는 단계입니다. - 정점버퍼에는 위치, 노말, Color, UV 정보가 직렬화된 배열 형태로 담겨져있고, 이를 통해 조립된 프리미티브가 정점 쉐이더의 입력이 됩니다. 2. Vertex Shader (정점 쉐이더) - 버텍스 쉐이더 단계는 정점 데..

[DX] 인스턴싱

설명 인스턴싱이란 동일한 객체를 한 화면에 여러 개 렌더링 시킬 경우 한번의 DP Call로 처리하는 방식을 말합니다. 예를 들어 수많은 나무, 풀, 파티클 같은 객체들에 적용할 수 있습니다. 정의 동일한 객체(모델)을 한 화면에 여러 개 렌더할 때 batch 최적화를 통한 최적의 성능을 발휘할 수 있게 하는 기법 Batch란 모든 DrawIndexedPrimitive 함수를 콜 하는 것을 말합니다. 즉, HAL 함수를 최대한 적게 부르는 것이 Batch의 최적화라고 할 수 있습니다. 모델 정보를 담고 있는 하나의 정점 버퍼와 인스턴스 버퍼라는 각 복사본의 변경점들만 담은 두번째 버퍼를 사용하여 인스턴싱을 구현할 수 있고, 정점 버퍼는 그래픽 카드에 계속 캐싱되어 있고 인스턴스 버퍼의 내용대로 바뀌어 그..

[DX] 오클루전 컬링과 언리얼 엔진에서의 컬링 설정

오클루전 컬링 (Occulusion) 오클루전 컬링은 다른 오브젝트에 의해 숨겨진 오브젝트를 걸러내는 컬링 기법입니다. 카메라 앞에 위치하여 다른 오브젝트를 가리는 오브젝트를 오클루더(Occluder)라고 하고, 오클루더에 의해 가려지는 오브젝트들을 오클루디(Occludee)라고 합니다. (오클루더는 스태틱 오브젝트) 오클루전 컬링 시 주의할 점으론, 야외 씬 같이 다른 오브젝트에 가려지는 경우가 많지 않은 경우에는, 오브젝트를 가리며 얻는 이득보다, 오클루전 컬링 연산 비용이 더 클 수 있다는 점 입니다. (언리얼의 프로젝트 셋팅에서 렌더링에 들어가면 오클루전 컬링을 켜고 끌 수 있는 설정값이 있다.) 언리얼에서의 렌더링 컬링 언리얼에는 Distance, View Frustum, Precomputed ..

[DX] 컬링 (프러스텀 컬링, 경계구/경계상자, 쿼드트리, 클리핑)

프러스텀 컬링, 절두체 컬링 (Frustum Culling) 절두체 컬링은 3차원의 월드 상에서 실제로 카메라의 시야 범위에 포함되는 것들만 렌더링하고, 나머지 것들은 렌더링 하지 않는 기법을 말하며, 3D 렌더링 기법 중 속도 증가 기법으로 중요하게 사용됩니다. 카메라 시야의 상,하,좌,우 방향으로 시야에 수직하는 평면과 먼곳의 시야 범위를 나타내는 평면까지 총 6개의 평면(절두체)을 통해 오브젝트가 절두체에 포함되는지를 평면 방정식으로 계산하여 구할 수 있습니다. 평면의 방향을 나타내는 법선 벡터 a, b, c 가 있을 때 평면과 원점의 거리를 나타내는 값 d가 존재하면 평면 방정식: ax + by + cz + d = 0 이러한 평면의 방정식을 만족하는 (x, y, z) 좌표값은 모두 평면 위에 있으..

728x90