Files
vimix/ImageProcessingShader.cpp
brunoherbelin d248df0567 Separate shader for image processing and simple texture display.
ImageShader added a second texture for mask blending. Cleanup of User
Interface windows.
2020-04-27 13:44:20 +02:00

69 lines
1.9 KiB
C++

#include "defines.h"
#include "Visitor.h"
#include "Log.h"
#include "ImageProcessingShader.h"
ShadingProgram imageProcessingShadingProgram("shaders/image.vs", "shaders/imageprocessing.fs");
ImageProcessingShader::ImageProcessingShader()
{
program_ = &imageProcessingShadingProgram;
reset();
}
void ImageProcessingShader::use()
{
Shader::use();
// program_->setUniform("iChannelResolution[0]", iChannelResolution[0].x, iChannelResolution[0].y, iChannelResolution[0].z);
// program_->setUniform("iChannelResolution[1]", iChannelResolution[1].x, iChannelResolution[1].y, iChannelResolution[1].z);
program_->setUniform("brightness", brightness);
program_->setUniform("contrast", contrast);
program_->setUniform("saturation", saturation);
program_->setUniform("hueshift", hueshift);
program_->setUniform("threshold", threshold);
program_->setUniform("lumakey", lumakey);
program_->setUniform("nbColors", nbColors);
program_->setUniform("invert", invert);
program_->setUniform("filter", filter);
program_->setUniform("gamma", gamma);
program_->setUniform("levels", levels);
program_->setUniform("chromakey", chromakey);
program_->setUniform("chromadelta", chromadelta);
}
void ImageProcessingShader::reset()
{
Shader::reset();
// // no texture resolution yet
// iChannelResolution[0] = glm::vec3(1.f);
// iChannelResolution[1] = glm::vec3(1.f);
// default values for image processing
brightness = 0.f;
contrast = 0.f;
saturation = 0.f;
hueshift = 0.f;
threshold = 0.f;
lumakey = 0.f;
nbColors = 0;
invert = 0;
filter = 0;
gamma = glm::vec4(1.f, 1.f, 1.f, 1.f);
levels = glm::vec4(0.f, 1.f, 0.f, 1.f);
chromakey = glm::vec4(0.f, 1.f, 0.f, 0.f);
chromadelta = 0.f;
}
void ImageProcessingShader::accept(Visitor& v) {
// Shader::accept(v);
v.visit(*this);
}