将 Shadertoy 着色器转换为 glsl

问题描述 投票:0回答:1

我需要将这个shadertoy着色器转换为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;

但是我如何将这两行转换为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 shader fragment-shader shadertoy
1个回答
0
投票

试试这个

ivec2 sz = textureSize(iChannel0, 0);
uv = (vec2(0.5) + floor(uv * vec2(sz))) / vec2(sz);
© www.soinside.com 2019 - 2024. All rights reserved.