절두체 컬링 (Frustum Culling)
컴퓨터 그래픽스/DirectX2024. 12. 10. 14:31절두체 컬링 (Frustum Culling)

절두체 컬링이란 절두체 컬링이란 절두체 안에 들어온 물체만 그리겠다는 뜻이다.현재 색이 들어간 물체들은 모두 DrawCall을 호출하고 있다. PixelShader단계 까지 가지만 절두체 밖에 있는 물체들은 그려지지 않는다. '즉 모든 오브젝트가 DrawCall을 호출하기 때문에 절두체 안에 들어와 있는 녀석들만 DrawCall을 호출하게 하여 성능 향상을 도모 하겠다는 것'이다.이렇게 절두체 밖에 있는 오브젝트들은 DrawCall을 아예 호출하지 못하도록 하는 것이다. 구현 방법평면의 방정식과 NDC 공간의 개념만 알고 있으면 어렵지 않다.우선 NDC상의 절두체를 선언해준다. 기억이 나나? 좌상단은 (-1, 1), 우하단은 (1, -1) 가운데가 (0, 0)이다.이렇게 점 8개를 선언해둔다. 이후 해당..

NavMesh 만들기
컴퓨터 그래픽스/DirectX2024. 12. 7. 00:11NavMesh 만들기

NavMesh(Navigation Mesh)를 만들어보자. NavMesh란?NavigationMesh의 줄임말로, 게임내에서 걷고, 뛰고, 뭐 별 짓을 다 할 수 있게 하는 구역을 설정하는 시스템을 말한다. 왜 쓰나? '그냥 플레이어 월드에 띄워 놓고 대충 걸어다니다가 벽이랑 충돌 처리 해서 못가게 하면 되지 않나?'라고 물어보면 ㅇㅇ 그렇게 해도 된다. 그렇게 해도 게임 만드는데 아무 문제 없다고 생각한다.근데 이렇게 하면 모든 벽에 Collider를 다 씌워서 매 프레임 플레이어와 충돌 계산을 해야한다. 게임내에 플레이어만 있나? 그렇지 않음.그래서 NavMesh를 사용하는데 (본인 피셜) 미리 이동가능한 영역을 설정해두어서 불필요한 충돌 처리를 최소화 하고 애초에 게임내에 이동가능한 영역과 아닌 영..

[Animation] 애니매이션을 만들어보기 (정리글)
컴퓨터 그래픽스/DirectX2024. 12. 6. 21:09[Animation] 애니매이션을 만들어보기 (정리글)

게임을 모작하게 되어서 Assimp라이브러리로 모델들을 추출했는데 원하는 애니매이션들이 없어서 직접 만들게 되었고 그 과정을 최대한 간략하게 개념과 함께 정리했다.당연히 기초적인 수준의 애니매이션을 만들었고 기초 지식만을 가지고 응용했다.아래 설명하는 방식은 절대 정답이 아니고 그냥 헤딩해서 터득한 방법과 시행착오들을 '흐름만'정리 해 두었다.코드에 대한 자세한 설명이나 Imgui, Assimp설명은 없다. (너무 길고 힘들다 ㅠ)애니매이션의 기초적인 지식이 없으면 이해하기 힘들다.고려대 그래픽스 강의에서 애니매이션을 꼭 듣기 바라고 내가 쓴 글인 https://cjbworld.tistory.com/75 도 같이 보자 ㅎㅎ;;그냥 이사람은 이런 흐름으로 했구나 정도로 읽어주길 바란다. 흐름 정리우선 본인..

[Animation] 스키닝 애니매이션이란? (Skinning Animation)
컴퓨터 그래픽스/DirectX2024. 11. 10. 14:28[Animation] 스키닝 애니매이션이란? (Skinning Animation)

스키닝 애니매이션이란?스키닝 애니메이션(Skinning Animation)은 3D 컴퓨터 그래픽에서 객체가 자연스럽게 움직이도록 하기 위해 사용하는 애니메이션 기법이다. 3D 모델의 뼈대를 기반으로 정점을 뼈대에 결합시키는 기법이다. 이렇게 개념만 보면 무슨 말인지 모르겠다.그래서 본인이 스스로 공부한 것을 바탕으로 최대한 이해하기 쉽게 정리해보려고한다.(렌더링 파이프라인과정과 좌표계 변환 개념을 잘 이해하지 못하고 있다면 어렵다)모델이란?모델은 여러개의 메쉬들로 이루어진 경우가 많기 때문에 본인은 모델의 정의를 '여러 메쉬들로 이루어진 메쉬의 집합'라 하겠다.  그리기의 단위는 점, 선, 삼각형 순인데 정점 3개가 모이면 '폴리곤(polygon)'이라 부르고 이 폴리곤의 집합을 '메쉬(mesh)'라고 ..

View Spcae Matrix 만들기
컴퓨터 그래픽스/DirectX2024. 7. 31. 16:26View Spcae Matrix 만들기

뷰 스페이스란?'뷰 행렬은 카메라의 위치와 방향을 기반으로 3D공간을 카메라의 시점으로 변환하는 행렬'이다..이 행렬이 필요한 이유는 월드 공간은 매우 넓은 영역인데 이 영역을 다 보여준다면 프레임이 쭉쭉 떨어질 것이다.그래서 가상의 카메라 개념을 넣어서 카메라를 중심으로 화면이 보이도록 하겠다라는 것이다.이렇게 하기 위해서는 '월드 공간'에 있던 여러 오브젝트들을 카메라를 중심으로하는 좌표계로 변환 시켜야 하는데이 공간을 view space라 한다. (view space로 변환 시켜주는 행렬이 View Matrix이다) 이 과정을 짧게 정리하면 카메라를 월드 시스템의 원점으로 변환하고, 카메라가 양의 Z축을 보도록 회전 시켜야 한다는 것이다. 이때 월드에 대한 관점이 바뀌지 않도록 하기 위해서는 카메라..

[DX] 렌더링 파이프 라인
컴퓨터 그래픽스/DirectX2023. 11. 30. 23:31[DX] 렌더링 파이프 라인

렌더링 파이프 라인이란?3차원으로 만들어진 모델(Texture, Material, Animation, Geometry 등등)을 2차원 스크린 좌표계까지 투영하는 과정의 프로세스를 자세하게 표현한 것입니다. 컴퓨터의 메모리에 존재하는 3D Resource가 모니터에 출력되는 과정이 렌더링 파이프 라인을 따르게 됩니다.초록색 부분은 Fixed Function(고정 단계) : 미리 정해진 특정한 연산들만 수행이 가능하고, 실행 시점에서 기능은 바꿀 수 없지만 상태 객체라는 개념을 이용하여 설정들의 변경이 가능합니다. 빨간색 부분은 Programmable 단계로 HLSL로 shader 프로그래밍이 가능한 단계. 렌더링 파이프라인의 핵심 5단계는 IA(Input Assembler) - VS(Vertex Shade..

[DX] Multi Sampling
컴퓨터 그래픽스/DirectX2023. 8. 23. 16:40[DX] Multi Sampling

이번 글은 DirectX11의 멀티 샘플링에 대한 글입니다. 에일리어싱이란? 아래의 사진은 그냥 그림판에다가 선을 하나 그린 모습입니다. 이를 확대해서 보면은 아래처럼 이렇게 자글자글하게 보이는 것을 확인할 수 있습니다. 이러한 현상을 '에일리어싱(Aliasing)'또는 '계단 현상'이라고합니다. 에일리어싱을 완화하는 기능을 '안티 에일리어싱'이라고 하며 언리얼에서는 당연히 '안티 에일리어싱'기능을 제공합니다. 자세한 글은 https://docs.unrealengine.com/5.2/ko/anti-aliasing-and-upscaling-in-unreal-engine/ 안티 에일리어싱 및 업스케일링 언리얼 엔진에서 사용 가능한 안티 에일리어싱 옵션을 살펴봅니다. docs.unrealengine.com 위..

image