DirectX 게임 수학의 극좌표계 이 기사는 의 6 일째 기사입니다. 올해 CEDEC의 이 계기로 최근 DirectX를 다시 공부하고 있는 게임 회사에 근무하는 엔지니어입니다. 이 기사의 대상자 평소부터 과학 프로그램을 작성하는 CG 엔지니어에게는 볼 필요가 없습니다. r 은 중심으로부터의 거리. 그럼, 이 극좌표계가, 무엇에 사용할 수 있을까? 이런 사례를 소개하겠습니다. sphere를 계산에 의해 작성할 수 있습니다. 정... C++게임수학DirectX DirectX에서 디퍼드 렌더링 디퍼드 렌더링이란, 2차원의 스크린 스페이스상에서 쉐이딩을 행하는 기술입니다. 1패스째로 칼라나 법선등의 정보를 출력해, 2패스째로 그러한 정보를 사용해 렌더링해 갑니다. 색상이나 법선과 같은 정보를 G-Buffer라고 합니다. 이번에는 디퍼드 렌더링에서 법선을 사용한 디렉션 라이트의 라이팅을 구현하고 싶습니다. G-버퍼 칼라 법선 1패스째에서는 컬러나 법선이라고 말한 라이팅에 필요한 정보를... DirectX11DirectX게임 제작 Picking Picking 마우스 클릭을 통해 Object를 고를 때 사실 화면에서 보여지는 것은 2D로 변환된 Screen Space이다. 따라서 우린 Ray Casting을 사용해 레이저를 쏘듯 카메라에서 Object까지 가상의 선을 그어 Object와의 HIT여부를 검사한다. Collider Component를 만들어 Ray cast 충돌 검사에 사용한다. 스크린의 높이와 너비와 마우스의 클릭 위치... graphicsDirectXDirectX Normal Mapping Normal Mapping 한 면을 표현하는 Vertex들의 Normal 값이 같다면 내부의 vector들도 동일한 값을 가진다. 구의 같은 경우 각각의 Vertex마다 Normal값을 다르게 주기 때문에 입체적인 구현이 가능하지만 큐브의 경우 각 면을 표현하는 Vertex값이 같은 Normal값을 가지므로 내부의 픽셀들 또한 입체적으로 표현되지 않는다. Vertex의 수를 늘려주는 방식으로... graphicsDirectXDirectX Instancing Instancing 동일한 개체를 여러개 렌더링해야할 경우 개체 하나 하나를 렌더링하는 것은 굉장히 많은 연산을 요구하게 된다. 이에 대한 해결방안으로 Draw Call을 그려야할 개체 수 만큼 하지 않고 한번의 Draw Call로 여러개의 개체를 그리도록 요청하는 기술을 Instancing이라고 한다. InstancingManager.cpp 를 보면 하나의 개체에 대한 렌더링 요청과 두개 ... graphicsDirectXDirectX Skybox Skybox 게임 내의 하늘을 구현하는 방법이다. 카메라의 가시영역의 끝이 1이라고 가정할 때 거대한 큐브를 만들어 그 안에 카메라를 넣는 방식으로 구현한다. 카메라를 skybox 안에 넣고 별 다른 수정이 없다면 문제가 발생한다. 플레이어가 움직여 skybox에 접근하게 될 경우 skybox를 뚫고 지나가게 된다. skybox에 가까워질 수록 sky에 해당하는 텍스처가 더 가까이 보이게된다... graphicsDirectXDirectX 📘 Direct3D Tutorial2 Direct3D 11에서 input layout은 GPU가 이해할 수 있는 형태로 정점 구조체를 설명하는 객체이다. 각 정점 속성들은 D3D11_INPUT_ELEMENT_DESC 구조체를 이용하여 설명될 수 있다. 어플리케이션은 D3D11_INPUT_ELEMENT_DESC 배열을 하나 이상 정의한 다음, 전체 정점을 서술하는 input layout 객체를 만들기 위해 사용한다. : Direc... DirectX그래픽스DirectX 📘 Direct3D Tutorial3 Direct3D 11은 정점 셰이더, 지오메트리 셰이더, 픽셀 셰이더를 지원한다. 정점 셰이더는 정점을 입력으로 받아 정점 버퍼를 통해 GPU로 전달되는 모든 정점에 대해 한 번씩 실행된다. 지오메트리 셰이더는 점, 선, 삼각형 등을 입력으로 받아 각각 한 번씩 실행된다. 픽셀 셰이더는 렌더링하고자 하는 픽셀마다 한 번씩 실행된다. 지오메트리 셰이더는 선택사항이다. 실행 순서 : 정점 셰이더... DirectX그래픽스DirectX Frustum Culling Frustum Culling Projection Space의 각 평면을 구하여 평면 오브젝트가 내부에 존재하는지 검사한다. SkyBox와 같이 Culling과 상관 없이 그려져야 하는 Object의 경우 Frustum Culling을 적용할지에 대한 check값을 만들어 관리한다.... graphicsDirectXDirectX
게임 수학의 극좌표계 이 기사는 의 6 일째 기사입니다. 올해 CEDEC의 이 계기로 최근 DirectX를 다시 공부하고 있는 게임 회사에 근무하는 엔지니어입니다. 이 기사의 대상자 평소부터 과학 프로그램을 작성하는 CG 엔지니어에게는 볼 필요가 없습니다. r 은 중심으로부터의 거리. 그럼, 이 극좌표계가, 무엇에 사용할 수 있을까? 이런 사례를 소개하겠습니다. sphere를 계산에 의해 작성할 수 있습니다. 정... C++게임수학DirectX DirectX에서 디퍼드 렌더링 디퍼드 렌더링이란, 2차원의 스크린 스페이스상에서 쉐이딩을 행하는 기술입니다. 1패스째로 칼라나 법선등의 정보를 출력해, 2패스째로 그러한 정보를 사용해 렌더링해 갑니다. 색상이나 법선과 같은 정보를 G-Buffer라고 합니다. 이번에는 디퍼드 렌더링에서 법선을 사용한 디렉션 라이트의 라이팅을 구현하고 싶습니다. G-버퍼 칼라 법선 1패스째에서는 컬러나 법선이라고 말한 라이팅에 필요한 정보를... DirectX11DirectX게임 제작 Picking Picking 마우스 클릭을 통해 Object를 고를 때 사실 화면에서 보여지는 것은 2D로 변환된 Screen Space이다. 따라서 우린 Ray Casting을 사용해 레이저를 쏘듯 카메라에서 Object까지 가상의 선을 그어 Object와의 HIT여부를 검사한다. Collider Component를 만들어 Ray cast 충돌 검사에 사용한다. 스크린의 높이와 너비와 마우스의 클릭 위치... graphicsDirectXDirectX Normal Mapping Normal Mapping 한 면을 표현하는 Vertex들의 Normal 값이 같다면 내부의 vector들도 동일한 값을 가진다. 구의 같은 경우 각각의 Vertex마다 Normal값을 다르게 주기 때문에 입체적인 구현이 가능하지만 큐브의 경우 각 면을 표현하는 Vertex값이 같은 Normal값을 가지므로 내부의 픽셀들 또한 입체적으로 표현되지 않는다. Vertex의 수를 늘려주는 방식으로... graphicsDirectXDirectX Instancing Instancing 동일한 개체를 여러개 렌더링해야할 경우 개체 하나 하나를 렌더링하는 것은 굉장히 많은 연산을 요구하게 된다. 이에 대한 해결방안으로 Draw Call을 그려야할 개체 수 만큼 하지 않고 한번의 Draw Call로 여러개의 개체를 그리도록 요청하는 기술을 Instancing이라고 한다. InstancingManager.cpp 를 보면 하나의 개체에 대한 렌더링 요청과 두개 ... graphicsDirectXDirectX Skybox Skybox 게임 내의 하늘을 구현하는 방법이다. 카메라의 가시영역의 끝이 1이라고 가정할 때 거대한 큐브를 만들어 그 안에 카메라를 넣는 방식으로 구현한다. 카메라를 skybox 안에 넣고 별 다른 수정이 없다면 문제가 발생한다. 플레이어가 움직여 skybox에 접근하게 될 경우 skybox를 뚫고 지나가게 된다. skybox에 가까워질 수록 sky에 해당하는 텍스처가 더 가까이 보이게된다... graphicsDirectXDirectX 📘 Direct3D Tutorial2 Direct3D 11에서 input layout은 GPU가 이해할 수 있는 형태로 정점 구조체를 설명하는 객체이다. 각 정점 속성들은 D3D11_INPUT_ELEMENT_DESC 구조체를 이용하여 설명될 수 있다. 어플리케이션은 D3D11_INPUT_ELEMENT_DESC 배열을 하나 이상 정의한 다음, 전체 정점을 서술하는 input layout 객체를 만들기 위해 사용한다. : Direc... DirectX그래픽스DirectX 📘 Direct3D Tutorial3 Direct3D 11은 정점 셰이더, 지오메트리 셰이더, 픽셀 셰이더를 지원한다. 정점 셰이더는 정점을 입력으로 받아 정점 버퍼를 통해 GPU로 전달되는 모든 정점에 대해 한 번씩 실행된다. 지오메트리 셰이더는 점, 선, 삼각형 등을 입력으로 받아 각각 한 번씩 실행된다. 픽셀 셰이더는 렌더링하고자 하는 픽셀마다 한 번씩 실행된다. 지오메트리 셰이더는 선택사항이다. 실행 순서 : 정점 셰이더... DirectX그래픽스DirectX Frustum Culling Frustum Culling Projection Space의 각 평면을 구하여 평면 오브젝트가 내부에 존재하는지 검사한다. SkyBox와 같이 Culling과 상관 없이 그려져야 하는 Object의 경우 Frustum Culling을 적용할지에 대한 check값을 만들어 관리한다.... graphicsDirectXDirectX