Clamp

Task

Write a GLSL program that draws a diagonal line from the bottom left corner of the texture to the top right corner. The line should have a width of 0.2 in normalized coordinates and be colored in (1.0, 0.3, 0.3). Additionally, ensure that the line is limited to values between 0.25 and 0.75 in Y coordinate.
编写一个GLSL程序,该程序绘制一条从纹理左下角到右上角的对角线。要求如下:

  • 线条在归一化坐标系中的宽度为 0.2。
  • 线条颜色为 (1.0, 0.3, 0.3)。
  • 此外,请确保该线条只在Y坐标

Theory

函数介绍

java 复制代码
float clamp(float value, float minVal, float maxVal)

clamp 将一个值限制在一个闭区间 [min, max] 内,如果小于minVal则返回minVal,如果大于maxVal则返回maxVal,否则返回value。

  • value: 你想要限制的原始值。
  • minVal: 区间的下限(最小值)。
  • maxVal: 区间的上限(最大值)。

Answer

glsl 复制代码
uniform vec2 iResolution;

void main() {
  vec2 uv = gl_FragCoord.xy / iResolution.xy;

  float lineWidth = 0.2;
  vec3  lineColor = vec3(1.0, 0.3, 0.3);
  float value = clamp(uv.x, 0.25, 0.75);
  // 获得当前点的y坐标,用来下面进行判断颜色用,如果当前点的y坐标大于线条宽度的一半则舍弃这个点
  float dist  = abs(uv.y - value); 
  float line  = 1.0 - step(lineWidth * 0.5, dist);
  
  gl_FragColor = vec4(lineColor * line, 1.0);
}

效果

练习

Clamp

最后

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

相关推荐
小蜗 strong5 分钟前
和电脑猜拳(随机程序应用)
服务器·前端·python
下家1 小时前
为了脱离前端鄙视链,于是自己写个框架 - React 党看完沉默了
前端·前端框架
zhiyouTech2 小时前
从“被看见“到“被信任“:关于信源评级机制的一点观察
大数据·前端·人工智能
Hashan2 小时前
Vibe Coding 下前后端怎么对接接口?后端不给力的兜底方案
前端·后端·vibecoding
你挚爱的强哥2 小时前
【sgKeyboard】自定义组件:虚拟键盘
前端·javascript·计算机外设
锅里游的鱼吖2 小时前
echarts自定义折线图
前端·javascript·数据库
hunteritself3 小时前
卷卷卷!GPT-6 Sol、Luna 正式发布,OpenAI 开始卷价格了
大数据·前端·人工智能·深度学习·transformer
何何____3 小时前
Vue 全局事件总线详解
前端·javascript·vue.js
涉密IT资质笔记4 小时前
涉密人员脱密期管理规范:期限分级模型、就业限制边界与违规认定标准
java·服务器·前端·网络·数据库
u0111026754 小时前
工具页案例图如何编写 alt让图片说明与处理场景对应
java·前端·javascript·图像处理·人工智能·算法·ai作画