상세 컨텐츠

본문 제목

Forward Rendering VS Deffered Rendering

Study/Graphics

by Arq.Dev5igner 2024. 11. 1. 10:45

본문

Rendering pipeline에 대한 이해

  •  Forward / Deferred: Forward Rendering은 주로 모바일 게임과 같은 저사양 환경에서, Deferred Rendering은 고사양 PC나 콘솔 게임에서 많이 사용
    • Forward Rendering : 적은 수의 조명에서 빠르고 효율적이며 투명도 처리에 유리
      • 동작 방식: Forward Rendering은 각 오브젝트의 셰이더를 순차적으로 처리하면서 바로 화면에 렌더링하는 방식입니다. 각 픽셀에 대해 모든 조명 계산을 바로 적용*(1)하여 최종 색상을 출력
      • 조명 처리: 모든 조명이 픽셀마다 적용되므로, 조명이 많을수록 연산량이 많아져 성능이 저하될 수 있다. 일반적으로 소수의 조명만 사용될 때 효율적.
      • 장점:
        • 구현이 비교적 간단하여 셰이더 코드가 단순.
        • 메모리 사용량이 낮아 저사양 시스템에서 유리.
        • 투명 오브젝트 처리에 유리.*(2)
      • 단점:
        • 다수의 조명이 있는 장면에서 성능 저하가 발생
        • 다중 조명을 사용할 경우 조명당 계산 비용이 증가.
    • Deferred Rendering :  다중 조명 환경에서 효율적이고 고해상도 효과에 적합하지만, 높은 메모리 사용량과 투명 처리에 한계 
      • 동작 방식: Deferred Rendering은 모든 오브젝트의 색상, 노멀, 깊이 정보를 G-buffer*(3)라는 버퍼에 저장한 뒤, 조명 계산을 나중에 한꺼번에 처리하는 방식.
      • 조명 처리: 조명 계산을 나중에 적용하므로, 다수의 조명에도 상대적으로 성능이 덜 저하된다.
      • 장점:
        • 다중 조명을 효율적으로 처리할 수 있어, 조명이 많은 장면에서 유리.
        • 높은 해상도의 조명 효과와 그림자 처리가 가능.
      • 단점:
        • 추가적인 메모리와 연산이 필요하여 메모리 사용량이 높다.
        • 투명 오브젝트 처리에 어려움이 있어, 따로 구현해야 하는 경우가 많다.
  • 하이브리드 렌더링(Hybrid Rendering) : 렌더링 방식의 장단점을 활용하여, 장면의 요구에 맞춰 두 가지 렌더링 방식을 선택적으로 적용
    • 기본적인 장면 조명: 조명이 많고 복잡한 장면은 Deferred Rendering을 사용하여 효율적으로 처리. 예를 들어, 실내나 복잡한 외부 환경에서 다중 광원을 사용하는 경우.
    • 투명한 오브젝트: 투명 오브젝트는 Forward Rendering 방식으로 따로 처리. Deferred Rendering은 투명 오브젝트의 겹침이나 알파 블렌딩을 처리하기 어려우므로, 유리창이나 물, 연기 같은 요소는 Forward Rendering으로 처리하여 자연스럽게 보이도록 한다.
    • 특수 효과: 일부 특수 효과(예: 반사, 굴절, 입자 효과 등)는 Forward Rendering 방식에서 더 간단하게 구현할 수 있어, 상황에 따라 Forward Rendering으로 전환하여 렌더링하는 것이 유리.

 

 

*(1) 조명이 픽셀마다 적용 : 화면의 각 픽셀에서 조명 효과를 따로 계산한다는 뜻. 이 과정에서 각 픽셀이 장면에 얼마나 밝게 보일지 조명, 그림자, 표면 반사 같은 요소들을 고려하여 계산. 픽셀마다 조명을 적용하면, 픽셀이 속한 객체의 표면 색상뿐 아니라 해당 위치에 비치는 조명 강도, 색상, 방향에 따라서 픽셀이 다르게 보이게 된다. 예를 들어, 화면에 빛이 세 개 있다면 Forward Rendering에서는 각 픽셀마다 이 세 개의 빛을 모두 계산해서 최종 색상을 결정하는 방식. 따라서 조명이 많을수록 이 계산이 증가하여 성능에 영향을 미치게 됨.

 

*(2) 투명 오브젝트 처리에서 Forward Rendering이 유리한 이유:  렌더링 순서와 투명도 계산 방식 때문.  Forward Rendering은 투명도를 위한 오브젝트 겹침 계산(Depth Buffer)과 알파 블렌딩(Alpha Sorthing)이 쉬워, 투명 오브젝트가 많은 장면에 적합. 반대로 Deferred Rendering은 투명 오브젝트 정보를 G-buffer에 저장하는 것이 복잡하여 투명 오브젝트 처리가 어렵다.

 

*(3) G-buffer(Graphics Buffer): 각 픽셀의 색상, 법선(normal), 깊이(depth) 같은 중요한 정보를 담아두고, 이후 조명을 한꺼번에 계산할 때 활용. 보통 G-buffer는 여러 종류의 텍스처로 구성되며, 각 텍스처에는 다음과 같은 정보들이 저장된다.

1. 색상(Color): 픽셀의 기본 색상 정보. 물체의 질감이나 재질이 어떻게 보일지 결정하는 데 사용.

2. 법선(Normal): 각 픽셀의 표면 방향을 나타내며, 조명 계산 시 빛이 어떻게 반사되고 산란될지 판단하는 데 필요.

3. 깊이(Depth): 각 픽셀이 카메라에서 얼마나 떨어져 있는지 나타내는 값으로, 다른 물체와의 겹침(예: 그림자나 오클루전)을 처리하는 데 사용.

4. 기타 정보(Optional): 예를 들어, 반사율(Specular), 광택도(Glossiness), 메탈성(Metalness) 등의 추가 정보도 G-buffer에 저장할 수 있다.

 

이 정보를 사용하면 각 픽셀에 대해 한 번만 그리더라도, 나중에 필요한 조명 계산을 모두 수행. Deferred Rendering 방식에서는 G-buffer에 먼저 장면 정보를 모두 저장해 둔 다음, 조명 계산을 이 정보로부터 추출하여 한 번에 처리하므로, 조명이 많아져도 성능이 비교적 안정적. 그러나 G-buffer는 많은 정보를 저장하므로 메모리 사용량이 증가하고, 특히 투명한 오브젝트나 복잡한 표면이 많을 때 정보 저장에 한계가 있다. 이런 이유로 Deferred Rendering에서는 투명 오브젝트 처리가 어렵다.

 

 

'Study > Graphics' 카테고리의 다른 글

라이트와 그림자의 원리  (0) 2024.11.01
Platform별 pixel format 차이점  (0) 2024.11.01
Geometric Objects  (0) 2023.07.27
Transformation  (0) 2023.07.27
Graphics System  (0) 2023.07.27

관련글 더보기