목록그래픽스, 게임 수학 (11)
Typing diary

게임에서 물리 효과는 유저가 게임과 상호작용하는 과정에서 게임을 더욱 생동감 있고, 사실적으로 느끼게 해주는 중요한 요소이다. Physics Bone은 게임에서 의상, 헤어와 같은 물체의 물리 효과를 실시간으로 표현하기 위한 효과 중 하나이다. 스키닝된 메쉬 본에 대해서만 연산을 진행하기 때문에 모든 버텍스에 물리 연산을 진행하는 Vertex Physics보다 연산이 매우 가볍고, 아티스트가 버텍스에 Weight를 어떻게 할당하냐에 따라서 디테일한 연출도 가능하기 때문에 게임에서 널리 사용되고 있다. 이번 포스팅에선 PhysicsBone을 구현하는 방법 중 하나인 Verlet알고리즘을 사용하여 PhysicsBone을 구현하는 방법에 대해서 포스팅할 예정이다. Verlet 알고리즘?Verlet 알고리즘은..

드로우 콜이란?CPU가 GPU에게 특정 오브젝트를 그리게 하기 위한 단일 명령이다. 한 프레임에 여러번 호출 될 수 있으며, 호출 수가 많아질 수록 CPU와 GPU의 오버헤드가 커지기 때문에, 호출 횟수를 줄여 드로우 콜 비용을 낮추는 것이 게임 최적화의 핵심이다. 왜 여러 번 나눠서 보내야 할까?왜 드로우콜은 여러번 호출되는 걸까? GPU는 수많은 정점과 픽셀 연산을 위해 대량 병렬 처리에 특화되어있다. 때문에 GPU는 효율적인 병렬 처리를 위한 GPU만의 특별한 작업 단위가 있는데 그것이 Render State이다. RenderState?GPU가 효율적인 병렬 처리를 수행하기 위하여는, GPU 고유의 작업 단위, 즉 규칙의 집합이 요구된다. 이를 바로 **렌더 상태(Render State)**라..

각각의 픽셀에 대응하는 광선의 경로를 역추적 하여 렌더링하는 기법이다.실제 사람의 눈으로 물체를 인식하는 방법과 유사하기 때문에 사실적인 렌더링이 가능하지만 연산량이 매우 많다.때문에 실시간 렌더링이 아닌 영화 CG같은 곳에 많이 쓰였지만, 엔비디아의 RTX 그래픽 카드가 RT코어와 머신러닝을 이용한 최적화를 통해 실시간 레이트레이싱을 지원하면서 게임에도 적용할 수 있게 되었다.다음 그림 같이 카메라로 부터 광선을 발사하여 광선이 물체와 부딪히면 광선과 대응하는 픽셀에 RGB값을 변경하게 된다.빛을 광원이 아닌 카메라에서 부터 역추적 하는 이유는 광원에서 나온 빛 중 일부만 카메라에 비치게 되는데 카메라에 비치지 않은 빛은 렌더링 결과에 영향을 미치지 못한다. 때문에 불필요한 연산을 줄이기 위해 카메..

후면 추리기(Backface Culling) 컴퓨터 그래픽스에서 카메라의 반대 방향을 보고 있는 폴리곤을 판별해 렌더링에서 제외하는 것이다. 불필요한 연산을 줄여 최적화에 도움이 되고 반투명 물체를 구현하는데 필요하다. CW(Clock wise), CCW(count clock wise) 폴리곤 정점의 배열이 시계방향인지, 반시계방향인지를 판단하여 면이 앞을 보고 있는지, 뒤를 보고 있는지 판단한다. 카메라 위치를 c, 폴리곤 정점의 위치를 각각 p0,p1,p2라고 하자 정점 하나를 기준으로 잡고 나머지 정점을 향하는 벡터 v0,v1을 다음과 같이 구할 수 있다. 두 벡터를 외적하면 폴리곤의 법선벡터인 n을 구할 수 있다. 카메라에서 폴리곤의 기준점을 향하는 벡터 r을 다음과 같이..