그래픽스 면접 질문
렌더링
렌더링 파이프라인에 대해 설명해주세요
렌더링 파이프라인은 3차원의 도형 혹은 이미지
를
2차원 래스터 이미지로 표현
하기 위한 단계적 방법을 의미합니다.
렌더링 파이프라인의 과정으로 Input assembler
, Vertex shader
, Rasterization
, Pixel shader
, Output merge
가 있습니다.
Input assembler
단계에서는 CPU에서 GPU에게
렌더링을 수행할 도형의 정점 정보들을 정점 버퍼에 담아 전달
합니다.
Vertex shader
단계에서는 Input assembler단계에서 전달받은 정점 데이터를
Local Space
=> World Space
=> View Space
=> Projection Space
로 변환합니다.
Rasterization
단계에서는 3D 도형을 스크린의 2D 픽셀 데이터로 변환
해줍니다.
Pixel shader
단계에서는 래스터화된 도형에 텍스쳐를 입혀 색을 표현
합니다.
Output merge
단계에서는 Pixel shader단계에서 결정된 픽셀의 색상에
불투명도를 나타내는 알파(Z)값을 계산하여 최종적으로 화면에 보일 픽셀을 생성
합니다.
Local Space에 대해 설명해주세요
Local Space는 정점들을 객체를 기준으로 어디에 위치해 있는지 표현하는 좌표계
입니다.
World Space에 대해 설명해주세요
World Space는 3D 세계 내에서 객체가 어디에 위치해 있는지 표현하는 좌표계
입니다.
World Space는 Local Space에서 SRT 행렬 계산
을 통해 적용합니다.
View Space에 대해 설명해주세요
View Space는 카메라를 기준으로 객체가 어디에 위치해 있는지 표현하는 좌표계
입니다.
Projection Space에 대해 설명해주세요
Projection Space는 3D 객체를 2D 화면에 투영하는 좌표계
입니다.
정점(Vertex)에 대해 설명해주세요
Vertex는 2D나 3D 공간에서의 정점의 속성을 가지고 있는 데이터 구조입니다.
Vertex의 속성은 위치
, 색
, 반사율
, 텍스쳐 좌표
, 법선 벡터
, 접선 벡터
를 가지고 있습니다.
UV에 대해 설명해주세요
UV는 2D 이미지를 3D 공간의 폴리곤에 Mapping 하기 위해 필요한 2차원 좌표계
입니다.
UV는 0 ~ 1까지의 범위를 가집니다.
기하
내적에 대해 설명해주세요
내적은 결과값으로 스칼라를 반환
하고 내적하는 두 벡터가 직교할때 0을 반환
합니다.
내적의 용도로는 두 벡터의 시야각
과 방향에 따른 속도
를 구할 때 사용됩니다.
외적에 대해 설명해주세요
외적은 결과값으로 두 벡터의 법선 벡터를 반환
하고
외적하는 두 벡터가 평행할 때 영벡터를 반환
합니다.
외적의 용도로는 두 벡터의 법선 벡터
를 구할 때와 오브젝트가 왼쪽인지 오른쪽인지 판별
할 때 사용됩니다.