mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-02-18 07:55:24 +00:00
git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@1383 6778bc44-b910-0410-a7a0-be141de4315d
163 lines
3.9 KiB
C++
163 lines
3.9 KiB
C++
/*
|
|
* RovastarFractopiaFrantic.hpp
|
|
*
|
|
* Created on: Jun 18, 2008
|
|
* Author: pete
|
|
*/
|
|
|
|
#include "Pipeline.hpp"
|
|
#include "MilkdropCompatability.hpp"
|
|
#include "Transformation.hpp"
|
|
#include "MilkdropWaveform.hpp"
|
|
#include "Filters.hpp"
|
|
#include "NativePreset.hpp"
|
|
|
|
class RovastarDarkSecret : public Pipeline
|
|
{
|
|
public:
|
|
|
|
Shape shape1, shape2, shape3, shape4;
|
|
Border border;
|
|
Invert invert;
|
|
|
|
RovastarDarkSecret() : Pipeline()
|
|
{
|
|
screenDecay = 0.9;
|
|
textureWrap = true;
|
|
|
|
drawables.push_back(&border);
|
|
drawables.push_back(&shape1);
|
|
drawables.push_back(&shape2);
|
|
drawables.push_back(&shape3);
|
|
drawables.push_back(&shape4);
|
|
|
|
compositeDrawables.push_back(&invert);
|
|
|
|
border.outer_size = 0.015;
|
|
border.inner_size = 0.010;
|
|
border.outer_a = 1.0;
|
|
border.inner_a = 1.0;
|
|
|
|
shape1.sides = 4;
|
|
shape1.additive = true;
|
|
shape1.radius=1.621747;
|
|
shape1.textured = true;
|
|
shape1.tex_zoom=0.424973;
|
|
shape1.a = 1;
|
|
shape1.border_a = 0.0;
|
|
shape1.r = 1;
|
|
shape1.g = 0;
|
|
shape1.b = 0;
|
|
shape1.a2 = 0;
|
|
|
|
shape2.sides = 4;
|
|
shape2.additive = true;
|
|
shape2.radius=1.621747;
|
|
shape2.textured = true;
|
|
shape2.tex_zoom = 0.424973;
|
|
shape2.a = 1;
|
|
shape2.border_a = 0.0;
|
|
shape2.r = 1;
|
|
shape2.g = 0;
|
|
shape2.b = 1;
|
|
shape2.a2 = 0;
|
|
|
|
|
|
shape3.sides = 4;
|
|
shape3.additive = true;
|
|
shape3.radius=1.621747;
|
|
shape3.textured = true;
|
|
shape3.tex_zoom = 0.424973;
|
|
shape3.a = 1;
|
|
shape3.border_a = 0.0;
|
|
shape3.r = 0;
|
|
shape3.g = 1;
|
|
shape3.b = 1;
|
|
shape3.a2 = 0;
|
|
|
|
shape4.sides = 4;
|
|
shape4.additive = false;
|
|
shape4.radius=1.621747;
|
|
shape4.textured = true;
|
|
shape4.tex_zoom = 0.424973;
|
|
shape4.a = 1;
|
|
shape4.border_a = 0.0;
|
|
shape4.r = 1;
|
|
shape4.g = 1;
|
|
shape4.b = 1;
|
|
shape4.a2 = 0;
|
|
|
|
|
|
q8 = 0;
|
|
q7 = 0;
|
|
oldq7 = 0;
|
|
}
|
|
|
|
float q8, oldq8, q7, oldq7, q6;
|
|
float dx, dy;
|
|
|
|
virtual void Render(const BeatDetect &music, const PipelineContext &context)
|
|
{
|
|
|
|
float wave_r = 0.5+ 0.2*(music.bass-1);
|
|
float wave_g = 0.5+ 0.2*(music.mid-1.2);
|
|
float wave_b = 0.5+ 0.2*(music.treb-.5);
|
|
|
|
border.outer_r = 1-wave_r;
|
|
border.outer_g = 1-wave_g;
|
|
border.outer_b = 1-wave_b;
|
|
|
|
border.inner_r = 0.75 + 0.25*sin(context.time*0.4123);
|
|
border.inner_g = 0.25 + 0.25*cos(context.time*0.87);
|
|
border.inner_b = 0.5+0.5*sin(1.23*context.time);
|
|
|
|
float val = 1.2*music.bass+0.4*music.bass_att+0.1*music.treb+0.1*music.treb_att+0.1*music.mid+0.1*music.mid_att;
|
|
|
|
q8 = oldq8 +0.003*(((pow(val,6)/context.fps) + (pow(val,5)/context.fps) + (pow(val,4)/context.fps) + (pow(val,3)/context.fps) + (pow(val,2)/context.fps) +(val)/context.fps));
|
|
oldq8 = q8;
|
|
q7 =oldq7+ 0.001*(pow(val,7)/context.fps);
|
|
oldq7 = q7;
|
|
|
|
dy = 0.5 + 0.01*(sin(0.786*q7));
|
|
dx = 0.1*sin(1.143*q8);
|
|
q6 = 15+0.1*(((pow(val,6)/context.fps) + (pow(val,5)/context.fps) + (pow(val,4)/context.fps) + (pow(val,3)/context.fps) + (pow(val,2)/context.fps) +(val)/context.fps));
|
|
|
|
shape1.x = 0.5 + 0.1*sin(q7*0.986);
|
|
shape1.y = 0.5 + 0.1*sin(q7*0.846);
|
|
shape1.tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.05*sin(context.time);
|
|
|
|
shape2.x = 0.5 + 0.1*sin(q7*0.986);
|
|
shape2.y = 0.5 + 0.1*sin(q7*0.846);
|
|
shape2.tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.1*sin(context.time);
|
|
|
|
shape3.x = 0.5 + 0.1*sin(q7*0.986);
|
|
shape3.y = 0.5 + 0.1*sin(q7*0.846);
|
|
shape3.tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.15*sin(context.time);
|
|
|
|
shape4.x = 0.5 + 0.1*sin(q7*0.986);
|
|
shape4.y = 0.5 + 0.1*sin(q7*0.846);
|
|
shape4.tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.2*sin(context.time);;
|
|
|
|
}
|
|
|
|
virtual PixelPoint PerPixel(PixelPoint p, const PerPixelContext context)
|
|
{
|
|
float pdy=dy+0.008*cos((p.x-0.5 - 0.1*sin(q7))*(q6));
|
|
Transforms::Zoom(p,context,13.290894,1);
|
|
Transforms::Transform(p,context,dx,pdy);
|
|
return p;
|
|
}
|
|
};
|
|
|
|
|
|
typedef NativePreset<RovastarDarkSecret> RovastarDarkSecretPreset;
|
|
|
|
|
|
extern "C" RovastarDarkSecretPreset * create(const char * url) {
|
|
return new RovastarDarkSecretPreset(std::string(url));
|
|
}
|
|
|
|
extern "C" void destroy(RovastarDarkSecretPreset * preset) {
|
|
delete preset;
|
|
}
|