shader 案例学习笔记之偏移

效果

代码
#ifdef GL_ES
precision mediump float;
#endifuniform vec2 u_resolution;
uniform float u_time;vec2 brickTile(vec2 _st, float _zoom){_st *= 5.;_st.x += step(1., mod(_st.y,2.0)) * 0.5;return fract(_st);
}float box(vec2 _st, vec2 _size){_size = vec2(0.5)-_size*0.5;vec2 uv = smoothstep(_size,_size+vec2(1e-4),_st);uv *= smoothstep(_size,_size+vec2(1e-4),vec2(1.0)-_st);return uv.x*uv.y;
}void main(void){vec2 st = gl_FragCoord.xy/u_resolution.xy;vec3 color = vec3(0.0);st = brickTile(st,5.0);color = vec3(box(st,vec2(0.9)));gl_FragColor = vec4(color,1.0);
}
解析
  • vec2 st = gl_FragCoord.xy/u_resolution.xy;
    • 坐标归一化
  • vec3 color = vec3(0.0);
    • 声明一个三维向量,每个分量都是0
  • st = brickTile(st,5.0);
    • 调用函数。传递归一化后的坐标系,和一个float值
      • vec2 brickTile(vec2 _st, float _zoom)
        • 声明一个函数名为brickTile,接受两个参数
        • _st *= 5.;
          • _st 自身乘以 5.0,相当于对 _st 的所有分量进行放大 5 倍
        • _st.x += step(1., mod(_st.y,2.0)) * 0.5;
          • mod(_st.y,2.0) 
            • mod(_st.y,2.0)返回[0,2)之间的值。
          • 经过step后
            • 返回[0,1]的值
          • step(1., mod(_st.y,2.0)) * 0.5;
            • 将上述step函数的结果乘以0.5
          • 分析图
            • 从分析图中可以看出只有st.y在[1,2)和[3,4)中经过step操作后会返回1,从而st.x 向右偏移了0.5,也印证了效果图的偏移

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/422370.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软考中级攻略站】-软件设计师(5)- 软件工程

软件生存周期 什么是软件生存周期? 软件生存周期指的是一个软件从开始构思到最终停止使用(或被替换)的整个过程。就像人的生命一样,软件也有一个从出生到死亡的过程。 软件生存周期的几个阶段 软件生存周期通常可以分为以下几…

DAY13信息打点-Web 应用源码泄漏开源闭源指纹识别GITSVNDS备份

#知识点 0、Web架构资产-平台指纹识别 1、开源-CMS指纹识别源码获取方式 2、闭源-习惯&配置&特性等获取方式 3、闭源-托管资产平台资源搜索监控 演示案例: ➢后端-开源-指纹识别-源码下载 ➢后端-闭源-配置不当-源码泄漏 ➢后端-方向-资源码云-源码泄漏 …

苹果宣布iOS 18正式版9月17日推送:支持27款iPhone升级

9月10日消息,在苹果秋季发布会结束后, 苹果宣布将于9月17日(下周二)推送iOS 18正式版系统。 苹果官网显示,iOS 18正式版将兼容第二代iPhone SE及之后的所有机型,加上刚发布的iPhone 16系列,共兼容27款iPhone。 iOS 18升…

算法学习攻略总结 : 入门至进阶,通关之路指南

❃博主首页 &#xff1a; <码到三十五> ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a; <搬的每块砖&#xff0c;皆为峰峦之基&#xff1b;公众号搜索(码到…

UE中如何制作后处理设置面板

1&#xff09;UE中如何制作后处理设置面板 2&#xff09;Magica Clothes 2插件与Burst编译问题 3&#xff09;UI大小和文本变量 4&#xff09;如何检索直线与网格的所有交点 这是第399篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&#xff0c;涵盖了UWA问答、社…

机械面试常见问题

文章目录 1.机械设计的一般思路&#xff08;方法&#xff09;2.公差等级有多少种3.机械传动的方式有哪些&#xff1f;选择的时候要考虑哪些问题&#xff1f;1. 齿轮传动2. 带传动3. 链传动4. 摩擦传动5. 螺旋传动6. 液压传动7. 气压传动8. 电磁传动总结 4.什么是宽禁带半导体&a…

4.1 符号定义伪指令

&#x1f393; 微机原理考点专栏&#xff08;通篇免费&#xff09; 欢迎来到我的微机原理专栏&#xff01;我将帮助你在最短时间内掌握微机原理的核心内容&#xff0c;为你的考研或期末考试保驾护航。 为什么选择我的视频&#xff1f; 全程考点讲解&#xff1a;每一节视频都…

【小沐学OpenGL】Ubuntu环境下glew的安装和使用

文章目录 1、简介1.1 OpenGL简介1.2 glew简介 2、安装glew2.1 命令安装glew2.2 直接代码安装glew2.3 cmake代码安装glew 3、测试glew3.1 测试glewfreeglut3.2 测试glewglfw 结语 1、简介 1.1 OpenGL简介 Linux 系统中的 OpenGL 是一个跨语言、跨平台的应用程序编程接口&#…

【C++】STL容器-string的遍历

1.引言 C STL&#xff08;Standard Template Library&#xff09;作为C标准库的核心部分&#xff0c;其重要性不言而喻。它提供了一系列高效、灵活且可复用的数据结构和算法&#xff0c;极大地提升了开发效率&#xff0c;并使得代码更加易于阅读和维护。 在STL中&#xff0c;…

根据NVeloDocx Word模板引擎生成Word(四)

前面介绍了《E6低代码开发平台》的Word模版引擎NVeloDocx&#xff0c;实现了表单的基本字段、子表、单张图片、二维码、条形码怎么基于NVelocity脚本输出到Word文件&#xff0c;都是些比较简单且常用的需求。 本篇介绍怎么基于NVeloDocx在Word中插入图表&#xff0c;目前只支持…

模型训练如何实现自动化输出评估报告、模型、特种平台

模型训练如何实现自动化 1、目标 把对文本分类【体育,教育,娱乐,经济,文学,政治】的模型实现自动化训练。 分类器:贝叶斯、支持向量机、梯度提升、随机森林、逻辑斯蒂回归 通过预设的准确率期望值与训练轮数,获取最优的分类器模型,当模型评估的准确率大于期望值时即…

算法基础-快速幂

(a b) % p (a % p b % p) % p (a - b) % p (a % p - b % p) % p (a * b) % p (a % p * b % p) % p (a ^ b) % p ((a % p)^b) % p 快速幂 3^10 10 1010 2^2 2^3 3^10 3 * 2^2 3 * 2^3 3^4 3^8 a a * a > a a^2 a^4 a^8 所以当 b & 1 1 时&#xff…

建造者模式builder

此篇为学习笔记&#xff0c;原文链接 https://refactoringguru.cn/design-patterns/builder 能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象

2024.9 学习笔记

目录 9.10 1.大地坐标系 2.地球坐标系 3.局部坐标系 4.世界坐标系 5.IMU 6.GPS 9.11 1.SGM算法 步骤 优点与缺点 应用 2.ISP 核心任务 9.12 1.双立方插值 9.10 1.大地坐标系 大地坐标系&#xff08;Geodetic Coordinate System&#xff09;: 定义: 基于地球…

利用数据分析提升SEO排名的7种方法

我们都听过“大数据分析”这个词。科技让我们能够清晰地了解我们的活动和内容的表现——向我们提供了关于受众的宝贵信息&#xff0c;甚至可以精确到他们在Google和其他搜索引擎上使用的具体搜索词。 你已经在你的业务中使用数据分析了吗&#xff1f;如果是&#xff0c;你有利…

CCF推荐C类会议和期刊总结:(计算机网络领域)

CCF推荐C类会议和期刊总结&#xff08;计算机网络领域&#xff09; 在计算机网络领域&#xff0c;中国计算机学会&#xff08;CCF&#xff09;推荐的C类会议和期刊为研究者提供了广泛的学术交流平台。以下是对所有C类会议和期刊的总结&#xff0c;包括全称、出版社、dblp文献网…

基于SpringBoot+Vue的古诗词学习软件系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的古诗词学…

大数据之Flink(三)

9.3、转换算子 9.3.1、基本转换算子 9.3.1.1、映射map 一一映射 package transform;import bean.WaterSensor; import org.apache.flink.streaming.api.datastream.DataStreamSource; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; impor…

创建Java项目,可实现main方法运行,实现对性能数据的处理

1、Android Studio无法执行Java类的main方法问题及解决方法 Android Studio无法执行Java类的main方法问题及解决方法_delegatedbuild-CSDN博客 D:\workspaces\performanceTools\.idea 文件夹下&#xff0c;gardle.xml ,添加依赖 <option name"delegatedBuild"…

WebGL系列教程二(环境搭建及着色器初始化)

目录 1 前言2 新建html页面3 着色器介绍3.1 顶点着色器、片元着色器与光栅化的概念3.2 声明顶点着色器3.3 声明片元着色器 4 坐标系(右手系)介绍5 着色器初始化5.1 给一个画布canvas5.2 获取WebGL对象5.3 创建着色器对象5.4 获取着色器对象的源5.5 绑定着色器的源5.6 编译着色器…