Shader
文章平均质量分 54
ShaderJoy
醉心于研究一些特效(用代码来画画),曾涉猎过图形图像视频处理 、计算机视觉 、增强现实/虚拟现实等技术领域,就职于美图。
展开
-
ShaderJoy —— 一些特效作品展示
ShaderJoy -水墨晕染转场ShaderJoy -- 爱的节奏ShaderJoy -- Little StarsShaderjoy -- ∞ neonShaderJoy --♡の烟花ShaderJoy --Dancing ♡ShaderJoy -- ♡の烟花ShaderJoy —— 💗声波纹ShaderJoy--❤随乐动ShaderJoy ——💗の声纹ShaderJoy —— ❤ 气泡音频特效Shader 特效 —— 基于 OpenGL 的音频可视化(仿 ShaderToy).mp4ShaderJ原创 2020-04-26 17:48:32 · 5276 阅读 · 13 评论 -
OpenGL深入探索——使用 Transform Feedback 创建粒子系统
转载自:第二十八课 使用 Transform Feedback 创建粒子系统背景粒子系统是为了模仿一些自然现象(比如烟,灰尘,烟火,雨等)所使用的技术的一个通用名字。在这些现象中,共同的地方就是它们是由大量的小粒子所组成,这些小的粒子以某种方式在一起移动,这样就构成了一种自然现象。为了模仿一个由粒子组成的自然现象,我们通常需要维护每一个粒子的位置信息和一些其他的属性(速率,转载 2020-08-06 03:12:18 · 3821 阅读 · 0 评论 -
ShaderJoy —— “Flow based eXtend Difference of Gaussian” 效果 【GLSL】
效果图对比原图不同参数下的效果-0不同参数下的效果-1不同参数下的效果-2不同参数下的效果-3不同参数下的效果-4不同参数下的效果-5如需购买源码请私信(完)...原创 2019-12-26 18:44:00 · 1718 阅读 · 0 评论 -
ShaderJoy —— “雪花飞舞 ”的实现 【GLSL】
效果图:是不是有点 “落雪无声掩尘嚣”的感觉~GLSL 代码:// -------------------#define _SnowflakeAmount 400 // 雪花数#define _BlizardFactor 0.25 // 风的大小#define fragCoord gl_FragCoord#define fragColor gl...原创 2016-10-22 17:55:29 · 5888 阅读 · 7 评论 -
网易面试题——“Point in Box”的实现 【GLSL】
参考自:stackoverflow效果图:GLSL代码:uniform sampler2D texUnit;float insideBox(vec2 v, vec2 bottomLeft, vec2 topRight) { // 如果在矩形内的话,s应该为(1., 1.),即函数返回值应该为 1 vec2 s = step(botto...原创 2016-08-27 22:45:06 · 2261 阅读 · 0 评论 -
ShaderJoy —— “马赛克”的实现【GLSL】
参考自:http://tech.it168.com/n/2007-03-29/200703291522292_3.shtml和http://blog.csdn.net/simpledrunk/article/details/17170965原图:”圆形” 效果图1 :“圆形”效果2:片元着色器代码:uniform sampler2...原创 2016-08-08 21:09:12 · 5822 阅读 · 2 评论 -
ShaderJoy —— 实现“抗锯齿的黑白格”并原理解析【GLSL】
效果图:完整 代码与分析 如下:#extension GL_OES_standard_derivatives:enable//precision highp float;uniform int u_frequency; // ❤ 小格子的个数 = (2*freq)^2, 大格子的个数 = freq^2uniform vec4 u_color0; /...原创 2016-08-07 16:33:45 · 6617 阅读 · 4 评论 -
ShaderJoy —— “旋转粒子”的实现【GLSL】
效果图:GLSL代码及算法解释:// 动画相关参数float dotSize = 0.01;float iteration = 100.;float xAmp = 0.3;float yAmp = 0.1;float speed = 0.05;float rotateCanvas = 0.;float rotateParticl原创 2016-09-19 00:13:48 · 6126 阅读 · 5 评论 -
ShaderJoy —— “Sephia、锐化、高斯滤波、均值滤波、膨胀、腐蚀效果”的实现 【GLSL】
参考自:http://www.open-open.com/lib/view/open1328487204203.html效果图:GLSL代码://#version 330 uniform sampler2D quadTexture;int filterNumber = 2;vec2 vTex = gl_FragCoord.xy / vec2(512....原创 2016-08-26 01:01:56 · 4869 阅读 · 5 评论 -
ShaderJoy ——各种 “素描手绘特效” 作品【GLSL】
效果图:原创 2016-09-10 22:36:28 · 5776 阅读 · 6 评论 -
ShaderJoy —— 实现“羽化”【GLSL】
原理参考自小熊不去实验室的博客在PHOTOSHOP里,羽化就是使你选定范围的图边缘达到朦胧的效果。羽化值越大,朦胧范围越宽,羽化值越小,朦胧范围越窄。可根据你想留下图的大小来调节。算法分析:1、通过对rgb值增加额外的V值实现朦胧效果2、通过控制V值的大小实现范围控制。3、V = 255 * 当前点Point距中点距离的平方s1 / (顶点距中点的距离平方 *mSi...原创 2016-08-13 14:45:34 · 11760 阅读 · 9 评论 -
GLSL语言基础
转自: 小楼一夜听春雨、http://www.kankanews.com/ICkengine/archives/120870.shtml 变量GLSL的变量命名方式与C语言类似。变量的名称可以使用字母,数字以及下划线,但变量名不能以数字开头,还有变量名不能以gl_作为前缀,这个是GLSL保留的前缀,用于GLSL的内部变量。当然还有一些GLSL保留的名称是不能够作为变量的名称的。 基本类型除了布尔型转载 2017-01-13 20:34:45 · 1749 阅读 · 0 评论 -
ShaderJoy —— 其他三种“径向模糊” 的实现 【GLSL】
效果图:代码如下:#ifdef GL_ESprecision mediump float;#endifuniform sampler2D iChannel0;uniform vec2 centerpos;// 径向中心uniform float GlowRange;// 径向范围void main(){ vec2 uv = gl_FragCoor...原创 2017-01-19 18:30:54 · 3570 阅读 · 0 评论 -
glsl_optimizer(Shader自动优化器) 的使用
参考自:http://goldlion.blog.51cto.com/4127613/1542254?utm_source=tuicool&utm_medium=referralglsl_optimizer 是一个免费开源的glsl优化器。可以生成GPU无关的shader优化代码。可以进行非常多的优化项目,比如 函数内联,死代码删除,常量折叠,常量传递,数学优化等等。GitHub地址其命令行格式为原创 2017-01-19 19:19:56 · 3446 阅读 · 2 评论 -
非局部均值(Non Local Mean)【GLSL】
原理介绍:请参考这篇博文——https://blog.csdn.net/panda1234lee/article/details/88016834代码及详细注释://#version 120uniform sampler2D iChannel0;const vec2 iResolution = vec2(512., 512.);const vec2 inv_res = vec...原创 2019-03-06 16:04:26 · 2653 阅读 · 0 评论 -
ShaderJoy —— 基于几何着色器的 Mesh “爆炸” 效果【GLSL】
先贴个效果图先挖个坑,以后再详细填原创 2017-06-18 19:30:53 · 4558 阅读 · 13 评论 -
ShaderJoy —— 简单 Ray-Marching(光线步进)入门【GLSL】【Unity Shader】
参考自:http://blog.csdn.net/baidu_26153715/article/details/46510703http://imgtec.eetrend.com/blog/8845http://ogldev.atspace.co.uk/www/tutorial13/tutorial13.html效果如图:完整代码及详细注释如下【...原创 2017-02-24 00:26:36 · 5837 阅读 · 6 评论 -
ShaderJoy —— 多物体 Raymarching(多图形 + 抗锯齿 + 软阴影)效果【GLSL】
参考自:iq 的https://www.shadertoy.com/view/Xds3zNhttp://www.iquilezles.org/www/articles/distfunctions/distfunctions.htmhttp://www.iquilezles.org/www/articles/rmshadows/rmshadows.htmhttp://ogl...原创 2017-02-25 17:42:58 · 5472 阅读 · 2 评论 -
使用计算着色器(Compute Shader)模拟粒子效果【OpenGL】【GLSL】
效果如图:关键代码及注释如下:C++ 代码void initialize(){ // 计算着色器 GLuint compute_shader = buildShader( &compute_shader_source, GL_COMPUTE_SHADER, "Error in compiling the compute shader\n"); compute_prog =原创 2017-04-23 17:29:02 · 9842 阅读 · 0 评论 -
Shader 优化相关资料整理
什么是渲染管线注:应用程序阶段:主要是CPU与内存打交道,例如碰撞检测,计算好的数据(顶点坐标、法向量、纹理坐标、纹理)就会通过数据总线传给图形硬件 。几何阶段:其实上图有个问题(网上不少博客也没写清楚这个问题),根据 OpenGL 蓝宝书(Super Bible)上的讲解,“几何图元装配”应该位于“细分着色器”阶段之后(细分着色器处理的还是一个个 Patch),然后再进入...原创 2017-02-04 10:34:29 · 4641 阅读 · 0 评论 -
ShaderJoy —— “水彩画”【GLSL】
本文代码参考了交大女神Candy Cat的博客效果1效果2原创 2016-08-08 22:59:56 · 8441 阅读 · 9 评论 -
Shader特效——BRDF 的实现【Unity Shader】
参考自: http://blog.csdn.net/wolf96/article/details/44204679单一光源的情况:多光源的情况:原创 2017-02-26 20:58:29 · 5800 阅读 · 0 评论 -
ShaderJoy —— 实现“闪电”【GLSL】
效果图片元着色器代码:uniform float time_0_X;uniform vec4 color;uniform sampler3D Noise;uniform float glowStrength;uniform float height;uiform float glowFallOff;uniform float speed;unifor...原创 2016-08-13 12:18:50 · 11063 阅读 · 5 评论 -
ShaderJoy —— “Cell Merge”的实现【ShaderToy】
参考自:https://www.shadertoy.com/view/MtsSDH效果图:GLSL代码及注释:vec3 color_bg = vec3(0.0);vec3 color_inner = vec3(1.0,0.9,0.16);vec3 color_outer = vec3(0.12,0.59,0.21);//vec3 color_ou原创 2016-09-15 23:54:03 · 2229 阅读 · 2 评论 -
ShaderJoy —— “Canny边缘检测”的实现 【GLSL】
算法参考自:http://blog.sina.com.cn/s/blog_676b40ec0100z2pt.htmlhttp://blog.csdn.net/xiajun07061225/article/details/6926108在写这篇文章的时候,发现网上关于canny的代码大多是基于C/C++,用GLSL的很少很少,甚至Github上也只有一份错误的实现,所以干脆自己实现...原创 2016-08-21 11:32:27 · 5781 阅读 · 5 评论 -
ShaderJoy —— “Median Filter效果”的实现 【GLSL】
效果图:GLSL代码与算法注释:#define SORT_SIZE 8float sort[SORT_SIZE];float medians[SORT_SIZE];// [0., 1.] -> [0, 255]float quant(float x){ x = clamp(x, 0., 1.); return floor(x * 255.);}原创 2016-09-10 14:54:09 · 2968 阅读 · 6 评论 -
ShaderJoy —— “Floyd Steinberg 抖动” 的实现 【OpenCV】【GLSL】
算法参考自:https://en.wikipedia.org/wiki/Floyd–Steinberg_dithering (算法很简单,维基百科解释的相当精炼!)http://blog.csdn.net/mathsoperator/article/details/7585898OpenCV的效果图:用OpenCV实现起来也是非常简单的!如下所示:...原创 2016-08-18 22:33:25 · 8032 阅读 · 4 评论 -
ShaderJoy —— “爽到飞起的 2233娘” 效果 【GLSL】
参考自:https://www.shadertoy.com/view/lsX3RriChannel0是一幅由一系列连贯动作的彩虹猫组成的图像,如下图所示ichannel1是任意一副背景图像效果图GLSL代码与算法注释如下:uniform float iGlobalTime;uniform sampler2D iChannel0;u原创 2016-09-09 15:29:30 · 5198 阅读 · 12 评论 -
ShaderJoy —— 基础光照模型公式与源码【GLSL】
ADS 光照模型:Ambient lignt (light that is always present at all points in a scene)Diffuse light (light that comes directly from a light source)Specular light (light that is reflected in a "shiny"...原创 2016-07-20 19:20:51 · 3658 阅读 · 1 评论 -
ShaderJoy —— 噪声之美,大家一起 “噪” 起来 【GLSL】
本文是学习了CandyCat的博客之后写的一个小结,女神的博客理论写得非常详尽,看完有种如沐春风的感觉。1.若干常见噪声类型先上个效果图:从左到右依次为:1.Perlin噪声,2.FBM叠加的分形噪声,3.对FBM绝对值叠加的分形噪声,4.值噪声,5. Simplex噪声。以下代码是基于ShaderToy的作者Inigo Quilez的demo进行二次修改的,并添加...原创 2020-06-19 09:35:49 · 14521 阅读 · 5 评论 -
ShaderJoy —— 实现“Environment Mapping模拟反射和折射”【基于RenderMonkey】
1.Bump Map遇到的法线坐标系转换问题因为法线贴图中读取出的法线是基于Tangent Space的,为了方便某些计算,需要将它们换算到World Space,那么就需要构造一个变换矩阵: mat3 tangentToWorldMat = mat3( v_tangent, v_binormal,原创 2016-07-30 22:48:53 · 2194 阅读 · 0 评论 -
ShaderJoy —— “跳动的❤️”的原理解析【GLSL】
本文参考了ShaderToy的算法,对其原理进行了简单分析,并对代码进行精简绘制心形先看看关键代码 float r = length(p); float a = atan(p.x,p.y)/3.141593; float h = abs(a); float d = (13.0*h - 22.0*h*h + 10.0*h*h*h)/(6.0-5.0*h); // Re原创 2016-07-25 17:17:53 · 9341 阅读 · 10 评论 -
ShaderJoy —— 实现“LowPoly”【基于RenderMonkey】
本文代码 主要参考了Sunday的博客,我只是针对RenderMonkey稍作修改,另附CandyCat实现的另外两种方法话不多说,先上效果图:RenderMonkey的变量设置也很简单不过值得注意的是RenderMonkey并没有直接提供NormalMatrix【mat3】,但是内置了matWorldViewInverseTranpose【mat4】,原创 2016-07-29 13:59:08 · 3278 阅读 · 0 评论 -
ShaderJoy —— “火苗”特效的实现与详解【GLSL】
基本算法参考自《GLSL 做一个动态的火苗》效果图我加了点自己的修改和解析,如下:#ifdef GL_ESprecision mediump float;#endifuniform float time;const vec2 resolution = vec2(640.0, 640.0);void main( void ) { vec2 po...原创 2016-08-02 22:19:33 · 7389 阅读 · 2 评论 -
ShaderJoy —— “Gamma校正” 的实现 【GLSL】
效果图:GLSL代码:uniform sampler2D srcTex;uniform vec3 levels;vec3 gammaCorrect(vec3 color, float gamma){ return pow(color, vec3(1.0/gamma));}vec3 levelRange(vec3 color, float minInpu...原创 2016-08-21 21:10:15 · 3817 阅读 · 0 评论 -
ShaderJoy —— HDR 、LDR 、VDR 的实现【GLSL】
参考自:http://tech.it168.com/n/2007-03-29/200703291522292_6.shtml原图:效果图:第一个Pass的片元着色器:uniform sampler2D Texture0;const vec2 texSize = vec2(256., 256.);varying vec2 vUV;...原创 2016-08-08 22:42:08 · 7476 阅读 · 2 评论 -
ShaderJoy —— 实现“放大镜/缩小镜”【GLSL】
本文参考自:http://www.renjihe.com/index.php/archives/776放大效果:缩小效果:片元着色器代码:const float in_circle_radius = 96.; //从客户端传入的放大镜圆半径const float in_zoom_times = 2.; ...原创 2016-08-09 19:41:01 · 7024 阅读 · 4 评论 -
ShaderJoy —— “基于 SDF 的简单图形”的实现【GLSL】
RoundedBox:效果图:ShaderToy代码及算法注释:// Created by inigo quilez - iq/2015// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.// signed distance to a 2D ro原创 2016-09-15 19:52:25 · 3538 阅读 · 0 评论 -
ShaderJoy ——“翻页” 效果的原理以及实现 【GLSL】
参考自:http://webvfx.rectalogic.com/examples_2transition-shader-pagecurl_8html-example.html效果图precision mediump float;varying vec2 texCoord;uniform sampler2D sourceTex;uniform原创 2016-08-23 01:20:27 · 11325 阅读 · 20 评论 -
ShaderJoy —— 最简单的 “RayTrace(光线追踪)” 的实现 【GLSL】
判断 “直线和圆是否相交” 的理论推导。延伸阅读:“直线和平面是否相交” 的理论推导。效果图:GLSL代码:vec2 iResolution = vec2(512., 512.);// 简单的光线结构体,更高级的Ray Tracer所需的字段更多struct Ray{ vec3 origin; // 光源点 vec3 di原创 2016-08-27 21:36:03 · 3433 阅读 · 0 评论