Mosaic By Time
随着时间更新马赛克的大小
ShaderToy https://www.shadertoy.com/view/DlKBRh
Code:
/*
https://www.shadertoy.com/view/DlKBRh
Blog:https://blog.lovezjj.cn
by cfl997 20231206
*/
// 定义一个变量 Square,表示一个正方形的尺寸
float Square = 80.0;
// 主函数,负责计算每个像素的颜色值
void mainImage(out vec4 fragColor, in vec2 fragCoord)
{
// 计算纹理坐标(uv坐标),将屏幕像素坐标转换为[0,1]范围内的坐标
vec2 uv = fragCoord / iResolution.xy;
// 计算时间(以秒为单位),并对其取模,使其在一个固定的范围内循环
float time = mod(iTime, 10.0);
// 计算一个计数值,用时间乘以Square变量
float count = time * Square;
// 将uv坐标乘以count,然后取整数部分,再除以count,实现对uv坐标的分块效果
uv = floor(uv * count) / count;
// 从纹理中获取颜色值,并赋值给fragColor
fragColor = texture(iChannel0, uv);
// 另一种获取颜色值的方式,使用textureLod函数,并指定mipmap级别为0.0f
// fragColor = textureLod(iChannel0, uv, 0.0f);
}
If the channel filter is set to NEAREST or LINEAR, texture can be used directly, otherwise textureLod needs to be used. Otherwise there will be a border in the view.
如果通道过滤设置为:最近点(NEAREST)或线性(LINEAR),那么可以直接使用texture,否则需要使用textureLod。不然视图上会有边框。
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付