Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

class : Design Code

Graphics Pipeline (임시백업) 본문

그래픽스

Graphics Pipeline (임시백업)

클디코 2023. 3. 20. 12:55

1) CPU -> GPU 데이터 연산

U가 붙어있는 친구들 -> 연산장치

CPU의 메모리 *data -> GPU의 메모리 *data

cpu->gpu 연산은 direct하게 연결안됨. 연결 요청 필요. 또한 bandwidth가 있음.

이에 느려지므로, 메인메모리에 있는 데이터를 통째로 GPU 메모리에 넣고 알아서 할일 하게 함.

이 데이터가 점점 커지므로... 이 메모리에 필요성이 계속 커지는 것.(ex, 딥러닝)

 

우리가 .cpp 에서 초기화하고 바인딩 하는 것들.

gpu에서는 어떠한 규약을 따라야함.-> opengl, directX가 도와줌.

 

우리가 어떠한 도형을 표현할 때, 

메모리상에는 vertex들만 각각 들어가고 연결관계는 오더로 들어가는 것,

이 친구들은 다 독립적으로..오더에 따라 옵션적으로 삼각형이 될거임~ 하는 것.

 

draw를 딱 하는 순간, input assembler stage로 들어서고,

작업이 끝나는 순간 output-merger Stage로 감.

그래서 그려야할 씬을 이미지 형태로 리턴해줌. (output은 이미지 한 장!)

 

2) 파이프라인

* VERTEX SHADER,  Hull Shader, Geometry Shader, Pixel Shader

이런 친구들은 하나의 프로그램. 이 친구들의 동작을 마음대로 바꿀 수 있음.

단, 지켜야하는 규약들이 있어서 막 엄청...free는 아님. 

 

* Input-Assembler Stage, Tessellator Stage, Rasterizer Stage, Stream Output Stage, Output-Merger Stage

이 친구들은 hardware wired stage, 우리가 절대 바꿀수 없음. 규약 지켜야하고 규약에 맞는 아웃풋을 만들어서 던져줘야함.

 

------------------------------------------

 

<Input-Assembler Stage>

primitives(삼각형 폴리곤..이라고 생각쓰) 혹은 patches 생성

D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST -->아항~~ 삼각형?? vertex buffer 정보 3개씩 끊어줄게 ㅇㅇ

이런 인식 해줌. -QUAD면 사각형~~4개씩 ㅇㅇ 이런느낌

 

<VERTEX SHADER>

vertex를 하나하나씩 처리. 바로 옆에 있는 정보? ㅋ 가져올 수 없음. 상당히 병렬적인 vibe.

암튼 각 vertex에 대한 처리를 해줌!!

~~아래 중요~~

CPU는 매트릭스 연산에 안좋음..일단 할 일도 많아서 이런 연산이랑 안친함.

그런데 GPU는 이러한 MATRIX연산 처리에 최적화되어있음.

  --> pixel shader에서 해당 작업을 하면 vertax shader에서 연산 3번때리고 보간하면 되는걸 왕창 작업하게 됨.. 손해!

 

 

<Geometry Shader>

그래픽스 쪽에서 정점이나 이런거 바꿀때 사용..하는데 일반적으로 잘 쓰이지는 않음

 

 

<Stream Output Stage>

렌더타겟(임시버퍼)에 있는 지금까지의 output을 CPU에 넘겨서 사용

 

<Rasterize Stage>

사이 보간, 픽셀로 변경

 

<PIXEL SHADER>

픽셀 각각의 컬러 결정 -> 텍스쳐링, 라이팅 결정

 

 

 

 

https://docs.microsoft.com/ko-kr/windows/uwp/graphics-concepts/graphics-pipeline

 

그래픽 파이프라인 - UWP applications

Direct3D 그래픽 파이프라인은 실시간 게임 애플리케이션용 그래픽을 생성하도록 설계되었습니다. 데이터는 각각의 구성 가능하거나 프로그래밍 가능한 각 단계를 통해 입력에서 출력으로 흐릅

docs.microsoft.com