All images used here are from demo files as downloadable here.(zip, 2.8M)

(Model: WP van Overbruggen)

General ray trace remarks

- Set the F10 (Render buttons) option "Ray" to enable ray tracing for rendering. In Blender this is an integrated method, still using zbuffer and scanline rendering for 'first hit' rendering.

 

- New options are almost all found in the 'Shading context' buttons (F5), for Materials, Lamps and World.

For Materials the settings for Mirror and Transparency have been joined together in a new buttons Panel.

 

- Blender uses an Octree to optimize ray intersections. The way it works now, it gives best speed when you keep the total environment as compact as possible. For example, exclude exterior objects, walls or floors from being added in the Octree by disabling their Material "Traceable" value.

 

- Environment maps are rendered before raytracing is initialized and enabled. This to make sure environment maps remain fast to use.

 

- known issue: the raytracing code doesn't calculate for each ray bounced/refracted the new correct filtering and oversampling values. This will make reflected/refracted image textures somewhat more blurry than expected.

 

Here you can read more about the technical background and implementation on the Blender raytracer.

Raytraced shadows

- All lamp types in Blender can have a ray traced shadow. Only for spotlights still the extra choice exists to use shadowbuffers, which still is a useful feature in many situations.

 

- For Sun and Hemi the actual position of the lamp doesn't matter then, in this case it traces a ray in the constant Sun/Hemi direction.

 

- Set (F10) "OSA" on for correct over sampling. This will result in smooth anti-aliased, but sharp shadows.

 

- The (F10) option "Shadow" enables or disables both shadowbuffer and raytrace shadow calculation.

Soft shadows

- Since there are a lot of variables associated with soft shadow, for this release they only are available for Area lights. Allowing spot & normal lamp to have soft shadow is possible, but will require a reorganization of the Lamp buttons, and will need review of 3D drawing methods.

 

- Apart from 'area' size, you can individually set amount of samples in X and Y direction (for area lamp type 'Rect').

 

- Soft 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.-->New:

Area lights

Six area lights, grouped as windows in a room, give smooth realistic light
One area light, no shadow.

A new lamp type has been 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.

Working with Area light requires more work to get the optimal lighting conditions, like with real lamps in a studio and a real camera. This is the main reason why a new exposure method was added (see below).

 

- 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 has to be used. Set it at Dist=10 to have reasonable light on distance 10 Blender units (assumed you didnt scale lamp object). The default "Dist" value for lamps in Blender (20) will most typically give an overflow in standard Blender scenes!

 

- 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

 

- Plan is to extend area light with 3d dimensions, boxes and cubes.

 

- Note that area light is one-sided, towards negative Z.

Ray Transparency

- Enable it with setting "RayTransp" in the new "Transp and Mirror" Panel. Please note that alpha is default at 1.0 in Blender, giving fully opaque. Typically a quick nice result can be achieved with setting a Fresnel value, and leave the Alpha slider at 1.0.

 

- Set "IOR" for 'index of refraction'. Realistic values range from 1.1 (water) to 1.5 (glass).

 

- Set a correct "Depth" value to denote the maximum amount of recursions for a single ray to be refracted. A value of '5' typically is an acceptable minimum.

 

- For correct refraction calculus, 3D models MUST have normals pointing in the right direction (consistently pointing outside). That way, refraction can 'detect' the thickness of a transparent material, whether it enters or leaves it. So, model for realistic glass always both sides of a surface.

 

- When not rendering with ray tracing enabled, 'RayTransp' materials will render solid. This gives better previews, but also makes envmaps look better, since environment maps are rendered without ray tracing.

 

- 'Ray transp' rendering doesn't end with alpha information (alpha is 1.0).

 

- New Material option "ShadowTra" will invoke a ray to all "ray shadow" lamps, evaluating the alpha of all faces it encounters. The result will look like a transparent shadow.

Note: This is a true shading option, and not an option for Lamps, nor for a transparent Object giving transparent shadows. Main reason is to be able to control rendering speed.

Ray Mirror

- You need to set both the Material option "Ray Mirror" as give the slider "RayMirr" a value larger than zero.

 

- Textures work on this value as well, with a new MapTo channel

 

- the RGB colors for "Mir" define the mirror-reflection color.

 

- Set a correct "Depth" value to denote the maximum amount of recursions for a single ray to be reflected. A value of '2' typically already gives acceptable results.

 

Fresnel

Both transparency as mirror reflection can be controlled with a Fresnel effect in Blender, meaning it is depending on the angle between the surface normal and the viewing direction. Typically, the larger the angle (on the outer side, the outline) the more reflection or the more opaque a Material becomes.

 

It took several testing releases before the optimal Fresnel code was found. What is released now is a hybrid version, allowing 'real' Fresnel, but also giving artistic freedom and control. This is provided with two settings:

 

- "Fresnel": the 'power' of the function, the higher the more strong the falloff is.

- "Fac": a controlling 'factor' to adjust how the blending happens

Set the first value at 5.0, and the second at 1.25 for something that matches 'real' Fresnel.

 

Fresnel works for transparent mode "Ztransp" as well (not raytraced).

 

Exposure and brightness

Exposure graph, with "Range" set to 2, and "Exp" ranging from 0.0 (stright line) to 1.0.

Previously Blender clipped color straight with '1.0' (or 255) when it exceeds the possible RGB space. This causes ugly banding when light overflows.

Using an exponential correction formula, this now can be nicely corrected.

 

The World buttons (F6) have two new options for it:

- "Exp" the exponentional curvature, with 0.0 being linear, and 1.0 being curved

- "Range" sets the range of input colors to mapped to visible colors (0.0-1.0).

Better bump textures

Improved method to calculate normals for procedural textures such as Marble, wood, clouds. Instead of the old method it now derives the normal based sampling the texture additionally with three little offsets in x, y and z. This gives nice and correct results, superior to the old method (which just rotated a normal a bit).

 

(Image: old method below, same settings)

Gaussian sampling

Osa 8, no Gauss
Osa 8, with Gauss

Normally, while rendering OSA, each sub-pixel sample in Blender counts equally, and together make up the pixel color.

 

With 'Gauss' option set (F10 menu) each sub-pixel sample creates a small weighted mask with variable size, which (can) affect neighbouring pixels as well. The result is smoother edges, less sensitive for gamma, and well suited to reduce motion-aliasing (when things move extreme slow).

 

This is result of *long* period of research in NeoGeo days, and based on every scientific sampling/reconstructing theory we could find. Plus a little bit of our selves. :-)

 

Currently the Gauss option only works for edges of normal faces. It does not work for transparent rendering, not to solve high frequencies (aliasing) from ray trace render, nor for the Unified render. All topics to work on another time.

Various

- Adjusted specular max to 511, The Blinn shader has again this incredible small spec size.

 

- New option "Translucency" (Shading panel) will enable shading when light shines on the backside as well. It only includes diffuse shading, not specular (of course!).

Translucency is a "Map to" texture channel as well.

Translucency works nice to give half-transparent Materials a light emitting effect.See for example in the image to the left the effect of the spotlight on the transparent faces.