2017-10-20 2 views
1

shadertoy 셰이더를 SFML 응용 프로그램으로 이식하려고합니다.shadertoy to SFML

내가 가진 문제는이 라인이다 :

float g = texture(iChannel0, uv+vec2(nh-0.07, 0.0)*nh).g; 

나는 iChannel0는 2D 샘플러하고 브라우저에서 실행 비디오라고 생각합니다.

내가 GLSL에 완전히 익숙하지 않아서 iChannel0을 다른 것으로 대체해야하지만 확실하지는 않습니다.

나는 다음과 같습니다 버텍스 쉐이더 있습니다

void main() 
{ 
    // Transforming The Vertex 
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; 

    // transform the texture coordinates 
    gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; 

    // forward the vertex color 
    gl_FrontColor = gl_Color; 
} 

을 내 프래그먼트 쉐이더에서 나는 iChannel0 매개 변수를 포함하는 위의 라인을 포함하여 수정 된 코드의 나머지 부분이있다.

쉐이더는 전체 화면에 포스트 이펙트로 적용됩니다.

마지막 줄을 제외하고 다른 모든 것을 변환 할 수있었습니다.

도움 주셔서 감사합니다.

+0

게시자가 소스 샘플러를 iChannel0으로 사용하려는 것으로 의심되는 경우 –

답변

0

OK, 내가이 같은 일을 가지고 : 내 조각 쉐이더 파일의 상단에

, 나는 추가 :

uniform sampler2D sourceTexture; 

나는 변경 :

float g = texture(iChannel0, uv+vec2(nh-0.07, 0.0)*nh).g; 

에 :

float g = texture2D(sourceTexture, uv+vec2(nh-0.07, 0.0)*nh).g; 

SFML 코드 :

shader->setParameter("sourceTexture", sf::Shader::CurrentTexture);