Added improved exposure calculation
authorTon Roosendaal <ton@blender.org>
Tue, 30 Dec 2003 18:03:37 +0000 (18:03 +0000)
committerTon Roosendaal <ton@blender.org>
Tue, 30 Dec 2003 18:03:37 +0000 (18:03 +0000)
commitd8b21b01c38bf2b7007458c221b2c1685d766cfd
treed4001fd3c914f10602ec095341307f64569a4941
parent6c80064ab7e0ea1e5ec9b5a164db08497a94ccf4
Added improved exposure calculation

- based at 1.0-exp(-color) trick in Yafray. But to guarantee backwards
  compatibility, and some more control, Stefano Selleri hacked a useful
  formula for it.
- We now have 2 values to set:
  - "exp": the exponential correction value (0-1)
  - "range": the light range that maps on color 1.0 (0-5)
- Using exp(x) (is e^x) we can much better prevent overflows from render,
  which are currently hard-clipped in Blender. Setting a small 'exp' value
  wil efficiently smooth out high energy and map that back to a color for
  display.
- total formula:
  newcol= linfac*(1.0-exp(col*logfac))
    col, newcol are colors
  linfac= 1.0 + 1.0/((2.0*wrld.exp +0.5)^10)
  logfac= log( (linfac-1.0)/linfac )/wrld.range
    wrld.exp and wrld.range are the button values
- default setting: exp=0.0 and range=1.0 give results extremely close to
  previous rendering.
- graph: http://www.selleri.org/Blender/buffer/Image1.png  for 'exp' setting
  ranging from 0-1, and with 'range'=2

Thanks Stefano for the help!
source/blender/blenkernel/intern/world.c
source/blender/blenloader/intern/readfile.c
source/blender/makesdna/DNA_world_types.h
source/blender/render/intern/source/rendercore.c
source/blender/renderconverter/intern/convertBlenderScene.c
source/blender/src/buttons_shading.c