着色玩具到 SFML
shadertoy to SFML
我正在尝试将 shadertoy 着色器移植到 SFML 应用程序。
我遇到的问题是这一行:
float g = texture(iChannel0, uv+vec2(nh-0.07, 0.0)*nh).g;
我认为 iChannel0
是一个 2D 采样器并且是浏览器中的视频 运行。
我需要用其他东西替换 iChannel0
但不确定如何替换,因为我是 GLSL 的新手。
我有一个顶点着色器,看起来像这样:
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 参数的行。
着色器作为 post 效果应用于整个屏幕。
我能够转换除最后一行以外的所有内容。
感谢您的帮助。
好的,我让它像这样工作:
在我的片段着色器文件的顶部,我添加了:
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);
我正在尝试将 shadertoy 着色器移植到 SFML 应用程序。
我遇到的问题是这一行:
float g = texture(iChannel0, uv+vec2(nh-0.07, 0.0)*nh).g;
我认为 iChannel0
是一个 2D 采样器并且是浏览器中的视频 运行。
我需要用其他东西替换 iChannel0
但不确定如何替换,因为我是 GLSL 的新手。
我有一个顶点着色器,看起来像这样:
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 参数的行。
着色器作为 post 效果应用于整个屏幕。
我能够转换除最后一行以外的所有内容。
感谢您的帮助。
好的,我让它像这样工作:
在我的片段着色器文件的顶部,我添加了:
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);