Tile Pattern

Task

Using tiling, repeat the pattern as many times as necessary.
使用平铺,根据需要重复该图案多次。

Theory

通过操纵UV坐标和使用fract功能,您可以在屏幕上创建重复的图案。通过fract获取[0,1]之间的值,所以可以通过设置行列来获取实际需要切割的Tile模块

示例用法

ini 复制代码
float columns = 2.0;
float rows = 8.0;

// Calculate repeated cells based on UV coordinates
vec2 repeatedUV = fract(uv * vec2(columns, rows));

Answer

glsl 复制代码
uniform vec2 iResolution;

// 原有的单个的纹理
float pattern(vec2 uv) {
  uv = uv * 2.0 - 1.0;
  float t = pow(uv.x * uv.x, 0.3) + pow(uv.y * uv.y, 0.3) - 1.0;
  return step(0.0, t) * t * 10.0 + step(0.2, t);
}

void main() {
  // Normalized pixel coordinates (from 0 to 1)
  vec2 uv = gl_FragCoord.xy / iResolution.xy;
  float columns = 5.0;
  float rows = 3.0;
  vec2 re = fract(uv * vec2(columns, rows));

  // 这边可以替换re为uv查看单个的形状
  gl_FragColor = vec4(pattern(re), 0.0, 0.0, 1.0);
}

效果

练习

Tile Pattern

最后

如果你觉得这篇文章有用,记得点赞、关注、收藏,学Shader更轻松!!

相关推荐
前端加油站10 分钟前
在 cursor 成为流行的开发方式后,作为普通开发我们能做什么
前端
Cache技术分享18 分钟前
163. Java Lambda 表达式 - Function 的链式组合
前端·后端
Zestia34 分钟前
页面点击跳转源代码?——element-jumper插件实现
前端·javascript
前端小白199534 分钟前
面试取经:工程化篇-webpack性能优化之优化loader性能
前端·面试·前端工程化
PineappleCoder35 分钟前
大小写 + 标点全搞定!JS 如何精准统计单词频率?
前端·javascript·算法
zhangbao90s36 分钟前
Web组件:使用Shadow DOM
前端
hhy前端之旅36 分钟前
语义版本控制:掌握版本管理的艺术
前端
coding随想36 分钟前
深入浅出DOM操作的隐藏利器:Range(范围)对象——掌控文档的“手术刀”
前端
前端小白199537 分钟前
面试取经:工程化篇-webpack性能优化之减少模块解析
前端·面试·前端工程化
一枚前端小能手38 分钟前
🏗️ 项目越来越大维护不动了,微前端架构了解一下
前端