DX11_Rendering_PipeLine

Download Report

Transcript DX11_Rendering_PipeLine

DX11
렌더링 파이프 라인
렌더링 파이프 라인
• 3차원 장면의 기하학적 기술과 가상 카메
라의 위치 및 방향이 주어졌을 때, 현재 카
메라에 비친 3차원 장면의 모습에 근거해
서 2차원 이미지를 생성하는데 필요한 일
련의 단계(stage) 들 전체를 뜻한다.
렌더링 파이프라인
입력 조립기 단계
(IA)
GPU자원
:
버퍼
(정점
인덱스..),
텍스처
(후면버퍼,
전면버퍼,
이미지…)
…
정점 셰이더 단계
(VS)
덮개 셰이더
테셀레이션
영역 셰이더
기하 셰이더 단계
(GS)
(계속)
출력스트림
(OS)
(이어서)
레스터화 단
계
픽셀 셰이더 단계
(PS)
출력 병합기 단계
(OM)
GPU자원
:
버퍼
(정점
인덱스..),
텍스처
(후면버퍼,
전면버퍼,
이미지…)
…
입력조립기 단계
• 기본 도형(삼각형, 선, 점) 들을 조립
Input
LayOut
위상구
조
인덱스
정점
정점 셰이더 단계
• 입력조립기 단계에서 조립후 정점들이 정
점셰이더(Vertext Shader) 단계로 입력된
다.
• 정점 셰이더는 정점 하나 받아서 정점 하
나를 출력하는 함수
• 이후 레스터화 단계에서 정점 보간으로 픽
셀이 정해져서 넘어간다.
픽셀 셰이더 단계
• 레스터화 단계에서 정점 보간으로 픽셀이
정해져서 넘어간다.
• 픽셀 단편당 처리
• 조명 , 반사, 그림자 효과
정점 버퍼
• 특별한 Direct3D 자료 구조
• 렌더링 파이프라인에 묶인다.
• 자료구조일 뿐 어떻게 조합해서 기본도형
을 형성할 것인지 말해주지 않음
• Primitive topology(기본도형 위상구조) 를
통해서 Direct3D에게 알려줌.
ID3D11DeviceContext::IASetPrimitiveTopology(
D3D11_PRIMITIVE_TOPOLOTY Topology) ;
색인 버퍼 (index buffer)
• 특별한 Direct3D 자료 구조
• 렌더링 파이프라인에 묶인다.
• 고유한(중복되지 않은) 정점을 어떤 순서
로 삼각형을 형성하는지에 대해 (색인 3개
가 삼각형 1개) 설정한 버퍼
렌더상태
• ID3D11RasterizerState
– 파이프라인의 래스터화기 단계를 구성하는데
쓰이는 설정들을 묶은 상태 집합을 대표.
• ID3D11BlendState
– Blending 연산을 구성하는 데 쓰이는 상태 집
합을 대표한다.
• ID3D11DepthStencilState
– 깊이 판정과 스텐실 판정을 구성하는데 쓰이
는 상태 집합을 대표한다.
상수 버퍼
• 셰이더가 접근할 수 있는 다양한 자료를
저장하는 유연한 자료 블록
• 응용프로그램 측에서 효과 프레임워크를
통해서 상수 버퍼의 내용을 실행시점에서
변경할 수 있다.
– 각 물체를 그리기 전에 상수버퍼를 갱신하고,
셰이더에서 갱신된 상수버퍼의 변수들을 사용
하여 처리 한다.
효과 프레임 워크 (1)
• 특정한 렌더링 효과를 구현하는 데 함께 쓰이
는 셰이더 프로그램들과 렌더 상태들을 ‘효과
(effect)’라고 부르는 단위로 조직화 하고 관리
하는 틀을 제공하는 일단의 편의용 코드 집합
이다.
예)
1) 물을 렌더링 하기 위한 셰이더와 렌더 상태를 하나의
효과로 정의,
2) 금속 물체를 위한 셰이더와 렌더 상태를 또 다른 이름
의 효과로 정의
=>렌더링시 물을 렌더링 할때 물효과를 사용, 금속 물체
는 금속물체용 효과를 사용하여 렌더링 한다.
효과 프레임 워크 (2)
• 하나의 효과는 적어도 하나의 정점 셰이더
와 적어도 하나의 픽셀 셰이더, 그리고 그
효과를 구현하는 데 필요한 렌더 상태들로
이루어 진다.
효과 프레임 워크 (3)
• 효과 파일은 그냥 보통의 텍스트 파일
• 하나의 효과 파일은 셰이더 코드와 상수 버퍼의 내용을 담을 뿐 아
니라, 적어도 하나의 기법(technique) 정의도 담는다 .
• 하나의 기법은 적어도 하나의 pass를 포함한다.
technique11 ColorTech
{
pass P0
{
SetVertexShader( ….);
SetPixelShader(…);
}
}