Screen and Overlay issue

Does anyone know why screening and/or overlaying causes weird errors to occur (like dark instead of light, completely blue areas ) or similar?

They are supposed to calculate to 1.000 but if the add function exceeds that I guess it makes an illegal colour.

Is there a way to fix this?

Don’t know if you can use a math node to normalize the value? I usually just wind the mix value down, but I guess you want to roll off the top value and keep the rest.

Screen doesn’t calculate to 1, it calculates no higher (via add function) than the greatest value contained in either image being combined. I believe this is called truncating or delimiting. Either image in the composite may have values far greater than 1.0.

But that doesn’t explain the errors…

short message

Screenshots and/or .blend files work wonders for resolving issues like this one. Unfortunately you’re giving us very little info to work with. If you are not intimate familiar with the passes and their definitions then it is very likely that you are the problem, not Blender. Ex…the reflection pass contains negative values which will subtract rather than add (at the location of such negative values) even when set to screen or add. This is how things are supposed to work. At this point no one can really say what your problem is because you have left it largely undefined.

Exactly! Though I found that if you set diffuse color to black, refract will not be negative. Which wouldn’t be a problem for pure glass since you don’t need any diffuse there anyway. Semitranspareny remains tricky, I guess.

Well, when it comes right down to the very basics there is little more that you can do with pixels other than basic math functions (add, subtract multiply or divide). All color pass functions including alpha and Z are going to be some combination of those four math functions.

The following page explains what the basic passes are and somewhat explains how to properly use them:

http://www.blender.org/development/release-logs/blender-243/render-passes/

The following wiki page explains the color nodes in detail:

http://wiki.blender.org/index.php/Doc:2.5/Manual/Composite_Nodes/Types/Color

I think they are asking how to clip the function so that you stay within some sensible gamut.

ScreenError.blend (461 KB)Here is a simple example. A glowing box. I had to do some extreme things to make the point. But in the node editor, there is a mix node, set to screen, which creates a black area. set it to add works, but it gets very bright.

Screen is a complete hack created solely for gamma encoded compositing if screen is used in linear space compositing ie with Blenders CM on then you will get wierd errors. Add is the blend mode for linear space comping, screen is defunct.

afaik Blender is not a true 32bit float hdr compositer if I understand correctly it normalises all values and works on them between 0 and 1 rather than leave values negative or greater than 1. So depending on the sources being mixed errors can occur.

no surprise you are getting problems there! you are mapping the colors way above 1!
https://img.skitch.com/20110720-f2y9kstb5c9cq8mts2173g61k9.jpg

try to keep the extreme outsides of the rgb-curve untouched
https://img.skitch.com/20110720-g9aak9ckr976pfyfm5cnuwgh4h.jpg

Well, this was an extreme example to make a point, but I guess what I am most curious about is why, even if it goes way above 1, does it become black or a contrasting color? It seems like it should saturate. (which, I believe, is what add does)

screen does generally look nicer than add, it has a tendency to lift the dark areas but leave the light areas. (so long as these errors don’t occur)

The problem here is the math.
Blendmodes do not just make things brighter and look nice, there is math involved.

Screen for example works like this:
outputColor=1-(1-imgA)*(1-imgB))

In your example you have emit of 1.72, which results in a blue value of 1.37. Through the rgb-curves you lift that even further so you end up with blue value of 2.944 in the blur-node. The blue value of combined image is 1.59.
So inside the screen node this is happening:
1-((1-1.59)(1-2.944)) -->
1-(-0.59
-1.944) -->
1-(1.14) = -0.14

You not only have darker colors, you even get negative values!
So unless you really know what you are doing, you should try to keep values in the range of 0-1, also on color inputs like emit.

Here’s a link http://www.simplefilter.de/en/basics/mixmods.html

Should we have a clipper or legaliser of some sort or just behave in a sensible manner when combining sources?

Gamut errors, colours saturated beyond sRGB gamut which Blender uses and is confined to and colours which can’t be displayed properly on sRGB monitors.

Tone mapping would allow you to gamut map those out of gamut values into sRGB. Decide what you want to keep and what to throw away.

A predefined clipper might be nice, but you can easily build one yourself https://img.skitch.com/20110720-t7ceufs7a4kmq7p91y1y41fha.jpg
but behaving in a sensible manner is never wrong… :wink:

32bit float can work with negative values and values greater than one, clipping should not happen and ‘legalising’ relates to colour space and working gamut, display restrictions.

There should be blinkies, helpers to show out of gamut values and methods to tone / gamut map.