예, 그러나 패러다임 전환이 필요합니다.
익숙한 것을 정방향 렌더링이라고합니다. 지오메트리를 제출 한 후 즉시 쉐이딩 패스를 진행합니다. 기본 정방향 렌더링에서는 각 조명에 대해 셰이더 내부를 반복하거나 조명 당 한 번의 패스를 수행하고 결과를 함께 혼합 할 수 있습니다 (추가 블렌딩 사용).
그러나 상황은 상당히 많이 발전했습니다. 입력 : 지연 렌더링
이제 그것들을 모두 자세히 설명하는 변형이 너무 많아서 여기에 대한 대답을 받아 들일 수있는 것 이상이 필요합니다. 여기서는 Deferred shading의 요지를 설명하려고합니다 .Google을 사용하여 쉽게 찾을 수있는 다른 리소스가 많이 있습니다.이를 읽은 후 필요한 키워드를 찾을 수 있기를 바랍니다.
기본 아이디어는 파이프 라인을 종료 한 후 음영을 연기하는 것입니다. 두 가지 주요 단계가 있습니다.
- 쉐이딩에 필요한 지오메트리와 모든 정보를 여러 렌더 타겟으로 렌더링합니다. 이것은 일반적으로 기본 구현에서 깊이 버퍼, 형상의 법선과 알베도 색상을 포함하는 버퍼를 갖게됨을 의미합니다. 머티리얼에 대한 다른 정보 (예 : 거칠기, "금속성"요소 등)가 필요하다는 것을 곧 알게 될 것입니다.
위키 백과의이 이미지는 세 가지 버퍼 (색, 깊이 및 법선)를 보여줍니다.
또한 사용 된 버퍼의 양, 유형 및 내용은 프로젝트마다 상당히 다릅니다. GBuffers라는 이름의 버퍼 세트를 찾을 수 있습니다.
- 그 후 실제 조명을 적용 할 때입니다. 각 조명에 대한 조명 패스 동안 조명 유형에 따라 조명 볼륨을 그리려고합니다.
- 방향성 조명의 경우 전체 화면 쿼드를 렌더링합니다.
- 포인트 라이트의 경우 반경이 포인트 라이트의 감쇠를 기반으로하는 구를 렌더링합니다.
- 스포트라이트의 경우 치수가 다시 빛의 특성에 따라 달라지는 원뿔을 렌더링합니다.
이 패스의 픽셀 셰이더에서는 GBuffer를 전달하고 그 정보를 사용하여 조명과 음영을 수행합니다. 이런 식으로 클래식 포워드 렌더링과 비교할 때 상당한 속도 향상을 가진 각 라이트의 영향을받는 픽셀 만 처리합니다.
또한 투명한 개체를 처리하고 대역폭과 비디오 메모리를 많이 소비한다는 다양한 단점이 있습니다. 또한 다양한 재료 모델을 처리하는 것이 더 까다 롭습니다.
사후 처리를 위해 많은 정보가 준비되어 있으므로 다른 측면의 장점이 있으며 구현하기도 쉽습니다. 그러나 이것은 더 이상 많은 조명에서 가장 멋진 것이 아닙니다.
최신 기술은 예를 들어 타일 렌더링 기술 입니다. 이들의 주요 아이디어는 화면 공간 "타일"에서 장면을 세분화하고 각 타일에 영향을주는 조명을 할당하는 것입니다. 이것은 연기 된 방식과 앞으로 진행되는 방식으로 모두 존재합니다. 이러한 기술은 타일에 다양한 깊이의 불연속성이있을 때 몇 가지 문제를 야기하지만 일반적으로 기존 지연보다 빠르며 다양한 문제를 해결합니다. 예를 들어, 타 일드 디퍼 드를 사용하는 경우 장점은 조명 된 조각 당 GBuffer를 한 번 읽고 동일한 타일의 픽셀은 동일한 라이트를 일관되게 처리합니다.
이 측면의 추가 발전 은 화면 공간 타일 대신 3D 범위의 클러스터를 갖는 타일 기반 접근 방식과 개념적으로 유사한 클러스터링 음영 입니다. 이 방법은 심도 불연속 문제를보다 잘 처리하며 일반적으로 타일 방식보다 성능이 우수합니다.
중요 사항 : 유예 음영의 기본 사항을 설명했습니다. 여러 변형, 최적화 및 개선 사항이 있으므로 간단한 버전으로 실험 한 다음 위에서 언급 한 것과 같은 다른 기술에 대한 연구를 수행 할 것을 권장합니다.