shader 案例学习笔记之fract函数

news2024/9/20 14:02:18
fract函数
  • 可以理解为模1取余,获取一个数的小数部分,如果参数是向量,那就是获取每个向量分量上的小数
案例一
  • 
    #ifdef GL_ES
    precision mediump float;
    #endif
    
    // 渲染分辨率
    uniform vec2 u_resolution;
    // 程序运行时间
    uniform float u_time;
    
    void main(){
      vec2 st = gl_FragCoord.xy/u_resolution;
    
      st *= 3.0;
      st = fract(st);
    
      gl_FragColor = vec4(vec3(st,0.5),1.0);
    }
  •  vec2 st = gl_FragCoord.xy/u_resolution;
    • 坐标归一化 
  • st *= 3.0;
    • 将坐标空间放大三倍
  • st = fract(st);
    • 取小数部分,将创建3*3的重复网格
  •  gl_FragColor = vec4(vec3(st,0.5),1.0);
    • 设置最终的片段颜色,处理后的st.x赋值给颜色红色通道,st.y赋值给颜色的绿色通道,0.5赋值给蓝色通道
案例
  • #ifdef GL_ES
    precision mediump float;
    #endif
    
    uniform vec2 u_resolution;
    uniform float u_time;
    
    void main(){
      vec2 st = gl_FragCoord.xy/u_resolution;
    
      st *= 3.0;
      st = fract(st);
    
      st -= 0.5;
      float r = length(st);
      float color = smoothstep(0.1,0.2 ,r );
    
      gl_FragColor = vec4(vec3(color),1.0);
    }
  •  st -= 0.5;
    • 将3*3的网格的每个网格的坐标往中心坐标移动;
  • float r=length(st);
    • 获取二维向量st到原点的距离
  • float color = smoothstep(0.1,0.2 ,r );
    • 利用smoothstep函数进行颜色插值
      • 如果某个片元到原点的距离小于0.1,返回0
      • 如果某个片元到原点的距离大于0.2,返回1
      • 如果距离大于等于0.1,小于等于0.2,则在0-1进行颜色插值,实现平滑过度;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【卷起来】VUE3.0教程-08-路由管理

在Vue中,我们可以通过vue-router路由管理页面之间的关系。 Vue Router是Vue.js的官方路由,它与Vue.js核心深度集成,让用Vue.js构建单页应用变得轻而易举。 🌲 在Vue中引入路由 安装路由 npm install --save vue-router 建立三个…

【C++登堂入室】类和对象(中)——类的6个默认成员函数

目录 一、类的6个默认成员函数 ​编辑二、构造函数 2.1 概念 2.2 特性 三、析构函数 3.1 概念 3.2 特性 四、拷贝构造函数 4.1 概念 4.2 特征 五、赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 六、日期类的实现 七、const成员 八、…

气膜建筑:设备吊装口临时封闭的理想选择—轻空间

在设备吊装作业中,吊装口的临时封闭对于保障工作环境安全、设备保护及操作顺利至关重要。传统封闭方式,如钢结构或简易的盖板封闭,不仅耗时耗力,还可能影响施工效率。气膜建筑技术凭借其轻便、快速和高效的特点,为设备…

亚信安全亮相2024国家网安周主会场,多样活动助推行业新发展

9月9日至15日,2024年国家网络安全宣传周在全国范围内统一开展。本届网安周以“网络安全为人民,网络安全靠人民”为主题,亚信安全网安周系列活动在全国30多个城市全面展开,通过线下展览、专题论坛和网络安全知识宣讲等多种形式&…

【软件方案】大屏可视化智能展示平台解决方案(word原件完整版)

构建综合大屏可视化展示平台,旨在整合各业务板块,打造统一大数据分析引擎。此平台将深度融合数据驾驶舱与智慧调度系统,实现对企业运营的全面洞察与高效指挥。我们深入钻研客户信息数据,秉承“大数据”精髓,推动业务模…

【测试八股】软件测试面试八股文

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 以下是软件测试相关的面试题及答案,希望对各位能有帮助! 1、测试分为哪几个阶段? 一般来说分为5个阶段:单元测试、集成测试…

警惕!血糖升高初期,这10大微妙信号你捕捉到了吗?

在这个快节奏的时代,饮食不规律、缺乏运动等生活习惯悄然间让高血糖这一“隐形杀手”潜伏在我们身边。然而,高血糖并非悄无声息,它在早期往往会通过一系列微妙却重要的身体信号向我们发出警告。今天,就让我们一同揭开血糖高早期的…

【Unity错误】No cloud project ID was found by the Analytics SDK

在编译默认的URP 2D项目时,出现这样一个错误:No cloud project ID was found by the Analytics SDK. This means Analytics events will not be sent. Please make sure to link your cloud project in the Unity editor to fix this problem. 原因&…

yolov5明厨亮灶检测系统,厨师帽-口罩检测,带pyqt界面-可检测图片和视频,支持中文标签,检测接口已封装好并优化,代码可读性强!

明厨亮灶检测系统是一个专门用于餐饮业厨房安全监管的智能系统。该系统结合了先进的计算机视觉技术,尤其是使用YOLOv5模型进行厨师帽和口罩的实时检测,并通过PyQt5构建了一个用户友好的图形界面。该系统不仅能够检测图片和视频中的目标,而且支…

如何看待 IBM 中国研发部裁员?

文章目录 引言背景趋势与影响人才发展对 IT 人才市场的影响IT 从业者积极应对全球化挑战 产业发展IT 产业的应对策略提升核心竞争力 结语 引言 近日,IBM 中国宣布撤出在华两大研发中心,引发了 IT 行业对于跨国公司在华研发战略的广泛讨论。这一决定不仅…

共享打印机无法连多种错误代码原因分析及解决方法

日常办公和生活中,打印机是不可或缺的重要设备。然而,在添加共享或使用共享打印机过程中,经常会遇各种问题。然后我们在添加共享打印机遇到最多的向种错误:0x0000011b、0x000004005、0x000006d9、0x00000040等等,然后这…

ggplot2 缩小的/一般长度的、带箭头的坐标轴 | R语言

1. 效果图 左侧为DimPlot2()效果图。 右侧为DimPlot()效果图,原图。 2. 代码 axis.line element_line(arrow arrow(type "open", length unit(0.3, "cm"))), 其中: type"open"表示是开放箭头,type“closed” 表示是…

云手机哪一款好用?手游专用云手机一览!VMOS云手机

云手机,顾名思义,是一台运行在云端服务器上的虚拟手机。它具备传统手机的所有功能,但无需实际设备支持运算和存储。所有的计算、存储以及应用运行都由云端服务器承担。用户只需通过浏览器或客户端访问云手机的操作界面,就可以像操…

挖耳勺可以和别人共用吗?口碑好的可视耳勺!

人体分泌的耳垢会有细菌,如果与别人共用挖耳勺很有可能会交叉感染,所以一般建议自己有专用的挖耳勺。小编可以给大家分享一款超好用又能实现一人一用的挖耳勺--可视挖耳勺,它有着高清内窥镜可以进入耳道实时查看情况,并且耳勺头采…

用Postman调试是英文导致系统语言变成英文,SQL语句查询不出来对应的字段,出现SAP系统里面调试是有值的,但是外部调用是没有值的!

用Postman调试是英文导致系统语言变成英文,SQL语句查询不出来对应的字段,出现SAP系统里面调试是有值的,但是外部调用是没有值的!后面调试了非常久,一直以为是有特殊字符导致的,后面处理了特殊字符之后还是不…

学生宿舍安全用电的重要性

一、宿舍用电安全的重要性 宿舍是学生学习和生活的场所,也是人员密集的地方。一旦发生用电安全事故,不仅会造成财产损失,还会危及学生的生命安全。因此,宿舍用电安全是学校和学生必须高度重视的问题。 二、宿舍用电安全注意事项 1…

QGIS 如何连接空间库,并实时编辑空间表?编辑后库表如何刷新,保证是最新数据?

文章目录 一、什么是 qgis?二、qgis 如何连接数据库三、实时编辑空间表四、编辑后库表如何刷新,保证是最新数据?五、总结 一、什么是 qgis? QGIS(原称Quantum GIS)是一个用户界面友好的开源桌面端软件&…

python安装包的三种区别

python安装包的三种区别: Download Windows x86 web-based installer Download Windows x86 executable installerDownload Windows x86 embeddable zip fileDownload Windows x86-64 web-based installerDownload Windows x86-64 executable installerDownload W…

【C++】入门基础(上)

Hi,好久不见! 目录 1、C入门小基础 1.1 祖师爷--Bjarne Stroustrup(本贾尼斯特劳斯特卢普) 1.2 C参考文献 1.3 书籍推荐 2、C的第一个程序 3、命名空间 3.1 namespace的价值 3.2 namespace的定义 3.3 命名空间的使…

乐学英语四六级学习系统小程序的开发---附源码78055

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.1.1经济可行性 2.1.2技术可行性 2.1.3社会可行性 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 …