From 8cc6da98ba34a730ac244a1188d00253431eec4c Mon Sep 17 00:00:00 2001 From: brunoherbelin Date: Tue, 28 Apr 2020 11:47:04 +0200 Subject: [PATCH] Fixed Shader imageprocessing. --- ImGuiVisitor.cpp | 4 +- ImageProcessingShader.cpp | 4 +- ImageProcessingShader.h | 4 +- ImageShader.h | 4 + Scene.cpp | 4 +- Scene.h | 2 +- SessionVisitor.cpp | 2 +- Shader.cpp | 8 +- rsc/shaders/imageprocessing.fs | 164 ++++++++++++++++----------------- 9 files changed, 100 insertions(+), 96 deletions(-) diff --git a/ImGuiVisitor.cpp b/ImGuiVisitor.cpp index 1220518..f4f5269 100644 --- a/ImGuiVisitor.cpp +++ b/ImGuiVisitor.cpp @@ -203,10 +203,10 @@ void ImGuiVisitor::visit(ImageProcessingShader &n) ImGui::SetNextItemWidth(RIGHT_ALIGN); ImGui::SliderInt("Posterize", &n.nbColors, 0, 16, "%d colors"); - if (ImGuiToolkit::ButtonIcon(1, 7)) n.filter = 0; + if (ImGuiToolkit::ButtonIcon(1, 7)) n.filterid = 0; ImGui::SameLine(0, 10); ImGui::SetNextItemWidth(RIGHT_ALIGN); - ImGui::Combo("Filter", &n.filter, "None\0Blur\0Sharpen\0Edge\0Emboss\0Erode 3x3\0Erode 5x5\0Erode 7x7\0Dilate 3x3\0Dilate 5x5\0Dilate 7x7\0"); + ImGui::Combo("Filter", &n.filterid, "None\0Blur\0Sharpen\0Edge\0Emboss\0Erode 3x3\0Erode 5x5\0Erode 7x7\0Dilate 3x3\0Dilate 5x5\0Dilate 7x7\0"); if (ImGuiToolkit::ButtonIcon(7, 1)) n.invert = 0; ImGui::SameLine(0, 10); diff --git a/ImageProcessingShader.cpp b/ImageProcessingShader.cpp index ffeb645..70995e8 100644 --- a/ImageProcessingShader.cpp +++ b/ImageProcessingShader.cpp @@ -26,7 +26,7 @@ void ImageProcessingShader::use() program_->setUniform("lumakey", lumakey); program_->setUniform("nbColors", nbColors); program_->setUniform("invert", invert); - program_->setUniform("filter", filter); + program_->setUniform("filterid", filterid); program_->setUniform("gamma", gamma); program_->setUniform("levels", levels); @@ -52,7 +52,7 @@ void ImageProcessingShader::reset() lumakey = 0.f; nbColors = 0; invert = 0; - filter = 0; + filterid = 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); diff --git a/ImageProcessingShader.h b/ImageProcessingShader.h index b4f2750..9e1ddf0 100644 --- a/ImageProcessingShader.h +++ b/ImageProcessingShader.h @@ -35,11 +35,11 @@ public: // chroma key glm::vec4 chromakey; float chromadelta; - // filter + // filter identifyer // [0] No filter // [1 4] 4 x kernel operations; Blur, Sharpen, Edge, Emboss // [5 10] 6 x convolutions: erosion 3, 5, 7, dilation 3, 5, 7 - int filter; + int filterid; }; diff --git a/ImageShader.h b/ImageShader.h index e1ad2a4..18bed7c 100644 --- a/ImageShader.h +++ b/ImageShader.h @@ -4,6 +4,10 @@ #include #include +#ifdef __APPLE__ +#include +#endif + #include "Shader.h" class ImageShader : public Shader diff --git a/Scene.cpp b/Scene.cpp index d0db133..3e503b9 100644 --- a/Scene.cpp +++ b/Scene.cpp @@ -40,7 +40,7 @@ Node::Node() : initialized_(false), parent_(nullptr), visible_(true) translation_ = glm::vec3(0.f); } -void Node::update( float dt ) +void Node::update( float ) { // update transform matrix from attributes transform_ = transform(translation_, rotation_, scale_); @@ -291,7 +291,7 @@ void Switch::removeChild(Node *child) void Switch::unsetActiveChild () { - active_ == children_.end(); + active_ = children_.end(); } void Switch::setActiveChild(Node *child) diff --git a/Scene.h b/Scene.h index e369fb1..ad276b9 100644 --- a/Scene.h +++ b/Scene.h @@ -58,7 +58,7 @@ public: virtual void draw (glm::mat4 modelview, glm::mat4 projection) = 0; // update every frame - virtual void update (float dt); + virtual void update (float); // accept all kind of visitors virtual void accept (Visitor& v); diff --git a/SessionVisitor.cpp b/SessionVisitor.cpp index bf6aca7..73b8b07 100644 --- a/SessionVisitor.cpp +++ b/SessionVisitor.cpp @@ -179,7 +179,7 @@ void SessionVisitor::visit(ImageProcessingShader &n) filter->SetAttribute("nbColors", n.nbColors); filter->SetAttribute("invertMode", n.invert); filter->SetAttribute("chromadelta", n.chromadelta); - filter->SetAttribute("filter", n.filter); + filter->SetAttribute("filter", n.filterid); xmlCurrent_->InsertEndChild(filter); XMLElement *gamma = XMLElementFromGLM(xmlDoc_, n.gamma); diff --git a/Shader.cpp b/Shader.cpp index 6503518..4fc2398 100644 --- a/Shader.cpp +++ b/Shader.cpp @@ -1,4 +1,4 @@ -#include "Shader.h" + #include "Shader.h" #include "Resource.h" #include "Log.h" #include "Visitor.h" @@ -145,12 +145,12 @@ void ShadingProgram::checkCompileErr() glGetShaderiv(vertex_id_, GL_COMPILE_STATUS, &success); if (!success) { glGetShaderInfoLog(vertex_id_, 1024, NULL, infoLog); - Log::Warning("Error compiling Vertex ShadingProgram:\n%s \n%s", infoLog, vertex_code_.c_str()); + Log::Warning("Error compiling Vertex ShadingProgram:\n%s", infoLog); } glGetShaderiv(fragment_id_, GL_COMPILE_STATUS, &success); if (!success) { glGetShaderInfoLog(fragment_id_, 1024, NULL, infoLog); - Log::Warning("Error compiling Fragment ShadingProgram:\n%s \n%s", infoLog, vertex_code_.c_str()); + Log::Warning("Error compiling Fragment ShadingProgram:\n%s", infoLog); } } @@ -161,7 +161,7 @@ void ShadingProgram::checkLinkingErr() glGetProgramiv(id_, GL_LINK_STATUS, &success); if (!success) { glGetProgramInfoLog(id_, 1024, NULL, infoLog); - Log::Warning("Error linking ShadingProgram Program:\n%s \n%s", infoLog); + Log::Warning("Error linking ShadingProgram:\n%s", infoLog); } } diff --git a/rsc/shaders/imageprocessing.fs b/rsc/shaders/imageprocessing.fs index 9417182..67b2287 100644 --- a/rsc/shaders/imageprocessing.fs +++ b/rsc/shaders/imageprocessing.fs @@ -45,7 +45,7 @@ uniform float threshold; uniform float lumakey; uniform int nbColors; uniform int invert; -uniform int filter; +uniform int filterid; // conversion between rgb and YUV const mat4 RGBtoYUV = mat4(0.257, 0.439, -0.148, 0.0, @@ -74,47 +74,47 @@ vec3 erosion(int N, vec2 filter_step) { vec3 minValue = vec3(1.0); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (0.0,0.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (0.0,-1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-1.0, 0.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (1.0, 0.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (0.0, 1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (0.0,0.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (0.0,-1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-1.0, 0.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (1.0, 0.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (0.0, 1.0) * filter_step ).rgb, minValue); if (N == 3) return minValue; - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-1.0, -2.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (0.0,-2.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (1.0,-2.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-1.0,2.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (0.0, 2.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (1.0, 2.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-2.0, 1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-1.0, 1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 ( 1.0, 1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 ( 2.0, 1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-2.0, -1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-1.0, -1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 ( 1.0, -1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 ( 2.0, -1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-2.0, 0.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 ( 2.0, 0.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-1.0, -2.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (0.0,-2.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (1.0,-2.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-1.0,2.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (0.0, 2.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (1.0, 2.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-2.0, 1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-1.0, 1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 ( 1.0, 1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 ( 2.0, 1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-2.0, -1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-1.0, -1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 ( 1.0, -1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 ( 2.0, -1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-2.0, 0.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 ( 2.0, 0.0) * filter_step ).rgb, minValue); if (N == 5) return minValue; - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-1.0, -3.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (0.0,-3.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (1.0,-3.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-1.0,3.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (0.0, 3.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (1.0, 3.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-2.0, 2.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 ( 2.0, 2.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-2.0, -2.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 ( 2.0, -2.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-3.0, -1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (3.0, -1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-3.0, 1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 ( 3.0, 1.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 (-3.0, 0.0) * filter_step ).rgb, minValue); - minValue = min(texture2D(iChannel0, vertexUV + vec2 ( 3.0, 0.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-1.0, -3.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (0.0,-3.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (1.0,-3.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-1.0,3.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (0.0, 3.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (1.0, 3.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-2.0, 2.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 ( 2.0, 2.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-2.0, -2.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 ( 2.0, -2.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-3.0, -1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (3.0, -1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-3.0, 1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 ( 3.0, 1.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 (-3.0, 0.0) * filter_step ).rgb, minValue); + minValue = min(texture(iChannel0, vertexUV + vec2 ( 3.0, 0.0) * filter_step ).rgb, minValue); return minValue; } @@ -123,47 +123,47 @@ vec3 dilation(int N, vec2 filter_step) { vec3 maxValue = vec3(0.0); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (0.0, 0.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (0.0,-1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-1.0, 0.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (1.0, 0.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (0.0, 1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (0.0, 0.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (0.0,-1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-1.0, 0.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (1.0, 0.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (0.0, 1.0) * filter_step ).rgb, maxValue); if (N == 3) return maxValue; - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-1.0, -2.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (0.0,-2.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (1.0,-2.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-1.0,2.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (0.0, 2.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (1.0, 2.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-2.0, 1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-1.0, 1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 ( 1.0, 1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 ( 2.0, 1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-2.0, -1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-1.0, -1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 ( 1.0, -1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 ( 2.0, -1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-2.0, 0.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 ( 2.0, 0.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-1.0, -2.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (0.0,-2.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (1.0,-2.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-1.0,2.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (0.0, 2.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (1.0, 2.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-2.0, 1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-1.0, 1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 ( 1.0, 1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 ( 2.0, 1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-2.0, -1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-1.0, -1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 ( 1.0, -1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 ( 2.0, -1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-2.0, 0.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 ( 2.0, 0.0) * filter_step ).rgb, maxValue); if (N == 5) return maxValue; - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-1.0, -3.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (0.0,-3.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (1.0,-3.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-1.0,3.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (0.0, 3.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (1.0, 3.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-2.0, 2.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 ( 2.0, 2.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-2.0, -2.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 ( 2.0, -2.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-3.0, -1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (3.0, -1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-3.0, 1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 ( 3.0, 1.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 (-3.0, 0.0) * filter_step ).rgb, maxValue); - maxValue = max(texture2D(iChannel0, vertexUV + vec2 ( 3.0, 0.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-1.0, -3.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (0.0,-3.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (1.0,-3.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-1.0,3.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (0.0, 3.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (1.0, 3.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-2.0, 2.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 ( 2.0, 2.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-2.0, -2.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 ( 2.0, -2.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-3.0, -1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (3.0, -1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-3.0, 1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 ( 3.0, 1.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 (-3.0, 0.0) * filter_step ).rgb, maxValue); + maxValue = max(texture(iChannel0, vertexUV + vec2 ( 3.0, 0.0) * filter_step ).rgb, maxValue); return maxValue; } @@ -184,14 +184,14 @@ vec3 apply_filter() { vec2 filter_step = 1.f / textureSize(iChannel0, 0); - if (filter < 1 || filter > 10) + if (filterid < 1 || filterid > 10) return texture(iChannel0, vertexUV).rgb; - else if (filter < 5) - return convolution( KERNEL[filter], filter_step); - else if (filter < 8) - return erosion( 3 + (filter -5) * 2, filter_step); + else if (filterid < 5) + return convolution( KERNEL[filterid], filter_step); + else if (filterid < 8) + return erosion( 3 + (filterid -5) * 2, filter_step); else - return dilation( 3 + (filter -8) * 2, filter_step); + return dilation( 3 + (filterid -8) * 2, filter_step); } /* @@ -278,7 +278,7 @@ void main(void) // float ma = texture(maskTexture, vertexUV).a * texture(iChannel0, vertexUV).a; float alpha = clamp(ma * color.a, 0.0, 1.0); - // read color & apply basic filter + // read color & apply basic filterid vec3 transformedRGB; transformedRGB = apply_filter();