Deff_Dev
[CS] 네트워크 & 렌더링 파이프라인 본문
1. 네트워크 프로토콜 (IP, TCP, UDP)에 대해 설명해주세요.
네트워크 프로토콜은 데이터를 주고받는 데이터 통신을 원활하게 하기 위해 미리 정해놓은 통신 규약이다.
Application 계층
- 사용자와 바로 연결되어 있다.
- 사용자로부터 정보를 입력받아 하위 계층으로 전달 or 하위 계층에서 전송한 데이터를 사용자에게 전달한다.
Presentation 계층
- 받은 데이터를 인코딩 or 디코딩하여 데이터의 형식을 정해주는 계층이다.
Session 계층
- 네트워크 상 양쪽 연결을 관리하고 연결을 지속시켜주는 계층
- TCP/IP 세션을 만들고 없애는 역할
Transport 계층
- 데이터가 실제로 전송될 때 신뢰성을 보장하기 위한 계층이다.
- 데이터 패킷이 정상적으로 전달되었는지 확인하고, 정상적으로 전달되지 못했다면 재전송하는 역할
- 프로토콜 : TCP/UDP
Newwork 계층
- 데이터 패킷의 경로를 설정 & 패킷을 목적지까지 라우팅
- 프로토콜 : IP
Data Link 계층
- 전달된 패킷을 프레임으로 캡슐화하여 물리 주소로 데이터를 전송
Physical 계층
- Data Link 계층에서 전송된 데이터를 전기적 신호로 변환하여 다른 시스템에 전송
IP, (Internet Protocol)
- 네트워크에서 데이터를 전송하기 위한 주소 체계를 제공하고 패킷이 목적지까지 전달되도록 경로를 설정한다.
- 각 장치에 고유한 IP 주소를 부여하여 데이터 전송 경로를 식변한다.
TCP, (Transmission Control Protocol)
- 신뢰성: TCP는 데이터 전송의 신뢰성을 보장하고 데이터가 손실되면 자동으로 재전송을 시도하며, 데이터가 올바른 순서로 도작하도록 보장한다.
- 순서 보장: 패킷이 전송된 순서대로 수신되며, 중복된 패킷이 제거된다.
- 속도: TCP는 데이터의 신뢰성을 보장하기 위해 추가적인 오버헤드를 가지므로, 데이터 전송 속도가 느릴 수 있다.
- 속도는 느려도 데이터를 확실하게 전달해야하는 채팅 시스템, 이메일, 파일 전송 등에 사용된다.
UDP, (User Datagram Protocol)
- 속도: UDP는 데이터 전송의 신뢰성을 보장하지 않으므로, TCP보다 훨씬 빠른 전송이 가능하다.
- 신뢰성 없는 전송: 패킷이 중복, 손실될 수 있으며, 순서가 바뀔 수 있다.
- 패킷 스위칭: UDP는 각 패킷을 독립적으로 전송하며, 비연결 지향적이다.
- 실시간으로 데이터를 빠르게 전송해야하는 게임, 동영상, 스트리밍 등에 사용된다.
TCP와 UDP의 차이점
- TCP는 느리지만 신뢰성있는 데이터 전송이 필요할 때 사용하고, UDP는 빠른 실시간 데이터 전송이 필요할 때, 사용한다.
2. 멀티플레이 동기화는 보통 TCP일까요 ? UDP일까요 ? 그 이유를 작성해봅시다.
- 멀티 플레이는 실시간으로 데이터를 빠르게 전송해줘야되므로 주로 UDP를 사용한다.
- 게임 도중 한 명이 나가거나 연결이 불안정할 경우에 게임이 멈추는 경우가 생기면 안된다.
3. 렌더링 파이프라인에 대해 설명해주세요.
- 3차원으로 만들어진 모델을 2차원에 투영하는 렌더링 과정을 뜻한다.
- 화면에 오브젝트를 그리는 과정을 제어하는 시스템으로, 단계적으로 나눠서 앞에 작업이 완료되면 다음으로 넘긴다.
4. 3D 공간에 있는 오브젝트들이 화면이 표현되는 픽셀로 표시되기까지의 과정을 설명해보세요.
1. Input assembler (입력 어셈블러)
-
- GPU가 CPU의 자원에 직접 접근하지 못하기 때문에 CPU가 버텍스 데이터를 담는 버택스 버퍼 (위치, 색상 등)를 GPU에게 전달한다.
- 즉, 입력 어셈블러는 드로우콜에 의해 제공된 버텍스 데이터를 사용하여 도형으로 조립해준다.
2. Vertex Shader
- 조립된 각 도형들은 자신만의 좌표계를 가지고 있어 하나의 공간 좌표계로 모으기 위한 작업이 필요하기 때문에 MVP (Model, View, Projection) 변환을 통해 위 작업을 진행한다,
Model 변환
- 오브젝트의 로컬 좌표계를 월드 좌표계로 변환하는 과정
View 변환
- 월드 좌표계에서 카메라의 뷰 좌표계로 변환하는 과정
Projection 변환
- 뷰 좌표계에서 클립 좌표계로 변환하여 2D 화면에 투영하는 과정
3. Tessellation [생략 가능]
- 하나의 도형을 여러 개의 도형으로 쪼개는 작업으로, 저해상도의 Mesh가 부드러운 고해상도의 Mesh로 변한다.
- LOD에 적용
4. Geometry Shader [생략 가능]
- 기본 도형에서 점, 선 등을 수정할 수 있게 해주는 쉐이더이다.
- 필요할 때마다 도형을 수정해 사용할 수 있어서 성능 향상에 도움을 줄 수 있다.
5. Rasterize
- 3D 도형이 픽셀로 변경되는 과정이다.
- 우리가 가진 정점 데이터는 말 그래도 정점의 데이터이므로 정점 사이의 공간은 보간을 통해 픽셀에 적절히 반영된다.
- 이 과정에서는 아직 색깔이 존재하지 않는다.
6. Fragment Shader
- 래스트화된 픽셀에 색을 입혀주는 과정이다.
- 라이팅과 그림자, 투명도, 텍스쳐 색상은 모두 이 과정에서 입혀지게 된다.
위 과정들을 거친 픽셀을 디스플레이 버퍼에 저장한 후 디스플레이 버퍼의 이미지를 모니터에 출력해주는 과정을 통해 화면에 표시된다.
5. Unity Built-in Render Pipeline과 Universal Render Pipeline의 차이점은 무엇이 있을까요 ?
Built-in Render Pipeline
- Unity의 초기 렌더링 시스템으로 2019 이전 버전에서 사용되던 파이프 라인이다.
- 최신 기술의 지원이 부족하며, 최신 그래픽 카드의 기능을 최대한 활용하는 데 한계가 있다.
Universal Render Pipeline
- 스크립팅이 가능한 렌더 파이프라인(Scriptable Render Pipeline)으로 플랫폼에 대한 범용성이 높은 파이프 라인이다.
특징
- Cross-Platform Compatibility
- URP는 Unity가 지원하는 모든 플랫폼에서 동작하도록 설계되어있다. 이는 모바일, 데스크톱, 콘솔 게임 뿐만 아니라 AR, VR 어플리케이션에도 적합하다.
- Performance and Scalability
- URP는 성능 및 확장성을 목표로 설계되어있다.
- 특히 저사양 장치에서도 뛰어난 성능을 제공하도록 최적화되어있다.
- 그래픽 설정을 쉽게 조절할 수 있어 다양한 장치에 적합하게 스케일링 할 수 있다.
- Modern Rendering Features
- URP는 현대적인 렌더링 기술을 제공한다.
- 이에는 주요 라이트 유형, 표준 쉐이딩 모델, 환경 리플렉션 등이 포함된다.
- Customizability
- URP는 사용자 정의 렌더링 파이프라인을 생성할 수 있도록 해주는 유연성을 제공한다.
- 이를 통해 특정 게임 또는 프로젝트에 필요한 고유한 렌더링 기능을 추가할 수 있다.
- Graphics Quality
- URP는 높은 품질의 그래픽을 제공한다.
- 이는 향상된 라이트 모델, 표면 쉐이딩, 포스트 프로세싱 효과 등을 사용하여 획득된다.
- Simplicity
- URP는 Unity의 기존 렌더링 시스템에 비해 사용하기 쉽다.
- 이는 그래픽 설정을 단순화하고, 초기 설정을 쉽게 하도록 도와주는 도구가 포함되어 있다.
- ⇒ 셰이더 그래프, VFX 그래프 제공
차이점
- URP는 Built-in에서 범용성이 높고 성능이 개선된 파이프 라인이다
'면접 질문 정리 > CS' 카테고리의 다른 글
[CS] 멀티스레드 & GPU (0) | 2024.07.27 |
---|