filterview

This commit is contained in:
2026-01-23 17:18:02 +13:00
parent 87cafe3a05
commit 7dd7ec43cd
8 changed files with 247 additions and 90 deletions

View File

@@ -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;
};