filterview
This commit is contained in:
@@ -16,76 +16,155 @@
|
||||
#include "OpenGLUtils.h"
|
||||
#include <string>
|
||||
|
||||
#define CRUSHVIEW_SAMPLECOUNT 200
|
||||
#define FILTERVIEW_SAMPLECOUNT 200
|
||||
#define COLOUR {230, 230, 230, 1.0}
|
||||
#define BGCOLOUR {255, 255, 255, 0.3}
|
||||
|
||||
#define VERTEXSHADERFILTERFILL R"(placeholder)"
|
||||
|
||||
#define FRAGSHADERFILTERFILL R"(placeholder)"
|
||||
#define VERTEXSHADERFILTER R"(#version 330 core
|
||||
in vec2 position;
|
||||
in vec4 colour;
|
||||
out vec4 fragcolour;
|
||||
float bounds = 0.8;
|
||||
float xmult;
|
||||
float ymult;
|
||||
|
||||
#define VERTEXSHADERFILTER R"(placeholder)"
|
||||
void main()
|
||||
{
|
||||
gl_Position = vec4(position, 1, 1);
|
||||
fragcolour = colour;
|
||||
if(position.x<-bounds){
|
||||
xmult = (1/(1-bounds))*(position.x+1);
|
||||
}
|
||||
else if(position.x>bounds){
|
||||
xmult= 1-(1/(1-bounds))*(position.x-bounds);
|
||||
}
|
||||
else{
|
||||
xmult=1;
|
||||
}
|
||||
if(position.y<-bounds){
|
||||
ymult = (1/(1-bounds))*(position.y+1);
|
||||
}
|
||||
else if(position.y>bounds){
|
||||
ymult= 1-(1/(1-bounds))*(position.y-bounds);
|
||||
}
|
||||
else{
|
||||
ymult=1;
|
||||
}
|
||||
|
||||
fragcolour.a = xmult*ymult;
|
||||
}
|
||||
)"
|
||||
|
||||
#define VERTEXSHADERFILTERFILL R"(#version 330 core
|
||||
in vec2 position;
|
||||
in vec4 colour;
|
||||
out vec4 fragcolour;
|
||||
float bounds = 0.8;
|
||||
float xmult;
|
||||
float ymult;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = vec4(position, 1, 1);
|
||||
fragcolour = colour;
|
||||
if(position.x<-bounds){
|
||||
xmult = (1/(1-bounds))*(position.x+1);
|
||||
}
|
||||
else if(position.x>bounds){
|
||||
xmult= 1-(1/(1-bounds))*(position.x-bounds);
|
||||
}
|
||||
else{
|
||||
xmult=1;
|
||||
}
|
||||
if(position.y<-bounds){
|
||||
ymult = (1/(1-bounds))*(position.y+1);
|
||||
}
|
||||
else if(position.y>bounds){
|
||||
ymult= 1-(1/(1-bounds))*(position.y-bounds);
|
||||
}
|
||||
else{
|
||||
ymult=1;
|
||||
}
|
||||
|
||||
fragcolour.a = 0.5*xmult*ymult;
|
||||
}
|
||||
)"
|
||||
|
||||
#define FRAGSHADERFILTER R"(#version 330 core
|
||||
in vec4 fragcolour;
|
||||
void main()
|
||||
{
|
||||
gl_FragColor = fragcolour;
|
||||
}
|
||||
)"
|
||||
|
||||
#define FRAGSHADERFILTER R"(placeholder)"
|
||||
|
||||
|
||||
class FilterView : public juce::Component, public juce::OpenGLRenderer
|
||||
{
|
||||
public:
|
||||
FilterView();
|
||||
~FilterView() override;
|
||||
FilterView();
|
||||
~FilterView() override;
|
||||
|
||||
void renderFilter();
|
||||
void renderFilter();
|
||||
|
||||
void newOpenGLContextCreated() override;
|
||||
void renderOpenGL() override;
|
||||
void openGLContextClosing() override;
|
||||
void newOpenGLContextCreated() override;
|
||||
void renderOpenGL() override;
|
||||
void openGLContextClosing() override;
|
||||
|
||||
void paint (juce::Graphics&) override;
|
||||
void resized() override;
|
||||
void paint (juce::Graphics&) override;
|
||||
void resized() override;
|
||||
|
||||
void genFilterArrays();
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FilterView)
|
||||
|
||||
bool isLowPass;
|
||||
float cutoff;
|
||||
float mix;
|
||||
void genFilterFillArrays();
|
||||
|
||||
juce::OpenGLContext ctx;
|
||||
juce::OpenGLPixelFormat antialiasing;
|
||||
bool isLowPass;
|
||||
float *cutoff;
|
||||
float *mix;
|
||||
float tempcutoff = 0.5;
|
||||
float tempmix = 0.5;
|
||||
|
||||
std::vector<Vertex> filterVertices;
|
||||
std::vector<unsigned int> filterIndices;
|
||||
juce::OpenGLContext ctx;
|
||||
|
||||
std::vector<Vertex> filterBackgroundVertices;
|
||||
std::vector<unsigned int> filterBackgroundIndices;
|
||||
std::vector<Vertex> filterVertices;
|
||||
std::vector<unsigned int> filterIndices;
|
||||
|
||||
std::vector<VertexTexture> backgroundVertices;
|
||||
std::vector<unsigned int> backgroundIndices;
|
||||
std::vector<Vertex> filterBackgroundVertices;
|
||||
std::vector<unsigned int> filterBackgroundIndices;
|
||||
|
||||
juce::ComponentListener listener;
|
||||
std::vector<VertexTexture> backgroundVertices;
|
||||
std::vector<unsigned int> backgroundIndices;
|
||||
|
||||
GLuint vboFilter;
|
||||
GLuint iboFilter;
|
||||
juce::ComponentListener listener;
|
||||
|
||||
GLuint vboFilterFill;
|
||||
GLuint iboFilterFill;
|
||||
GLuint vboFilter;
|
||||
GLuint iboFilter;
|
||||
|
||||
GLuint vboBackground;
|
||||
GLuint iboBackground;
|
||||
GLuint vboFilterFill;
|
||||
GLuint iboFilterFill;
|
||||
|
||||
std::string vertexShaderFilter;
|
||||
std::string fragmentShaderFilter;
|
||||
GLuint vboBackground;
|
||||
GLuint iboBackground;
|
||||
|
||||
std::string vertexShaderFilterFill;
|
||||
std::string fragmentShaderFilterFill;
|
||||
std::string vertexShaderFilter;
|
||||
std::string fragmentShaderFilter;
|
||||
|
||||
std::string vertexShaderBackground;
|
||||
std::string fragmentShaderBackground;
|
||||
std::string vertexShaderFilterFill;
|
||||
std::string fragmentShaderFilterFill;
|
||||
|
||||
std::unique_ptr<juce::OpenGLShaderProgram> shaderProgramFilter;
|
||||
std::unique_ptr<juce::OpenGLShaderProgram> shaderProgramFilterFill;
|
||||
std::unique_ptr<juce::OpenGLShaderProgram> shaderProgramBackground;
|
||||
std::string vertexShaderBackground;
|
||||
std::string fragmentShaderBackground;
|
||||
|
||||
juce::Image background;
|
||||
juce::OpenGLTexture bgTexture;
|
||||
std::unique_ptr<juce::OpenGLShaderProgram> shaderProgramFilter;
|
||||
std::unique_ptr<juce::OpenGLShaderProgram> shaderProgramFilterFill;
|
||||
std::unique_ptr<juce::OpenGLShaderProgram> shaderProgramBackground;
|
||||
|
||||
juce::Image background;
|
||||
juce::OpenGLTexture bgTexture;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user