|
|
Brazil r/s for Rhino Wiki pages |
| SplutterFish / Robert McNeel & Associates |
Contents:
On the Splutterfish website you can read that Brazil is an Adaptive QMC Sampling, Global Illumination and Ray Tracer implementation of the Bucketed Rendering paradigm. The Splutterfish website will not tell you what that actually means. This wiki page aims to highlight several Brazil features (this is not a complete list, indeed... far from it) and describe them in layman terms. I will not shy away from the official jargon, but I promise I won't use terminology to confuse or impress you.
I might be able to describe what Brazil actually is and does and I might jujujuju even pull it off in less than a hundred pages, but what you need to know about Brazil is:
Everything else is hearsay. The only way to choose a rendering platform which will work best for you is to try it and see for yourself. Listen carefully to opinions and reviews, but make up your own mind in the end. Have a look at user galleries and be impressed by the expertise and workmanship you'll encounter, but do not belittle the artists by thinking that you too will be able to effortlessly make images like that on a rainy sunday afternoon. Software cannot be judged on feature lists alone.
This image was rendered in a recent (early 2007) beta version of Brazil for Rhino and it shows several advanced features that you will not find in simpler platforms such as the Rhino renderer or Flamingo:
|
I have highlighted five details in this image each of which represents an advanced feature:
Ray Tracing
| |
Many render engines are based on the ray tracing method (as opposed to scanline or hardware renderers). The advantages of ray tracing is that it is a much more natural way to solve a rendering problem because it resembles the way in which photons behave in reality. However, a ray-tracer engine is not limited to realistic solutions, as will be clear later on. Brazil has one of the most advanced ray-trace engines on the market today, it is capable of simulating a wide range of effects such as reflection, refraction (transparency), dispersion (prismatic rainbow effects), sub-surface scattering (diffuse light transmitting materials such as wax or skin) and glossy reflections (blurry or brushed materials). The ray tracer is also capable of sampling different properties at different rates, meaning that you can compute a very rough indirect lighting pass (thus saving precious render time) while keeping the direct lighting at high accuracy (thus having a crisp image). The ray tracer is very flexible and can be adjusted if you want it to behave differently. See this page for the Brazil Ray Server options. |
Advanced lighting
| |
Rhino supports a number of different light objects (point, spot, directional, linear and rectangular) and lights can have a number of properties such as colour, hotspot and shadow casting. Brazil adds about a hundred more. The sheer number of different properties lights can have is quite intimidating at first, but most of these settings are only needed in very specific cases. Among the light features added are decay (the natural, physically correct, darkening of light as a function of distance to the source), attenuation (physically incorrect, amplification of brightness as a function of distance to the source), focus control (rectangular, conical, cylindrical etc.), projections (instead of emitting a single colour, a brazil light can emit a picture or procedural texture) and exclusion lists (the lights can be made to ignore certain objects in the scene). In addition to these additional properties, Brazil will also display all focal cones and attenuation spheres for selected lights in the viewport, so you can see the affects of your settings in real-time. A more in-depth discussion on light properties and settings can be found here |
Toon and NPR
| |
Apart from photorealistic rendering, Brazil is also capable of a number of non-photoreal (NPR) effects such as toon shaders. (Car)Toon shaders cooperate with photoreal shaders so you can mix glass, brushed metal and toon in a single scene without losing the ability to do Indirect-Illumination, Depth-of-Field or any other effect. The toon shader has a number of different settings through which you can specify the behaviour of fills and inks. The image on the left uses Multi-level paint fills (a number of discrete colours are applied to the surface based on luminosity) but you can also use Gooch type fills, which use a continuous gradient. |
Depth of Field
| |
Depth-of-Field (DOF) is a popular effect these days, especially in architectural stills and animations. It simulates the imperfect focusing properties of physical lens-systems such as biological eyes and cameras. DOF adds a measure of realism to a rendering by blurring out-of-focus areas. Also, it can be used to "mask" certain areas of the scene which may not have been modelled properly such as distant surroundings. The settings for DOF will be familiar to those of you who are familiar with photography; Focus Distance, Radius and F-Stop values determine the strength and domain of the DOF (the term depth-of-field refers to the amount of space (the depth or length) which is in focus). The DOF effect in Brazil also supports Bokeh abberations which is the effect over-exposed areas in an image have when they are out of focus. Since Brazil is a high dynamic range renderer (meaning you can get colours that are brighter than white, see below) such physically correct effects can be simulated with great accuracy. |
|
|
|
| Rhino viewport screenshot. As you can see the Brazil materials can be simulated and displayed in the real-time viewport. This even works for Procedural textures (this scene has three different procedurals; dots, wrinkles and a gradient). The viewport simulation is updated in realtime, even when you're in the process of dragging sliders that control how the procedural textures work. | Brazil rendering with no DOF effect. Everything is completely in focus. | The same scene with DOF enabled. The focal distance is clearly set up wrong since the horizon is in focus while the objects in the fore-ground suffer from severe blurring. The DOF effect is so strong that the horizon is actually visible though the glasses. You will notice this same effect when you get close to a wire-fence. At some point, as you look through the fence into the distance behind it, the wires will disappear because they are blurred out of existence. |
|
|
|
| DOF with focal distance aimed at the first glass. For the sake of clarity I have used an extremely short F-Stop, meaning the DOF effect is very strong. Usually you will be using far less imposing camera settings. | This time the middle glass is in focus. Note that the DOF effect blurs both objects in front of and behind the field. | Here the field is centered around the third object. |
Procedural Textures
| |
Brazil supports two types of textures; bitmaps and procedurals. You're all familiar with bitmap images already and I'm guessing that procedurals will not come as a shock either. Essentially, procedurals are images which are defined by a mathematical function rather than a grid of coloured pixels. This means that procedurals do not suffer from any resolution or tiling problems. It also means that it is very easy to change the behaviour of a procedural. Brazil has a number of procedural algorithms build in; Checker, Dots, Gradient, Marble, Noise, Tile and Wrinkled, but we're looking into more advanced procedural definitions which will enable users to easily set up other realistic materials such as wood and stone as well. Procedural textures can be nested ad infinitum and there is thus no upper limit to the complexity one can achieve. Also, procedurals are simulated in the viewport as bitmap textures so you can easily see and tweak the settings. |
High Dynamic Range colours
Brazil is a High-Dynamic-Range engine, meaning that its colours are not limited to the Black~White range. You can in fact have colours that are brighter than white and even darker than black, even though the latter is a physically impossible property. You might wonder why it is so important to have "brighter-than-white" colours if the computer screen cannot display them. The answer is that colours in a rendering are often diluted by partial reflection or refraction. Take a look at the following scene with GI and partial reflection:
|
|
|
| This setup uses no High Dynamic Range colours. The material on the ball is partially reflective which means that the residual colour after reflection is about ¼ of what it used to be. | In this scene, the white planes which are reflected in the ball have been given a brighter-than-white colour. In fact the planes are twice as bright as white, which means that the resulting colour after reflection is ¼ × 200% = 50% white. | In this final setup the planes are ten times brighter than white meaning that the resulting colour is also brighter than white but it is limited by the gamut of the computer screen. A glowing effect would visually enhance the brightness, but until we have HDR screens it will never actually be possible to display this rendering for what it is. |
Colours can also be diluted through indirect lighting, as the following table shows. This scene is lit both directly (through a pointlight to the left which casts the predominant shadow) and indirectly:
|
|
|
| If the brightness of the tube is set to zero, then it will be completely black, and only the direct light emitted from the pointlight object plays a role in this scene. | Here, the brightness of the tube has been set at half the normal brightness, meaning that the purple-to-pink gradient on the tube appears half as dark. However, there is already some indirect pink discolouration on the ground surrounding the tube. | When the brightness is set to 1.0, we see the gradient for what it is, and there is a substantial amount of indirect pink, especially on the ground inside the tube walls, which is exposed from all directions. At this point, this scene is not yet HDR. |
|
|
|
| This all changes when we boost the brightness of the tube to twice its normal colour. As you can see the far end of the tube (which is supposed to be pink) has been boosted so far that it becomes brighter than white. It's still pink, but too bright to be represented properly on the screen. | When we boost the brightness to a factor of five, the brighter-than-white boundary is located further towards the dark end of the gradient. Also, the indirect lighting is now predominant on the ground near the tube, to the point that some of it has also breached the white barrier. | Finally, in this last image, the brightness is set to one again, but the strength and saturation of the indirect lighting has been boosted. This makes for a physically incorrect scene, which uses the HDR features of the brazil core without there being any HDR colours specified. |
Global Illumination
Global Illumination (GI) is a feature you will find in most modern rendering platforms and indeed in Brazil. GI uses both direct and indirect illumination to generate a realistic image. Direct lighting is the process where light objects cast light onto objects, thus creating bright areas on surfaces that face the lightsource, darker areas on surfaces that do not and shadows when surfaces cannot "see" the lightsource directly due to some obstruction. After a surface has been lit directly, it too emits photons (after all, we are able to see it) and some of those photons are captured by yet other surfaces. Some of these photons are bounced around again and some of those photons are finally caught by our eyes or a camera. I used the phrase "some of" quite a lot in the previous sentence, indicating that the effect of indirect illumination is relatively small compared to that of direct illumination. Yet, it is the details that sell an image and humans are very fussy about correct lighting since we are used to seeing so much of it in real life around us.
1. |
3. |
2. |
|
| Image 1 shows the viewport screenshot of this scene. Three lights with three distinct colours (green, purple and yellow) have been placed around the shapes. Image 2 is a rendering of this scene with direct illumination only. There are places between the shapes where the shadows of all lights overlap and where there is thus no direct light source "visible". These areas have become completely black. Image #3 has indirect illumination enabled and the difference is quite striking. The light has been allowed to bounce one more time which means that those occluded areas in image 2 are now lit indirectly by the vertical surfaces in their vicinity. The image has lost some contrast but it more believable for it. Only very rarely will you encounter absolute black around you in reality... | |
One more example of diffuse light scattering shows the leaking of colour as well as luminance in indirect illumination:
|
|
|
| This image shows the effect of all combined direct illumination. Instead of a number of light objects, this scene is lit by a mono-chromatic skydome (completely white), meaning the source of all direct light is unfocused and diffuse. Our visual cortex pretty much immediately dismisses this image as fake, since the groundplane and the sphere (though touching) have completely different hue and saturation components. | When we enable indirect illumination, the realism of the rendering skyrockets (though it is still obviously fake due to the lack of imperfections). Both the groundplane and the sphere are affected by the indirect light. | A close-up of this rendering shows the dissipation of diffuse GI, since the effect of an object decreases by distance (things far away are smaller than things nearby), the areas of the groundplane which are closest to the sphere have the most contrast, it is in these regions that we can clearly see the coloured bands of the sphere. As we move further away, the orange and green indirect lighting start to mingle. |