glsl shader简明教程系列1
glsl shader简明教程系列1
底层的东西我就不说了(自己去百度翻基础教程) 我直接说上层了(片段着色器)
web编辑器还在开发中 有了编辑器 到时候可以把代码复制上去可以看到效果了
1 实现图片变灰(需要注意 shader是强类型语言 注意类型一致)
void main () {
// 这个变量c就是图片每个像素的 颜色值
vec4 c = vec4(,,,) * texture2D(texture, uv0);
//下面是变灰算法 只要明白这个算法能变灰就行
float clrbright = (c.r + c.g + c.b) * (. / .);
float gray = (0.6) * clrbright;
//给图片每个像素重新赋值颜色值
gl_FragColor = vec4(gray, gray, gray, c.a);
}
2 图片变亮效果
vec4 dim(vec4 col, float factor) {
return vec4(col.r * factor, col.g * factor, col.b * factor, col.a);
}
void main () {
// 这个变量c就是图片每个像素的 颜色值
vec4 c = vec4(,,,) * texture2D(texture, uv0);
// 提高亮度(dim第二个参数 设置1以上提高亮度 1以下降低亮度 这些都是颜色算法 不用深究明白有什么作用就行
vec4 blurred_image = dim(c,1.6);
//给图片每个像素重新赋值颜色值
gl_FragColor = vec4(blurred_image);
}
3 图片变模糊
#define repeats 5.
#define num 0.02
// 随机值
float rand(vec2 co){
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}
// 应用贴图UV
vec4 draw(vec2 uv) {
return texture2D(texture,uv).rgba;
} void main () {
// 模糊贴图(下面都是模糊算法 不用细看 直接搬过来用就行)
vec4 blurred_image = vec4(.);
// 重复采样
for (float i = .; i < repeats; i++) {
// 第一采样点
vec2 q = vec2(cos(degrees((i/repeats)*.)),sin(degrees((i/repeats)*.))) * (rand(vec2(i,uv0.x+uv0.y))+num);
vec2 uv2 = uv0+(q*num);
blurred_image += draw(uv2)/.; // 第二采样点
q = vec2(cos(degrees((i/repeats)*.)),sin(degrees((i/repeats)*.))) * (rand(vec2(i+.,uv0.x+uv0.y+.))+num);
uv2 = uv0+(q*num);
blurred_image += draw(uv2)/.;
}
// 中和
blurred_image /= repeats;
// 给图片每个像素重新赋值颜色值
gl_FragColor = vec4(blurred_image); }
接下来说下圆形mask做法
vec4 drawCircle() {
float dis = 0.0;
//uv 代表贴图的uv坐标 默认左下角为00点
vec2 uv = uv0;
//
dis = distance( uv, vec2(0.5, 0.5) );
vec4 color;
// 这个变量c就是图片每个像素的 颜色值
vec4 c = vec4(,,,)* texture2D(texture,uv);
//判断如果是半径内 就显示 半径外 就隐藏
if(dis <= 0.5)
{
color = c;
}
else{
// 隐藏不要的部分
color = vec4(c.rgb,.);
}
return color;
}
void main () {
vec4 color = drawCircle();
gl_FragColor = color;
}
如果边缘要弄羽化效果 那就在边缘加点0到1 的透明度过度
smoothstep(a, b, x) 可以用来生成0到1的平滑过渡.
如果x小于a,返回 0。
如果x大于b,返回 1。
如果a<x<b 返回0~1
glsl shader简明教程系列1的更多相关文章
- SQL简明教程系列15 创建索引
CREATE INDEX用于在表中创建索引. 索引使数据库应用程序可以更快地查找数据. 注:更新一个包含索引的表比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新.因此,理想的做法是仅仅在常 ...
- 2013 duilib入门简明教程 -- 总结 (20)
duilib的入门系列就到尾声了,再次提醒下,Alberl用的duilib版本是SVN上第个版本,时间是2013.08.15~ 这里给出Alberl最后汇总的一个工程,戳我下载,效 ...
- Java8简明教程(转载)
ImportNew注:有兴趣第一时间学习Java 8的Java开发者,欢迎围观<征集参与Java 8原创系列文章作者>. 以下是<Java 8简明教程>的正文. “Java并没 ...
- CSDN Markdown简明教程5-高速上手
0.文件夹 文件夹 前言 CSDN Markdown特点 CSDN Markdown高速上手 1 使用快捷键 粗体斜体 引用 链接 高亮代码块 图片 标题 列表 切割线 撤销反复 2 使用离线写作 3 ...
- CSDN Markdown简明教程3-表格和公式
0. 文件夹 文件夹 前言 表格 1 表格 2 表格对齐方式 公式 1 行内公式 2 陈列公式displayed formulas 3 MathJax语法 深入 声明 1. 前言 Markdown是一 ...
- CSDN Markdown简明教程4-UML画画
0.文件夹 文件夹 前言 序列图 1 序列图演示样例 2 序列图语法 流程图 1 流程图演示样例 2 流程图语法 节点定义 节点连接 Gravizo 声明 1. 前言 Markdown是一种轻量级的标 ...
- ArcGIS Pro 简明教程(4)工具和模型构建器
ArcGIS Pro 简明教程(4)工具和模型构建器 by 李远祥 工具箱中的工具 ArcGIS Pro 在1.3版本基本上已经继承了ArcMap的所有工具,而且会不断加入一些它自身才有的工具,例如适 ...
- ArcGIS Pro 简明教程(1)Pro简介
ArcGIS Pro 简明教程(1)Pro简介 ArcGIS Pro已经发布了相当的一段时间了,截至笔者写这系列文章的时候已经是1.3版本了,已经是相当完善的一个版本,基本上已经完成了原来ArcGIS ...
- CGIC简明教程(转摘)
CGIC简明教程 本系列的目的是演示如何使用C语言的CGI库“CGIC”完成Web开发的各种要求. ********************************* 基础知识 1 ...
随机推荐
- 2.RF中scalar,list和dict变量的定义和取值
$:定义scalar变量:@定义list变量:&定义dict变量: $还用来取值,包含scalar, list和dict变量,如下example所示 1.定义scalar变量:set vari ...
- Neo4j:图数据库GraphDB(二)高级查找
接着上一篇,继续介绍图数据库Neo4j: http://www.cnblogs.com/rongyux/p/5537028.html 三 高级查找操作 1过滤 name = "Tom H ...
- 新手也能看懂的 SpringBoot 异步编程指南
本文已经收录自 springboot-guide : https://github.com/Snailclimb/springboot-guide (Spring Boot 核心知识点整理. 基于 S ...
- [NOIp2009] luogu P1073 最优贸易
md 我发现跟你们聊天贼没意思. 题目描述 我觉得描述挺好,不改了吧. Solution 容易发现这是道 dfs + DP 的乱搞题. 设 f[x]f[x]f[x] 表示到 xxx 这个点的最优答案. ...
- Git & Github 使用教程【1】入门篇
Github教程 1-1 版本管理工具简介 主要作用:备份文件.记录历史.回到过去.多端共享.独挡一面.团队协作 2-1 版本管理工具发展历史 3-1 Git下载和安装[略] 3-2 linux下安装 ...
- epoll(2) 使用及源码分析的引子
epoll(2) 使用及源码分析的引子 本文代码取自内核版本 4.17 epoll(2) - I/O 事件通知设施. epoll 是内核在2.6版本后实现的,是对 select(2)/poll(2) ...
- 入门了解Service Mesh + Istio?从本文开始
下周六,深圳,阔别已久的线下技术沙龙要和你见面啦! 现场有Rancher Labs研发经理demo刚刚发布的Rancher 2.3中的Istio.Windows容器.集群模板等功能及使用,还有k3s首 ...
- WPF中的文本度量
关于WPF中的文本度量,需要了解以下几个问题: WPF中支持一些常用的度量单位:px(device independent pixels).in(inches).cm(centimeters).pt( ...
- 那些惊艳的 GIS 轮子
一.前言 GIS 涉及测绘.几何拓扑.人文社科等多方面的科学知识.在 .Net 平台下有着许多优秀的开源产品,比如:MapWindow.SharpMap.WorldWind等.而在这其中,Coordi ...
- 处理 Could not find a 'KafkaClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is
场景 某监控进程需要访问多个集群的Kafka INFO - org.apache.kafka.common.KafkaException: Failed to construct kafka cons ...