Skip to content
Snippets Groups Projects

Support channel blending

Merged Nicolas Pope requested to merge feature/blendchan into master
4 files
+ 22
8
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -48,11 +48,13 @@ namespace {
@@ -48,11 +48,13 @@ namespace {
constexpr char const *const defaultImageViewFragmentShader =
constexpr char const *const defaultImageViewFragmentShader =
R"(#version 330
R"(#version 330
uniform sampler2D image;
uniform sampler2D image1;
 
uniform sampler2D image2;
 
uniform float blendAmount;
out vec4 color;
out vec4 color;
in vec2 uv;
in vec2 uv;
void main() {
void main() {
color = texture(image, uv);
color = blendAmount * texture(image1, uv) + (1.0 - blendAmount) * texture(image2, uv);
})";
})";
}
}
@@ -457,8 +459,12 @@ void ftl::gui::Screen::draw(NVGcontext *ctx) {
@@ -457,8 +459,12 @@ void ftl::gui::Screen::draw(NVGcontext *ctx) {
size().x() * r, size().y() * r);*/
size().x() * r, size().y() * r);*/
mShader.bind();
mShader.bind();
glActiveTexture(GL_TEXTURE0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, mImageID);
glBindTexture(GL_TEXTURE_2D, leftEye_);
mShader.setUniform("image", 0);
glActiveTexture(GL_TEXTURE1);
 
glBindTexture(GL_TEXTURE_2D, (camera_->getRight().isValid()) ? rightEye_ : leftEye_);
 
mShader.setUniform("image1", 0);
 
mShader.setUniform("image2", 1);
 
mShader.setUniform("blendAmount", (camera_->getChannel() != ftl::codecs::Channel::Left) ? root_->value("blending", 0.5f) : 1.0f);
mShader.setUniform("scaleFactor", scaleFactor);
mShader.setUniform("scaleFactor", scaleFactor);
mShader.setUniform("position", imagePosition);
mShader.setUniform("position", imagePosition);
mShader.drawIndexed(GL_TRIANGLES, 0, 2);
mShader.drawIndexed(GL_TRIANGLES, 0, 2);
Loading