본문 바로가기

DX

DX11 - 1

DirectX?

멀티미디어 및 게임 프로그래밍 인터페이스(API). 주로 Windows 운영 체제에서 사용되며, 게임 및 그래픽 응용 프로그램 개발자에게 필수적인 도구 CPU 만으로 게임을 구동 시킬 수 있지만 고급 게임 수준까지 가게되면 연산량을 CPU혼자 버티지 못한다. 그래서 GPU가 몇몇가지 연산을 대신 수행하는데 이때 모든 연산과 명령을 다 수행하는 것이 아니고 정해진 규격대로 명령을 수행한다. DX 공부는 정해진 규격과 규칙을 배우는 과정이다.

GPU에 일을 시키는 라이브러리.

 

그래픽스 OT

 

운영체제를 설치하면 보조기억장치(HDD,SSD)에 운영체제가 저장된다. 컴퓨터 실행 시 SSD에 있던 내용들이 메모리에 영역을 차지하게 된다. 그 후 코드를 짜서 실행하면 로직은 CPU가 실행하며 그 안에 데이터 정보는 메모리가 들고 있는다.

 

 

GPU란?

CPU와 차이는?

 

CPU는 굉장히 많은 연산을 처리하지만 코어가 적다. 컴퓨터 내에 여러 연산을 처리함. GPU 코어는 많지만 성능이 좋지 않다. CPU로 복잡한 연산을 하고 GPU는 연산이 복잡하지는 않지만 많은 양의 연산이 필요 할 때 사용한다.클라이언트에서는 GPU를 많이 사용한다. GPU 일감이 독립적이어야함.모니터에 2D 화면에 그려줘야한다. 픽셀이 1920*1080 이면 그 많은 픽셀을 연산해서 색을 입혀야한다. 게임은 실시간 렌더링 된다 픽셀 단위로 모든 색상을 연산하고 캐릭터도 상당히 많은 폴리곤과 버텍스가 있다. 이러한 월드 내에 모든 오브젝트들의 포리곤과 정점들의 좌표를 연산을 통해 구해줘야 원하는 화면이 나온다. 이 모든 계산을 CPU에 보내면 무리가 생기니 GPU에게 드로우콜 하는 것.

 

게임에서 GPU?

GPU는 게임, 암호학(비트코인 채굴), 인공지능(무수히 많은 경우를 계산해야한다.)

GPU는 연산이 메인. 99% 데이터 저장을 하긴함. ALU라는 연산 단위가 CPU보다 훨씬 많다. 반대로 저장 역할을 하는 캐쉬, Contorl 등이 굉장히 적다.

GPU는 렌더링 파이프라인을 가지고 있다. 게임에서 렌더링과 관련된 일을 처리할 때의 순서도 이다.

 

간단한 설명

Input-Assembler - IA : 모델의 정보를 IA 단계에 넘겨준다.

Vertex Shader - VS : 물체가 로컬 영역에 있던 것을 월드에 배치하고 카메라로 찍는 거에 따라 물체가 월드 상 위치와 카메라 위치에 따라 모니터에 2D 화면으로 보여지는 위치가 달라지는데 해당 위치를 연산하는 일련의 단계들을 Vertex Shader 에 넣어준다. 위치를 구하는 연산은 버텍스를 기준으로 이루어진다. 버텍스마다 Vertex Shader 에서 동작하는 함수를 호출해서 각 버텍스들이 어디에 위치해야 하는지 연산을 실행.

Rasterize - RS : 버텍스들의 위치를 찍으면 해당 버텍스로 만들어진 폴리곤으로 어느 위치에 있을지 찍은 후에 ‘보관하는 단계’ 폴리곤이 찍히면 해당 폴리곤 안의 픽셀 위치 정보도 보관한다.(각 픽셀의 위치가 폴리곤 안에 들어있는지 판별) 각 정점마다 위치와 색상을 보관하여 어디가 색이 채워져야 되는지 연산하는 단계

Pixel Shader - PS : 출력 색상을 결정한다. 조명 계산과, 픽셀 후처리 등의 연산도 이 단계에서 이루어진다. 여기서 짠 쉐이더에 대해서 카툰,실사 느낌 등을 정해줄수있다.

Output - Merger - OM : 최종적으로 픽셀의 색상을 생성하여 렌더 타깃으로 출력하는 단계. 일부 픽셀 단편 들이 깊이 판정이나 스텐실 판저에 의해 버려지며, 버려지지 않은 픽셀 단편은 후면 버퍼에 기록. 블렌딩도 여기서 실행. 모든 물체가 파이프라인을 거친 후 아웃풋 결과를 취합해서 화면에 보이게 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'DX' 카테고리의 다른 글

렌더링 파이프라인에서 좌표 변환에 대해서  (0) 2024.11.02
DX11 삼각형 띄우기 - 1  (2) 2024.07.23
게임 루프의 역할과 구조  (0) 2024.05.16