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驱动编程基础教程
版权声明 本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括 ...
随机推荐
- Dubbo和Zookeeper(Springboot集成)
Dubbo和Zookeeper集成: 分布式理论: 分布式系统是由一组通过网络进行通信.为了完成共同的任务而协调工作的计算机节点组成的系统.分布式系统的出现是为了用廉价的.普通的机器完成单个计算机无法 ...
- 服务器资源监测脚本(网卡、MEM、CPU)
#-*- coding: utf-8 -*- #!/usr/bin/python ''' 用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ] 主选项和报告: ...
- GPSSworld仿真(一):程序题——单窗口排队系统
3.3 一个仓库共存放了2000吨货物,货物以三种规模出库,少量(10吨),中等(20吨),大量(50吨),分别以10±5分,15分,30±10分的速率出库.如果没有货位达到的情况下,一个仓库能维持供 ...
- GUI编程--3 Swing
GUI编程-3 Swing 3.1 JFrame 窗口 窗口: package com.ssl.lesson04; import javax.swing.*; import java.awt.*; p ...
- protobuf 详解
protobuf protobuf概述 protobuf简介 Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,是一种轻便高效的结构化数据存储格式, ...
- 对比 elasticsearch 和 mysql
最近阅读了elasticsearch的官方文档,学习了它的很多特性,发现elasticsearch和mysql有很多地方类似,也有很多地方不同.这里做一个对比,帮助大家加深对elasticsearch ...
- 手动实现一个call bind
一.call的实现(apply类似) //完成版 Function.prototype.setCall = function (obj){ var object = obj || window let ...
- 一文彻底搞懂Raft算法,看这篇就够了!!!
最近需要设计一个分布式系统,需要一个中间件来存储共享的信息,来保证多个系统之间的数据一致性,调研了两个主流框架Zookeeper和ETCD,发现都能满足我们的系统需求.其中ETCD是K8s中采用的分布 ...
- 【题解】Luogu P2671 【求和】
因为人傻常数大写了一天的题目. 原题传送门 题目意思另一种表达: 定义特殊二元组\((x,z)\). 1.\(x<z\). 2.\(x\)与\(z\)要么都为奇数要么都为偶数. (即\(x \ ...
- day110:MoFang:重新构造用户关系状态&添加好友&处理好友申请&获取申请好友历史记录&好友列表显示
目录: 1.用户关系状态:重新构造 2.添加好友 3.处理好友申请 4.获取申请好友历史记录 5.好友列表 day109+day110所学内容流程图 1.用户关系状态:重新构造 在day109博客的前 ...