자세히보기

공부 나눔 (Sharing Study)/Unity만

[Unity] 그래픽스

윤스톤 2023. 9. 11. 10:25

* 이 게시글은 아래 영상을 공부한 내용을 개인적으로 정리한 것입니다.

 

[그래픽스 라이브러리(GL)]

플래폼마다 지원하는 그래픽스 라이브러리가 다름 (그래픽스 라이브러리 = 그래픽스 API)

유니티는 여러 플랫폼에서 사용/배포가 가능함 → 다양한 그래픽스 라이브러리를 지원함

유니티에서는 직접 사용고자하는 그래픽스 API를 고를 수도 있고, 자동으로 설정할 수도 있음

(최적화를 위해서는 필요한 것만 사용하는 것이 좋음)

 

씬 하나를 렌더링할 때는 한번에 뿅! 그려지는 게 아니라 하나하나 순차적으로 그려짐

 

[CPU와 GPU]

CPU에서 사용하는 메모리, GPU에서 사용하는 메모리가 따로 있음

(모바일에서는 하드웨어 원칙으로 하나의 물리적인 영역을 사용하지만 논리적으로는 구별되어있음)

 

CPU : 로직, 가비지컬렉터 등

GPU : 텍스처, 쉐이더 등

 

렌더링 하기 위해서 렌더 상태가 들어있는 테이블이 저장됨

CPU로부터 렌더링하라는 명령이 오면 렌더 상태를 체크해서 상태에 맞게 렌더링함

(세팅 → 렌더링 → 세팅 → 렌더링 → 반복)

 

상태 테이블 하나하나 커맨드임, 커맨트 버퍼에 쌓인 것들을 하나씩 처리함

 

쉐이더도 상태 테이블에 들어가는 것 중 하나

여러 가지로 세분화되어있음 → 우리 눈에는 하나지만 GPU에는 여러가지로 갈라져서 넘어감

 

(쉐이더도 하나하나의 프로그램이라 GPU에서도 이 프로그램을 이용해 렌더링 함,

그래서 바꿔야 하는 상황이 발생하면 꽤 많은 비용을 먹게 됨 >  성능 이슈)

 

 

[DirectX10 렌더링 예시]

하나의 오브젝트를 렌더링하기 위해 거치는 코드 예시

반응형