mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-02-15 00:25:53 +00:00
* native presets building and work. need to figure out how to install them to the right place. * revert main * comments * fix nativepreset installation dir to be presets dir
162 lines
4.0 KiB
C++
162 lines
4.0 KiB
C++
/*
|
|
* RovastarFractalSpiral.hpp
|
|
*
|
|
* Created on: Jun 22, 2008
|
|
* Author: pete
|
|
*/
|
|
|
|
|
|
#include "Pipeline.hpp"
|
|
#include "Transformation.hpp"
|
|
#include "MilkdropCompatability.hpp"
|
|
#include "VideoEcho.hpp"
|
|
#include "NativePreset.hpp"
|
|
#include "MilkdropWaveform.hpp"
|
|
|
|
class RLGFractalDrop7c : public Pipeline
|
|
{
|
|
public:
|
|
|
|
Shape shape1,shape2,shape3,shape4;
|
|
MilkdropWaveform wave;
|
|
VideoEcho videoEcho;
|
|
|
|
float movement, t1, t2, t3, t4;
|
|
|
|
RLGFractalDrop7c() : Pipeline()
|
|
{
|
|
drawables.push_back(&shape1);
|
|
drawables.push_back(&shape2);
|
|
drawables.push_back(&shape3);
|
|
drawables.push_back(&shape4);
|
|
drawables.push_back(&wave);
|
|
|
|
compositeDrawables.push_back(&videoEcho);
|
|
|
|
textureWrap = true;
|
|
screenDecay = 1.0;
|
|
|
|
videoEcho.orientation = FlipX;
|
|
videoEcho.zoom = 1.006752;
|
|
videoEcho.a = 0.5;
|
|
|
|
wave.mode = DoubleLine;
|
|
wave.additive = true;
|
|
wave.scale = 3.815202;
|
|
wave.smoothing = 0.9;
|
|
wave.modOpacityEnd = 1.1;
|
|
wave.modOpacityStart = 0.0;
|
|
wave.maximizeColors = true;
|
|
wave.modulateAlphaByVolume = true;
|
|
wave.r = 0.65;
|
|
wave.g = 0.65;
|
|
wave.b = 1;
|
|
wave.a = 0.1;
|
|
|
|
movement = 0;
|
|
|
|
t1 = (rand()%100)*0.01;
|
|
t2 = (rand()%100)*0.01;
|
|
t3 = (rand()%100)*0.01;
|
|
t4 = (rand()%100)*0.01;
|
|
|
|
shape1.sides =3;
|
|
shape1.x = 0.37;
|
|
shape1.y = 0.5;
|
|
shape1.radius = 6.811289;
|
|
shape1.ang = 3.644249;
|
|
shape1.a = 0.5;
|
|
shape1.a2 = 0.5;
|
|
shape1.border_r = 1;
|
|
shape1.border_g = 1;
|
|
shape1.border_b = 1;
|
|
shape1.border_a = 1;
|
|
|
|
shape2.sides =100;
|
|
shape2.additive = true;
|
|
shape2.textured = true;
|
|
|
|
shape2.radius = 0.897961;
|
|
shape2.ang = 3.644249;
|
|
shape2.a = 0.5;
|
|
shape2.a2 = 1;
|
|
|
|
shape3.sides =100;
|
|
shape3.additive = true;
|
|
shape3.textured = true;
|
|
shape3.radius = 0.513861;
|
|
shape3.ang = 4.209736;
|
|
shape3.a = 1;
|
|
shape3.a2 = 1;
|
|
|
|
shape4.sides =100;
|
|
shape4.additive = true;
|
|
shape4.textured = true;
|
|
shape4.ang = 0;
|
|
shape4.a = 1;
|
|
shape4.r = 0.6;
|
|
shape4.g = 0.8;
|
|
shape4.b = 1;
|
|
shape4.a2 = 1;
|
|
}
|
|
|
|
virtual void Render(const BeatDetect &music, const PipelineContext &context)
|
|
{
|
|
movement += 0.1*max(0,music.bass+music.bass_att-2) + 0.15*pow(music.bass,3) + 0.005;
|
|
float time = context.time;
|
|
|
|
shape1.ang = movement*(0.303 + 0.01*t1);
|
|
shape1.r = min(1,max(0,0+ 0.1*sin(time*0.417 + 1)));
|
|
shape1.g = min(1,max(0,0 + 0.1*sin(time*0.391 + 2)));
|
|
shape1.b = min(1,max(0,0 + 0.1*sin(time*0.432 + 4)));
|
|
shape1.r2 = min(1,max(0, 0.02*sin(time*0.657 + 3)));
|
|
shape1.g2 = min(1,max(0, 0.02*sin(time*0.737 + 5)));
|
|
shape1.b2 = min(1,max(0, 0.02*sin(time*0.884 + 6)));
|
|
shape1.additive = ((0.5+0.15*(music.bass+music.bass_att)) > 1.0) ? true : false;
|
|
|
|
|
|
shape2.x = 0.37 + 0.07*sin(movement*0.15+3);
|
|
shape2.y = 0.5 + 0.03*sin(movement*0.19+1);
|
|
shape2.tex_ang = movement*(0.01 + 0.0001*t2);
|
|
shape2.r = min(1,max(0, 1 + 0.01*sin(time*0.0417 + 1)));
|
|
shape2.g = min(1,max(0, 1 + 0.01*sin(time*0.391 + 2)));
|
|
shape2.b = min(1,max(0, 1 + 0.01*sin(time*0.432 + 4)));
|
|
shape2.r2 = min(1,max(0, 0.01*sin(time*0.457 + 3)));
|
|
shape2.g2 = min(1,max(0, 0.01*sin(time*0.0437 + 5)));
|
|
shape2.b2 = min(1,max(0, 0.01*sin(time*0.484 + 6)));
|
|
|
|
shape3.x = 0.67 + 0.05*sin(movement*0.017);
|
|
shape3.y = 0.43 + 0.09*sin(movement*0.013);
|
|
shape3.tex_ang = movement*(0.02 + 0.0001*t3);
|
|
shape3.radius = 0.222979 * (0.9 + 0.2*t4);
|
|
shape3.r = min(1,max(0,1+ 0.01*sin(time*0.417 + 1)));
|
|
shape3.g = min(1,max(0,1 + 0.01*sin(time*0.391 + 2)));
|
|
shape3.b = min(1,max(0,1 + 0.01*sin(time*0.432 + 4)));
|
|
shape3.r2 = min(1,max(0,0.01*sin(time*0.457 + 3)));
|
|
shape3.g2 = min(1,max(0,0.01*sin(time*0.437 + 5)));
|
|
shape3.b2 = min(1,max(0,0.01*sin(time*0.484 + 6)));
|
|
|
|
shape4.x = 0.5 + 0.08*sin(movement*0.25);
|
|
shape4.y = 0.5 + 0.1*sin(movement*0.5+2);
|
|
shape4.ang = time;
|
|
}
|
|
|
|
virtual PixelPoint PerPixel(PixelPoint p, const PerPixelContext context)
|
|
{
|
|
Transforms::Zoom(p,context,1.029902,1.00);
|
|
return p;
|
|
}
|
|
|
|
};
|
|
|
|
|
|
typedef NativePreset<RLGFractalDrop7c> RLGFractalDrop7Preset;
|
|
|
|
extern "C" RLGFractalDrop7Preset * create(const char * url) {
|
|
return new RLGFractalDrop7Preset(std::string(url));
|
|
}
|
|
|
|
extern "C" void destroy(RLGFractalDrop7Preset * preset) {
|
|
delete preset;
|
|
}
|