# OpenGL Edge Blending

## Recommended Posts

Hi everyone,

I want to do edge blending for multiple projectors. I am going to use OpenGL library. I am not very experienced with computer graphics and OpenGL. I could not find any good sources on internet. What libraries or tools should I use?

##### Share on other sites

You want this:

[attachment=17070:path4437.png]

The goal is to have a relative luminance of 100% (that is, the same as if everything was a single projector) everywhere. So ideally, you would just have some overlapping border region where you dim both sides by 50%. Unluckily, if you adjust your projectors so the images don't overlap perfectly, it looks absolutely horrible at the intersection line. To avoid that, you do some blending.

Basically, you draw two quads (three in the case of a "middle" projector) per screen with proper texture coordinates (0.0 and 1.0 at the extremes, and whatever fraction you chose as border for the small bit), plus this single one "mix" attribute, read a texel, multiply it with the mix value in the shader, and write it out as fragment color.

This can be achieved exploiting vertex attribute interpolation with additive blending and a single extra vertex attribute, which is either 1.0 or 0.0. If linear blend does not look good enough (though I'm almost sure it does!), you can experiment by it through smoothstep, that might give a nicer looking result.

The nice thing about exploiting vertex interpolation is that you can even account for your projectors being a little tilted or distorted, if need be. For that, just move the vertices a bit horizontally, so the border area gets tilted too, until it looks good enough.

Now, so much for the nice theoretical part. In practice, you'll probably have different projectors running with different gamma, color profiles, lamp brightness and whatnot, so you may have to add some adjusters for that, too.

Or, you'll have to be careful to properly adjust all projectors to the same physical properties (as good as you can).

All that can be done in OpenGL without any special libraries, though it may require a bit of experimentation.

Edited by samoth

## Create an account

Register a new account

• ## Partner Spotlight

• ### Forum Statistics

• Total Topics
627658
• Total Posts
2978474
• ### Similar Content

• Both functions are available since 3.0, and I'm currently using glMapBuffer(), which works fine.
But, I was wondering if anyone has experienced advantage in using glMapBufferRange(), which allows to specify the range of the mapped buffer. Could this be only a safety measure or does it improve performance?
Note: I'm not asking about glBufferSubData()/glBufferData. Those two are irrelevant in this case.
• By xhcao
Before using void glBindImageTexture(    GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format), does need to make sure that texture is completeness.
• By cebugdev
hi guys,
are there any books, link online or any other resources that discusses on how to build special effects such as magic, lightning, etc. in OpenGL? i mean, yeah most of them are using particles but im looking for resources specifically on how to manipulate the particles to look like an effect that can be use for games,. i did fire particle before, and I want to learn how to do the other 'magic' as well.
Like are there one book or link(cant find in google) that atleast featured how to make different particle effects in OpenGL (or DirectX)? If there is no one stop shop for it, maybe ill just look for some tips on how to make a particle engine that is flexible enough to enable me to design different effects/magic
let me know if you guys have recommendations.
• By dud3
How do we rotate the camera around x axis 360 degrees, without having the strange effect as in my video below?
Mine behaves exactly the same way spherical coordinates would, I'm using euler angles.
Tried googling, but couldn't find a proper answer, guessing I don't know what exactly to google for, googled 'rotate 360 around x axis', got no proper answers.

References:
Code: https://pastebin.com/Hcshj3FQ
The video shows the difference between blender and my rotation:

• By Defend
I've had a Google around for this but haven't yet found some solid advice. There is a lot of "it depends", but I'm not sure on what.
My question is what's a good rule of thumb to follow when it comes to creating/using VBOs & VAOs? As in, when should I use multiple or when should I not? My understanding so far is that if I need a new VBO, then I need a new VAO. So when it comes to rendering multiple objects I can either:
* make lots of VAO/VBO pairs and flip through them to render different objects, or
* make one big VBO and jump around its memory to render different objects.
I also understand that if I need to render objects with different vertex attributes, then a new VAO is necessary in this case.
If that "it depends" really is quite variable, what's best for a beginner with OpenGL, assuming that better approaches can be learnt later with better understanding?

• 10
• 12
• 22
• 13
• 33