2012-01-16 4 views
5

메모리에로드 된 BSP 트리가 있습니다. 나는 먼저 나는 어떤 잎인지 알아 낸다. 다음으로, 나는 PVS를 해독한다. 그런 다음, PVS의 각 지역을 관통하고 그것이 내 절두체 내에 있는지 확인합니다.BSP 트리를 잘못 렌더링합니까?

이것이 잘못된 렌더링 방법이며 실제로 BSP 트리를 가로 질러 렌더링을 수행해야한다고 들었습니다. 내가 정확히 이것을 어떻게합니까? 나는이 일을하는 여러 가지 다른 방법을 보았습니다. 그래서 제가 묻습니다.

예를 들어, Quake 3 BSP 렌더링에서는 다음과 같이 말합니다. BSP를 탐색하여 카메라가 어느 리프에 있는지 확인합니다. 이 리프에 대한 PVS를 검색하고 압축을 풀고 PVS를 반복하고 BSP에 잎을 표시합니다. 멀리있는 BSP를 탐색하십시오. 노드가 표시되어 있지 않으면 건너 뜁니다. 카메라 경계면에 대해 노드 경계 상자를 테스트하십시오. 현재 리프를 렌 디션 목록에 추가합니다.

이 방법은 현재 또는 적어도 더 간단한 게임의 경우 여전히 표준 방법입니까? OrgnlDave로서

+0

전면에서 후면으로의 렌더링이 요즘 바람직합니다. (즉, 압축 된 고 대역폭 z 버퍼가 선호되기 전에) 화가의 알고리즘에만 필요했다. front-to-back은 초기 z-rejects를 허용합니다 (z 값을 결정하고 확인하는 것 이외의 많은 작업을 수행하기 전에, 여러분이 그린 것의 뒤에있는 모든 것이 현대 하드웨어에서 거부 될 것입니다). 내가 조금 더 알아 들었을 때 나는 다시 말 할 것이다. –

답변

1

상기 :

만약 프리미티브 그릴

, z 버퍼의 전면에 배치 된 픽셀들이 페인트 쉐이더 프로그램이 실행되어야 할 것이다. 그러나 픽셀이 장면 뒤에 있으면 픽셀이 거부됩니다. 앞뒤로 같은 그림을 그리는 것은 의무는 없지만 성능면에서의 이득은 최악입니다.

그러나 블렌드 오브젝트를 사용하는 경우 모든 솔리드 오브젝트 이후에이 오브젝트를 그리고 앞뒤로 처리해야합니다. 바로 뒤에 배치 된 객체와 색상을 혼합해야하기 때문입니다.

+0

@OrgnlDave Well Said. 픽셀 채우기는 비쌉니다. 이는 공유 리소스에 쓰기 액세스가 필요한 파이프 라인의 한 지점입니다. 버텍스 쉐이더는 병렬로 실행하고 기하학 목록을 동시에 생성 할 수 있지만 픽셀 쉐이더가 컬러 버퍼 또는 Z 버퍼에 쓰는 경우 한 번에 하나의 프로그램 만 동일한 메모리에 액세스 할 수 있습니다. 덮어 씌워진 객체의 픽셀 채우기를 제거하고 불투명하지 않은 형상을 뒤로부터 앞쪽으로 렌더링하여 불투명 한 형상이 알파 블렌드에 가중치를 갖도록 전면에서 후면으로 불투명 형상을 렌더링합니다. – Dan