当前位置: 代码迷 >> 综合 >> ShaderJoy —— 心形爆炸烟花效果【GLSL】
  详细解决方案

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

热度:29   发布时间:2024-01-29 20:19:03.0

 

效果图

 

 

 

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

/// --------------------------------------------------
/// @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);
/// --------------------------------------------------

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