2017-01-16 11 views
2

주어진 지점 주위의 지정된 반경에서 일련의 픽셀을 사용하는 사용자 지정 알고리즘을 구현하려고합니다. 1080p 이미지의 모든 단일 픽셀에서이 알고리즘을 실행할 가능성이 있기 때문에 GPU와 병렬 처리하는 것이 좋은 방법이라고 생각했습니다.OpenGL - 컴퓨팅 쉐이더 - iOS - 옵션?

문제는 iOS에서 실행해야한다는 것입니다. GPUImage2라는 유용한 iOS 라이브러리를 발견하게되었습니다. GPUImage2는 사전 정의 된 기능을 허용하지만로드 블록을 쳤습니다.

내가 알 수있는 한, iOS에서 계산 쉐이더를 사용할 수 없습니까? 금속 사용으로 전환하는 유일한 방법은 무엇입니까? android는 ES 3.1에 대한 지원을 제공하지만 iOS에 대한 옵션은 없다는 것을 알고 있습니다.

다른 질문이 있습니다. 이 올바른 옵션 인 계산 쉐이더를 사용하고 있습니까? 제 생각은 일련의 점을 스레드 그룹으로 나눈 다음 각 스레드가 반경 점을 반복하고 계산을 수행하여 모든 결합 된 반지름 값을 동시에 계산할 수있게하는 것입니다. 그 아이디어는 유효한 아이디어처럼 보입니까, 아니면 더 나은 방법입니까? (아마도 계산 쉐이더를 필요로하지 않습니다)?

답변

1

모든 iOS 장비에서 실행되는 프래그먼트 쉐이더를 사용하면 잘 될 것입니다 의미

"나는 잠재적으로 1080p의 이미지에있는 모든 단일 픽셀 이상이 알고리즘을 실행하려는 때문에". OpenGL에 대한 귀하의 경험을 모르겠지만 iOS에서 비슷한 것을 실행하는 방법을 배우기 시작하는 한 가지 방법은 가우시안 블러 예제를 구현하는 것입니다.

+0

이것은 실제로 달성하고자하는 것과 비슷하지만 픽셀 당 여러 데이터 포인트를 반환해야합니다. SSBO와 같은 것을 사용하지 않고 이것이 가능합니까? – Marcel

+0

모두는 당신이 달성하고자하는 것에 달려 있습니다. "픽셀 당 여러 데이터 점 실행"은 동일한 알고리즘을 실행하는 것을 의미합니다. 단, 조각 쉐이더를 여러 번 실행할 수 있습니다. 특정 영역에서 실행하려는 경우 이미지를 자르고 다른 FBO로 렌더링 할 수도 있습니다. 그런 다음 나중에 모든 것을 최종 이미지에 추가합니다. – andras