第一个ShaderToy——画圆、方、三角
来源:互联网 发布:樱井知香黑人 编辑:程序博客网 时间:2024/05/29 01:51
vec4 drawTriangle(in vec2 p, in vec2 A, in vec2 B, in vec2 C){ vec2 AB = B-A; vec2 BC = C-B; vec2 CA = A-C; vec2 AP = p - A; vec2 BP = p - B; vec2 CP = p - C; vec3 cPAB = cross(vec3(AP,.0),vec3(AB,.0)); vec3 cCAB = cross(vec3(-CA,.0),vec3(AB,.0)); bool bPA = dot(cPAB, cCAB) >= .0; vec3 cPAC = cross(vec3(CP,.0), vec3(CA,.0)); vec3 cBAC = cross(vec3(-BC,.0), vec3(CA,.0)); bool bPC = dot(cPAC, cBAC) >= .0; vec3 cPBC = cross(vec3(BP,.0), vec3(BC,.0)); vec3 cABC = cross(vec3(-AB,.0), vec3(BC,.0)); bool bPB = dot(cPBC, cABC) >= .0; if (bPC && bPB && bPA) { return vec4(0.9, 0.1, 0.1, 1.0); } else { return vec4(0.0, 0.0, 0.0, 0.0); }}vec4 drawCircle(in vec2 p, in vec2 o, in float radius){ float f = smoothstep(radius - 0.003, radius + 0.003, length(p-o)); return vec4(0.4,0.2,0.6,1.0-f);}vec4 drawRect(in vec2 p, in vec2 coord, in vec2 size){vec2 v = p - coord; if(0.5*size.x > abs(v.x) && 0.5*size.y > abs(v.y)) { return vec4(0.1,0.8,0.1,1.0); } return vec4(0.0,0.0,0.0,0.0);}void mainImage( out vec4 fragColor, in vec2 fragCoord ){ //vec2 uv = fragCoord.xy / iResolution.xy; vec2 p = (fragCoord.xy - 0.5*iResolution.xy)/iResolution.yy; vec4 layer0 = vec4(1.0, 0.8, 0.7, 1.0); vec4 layer1 = drawRect(p, vec2(.1,.1), vec2(0.4,0.4)); vec4 col = mix(layer0, layer1, layer1.a); vec4 layer2 = drawCircle(p, vec2(-0.1,-0.1),0.3); col = mix(col, layer2, layer2.a); vec4 layer3 = drawTriangle(p, vec2(-0.5,-0.4), vec2(-0.3,0.0), vec2(-0.1, -0.4)); col = mix(col, layer3, layer3.a); fragColor = col;}
上ShaderToy看别人的炫酷Shader,自己也想动手写来玩玩,学习一下glsl,今天就先写个画基础图形的Shader,在这里做一下记录。
0 0
- 第一个ShaderToy——画圆、方、三角
- Shadertoy编程学习(1):第一个shader程序
- 【学习心得】-第一个完整的三角类
- 【学习心得】-第一个完整的三角类
- shadertoy
- ShaderToy
- ShaderToy
- Shader特效——实现“噪声”【基于ShaderToy】【GLSL】
- Shader特效——“Distance 2D”的实现【ShaderToy】
- Shader特效——“Cell Merge”的实现【ShaderToy】
- 寻找第一个因数个数超过500的三角数
- 第一个拥有超过500个约数的三角形数是多少?
- 第一个话题,评论一下第三方网站
- [C#]第一个程序——HelloWorld
- 聚光科技——第一个Offer
- 入门——第一个android程序
- 第一个病毒——小小钟
- DX11——第一个程序:Box
- js---匿名函数和闭包
- java基础之try-catch-finally
- 解决Spring MVC 对AOP不起作用的问题
- Linux性能测试命令系列(1)- top
- Linux C++的多线程编程
- 第一个ShaderToy——画圆、方、三角
- Java进阶学习第五天——XML入门
- java 虚拟机运行时内存分布分析
- wpa_supplicant 中文SSID连接不上
- 分页
- c语言中malloc、realloc与calloc 的区别以及联系
- Jsp的四大域对象
- 轴振动和轴承振动的区别
- java中的类和对象