ShaderJoy —— 心形爆炸烟花效果【GLSL】

 

效果图

 

 

ShaderJoy —— 心形爆炸烟花效果【GLSL】_第1张图片

 

心形爆炸(上升到一定高度后)的核心代码

/// --------------------------------------------------
/// @note 根据(单位圆的)角度计算笛卡尔坐标
float x = cos(ang); //coords of unit circle
float y = sin(ang);
/// 心形公式
y = y + abs(x) * sqrt( (8. - abs(x)) / 50.0 );
/// 心形速度向量,随着时间而变小
vec2 heart = vec2(x * x + y * y) * (0.4 / (t_i * sqrt(t_i))); 

/// 根据心形的当前速度和加速度、初始位置等更新粒子的位置
vec2 S = get_pos(heart, acc * ACC_RATIO, h_max, t_i - (t_up), ang);
/// --------------------------------------------------

首先根据心形公式(如下图所示)可以得到爆炸时每个粒子的初始位置 

你可能感兴趣的:(ShaderJoy,——,Shader,实例详解,opengl,opengles,shader)