散弹视觉冲击 shader

本文提供了一个使用 GLSL (图形库着色语言标准) 编写的实时渲染示例代码,该示例展示了如何通过旋转、随机数生成及三角函数等操作实现动态流星轨迹效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:  http://glslsandbox.com/e#44947.0




#ifdef GL_ES
precision highp float;
#endif


uniform float time;
uniform vec2 mouse;
uniform vec2 resolution;


#define PI 3.14159265359
//#define time


float random(float n) {
return fract(abs(sin(n * 55.753) * 367.34));
}


mat2 rotate2d(float angle){
return mat2(cos(angle), -sin(angle),  sin(angle), cos(angle));
}


void main( void ) {
vec2 uv = (gl_FragCoord.xy * 2.0 -  resolution.xy) / resolution.x;


uv *= rotate2d(time * 0.2); //time * 0.2


float direction = 1.0;
float speed = time * direction * 1.6;
float distanceFromCenter = length(uv);


float meteorAngle = atan(uv.y, uv.x) * (180.0 / PI);


float flooredAngle = floor(meteorAngle);
float randomAngle = pow(random(flooredAngle), 0.5);
float t = speed + randomAngle;


float lightsCountOffset = 0.4;
float adist = randomAngle / distanceFromCenter * lightsCountOffset;
float dist = t + adist;
float meteorDirection = (direction < 0.0) ? -1.0 : 0.0;
dist = abs(fract(dist) + meteorDirection);


float lightLength = 100.0;
float meteor = (5.0 / dist) * cos(sin(speed)) / lightLength;
meteor *= distanceFromCenter * 2.0;


vec3 color = vec3(0.);
color += meteor;


gl_FragColor = vec4(color, 1.0);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值