대상 : OpenGL을 ES 3.0계정 깊이를 고려하여 선별 FBO 렌더링
내 기본 프레임 버퍼 (화면) 이미 렌더링 내 장면의 일부가 포함되어 있다고 가정하자; 그것의 색깔과 깊이 버퍼는 유효한 데이터를 포함한다.
이제 중간 FBO 'fbo1'에 이미 렌더링 된 장면의 다른 부분이 있다고 가정합니다. 그 색상 데이터는 fbo1.COLOR0 첨부 파일에 첨부 된 'mColor'텍스처로 유지되며 깊이는 다른 FBO 'fbo2'의 DEPTH 첨부 파일에 첨부 된 다른 텍스처 'mDepth'에 보관됩니다.
이제 mColor를 사용하여 mDepth의 깊이를 고려하여 mColor를 화면에 렌더링하고 싶습니다. 색상 데이터 만 들어있는 텍스처를 화면에 렌더링하는 방법은 알고 있지만, mDepth를 고려하여 어떻게해야할지 모르겠다.
본질적으로 mColor로 텍스처링 된 쿼드를 화면에 렌더링 할 때 화면의 깊이 버퍼를 쿼드의 깊이가 아니라 mDepth의 깊이와 비교해야합니다. 그렇게하는 방법?
나는 본다. 내가 실제로하고있는 일은 다음과 같습니다. 우선 대부분의 장면을 렌더링합니다. 그런 다음 N 패스에서 일부 포스트 프로세싱을 필요로하는 각 객체를 오프 스크린 버퍼로 렌더링합니다. 객체가 화면에서 끝나는 위치를 계산합니다 (메쉬가 아주 간단합니다). FBO로 렌더링 한 다음 객체에 사후 처리를 적용한 다음 질문에 설명 된 문제에 직면합니다. 이것을 화면에 병합합니다. 개체별로 사후 처리하는 것이 더 간단 할 것이라고 생각했습니다. 예를 들어 개체를 BLUR로 처리하면 BLUR에 더 가까이있는 개체가 들어오는 것을 걱정할 필요가 없기 때문입니다. – Leszek
블러는 자연스럽게 "퍼지 에지"의 일부 형태를 암시합니다. 즉, 절반 정도의 포인트입니다. 따라서 어떤 시점에서는 어쨌든 "크립 현상"을 해결해야 할 것입니다. 파이프 라인의 후반부에 통증을 미루는 것뿐입니다. – solidpixel
아니요, 귀하의 제안을 구현했으며 완벽하게 작동합니다. 즉, 흐리고 흐려지지 않은 물체가 부분적으로 멀리있는 물체를 가리고 있으면 가까이있는 물체가 완벽하게 선명하게 유지됩니다. 객체마다 포스트 프로세싱없이이 효과를 얻으려면 (즉, 전체 장면을 한 번에 후 처리해야하는 경우) 스텐실을 사용하여 추가 객체를 표시 한 다음 스텐실 테스트로 흐림 효과를 적용해야하지만 DEPTH (더 가까운 물체와 경계선 가까이에있는 다른 물체의 픽셀은 가까운 물체의 픽셀에 영향을받지 않습니다!). – Leszek