shader编程基础:画线
以sin曲线为例,任何函数曲线画法类似。
画线原理虽然十分简单,却是复杂图形曲线绘制的基础。
uv和smoothstep等函数不清楚请参考跳转链接: shader编程基础:画圆
#define T .01
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = (fragCoord.xy-0.5 * iResolution.xy) / iResolution.y;
vec3 col = vec3(0.);
uv *= 4.;
vec2 curve = vec2(uv.x, sin(uv.x + iTime * 3.1415926));
float d = length(uv - curve);
col += smoothstep(T, .0, d);
fragColor = vec4(col, 1.);
}
- T:线的粗细
- uv: 像素在屏幕空间的标准化位置
- curve:sin曲线在当前标准化坐标系x = uv.x下的位置
- d:当前uv坐标距离curve的长度
同过映射将确定当前坐标点的uv,计算当前曲线x = uv.x的位置,进而计算当前uv坐标和curve在x = uv.x的坐标的距离长度,通过smoothstep计算显示的颜色(即距离d < 0输出为1, 0 < d < 0.01输出为1到0,d > 0.01输出为0),越靠近曲线颜色变白,远离曲线变黑,直到到达T即0.01,颜色col = vec3(1., 1., 1.)纯黑。
shader编程基础:画线的更多相关文章
- HLSL Shader编程基础总结
转自:https://blog.csdn.net/Blues1021/article/details/47093487 基本前提概念 Shader是一种映射到GPU硬件汇编语言上的高级语言,Shade ...
- windows编程:画线,简单的碰撞检测,简单的帧率锁定
#define WIN32_LEAN_AND_MEAN #include <windows.h> #include <windowsx.h> #include <mmsy ...
- 【液晶模块系列基础视频】4.1.X-GUI图形界面库-画线画圆等函数简介
[液晶模块系列基础视频]4.1.X-GUI图形界面库-画线画圆等函数简介 ============================== 技术论坛:http://www.eeschool.org 博客地 ...
- LCD编程_画点线圆
上篇博客中进行了lcd的简单测试,这篇博客将进行更加复杂的测试——画点.画线.画圆.画线和画圆是在画点的基础上实现的,因此本篇博客重点实现画点操作. 先抛出这样的一个问题,已知: (x,y)的坐标: ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列03)---- Drawing(绘图)(3)-- 画线
[概览] 本文实现如下的程序:(在窗体中绘画出各种不同风格的线条) 主要步骤如下: 1.在eric6中新建项目,新建窗体 2.(自动打开)进入PyQt5 Desinger,编辑图形界面,保存 3.回到 ...
- C#_GDI+详细教程(图形图像编程基础)
第7章 C#图形图像编程基础 本章主要介绍使用C#进行图形图像编程基础,其中包括GDI+绘图基础.C#图像处理基础以及简单的图像处理技术. 7.1 GDI+绘图基础 编写图形程序时需要使用GDI( ...
- 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 & 第一个Shader的书写
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨) ...
- Unity3d之Shader编程:子着色器、通道与标签的写法 & 纹理混合
一.子着色器 Unity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个网格时,它能发现使用的着色器,并提取第一个能运行在当前用户的显示卡上的子着色器. 我们知道,子着色器 ...
- Unity之屏幕画线
using UnityEngine;using System.Collections; public class DrawRectangle : MonoBehaviour { public Colo ...
- (转)Windows驱动编程基础教程
版权声明 本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括 ...
随机推荐
- 一个关于 Linux环境下输出操作符 >和>>的问题
[>和>>的区别]命令>文件,表示以覆盖的方式,把命令正确输出到指定的文件或者设备当中:命令>>文件,表示以追加的方式,把命令正确输出到指定的文件或者设备当中. [ ...
- OVS学习博客推荐
博客学习 大致看一遍 openvswitch处理upcall过程分析 upcall-cost分析 连接跟踪(conntrack):原理.应用及 Linux 内核实现 ovs upcall处理流程 Li ...
- 数据库中1NF,2NF,3NF的判别
参照:https://blog.csdn.net/qq_28888837/article/details/98733448 1NF:每一个都是最原子化. 2NF:找到主键后,每一个非主键对主键都是完 ...
- Flex布局原理【转载】
引言 CSS3中的 Flexible Box,或者叫flexbox,是用于排列元素的一种布局模式. 顾名思义,弹性布局中的元素是有伸展和收缩自身的能力的. 相比于原来的布局方式,如float.posi ...
- Error:(x,x) java: 程序包com.xxx.xxx不存在
[问题描述]:项目为SpringBoot 项目多个 module依赖,对子模块进行 compile/install 时出现了依赖的类(此类是自己写的类)不存在.
- Java面试——消息队列
一.消息队列的使用场景 ☞ 以下介绍消息队列在实际应用常用的使用场景.异步处理.应用解耦.流量削锋和消息通讯四个场景.[1]异步处理:场景说明:用户注册后,需要发注册邮件和注册短信. 引入消息队列后 ...
- 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(12)-Charles如何使用Repeat功能进行简单压力测试
1.前言 李四:"今天好累啊,点的我手指都疼了.我一直被要求给后端接口的同事重复发送请求来调试接口." Charles:"哎呀,李四同学,你怎么能一条一条的手动发送呢 我 ...
- Android开发踩坑日记
ViewModelProviders被弃用,改为ViewModelProvider ViewModelProvider使用方法 MyViewModel model = new ViewModelPro ...
- ML - Regression
Regression Machine Learning 机器学习的意义就在于让机器具备找一个函数(function)的能力 Different types of Functions Regressio ...
- 集合-LinkedHashMap 源码详细分析(JDK1.8)
1. 概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题.除此之外,Linke ...