바이너리 SocketIO 채널을 통해 스트리밍되는 카메라 이미지와 함께 브라우저 컨텍스트 내에서 작업하고 있습니다.WebGL 쉐이더에 데이터 스트리밍
아래와 같이 I은 단지 (매우 큰 바이트 배열로) bayer 형식의 데이터를 출력 지원을 처리하고 카메라 :
내가 실시간으로 카메라 영상 스트림을 표시 할 시간은 브라우저의 캔버스에 있습니다.
지금까지 내 생각으로는 WebGL을 렌더러 (속도 용)로 사용하고 프레젠테이션 셰이더 내에서 바이어에서 RGBA로 conversion을 수행하는 것입니다.
나는 WebGL에 상당히 익숙하지 않기 때문에 변환되지 않은 카메라 이미지를 GPU로 보내고 액세스하여 변환을 수행하고 조각을 그늘지게 할 수있는 관례와 모범 사례에 대해 확신 할 수 없습니다.
texture2d와 같은 텍스처 샘플러를 통해 텍스처로 보내고 액세스하는 일반적인 기술이있는 것처럼 보입니까? 그러나 이것은 RGBA 형식을 가정 한 것으로 보입니다. 베이어 형식이 완전히 다른 구조이고 원시 바이트 배열에 액세스하는 것이 더 유용 할 것입니다.
올바른 방향으로 향하면 충분합니다. 진짜 질문은 '입니다. GPU에 임의의 데이터를 보내고 WebGL 컨텍스트에서 액세스하려면 어떻게해야합니까? '
편집 : ThreeJS와 같은 라이브러리를 사용하는 것보다 원시 WebGL 기술을 알고 싶습니다. ThreeJS에서 특히 쉽게 구현할 수 있지만 가능성이 있습니다.
안녕하세요, 저는이 자습서를 작성했으며 매우 편합니다. 네가 내 질문을 오해 한 것 같아. 텍스처를로드하는 것은 문제가 아니며 문제가되는 '임의적 인 성격'의 데이터를로드하는 것입니다. 이 경우의 '텍스처'는 rgba가 아니므로 표준 texture2D() 샘플러 메서드 (vec4를 반환)와는 잘 맞지 않습니다. WebGL을 처음 접해서 컨벤션을 알지 못하지만 자습서를 찾지 않습니다. –
@BrendanAnnable 셰이더에서 변환해야합니다. 전환 기준으로 가장 편한 형식을 선택하십시오. 또한 픽셀 중심에서 샘플링하고 동적 배열 인덱스 액세스가 없습니다. https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexImage2D.xml – Winchestro
@Winchestro 지금까지 읽은 논문과 예제는 GL_LUMINANCE를 'kind of'처럼 사용합니다. 간단한 배열처럼 작동합니다. 당신은 texture2D()를 사용합니다 .r - 이것은 해킹처럼 보이지만 다른 방법이 없다면 그렇게해야합니다. –