2012-03-10 3 views
1

문제 : 깊이/스텐실 테스트를 통과했는지 여부에 관계없이 렌더링/래스터 화되는 동안 제공된 지오메트리 조각을 계산해야합니다.래스터 화 된 조각의 수를 계산하십시오.

컨텍스트 : 현재 작업중인 프로젝트의 렌즈 플레어를 구현하려고합니다. 저는 OpenGL occlusion 쿼리를 사용하여 광원 소스에서 보이는 픽셀 수를 계산했습니다. 광원 위치에서 쿼드 정렬 된 화면을 렌더링하는 동안 쿼리를 활성화하여 광원의 보이는 조각 수를 결정했습니다. 이 쿼드는 주어진 widthheight이므로 처음에는 width * height 픽셀을 에서 카메라에서 가져와야합니다. 그 후 광원의 폐색 된 부분을 설명하기 위해 실제 플레어 효과의 알파 값을 조정하려고합니다. 이렇게하려면 원래 렌더링 된 쿼드를 조립 한 조각의 총량을 알아야합니다.

그래서, 주어진 렌더링 작업에서 생성 된 조각 수를 어떻게 알 수 있습니까?

+1

이것은 나에게별로 의미가 없습니다. 이미 픽셀을 계산하기 위해 오 클루 젼 쿼리를 사용하고 있지만 렌더링 된 픽셀 수를 찾는 방법을 결정하는 방법을 묻습니다. –

+0

깊이/스텐실 테스트를 통과하지 못했던 픽셀을 포함하여 오 클루 젼 쿼리에서 테스트 한 픽셀 수를 얻으려고 시도했지만 단 한 번의 패스만으로는 불가능합니다. – asarium

답변

2

이미이 작업에 적합한 도구 인 폐색 쿼리가 제안되었습니다. 당신의 투쟁은 오직 한 번에 모든 것을 시도하는 오해와 거짓말입니다.

여러 개의 하위 작업으로 문제를 분할하십시오. 귀하의 경우에는 모든 조각 파기 테스트가 비활성화 된 상태로 쉐이더, 텍스처 등이없는 지오메트리의 오 클루 전 쿼리에 대한 렌더링 패스 하나만 추가해야합니다.

오 클루 전 쿼리는 모든 테스트를 통과 한 모든 조각을 계산하지만 깊이 및 색 쓰기가 비활성화 된 경우에도 계산합니다. 따라서 가시화되거나 깊이 버퍼가 손상되지 않고 오 클루 젼 쿼리 쿼드를 그릴 수 있습니다.

관련 문제