그래픽스/DX12 4

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

다중표본화의 이론 모니터의 픽셀들이 무한히 작지는 않기 때문에, 모니터 화면에 임의의 선을 완벽하게 나타내는 것은 불가능하다. 흔히 이 때, 나타나는 현상이 앨리어싱 효과, 다른 말로는 계단현상을 보여준다. 선을 픽셀들의 배열로 "근사"치에 가깝게 연산하더라도 완벽히 일치할 수 없기에 나타나는 현상이다. 삼각형의 변에서도 이와 비슷한 앨리어싱 효과가 나타난다. 근래의 모니터는 모니터의 해상도가 높아, 픽셀 크기를 줄이면 문제가 크게 완화되었기에 계단 현상이 거의 눈에 띄지 않을 정도가 되었다. 그러나 모니터 해상도를 키우는 것이 불가능하거나 키워도 충분하지 않을 경우에는 antialiasing 안티엘리어싱 혹은 앨리어싱 제거 기법을 적용할 수 있다. 그런 기법 중 하나가 초과표본화(supersamplin..

그래픽스/DX12 2023.12.22

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

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

그래픽스/DX12 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

레이 트레이싱 Ray-trace 예제와 원리

극사실적 렌더링의 목표는 사진과 구분할 수 없을 정도의 3D 장면 이미지를 생성한 것이다. 거의 대부분의 극사실적 렌더링 시스템은 레이트레이싱(ray-tracing)알고리즘에 의존한다. 사실 레이트레이싱은 매우 단순한 알고리즘이다. 환경에 있는 물체와 간섭하고 반사되는 장면을 지나는 광선 경로를 추적하는 방법이다. 레이 트레이싱에 깊게 알기 앞서, DX12 API에 있는 레이 트레이싱 샘플을 살펴보자. (번역 수준이 높지 않으니 원문을 통해 이해하길 추천) - 출저, NVIDIA DEVELOPER (https://developer.nvidia.com/rtx/raytracing/dxr/dx12-raytracing-tutorial-part-1) By Martin-Karl Lefrançois and Pasca..

그래픽스/DX12 2023.10.15