나는 Gaussian 분리형 (선형) 블러 셰이더의 예에서 왔으므로 그에 대한 내 질문을 형성하지만 실제로 내 질문은 더 일반적입니다. 따라서 선형 블러를 적용하려면 먼저 X 방향으로 블러 한 다음 Y로 또는 그 반대로 두 번의 패스를 만들어야합니다. 결과는 정사각형 복잡도 가우시안 블러 셰이더와 동일합니다. 그러나 여기서 첫 번째 패스의 결과를 저장하고 두 번째 패스에서 사용해야합니다. 이를 위해 내가 아는 한 FBO를 사용하여 첫 번째 패스의 결과를 렌더링 한 다음 FBO의 데이터에서 텍스처를 만들어야하며 다시이 텍스처를 사용하여 두 번째 패스를 만들어야합니다. 그러나 GPU는 매우 병렬로 작동하며 GPU를 멈추지 않기 위해 어떻게 할 수 있는지 모르겠습니다. 나는 OpenGL에서 꽤 멍청하고 성능을 희생하지 않고 올바르게 수행하는 튜토리얼을 찾을 수 없습니다.
OpenGLES로 태그가 지정되었으므로 모바일에 대해 묻는다고 가정하겠습니다.
선형 필터링을 활용하기 위해 추가 (선택 사항) 트릭을 사용하여 "분리 된"가우스 필터를 구현하는 방법을 설명하는 이 자습서 를 확인해야 합니다.
최고 수준의 품질이 요구 사항이 아닌 경우 성능을 향상시키는 좋은 기술은 첫 번째 (또는 각각의) 분리 가능한 패스를 수행 할 때 FBO 크기를 50 % 줄이는 것입니다.
전의:
블러 패스를 다운 스케일링과 결합하는이 기술은 모바일에서 좋은 결과와 성능을 제공하지만 패스 수 / 커널 크기 / 다운 스케일링 사이의 적절한 균형을 찾으려면 실험해야합니다.
내 쪽에서는 작은 커널, 많은 패스 및 많은 축소 (꽃의 맥락에서)를 선호합니다.
그리고 네, GPU는 다른 것을 시작하기 위해 패스가 완료 될 때까지 기다려야합니다. 그러나 커널이 작고 축소를 사용하는 경우 모바일에서 본 것에서 볼 때 이것은 매우 빠르게 진행됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다