fakedrake
fakedrake

Reputation: 6856

Custom blending equations (shader) for OpenGL

I am trying to experiment with different alpha blending equations for transparent objects using OpenGL but it looks like fragment shaders operate on the color of fragments on single objects and cant take into account the scene behind the object.

On the other hand there doesn't seem to be a way to intercept the blending stage with arbitrary GLSL code, for example I can't think of a way to reproduce soft light blend mode with the current OpenGL primitives.

Is there a way to reconcile these?

Upvotes: 5

Views: 2843

Answers (3)

andrewchan2022
andrewchan2022

Reputation: 5290

copy render target, and draw your object with it as texture.

if there is many small object, you can only copy part of your render target.

first pass: draw object with render target as texture to texture_2;

second pass: draw object to render target with texture_2;

Upvotes: 0

Nikita Nemkin
Nikita Nemkin

Reputation: 2820

There are a couple relatively well-supported extensions:

Upvotes: 3

datenwolf
datenwolf

Reputation: 162164

Blending is still one of those few parts of the fragment pipeline that's a hardwired circuit on the GPU. Hence it's not programmable. Your best bet is rendering to a texture and do a blending postprocessing pass.

Upvotes: 2

Related Questions