그래픽스 42

D3D11 원근 투영과 거리 비교

이번 수업 목표는 1열로 나열된 구들을 가지고 3D 입체 공간에서, 여러개의 물체의 원근감을 표현하는 것이다. 홍정모 교수님께서 단순히 여러 개의 물체 뿐만이 아니고, 여러 가지의 물체로 확장해주신 엔진 덕분에 기반부터 구현하지 않고 해당 원근감 원리에 대해서만 집중할 수 있게끔 해주셨다. 처음에는 구인 물체로 원근감을 표현하고, 이후에는 구가 아닌 물체로 원근감을 표현하신다. 이번 수업에서 원근법을 표현하려고 쓰는 기법은, 가상의 레이를 쏘고 구가 충돌하는 순서에 따라 거리를 구하는 방법이다.

그래픽스/DX11 2023.12.21

D3D12 3D 프로그래밍 입문 - 기본 지식 (2)

교환 사슬과 페이지 전환 애니메이션이 껌벅이는 현상을 피하려면 다음과 같은 방법을 사용하는 것이 최선이다. 우선, 애니메이션의 한 프레임을 전체 화면 바깥(off-screen) 텍스처에 그린다. 그런 텍스처를 후면 버퍼(back buffer)라고 부른다. 그 후면 버퍼를 하나의 완전한 프레임으로서 화면에 표시한다. 이렇게 하면 화면을 보는 사용자에게는 프레임이 그려지는 과정이 나타나지 않는다. 이중 버퍼링을 효율적으로 구현하려면 하드웨어로 관리되는 두 개의 텍스처 버퍼가 필요한데, 하나는 전면 버퍼(front buffer)이고 다른 하나는 앞에서 언급한 후면 버퍼이다. 화면에는 전면 버퍼에 담긴 이미지 자료가 표시된다. 전면 버퍼가 화면에 표시된 동안 애니메이션의 다음 프레임을 후면 버퍼에 그리고, 다 ..

그래픽스/DX12 2023.12.21

밉맵(Mipmap)

밉맵이란? 3차원 그래픽스의 텍스처 매핑 분야에서, 밉맵(mipmap)은 렌더링 속도를 향상시키기 위한 목적으로 기본 텍스처와 이를 연속적으로 미리 축소시킨 텍스처로 이루어진 비트맵 이미지의 집합이다. 밉맵은 일반적으로 3D 씬에서 오브젝트를 렌더링하는 데 사용되며 여기서 텍스처된 오브젝트는 카메라로부터 거리에 따라 달라질 수 있다. 더 높은 밉 레벨은 카메라에 가까운 오브젝트에 사용되며 더 낮은 밉 레벨은 더 먼 오브젝트에 사용된다. 밉맵은 GPU가 전체 해상도보다 낮은 해상도로 텍스처를 렌더링하는 상황에서 렌더링 작업 속도를 높이고 렌더링이 아티팩트를 줄일 수 있다. 효과적으로 캐시된 밉은 원본 텍스처의 다운샘플링된 버전이다. GPU는 원본 전체 해상도 텍스처에서 더 많은 샘플링 작업을 하는 대신에 ..

그래픽스 2023.12.21

D3D12 게임 프로그래밍 입문 - 기본 지식 (1)

Direct3D 12의 개요 응용 프로그램과 그래픽 하드웨어 사이에 Direct3D라는 간접층과 하드웨어 드라이버가 Direct3D 명령들을 시스템의 GPU가 직접 이해하는 고유한 기계어 명령들로 번역해 주므로, 해당 GPU가 Direct3D 12를 지원하는 한, 응용 프로그램 개발자는 GPU의 세부사항을 걱정할 필요가 없다. 단, 이를 위해서는 GPU 제조사들이 Direct3D 명세를 준수하는 드라이버를 제공해야 한다. 이전 버전들에 비한 주된 개선점은 CPU 부담을 크게 줄이고 다중 스레드 지원을 개선하기 위해서 설계를 다시 했다는 점이다. D3D11보다 D3D12가 보다 헐씬 낮은 (즉, GPU 쪽에 더 가까운) 수준의 API가 되었다. D3D12는 이전보다 추상화가 줄었고, 개발자가 손수 관리해야..

그래픽스/DX12 2023.12.20

D3D11 Ray Tracing Vector 핵심 정리

Ray Tracing 이란? 광선 추적 또는 레이 트레이싱(ray tracing)은 가상적인 광선이 물체의 표면에서 반사되어, 카메라를 거쳐 다시 돌아오는 경로를 계산하는 것이다. 적게는 물체 하나가 반사하는 빛만 계산하면 되지만 많게는 물체를 구성하는 입자 하나하나의 빛을 전부 계산해야 되기 때문에 렌더링을 하는 데 있어 시간이 많이 소요되는 기술이다. 영상을 만드는 과정에서는 렌더링한 이미지 자체를 저장하는 것이기에 시간에 영향을 덜 받지만, 실시간으로 이러한 작업을 해야하는 게 비디오 게임 등의 경우엔 이를 위해서 많은 계산이 필요하여 컴퓨터 연산 속도가 중요해진다. 수학과 프로그래밍 프로그래밍에서 수학은 낯설기 때문에 어렵게 느껴지는 측면이 강한 것이지, 이러한 흐름을 어떻게 프로그래밍에 적용을 ..

그래픽스/DX11 2023.11.27

선형보간 및 폴리곤 메시

선행보간 선형 보간을 통한 매개변수 방정식을 이용하여 색상 보간으로 색을 추출할 수 있다. 그렇다면 만약 엔진 제작자가 마우스 위치에 따른 색상표를 뽑아낸다고 한다면 해당 이미지처럼 마우스 위치와 정점의 거리를 계산하여 선형보간으로 색상을 추출할 수 있다. 폴리곤 메시 저해상도의 메시는 빠르게 렌더링할 수 있지만 폴리곤의 각진 특징이 드러나기 쉽다. 반면 고해상도 메시는 처리 시간이 더 걸리지만 폴리곤의 각진 특징을 가려줄 수 있다. 정점의 개수가 많으면 해상도가 높다고 말하며, 정점이 적으면 해상도가 낮다고 말한다. 폴리곤 메시 표현은 삼각형 메시를 표현하는 것을 예로 들겠다. 이는 정점 배열로 나열하여 나타낼 수 있다. 이렇게 정점들이 저장된 배열을 정점배열이라고 한다. (vertex array) 삼..

그래픽스/OpenGL 2023.11.01

컴퓨터 그래픽스의 개요

컴퓨터 그래픽스란? 컴퓨터를 이용하여 영상을 생성하는 작업을 컴퓨터 그래픽스라 한다. 이 작업의 입력이 3차원 데이터로 주어지는 경우 3차원 그래픽스라고 부른다. 그래픽스의 발전은 나날이 눈에 띄게 발전되오고있다. 지난 30년간 영화 특수효과 뿐만 아니라 3차원 게임 내에서도 굉장한 발전을 이뤄오고있다. 이는 단순한 PC, 콘솔 게임 뿐만 아니라 모바일 영역에서도 고성능의 그래픽스를 찾아볼 수 있다. 실시간 그래픽스란? 그래픽스는 실시간 그래픽스와 비실시간 그래픽스로 나눌 수 있는데 실시간 그래픽스의 기준은 각 이미지를 1/30초 이내로 렌더링해야한다는 것이 기준이다. ( = Real-time graphics systems must render each image in less than 1/30th of..

그래픽스/OpenGL 2023.10.24

물리 기반 렌더러 - 레이 트레이싱 (2) - 카메라

레이 트레이싱 (2) - 카메라 레이 트레이싱에서 카메라란? 대부분의 사람들이 카메라를 사용하고, 이러한 카메라의 기본 기능에 익숙하다. 게임 엔진에서 카메라는 뷰포트에 보이는 장면을 보여준다. 카메라와 렌더러는 뗄 수 없는 관계이다. 어떻게 그릴 것이냐는 카메라의 위치, 카메라로 들어오는 광량에 따라 갈리니까 말이다. 카메라는 이미지를 저장하거나 보여주고, 한 조각의 필름이나 전자 센서에 이미지를 기록하기도 한다. 세상에서 사진을 찍는 가장 간단한 장치는 핀홀 카메라이다. 핀홀 카메라는 한쪽 면에 작은 구멍이 뚫린 빛이 새지 않는 박스로 구성되어있다. 구멍이 열러 있을 때 빛이 이 구멍으로 들어와서 다른 면에 부착된 사진 원진에 조사된다. 단순하지만 이런 종류의 카메라는 현재도 여전히 사용되며, 주로 ..

그래픽스 2023.10.16