added cool wave effect
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
#include "effects/audio/volumeeffect.h"
|
||||
#include "effects/audio/audionoiseeffect.h"
|
||||
#include "effects/audio/toneeffect.h"
|
||||
#include "effects/video/waveeffect.h"
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QGridLayout>
|
||||
@@ -57,6 +58,7 @@ void init_effects() {
|
||||
video_effect_names[VIDEO_CROP_EFFECT] = "Crop";
|
||||
video_effect_names[VIDEO_FLIP_EFFECT] = "Flip";
|
||||
video_effect_names[VIDEO_BOXBLUR_EFFECT] = "Box Blur";
|
||||
video_effect_names[VIDEO_WAVE_EFFECT] = "Wave";
|
||||
|
||||
audio_effect_names[AUDIO_VOLUME_EFFECT] = "Volume";
|
||||
audio_effect_names[AUDIO_PAN_EFFECT] = "Pan";
|
||||
@@ -77,6 +79,7 @@ Effect* create_effect(int effect_id, Clip* c) {
|
||||
case VIDEO_CROP_EFFECT: return new CropEffect(c);
|
||||
case VIDEO_FLIP_EFFECT: return new FlipEffect(c);
|
||||
case VIDEO_BOXBLUR_EFFECT: return new BoxBlurEffect(c);
|
||||
case VIDEO_WAVE_EFFECT: return new WaveEffect(c);
|
||||
}
|
||||
} else {
|
||||
switch (effect_id) {
|
||||
|
||||
@@ -33,6 +33,7 @@ enum VideoEffects {
|
||||
VIDEO_CROP_EFFECT,
|
||||
VIDEO_FLIP_EFFECT,
|
||||
VIDEO_BOXBLUR_EFFECT,
|
||||
VIDEO_WAVE_EFFECT,
|
||||
VIDEO_EFFECT_COUNT
|
||||
};
|
||||
|
||||
|
||||
@@ -6,5 +6,6 @@
|
||||
<file>chromakeyeffect.frag</file>
|
||||
<file>solideffect.frag</file>
|
||||
<file>boxblureffect.frag</file>
|
||||
<file>waveeffect.frag</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#version 110
|
||||
|
||||
// uniform float evolution;
|
||||
uniform float frequency;
|
||||
uniform float intensity;
|
||||
uniform float evolution;
|
||||
|
||||
uniform mediump float amount_val;
|
||||
uniform sampler2D myTexture;
|
||||
varying vec2 vTexCoord;
|
||||
|
||||
void main(void) {
|
||||
float offset = sin((vTexCoord.x+evolution)*frequency)*intensity;
|
||||
|
||||
float y = vTexCoord.y-offset;
|
||||
if (y < 0.0 || y > 1.0) {
|
||||
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
} else {
|
||||
vec4 textureColor = texture2D(myTexture, vec2(vTexCoord.x, y));
|
||||
gl_FragColor = vec4(
|
||||
textureColor.r,
|
||||
textureColor.g,
|
||||
textureColor.b,
|
||||
textureColor.a
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#include "waveeffect.h"
|
||||
|
||||
WaveEffect::WaveEffect(Clip* c) : Effect(c, EFFECT_TYPE_VIDEO, VIDEO_WAVE_EFFECT) {
|
||||
enable_shader = true;
|
||||
|
||||
frequency_val = add_row("Frequency:")->add_field(EFFECT_FIELD_DOUBLE);
|
||||
frequency_val->set_double_minimum_value(0);
|
||||
frequency_val->set_double_default_value(10);
|
||||
|
||||
intensity_val = add_row("Intensity:")->add_field(EFFECT_FIELD_DOUBLE);
|
||||
intensity_val->set_double_default_value(10);
|
||||
|
||||
evolution_val = add_row("Evolution:")->add_field(EFFECT_FIELD_DOUBLE);
|
||||
evolution_val->set_double_default_value(0);
|
||||
|
||||
connect(frequency_val, SIGNAL(changed()), this, SLOT(field_changed()));
|
||||
connect(intensity_val, SIGNAL(changed()), this, SLOT(field_changed()));
|
||||
connect(evolution_val, SIGNAL(changed()), this, SLOT(field_changed()));
|
||||
|
||||
vertPath = ":/shaders/common.vert";
|
||||
fragPath = ":/shaders/waveeffect.frag";
|
||||
}
|
||||
|
||||
void WaveEffect::process_shader(double timecode) {
|
||||
glslProgram->setUniformValue("frequency", (GLfloat) (frequency_val->get_double_value(timecode)));
|
||||
glslProgram->setUniformValue("intensity", (GLfloat) (intensity_val->get_double_value(timecode)*0.01));
|
||||
glslProgram->setUniformValue("evolution", (GLfloat) (evolution_val->get_double_value(timecode)*0.01));
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef WAVEEFFECT_H
|
||||
#define WAVEEFFECT_H
|
||||
|
||||
#include "../effect.h"
|
||||
|
||||
class WaveEffect : public Effect {
|
||||
Q_OBJECT
|
||||
public:
|
||||
WaveEffect(Clip* c);
|
||||
void process_shader(double timecode);
|
||||
private:
|
||||
EffectField* frequency_val;
|
||||
EffectField* intensity_val;
|
||||
EffectField* evolution_val;
|
||||
};
|
||||
|
||||
#endif // WAVEEFFECT_H
|
||||
@@ -82,7 +82,8 @@ SOURCES += \
|
||||
effects/audio/toneeffect.cpp \
|
||||
project/marker.cpp \
|
||||
dialogs/speeddialog.cpp \
|
||||
dialogs/mediapropertiesdialog.cpp
|
||||
dialogs/mediapropertiesdialog.cpp \
|
||||
effects/video/waveeffect.cpp
|
||||
|
||||
HEADERS += \
|
||||
mainwindow.h \
|
||||
@@ -143,7 +144,8 @@ HEADERS += \
|
||||
project/selection.h \
|
||||
dialogs/speeddialog.h \
|
||||
dialogs/speeddialog.h \
|
||||
dialogs/mediapropertiesdialog.h
|
||||
dialogs/mediapropertiesdialog.h \
|
||||
effects/video/waveeffect.h
|
||||
|
||||
FORMS += \
|
||||
mainwindow.ui \
|
||||
|
||||
Reference in New Issue
Block a user