본문 바로가기
Study/개념 정리

[Study] 네트워크 & 렌더링 파이프라인

by chobbo 2024. 7. 26.

네트워크 프로토콜 (IP, TCP, UDP)

네트워크 프로토콜이란 데이터를 주고받는 데이터 통신을 원활하게 하기 위해 미리 정해놓은 통신 규약이다.

 

OSI 7 Layer

 

Application 계층

- 사용자와 바로 연결되어 있다.

- 사용자로부터 정보를 입력받아 하위 계층으로 전달 or 하위 계층에서 전송한 데이터를 사용자에게 전달

Presentation 계층

- 받은 데이터를 인코딩 or 디코딩하여 데이터의 형식을 정해주는 계층

 

Session 계층

- 네트워크 상 양쪽 연결을 관리하고 연결을 지속시켜주는 계층

- TCP/IP 세션을 만들고 없애는 역할

 

Transport 계층

- 데이터가 실제로 전송될 때 신뢰성을 보장하기 위한 계층이다.

- 데이터 패킷이 정상적으로 전달되었는지 확인하고, 정상적으로 전달되지 못했다면 재전송하는 역할.

- 프로토콜 : TCP, UDP

 

Network 계층

- 데이터 패킷의 경로를 설정 & 패킷을 목적지까지 라우팅

- 프로토콜 : IP

 

Data Link 계층

- 전달된 패킷을 프레임으로 캡슐화하여 물리 주소로 데이터를 전송.

 

Physical 계층

- Data Link 계층에서 전송된 데이터를 전기적 신호로 변환하여 다른 시스템에 전송


 

 

더보기
내가 이해한 대로 적어보았다.

 

사용자의 요청으로 데이터가 Application 계층을 통해 생성되면

Presentation 계층에서 데이터의 형식을 변화 (ex 인코딩)하고

Session 계층에서 네트워크 세션의 생성과 관리를 담당하고

Transport Layer에서 프로토콜에 따라 데이터의 전송을 신뢰성있게 보장, 제어, 수정하고

Network Layer에서 데이터 패킷의 경로를 설정 (IP 프로토콜에 데이터를 패킷으로 나누어줌)

Data Link Layer에서 전달된 패킷을 프레임으로 캡슐화하여 물리적 네트워크 주소(Mac 주소)로 데이터를 전송.

Physical 계층은 전달된 데이터를 전기 신호로 변환하여 다른 시스템으로 전송

----

해당 데이터를 받는 쪽에서

Physical 계층에서 전기 신호를 수신하여 데이터로 변환하고

Data Link 계층에서 데이터를 프레임으로 변경하여 네트워크 계층으로 데이터를 전송

Network 계층에서는 데이터를 패킷으로 나누어 경로를 설정

Transport Layer에서 프로토콜에 따라 데이터의 전송을 신뢰성있게 보장

Session 계층에서 네트워크 세션 의 생성과 관리를 담당하고

Presentation 계층에서 데이터의 형식을 변화 (ex 디코딩)하고

Application 계층을 통해 사용자에게 데이터 제공

 

 


TCP (Transmission Control Protocol)

- 전송 계층에서 사용하는 프로토콜.

- 데이터 패킷의 순서를 보장해준다. 

- 데이터가 누락되면 알 수 있다.

- 신뢰할 수 있는 프로토콜이며 가장 많이 사용된다.

- 연결형이다. 3-way handshake를 통해 연결하고 4-way handshake으로 연결해제한다.

- 위의 과정을 거치기 때문에 UDP보다 속도가 느리다.

 

- 위의 과정을 거쳐 양 측에서 연결을 확립한 수 통신을 시작하므로 데이터 패킷을 3번 교환하며 TCP통신 시작된다. 따라서 3-way handshake라 하는 것.

 

 

 

UDP (User Datagram Protocol)

- 전송 계층에서 사용하는 프로토콜.

- TCP와 달리 비연결형이며 데이터 제어에 대한 기능이 없음. 그냥 데이터를 분배하고 보내는게 끝이다.

데이터가 수신 호스트에게 잘 도착했는지, 누락된 데이터가 없는지 등은 알 수 없다.

- 신뢰성이 낮지만 속도가 빠름.

- 따라서 실시간 서비스와 같이 신뢰성 보다는 연속성이나 성능이 중요한 서비스에 자주 사용된다.

 

 

TCP와 UDP의 차이점

  UDP TCP
연결 방식 비연결형 연결형
패킷 교환 방식 가상 회선 방식 (한 개의 경로) 데이터그램 방식 (여러 개의 경로)
전송 순서 전송 순서가 바뀔 수 있다 보장한다
수신 여부 확인 X O
통신 방식 1:1 통신, 1대다 통신, 다대다 통신 1:1 통신
신뢰성 낮다 높다
속도 높다 느리다

 


IP (Internet Protocol)

- 네트워크 계층에서 사용하는 프로토콜.

- 네트워크에서 데이터를 전송할 때 사용하는 규약을 정의하며,

각 컴퓨터를 고유 주소로 식별하기 위해 IP주소를 사용한다.

 


 

렌더링 파이프라인이란?

 

3차원으로 만들어진 모델을 2차원에 투영하는 렌더링 과정을 뜻한다.

 

 

3D 공간에 있는 오브젝트들이 화면에 표현되는 픽셀로 표시되기까지의 과정

렌더링 파이프라인을 통해 이루어진다.

 

 

초록색은 엔진 자체, 주황색이 프로그램적으로 조작이 가능한 부분.

 

1. 입력 어셈블러

CPU가 버텍스 데이터를 담는 버텍스 버퍼(위치, 색상 등)를 GPU에게 전달해준다.

GPU는 정점 버퍼를 받아 조립해주기에 Input Assembler 단계라고 한다.

이러한 과정을 거치는 이유는 GPU가 CPU의 자원에 직접 접근하지 못하기 때문이다.

즉 입력 어셈블러는 드로우콜에 의해 제공된 버텍스 데이터를 사용하여 도형(Primitive)로 조립해준다.

 

2. Vertex Shader

첫번째 과정을 겪으면 조립된 각 도형들은 자신만의 좌표계를 가지고 있어 

하나의 공간 좌표계로 모으기 위한 작업이 필요하다. 

MVP(Model, View, Projection) 변환을 통해 위의 작업을 진행해준다.

 

더보기

Model 변환

- 오브젝트의 로컬 좌표계를 월드 좌표계로 변환하는 과정

View 변환

- 월드 좌표계에서 카메라의 뷰 좌표계로 변환하는 과정

Projection 변환

- 뷰 좌표계에서 클립 좌표계로 변환하여 2D 화면에 투영하는 과정

 

3. Tessellation (테셀레이션)

하나의 도형을 여러 개의 도형으로 쪼개는 것을 테셀레이션이라고 한다. 

저해상도의 메시가 부드러운 고해상도의 메시로 변하게 된다.

 

 

4. 기하 셰이더(Geometry Shader) - 생략 가능하다

기본 도형에서 점, 선 등을 수정할 수 있게 해주는 쉐이더이다. 

필요할 때마다 도형을 수정해 사용할 수 있어서 성능 향상에 도움을 줄 수 있다.

 

 

5. 래스터라이즈(Rasterize)

3D 도형이 픽셀로 변경되는 과정이다. 

우리가 가진 정점 데이터는 말그대로 정점의 데이터이므로 정점 사이의 공간은 보간을 통해

픽셀에 적절히 반영된다. 이 과정에서는 아직 색깔이 존재하지 않는다.

 

 

6. Fragment Shader

래스트화된 픽셀에 색을 입혀주는 과정이다. 

라이팅과 그림자, 투명도, 텍스쳐 색상은 모두 이 과정에서 입혀지게 된다.

 

위의 과정을 거친 픽셀을 디스플레이 버퍼에 저장한 후 

디스플레이 버퍼의 이미지를 모니터에 출력해주는 과정을 통해 화면에 표시된다.

 

 

셰이더를 활용해본 경험이 있을까요? 어떻게 활용했는지 설명해주세요.

쉐이더 그래프를 사용해보았는가? 쉐이더를 직접 수정해서 이펙트를 만들어보았는가?

없습니다...

 

 

1. 멀티플레이 동기화는 보통 TCP일까요 UDP일까요? 그 이유를 작성해봅시다.

 

UDP이다.

멀티플레이에서는 실시간 전송이 매우 중요하다. 

데이터 패킷의 순서를 보장하는 것 보단 빠른 업데이트가 우선시되고,

네트워크 부하를 줄이는 것이 중요(UDP는 패킷 크기가 상대적으로 작다)하므로 UDP가 사용된다

 


2. Unity Built-in Render Pipeline과 Universal Render Pipeline의 차이점은 무엇이 있을까요?

 

Unity Built-in Render Pipeline

- 기본으로 제공되는 렌더링 파이프라인이다.

 

Universal Render Pipeline

- Unity의 Scriptable Render Pipeline(SRP) 시스템의 일부로, 유연한 렌더링을 지원하기 위해 설계된 모듈화된 렌더링 파이프라인이다.

- Unity Built-in은 커스터마이징이 제한적이지만, URP는 커스터마이징 확장이 유연하다.

- 성능이 최적화되어 있으며 Shader Graph를 통해 그래픽스 작업을 할 수 있다.

'Study > 개념 정리' 카테고리의 다른 글

[Study] 디자인 패턴  (0) 2024.10.01
[Study] MVC 패턴  (0) 2024.08.01
[Study] 게임수학  (0) 2024.07.24
[Study] 멀티스레드 & GPU  (0) 2024.07.23
[Study] JSON과 직렬화  (0) 2024.07.22