我需要将这个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 ?
试试这个
ivec2 sz = textureSize(iChannel0, 0);
uv = (vec2(0.5) + floor(uv * vec2(sz))) / vec2(sz);