2017-04-16 6 views
1

지연 렌더링의 장점은 조각 쉐이더가 numLights * numPixels 시간 만 실행될 수 있다는 것입니다. 이는 순방향 렌더링에서 동일한 픽셀이 여러 번 두 번 렌더링되기 때문입니다. 그러나 조각 쉐이더와 형상 쉐이더 이전에 심도 컬링 또는 z- 컬링을 수행하면 대형 G- 버퍼가 필요하지 않고 지연 렌더링과 같은 효율성을 얻을 수 있습니다. OpenGL의 최신 버전에서이 작업을 수행 할 수 있다고 생각합니다. 그렇다면 아무도이 작업을 수행하지 않는 이유는 무엇입니까? 내 생각에 오류가 있으면 알려주십시오.지연 렌더링과 사전 조각 쉐이더 깊이 깎기

참고 : 아마도 이것은 적절한 질문이 아니지만, 내가 이것을 게시 할 수있는 곳을 알지 못합니다.

+2

초기 z 테스트를하더라도 많은 오버 드로가 발생합니다. 예 : 배경에있는 객체 1을 그립니다. backbuffer에 아무 것도 없기 때문에 모든 픽셀을 음영 처리해야합니다. 이제 전경 오브젝트를 렌더링하면 배경에서 픽셀을 덮어 씁니다. 당신의 방법으로는 첫 번째 음영 부분을 렌더링하기 전에 깊이 정보가 필요합니다. – BDL

+1

마지막 메모에 답변하십시오. [컴퓨터 그래픽] (https://computergraphics.stackexchange.com/)이라는 또 다른 스택 Exchange 사이트가 있습니다. – Vallentin

답변

1

그러나 깊이 컬링 또는 Z 선별이 단편 쉐이더 전 및 기하 구조 셰이더 후에 수행 된 어떤 경우, 이것은 않을 것이다

랜더링 defered대로 efficent 같이 제되게 .

표준 순방향 렌더링에서는 각 조명에 대해 각 모델을 그리기 때문에 빛 당 한 번씩 모든 정점 처리 단계를 실행합니다. 지연 렌더링에서는 각 모델을 한 번만 그리기 때문에 정점 처리 시간을 절약 할 수 있습니다.

많은 현대 하드웨어가 소위 말하는 "통합 셰이더 아키텍처"를 사용하기 때문에 이것은 중요합니다. 즉, 하드웨어가 셰이더 작업 부하를 동적으로 할당 할 수 있습니다. 많은 프래그먼트를 렌더링하지만 짧은 프래그먼트 셰이더를 사용하면 VS 스테이지에 더 많은 셰이더 유닛을 할당 할 수 있습니다. 간단한 VS, 복잡한 FS로 4 개의 정점을 렌더링하면 정점 스테이지에 하드웨어를 거의 할당 할 수 없으며 조각 쉐이더에 더 많은 하드웨어를 할당 할 수 있습니다.

지연 렌더링에서 유용한 작업을 수행하는 데 사용할 수있는 더 많은 쉐이더 프로세서 시간을 소비하고 있습니다. 앞으로 렌더링하면 유용한 FS 작업과 반복되고 쓸모없는 VS 작업 사이에서 GPU의 리소스가 분할됩니다.

다음으로 변환 피드백을 사용하여 렌더링 결과를 캡처하고 다시 렌더링하는 것이 좋습니다. 하지만 이제는 하나의 병목 현상을 해결할 수 있습니다 : 더 많은 메모리를 사용하고 VS 작업을 메모리 대역폭으로 교환하십시오.


는 I에는 용장 geomitries 없다 있도록 번만 연신 통화를 수행하고, 균일 한 바와 같이 조명 배열을 사용하여 단편 쉐이더 조명 모두를 통해 I 대신 루프.

이것은 일반적으로 더 빠르지 만 (덜 유연한) 일반적으로 다른 하나의 비 능률을 다른 것으로 비 교합니다. 각 메쉬를 여러 번 렌더링하는 대신, 반드시 볼 필요는없는 조각에 대해 시간이 많이 소요되는 FS 호출을 실행하고 있습니다.

Early depth tests 아무 것도 보장하지 않습니다. GPU가 폐색 객체를 아직 래스터 화하지 않았기 때문에 하드웨어가 실행 된 모든 FS 호출을 볼 수 있음을 보장하는 것은 불가능합니다. 초기 심도 테스트에서는 작업 순서를 결정하지 않습니다.

모든 FS 호출을 볼 수있게하는 유일한 방법은 깊이 사전 통과를 수행하는 것입니다. 즉, 장면의 모든 것을 렌더링하지만 조각 셰이더는 사용하지 않습니다. 따라서 업데이트되는 유일한 것은 깊이입니다. 그런 다음 실제 쉐이더를 사용하여 장면을 다시 렌더링합니다.

그러나 그런 다음 전체 장면을 두 번 렌더링합니다. 그리고 쉐이더로드 밸런싱은 전체 객체가 컬링되기 때문에 훨씬 더 어렵습니다.

다른 주목할 점은 지연 렌더링은 성능을 보장하지 않는다는 것입니다. 그것은 또 다른 렌더링 방법이며, 장점과 단점이 있습니다. 지연 렌더링이 앞으로 렌더링의 변형보다 느린 환경을 만들 수 있습니다. 지연된 렌더링이 더 빠른 상황을 만들 수도 있습니다. 조명의 수가 증가함에 따라 지연 렌더링이 일반적으로 최선의 방법이기는하지만 성능면에서 다른 렌더링 기술을 더 좋게 만들 수있는 상황이 항상 있습니다.

+0

아마 내 렌더링 프로세스가 표준 순방향 렌더링과 다르지만 한 번만 그리기 호출을 수행하므로 중복 된 기하 도형이 없으며 대신 조명 배열을 유니폼으로 사용하여 조각 쉐이더의 모든 조명을 반복합니다. – pdid

+0

@pdid : 내 추가 내용을 확인하십시오. –