diff options
author | Ton Roosendaal <ton@blender.org> | 2003-12-29 19:52:51 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2003-12-29 19:52:51 +0300 |
commit | 3ce1dc90656241420303ff08865ea79a98248c18 (patch) | |
tree | 9ff9074309e97c1f861ac939dc5ee04437fc03b2 /source/blender/render/extern | |
parent | 65aeef11e161e99f8972f305d3f1535e81a76271 (diff) |
Area lights and more...
- New lamp type added "Area". This uses the radiosity formula (Stoke) to
calculate the amount of energy which is received from a plane. Result
is very nice local light, which nicely spreads out.
- Area lamps have a 'gamma' option to control the light spread
- Area lamp builtin sizes: square, rect, cube & box. Only first 2 are
implemented. Set a type, and define area size
- Button area size won't affect the amount of energy. But scaling the lamp
in 3d window will do. This is to cover the case when you scale an entire
scene, the light then will remain identical
If you just want to change area lamp size, use buttons when you dont want
to make the scene too bright or too dark
- Since area lights realistically are sensitive for distance (quadratic), the
effect it has is quickly too much, or too less. For this the "Dist" value
in Lamp can be used. Set it at Dist=10 to have reasonable light on distance
10 Blender units (assumed you didnt scale lamp object).
- I tried square sized specularity, but this looked totally weird. Not
committed
- Plan is to extend area light with 3d dimensions, boxes and cubes.
- Note that area light is one-sided, towards negative Z. I need to design
a nice drawing method for it.
Area Shadow
- Since there are a lot of variables associated with soft shadow, they now
only are available for Area lights. Allowing spot & normal lamp to have
soft shadow is possible though, but will require a reorganisation of the
Lamp buttons. Is a point of research & feedback still.
- Apart from area size, you now can individually set amount of samples in
X and Y direction (for area lamp type 'Rect'). For box type area lamp,
this will become 3 dimensions
- Area shadows have four options:
"Clip circle" : only uses a circular shape of samples, gives smoother
results
"Dither" : use a 2x2 dither mask
"Jitter" : applys a pseudo-random offset to samples
"Umbra" : extra emphasis on area that's fully in shadow.
Raytrace speedup
- improved filling in faces in Octree. Large faces occupied too many nodes
- added a coherence check; rays fired sequentially that begin and end in
same octree nodes, and that don't intersect, are quickly rejected
- rendering shadow scenes benefits from this 20-40%. My statue test monkey
file now renders in 19 seconds (was 30).
Plus:
- adjusted specular max to 511, and made sure Blinn spec has again this
incredible small spec size
- for UI rounded theme: the color "button" displayed RGB color too dark
- fixed countall() function, to also include Subsurf totals
- removed setting the 'near' clipping for pressing dot-key numpad
- when you press the buttons-window icon for 'Shading Context' the context
automaticilly switches as with F5 hotkey
Please be warned that this is not a release... settings in files might not
work as it did, nor guaranteed to work when we do a release. :)
Diffstat (limited to 'source/blender/render/extern')
-rw-r--r-- | source/blender/render/extern/include/render_types.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/source/blender/render/extern/include/render_types.h b/source/blender/render/extern/include/render_types.h index cad1a2faec5..90eb7c4f058 100644 --- a/source/blender/render/extern/include/render_types.h +++ b/source/blender/render/extern/include/render_types.h @@ -224,7 +224,7 @@ typedef struct LampRen float xs, ys, dist; float co[3]; short type, mode; - float r, g, b; + float r, g, b, k; float energy, haint; int lay; float spotsi,spotbl; @@ -249,19 +249,19 @@ typedef struct LampRen /** A small depth offset to prevent self-shadowing. */ float bias; - float ray_soft; - short ray_samp; + short ray_samp, ray_sampy, ray_sampz, ray_samp_type, area_shape, ray_totsamp; + float area_size, area_sizey, area_sizez; - /** If the lamp casts shadows, one of these is filled. For the old - * renderer, shb is used, for the new pipeline the shadowBufOb, - * which should be a shadowbuffer handle. */ struct ShadBuf *shb; - void* shadowBufOb; - + float *jitter; + float imat[3][3]; float spottexfac; float sh_invcampos[3], sh_zfac; /* sh_= spothalo */ + float mat[3][3]; /* 3x3 part from lampmat x viewmat */ + float area[8][3], areasize; + struct LampRen *org; struct MTex *mtex[8]; } LampRen; |