본문 바로가기

전체 글84

[DirectX] 렌더링 파이프라인 - (1) DirectX에서 렌더링, 즉 화면에 결과물을 출력하기 위해선 렌더링 파이프라인이라는 과정을 거쳐야 한다. 렌더링 파이프라인이란 화면에 그래픽스 결과물을 출력하기 위한 구조를 의미한다. 각 과정의 Output은 다음 과정의 Input이다. DrawCall -> IA(Input Assembler) -> VS(Vertex Shader) -> RS(Rasterizer) -> PS(Pixer Shader) -> OM(Output Merger) 더 상세한 과정이 있지만 기초적인 출력의 결과물을 확인하기 위해선 위의 과정은 반드시 필수적이다. 이 게시물에서는 IA에 대한 개념을 확인하고자 한다. IA(Input Assembler) 쉽게 정의하면 정점에 대한 정보를 입력 받는 구간이다. DX11에는 ID3D11로 시.. 2023. 1. 4.
[Game] 각도와 방향 게임에서 반사는 어떻게 구현할까? 반사는 정반사와 난반사가 있다. 정반사는 입사된 각의 완전 반대방향으로 반사가 되어 나가는 것이다. 이를 위해서 투영 벡터라는 것을 우선 알아둘 필요가 있다. 투영 벡터란, A 벡터와 B 벡터를 내적할 때, 그 결과값이 B 벡터 상에 나타나는데 이를 투영 벡터라고 한다. 사실 이 글을 작성하는 필자도 문과이고 많은 문과들이 벡터에 대한 개념을 잡기가 어려운 것을 알고 있다. 쉽게 생각하면 이와 같다. 반사를 할 때 정반사의 경우 반사각은 입사각에서 그대로 90도를 더하거나 뺀 값이 된다. 그 90도라는 것은 결국 가상의 벡터가 되어 반사각과 입사각 사이에서 중심이 된다. 이 90도를 가상의 벡터라고 가정하고 이 벡터와 입사각을 내적한 결과가 투영 벡터가 되고, 이 투영 .. 2023. 1. 1.
[Game] 객체의 회전 part.2 탄막 슈팅에서 탄막은 특정 객체에 종속되어 있다. 내가 쏘는 탄이라면 내가 조종하는 플레이어블 캐릭터 객체에, 적이 날린 탄막이라면 적 객체에 종속이 되어 위치가 정해진다. 이런 경우 객체가 회전을 하면 탄도 회전을 한다. 만약, 객체가 회전하지 않고 종속된 탄이 회전하여 모양을 만들어 내려면 어떻게 해야 할까. 객체의 위치는 행렬로 정해진다. 좌표를 나타내는 행렬에 S(Scale), R(Rotation), T(Transformation)이라는 행렬들이 곱해져 위치가 정해진다. 여기에 객체를 늘 따라가기 위해서 종속된 객체에는 부모(편의상 부모 자식 관계로 칭함) 객체의 R * T 행렬이 추가로 곱해진다. 이렇기 때문에 부모가 이동을 하면 자식도 이동을 하는 것이다. 그렇다면 부모는 회전하지 않고 자식만.. 2022. 12. 22.
[Game] 객체의 회전 맵 위에 캐릭터 A가 있다고 가정하자. 이 캐릭터의 회전은 어떻게 이뤄질까? 캐릭터, 즉 객체에는 각각 저마다의 공간이 있다. 이 공간을 로컬공간(Local Space)라고 하고, 이 로컬공간의 좌표를 로컬좌표(Local Matrix)라 한다. 이 캐릭터가 맵 위에 나오게 되면 맵의 좌표를 따라야 한다. 캐릭터의 좌표는 계속 변동이 되지만 그 좌표는 변하지 않는 맵의 좌표 위에서 변하는 것이다. 이 변하지 않는 공간을 우리는 월드공간(World Space)라고 하고 이 월드공간의 좌표를 바로 월드좌표(World Matrix)라고 한다. 캐릭터는 이 월드좌표 위의 특정 좌표에 존재하며 동시에 자신의 좌표를 가진다. 만약 이 캐릭터를 움직이려고 하는데, 캐릭터의 축과 월드좌표의 축이 다를 경우엔 어떻게 될까.. 2022. 12. 19.