![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
A question about ray tracing and gamma correction.
The images my path tracer now produces don't have any gamma correction.
For example, a spot light shines on a surface and the color of that
surface is (say) RGB=255,255,255 (pure white in this case). If the
spotlight is moved twice as far, the color is now RGB=64,64,64. So I
have a linear tone mapping.
The question is: would a gamma corrected output be any more correct than
this linear? If I corrected with gamma 2.2, the first case would give
RGB=255,255,255 again and the second case would give RGB=136,136,136.
Why would I prefer one over the other? I have seen ray tracers doing
both. I'm not sure which way would give "better" results and what would
the "better" even mean in this case...
Severi S
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> The question is: would a gamma corrected output be any more correct than
> this linear? If I corrected with gamma 2.2, the first case would give
> RGB=255,255,255 again and the second case would give RGB=136,136,136.
>
> Why would I prefer one over the other?
Because if you give your monitor (or pretty much any monitor) 64,64,64, it's
not 4x dimmer than 255,255,255. You need to give it 136,136,136 (or
whatever) to get that.
The original reason for this is that inside a CRT, the "brightness" you saw
was not linearly related to the applied voltage, but a gamma curve.
Everything was designed for CRTs, so LCDs had to follow in order not to look
stupid.
Also, it's not a bad design anyway, because it gives you more detail in the
darker colours where your eye is more sensitive (ie instead of having only
64 discrete brightnesses between 0 and 1/4 brightness, you now have 136).
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
scott wrote:
> Because if you give your monitor (or pretty much any monitor) 64,64,64,
> it's not 4x dimmer than 255,255,255. You need to give it 136,136,136
> (or whatever) to get that.
That is true!
I have a visually calibrated LCD screen using this page and test chart:
http://www.normankoren.com/makingfineprints1A.html#gammachart
My monitor gamma seems to be in order (around 2.2). And it really means
that in order to get half luminance of pure white, I have to use RGB =
186,186,186 - as opposed to 123,123,123.
So yes, I have to start using gamma correction from now on. Thanks.
Now I have to figure out a better way to define object color. As
specifying it RGB= 180,100,100 gives a totally different output. Idea, I
could just do a inverse gamma correction to those values first....and
yes, it seems to work just right.
Severi
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> My monitor gamma seems to be in order (around 2.2).
The problem with most monitors is that they are not actually programmed
exactly with a gamma curve, it's usually something approximating a gamma
curve, but typically goes off at the black and white ends. Of course you
also need to check your monitor settings, things like "brightness" and
"contrast" can really screw up the "gamma" curve.
> Now I have to figure out a better way to define object color. As
> specifying it RGB= 180,100,100 gives a totally different output. Idea, I
> could just do a inverse gamma correction to those values first....and
> yes, it seems to work just right.
Yes, this is an area where POV also (used to?) do things wrong. When the
user inputs a colour, or texture, that data is already in gamma-corrected
colour space (because they see the colour on their monitor). You need to
inverse-gamma-correct that colour/texture FIRST, before you do any
raytracing, because your raytracer must work in linear colour space. At the
very very end you can gamma correct the raytraced image to show on a
monitor.
IIRC POV doesn't/didn't inverse-gamma-correct textures, which is why the
colours often came out weird unless you used gamma 0. Maybe this has been
fixed now I haven't checked.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |