포스트

컴퓨터그래픽스 11. 최적화 기법이 무엇이 있까

컴퓨터그래픽스 11. 최적화 기법이 무엇이 있까

최적화 기법에는 무엇이 있는가?

알아보기 전에, 성능에 문제가 생기는 부분은 어떤 부분일까? 여러 원인이 있을 수 있다.

  1. GPU의 연산 양이 너무 많음 (셰이더가 복잡하거나, 픽셀이 많거나)
  2. Bus 작업이 많음 (Bus 사용은 느리다)
  3. 메모리 공간 부족, 데이터 너무 큼

GPU의 연산을 줄이자!

(1) Levels-of-Detail (LoD) 멀리 있는 물체는 단순한 모양으로 바꾸고, 가까이 있을 수록 디테일을 복원한다. (How?)

Pasted image 20250402024123.png

(2) Culling (컬링) 카메라에서 안보이는건 그리지 말자. 두가지 종류가 있다.

  • Frustum Culling : 카메라 시야 밖에 있는건 그리지 않는다. (How?)
  • Occlusion Culling : 다른 물체에 가려저서 보이지 않는건 그리지 않는다. (How?)

Bus 연산을 줄이자!

(1) Optimizing Draw call (드로우 콜 최적화) 드로우 명령 glDrawElements()은 호출이 잦을수록 오버헤드가 크다. 명령을 GPU에 보내주는 Bus 연산도 느리고, Draw 명령이 유효한지 검사도 해야하기 때문이다. 이걸 줄일 수록 좋다. 어떤 상황일 때 줄일 수 있을까?

만약 같은 모델을 100개 그려야 한다면, 100번 드로우 명령을 보내지 말고, 한번의 명령으로 100개를 그리는게 훨씬 효율적이다. 이를 Batching이라고 부른다.

Pasted image 20250402024808.png

잘만 쓰면 100배 넘는 효율을 뽑아낼 수 있다.

(2) Flattening (평탄화/병합) 자잘한 모델을 하나로 합치면 여러번 Draw할 것을 한번에 그릴 수 있다.

Anti-aliasing이 무엇인가?

Pasted image 20250402025116.png

계단 현상을 해결하기 위한 기법이다. 두가지 방법이 있다. (1) Supersampling. 화면 자체를 더 높은 해상도로 그리고, 원래 해상도로 줄인다. 여러 픽셀 정보가 합쳐지면서 평균이 사용되므로, 자연스럽게 계단 현상이 해결된다. 느리지만 확실한 방법이다.

(2) Multisampling. 테두리를 검출하고, 주변 픽셀의 정보를 약간 섞어 보간하는 방식이다. 성능이 슈퍼샘플링 방식보다더 좋다.

Deferred Rendering이 무엇인가?

스킵..