Deff_Dev

[CS] 네트워크 & 렌더링 파이프라인 본문

면접 질문 정리/CS

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

Deff_a 2024. 7. 27. 15:21

1. 네트워크 프로토콜 (IP, TCP, UDP)에 대해 설명해주세요.

 

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

 

더보기
OSI 7계층

 

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