将 Shadertoy Shader 转换为 glsl webgl

Convert Shadertoy Shader to glsl webgl

提问人:NewPal 提问时间:11/9/2023 最后编辑:NewPal 更新时间:11/10/2023 访问量:96

问:

我需要将这个着色器着色器转换为glsl,因为它关闭了纹理抗锯齿,它是手动最近邻滤波器

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    // Normalized pixel coordinates (from 0 to 1)
    vec2 uv = fragCoord/iResolution.xy;

    ivec2 sz = textureSize(iChannel0, 0);
    uv = (vec2(0.5) + vec2(ivec2(uv * vec2(sz)))) / vec2(sz);
    vec3 col = texture(iChannel0, uv).rgb;

    // Output to screen
    fragColor = vec4(col,1.0);
}

我知道 void mainImage( out vec4 fragColor, in vec2 fragCoord ) 变成 void main( )

fragCoord gl_FragCoord,fragColor 为 gl_FragColor

我还提到了统一采样器2D媒体; 所以 texture(iChannel0, uv).rgb;变为 texture2D(media, uv).rgb;

但是我如何将这 2 行转换为 glsl

 ivec2 sz = textureSize(iChannel0, 0);
 uv = (vec2(0.5) + vec2(ivec2(uv * vec2(sz)))) / vec2(sz);

我的意思是什么是 ivec2 和 textureSize 在 glsl 中,我如何转换这个 ivec2 sz = textureSize(iChannel0, 0); 到 glsl ?

javascript glsl webgl 着色器

评论

2赞 AKX 11/9/2023
textureSize是一个 GLSL 函数,没有什么可以移植到那里的。
3赞 Rabbid76 11/9/2023
@AKX 但是,它在 OpenGL (ES) Shading Language 1.00 中不存在:registry.khronos.org/OpenGL/specs/es/2.0/... / registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.1.20.pdf
0赞 LJᛃ 11/11/2023
我希望这不仅仅是重新发明图像渲染:像素化; ;)

答: 暂无答案