Click or drag to resize
DigitalRuneRelease 2015-03-10
Release Notes

iOS, Windows Store, Windows Phone

The assemblies have been updated to support the new Xamarin.iOS API and the Windows Store API. The assemblies for Xamarin.iOS are now built for the Xamarin.iOS Unified API. The assemblies for Windows Store and Windows Phone have been updated to support Windows 8.1 and universal apps.

Image-based lighting (moving towards PBR)

Physically-based rendering (PBR) is becoming the new norm for interactive graphics. This release adds one new features which is an important step towards PBR: image-based lighting (IBL). With PBR most materials (e.g. shiny metals, diffuse materials at grazing angles) reflect the environment. Image-based lighting uses environment maps to create these reflections.

The new class ImageBasedLight can be used to define global or local environment maps for a scene. Material shaders are mostly unchanged:

  • Forward rendered materials can use the standard environment map semantics. The effect binding system will automatically select the closest ImageBasedLight and set the environment map as the effect parameter.
  • Deferred materials automatically reflect the environment map. In this case the ImageBasedLight is simply another type of light source, which is rendered into the light buffers. The material's diffuse and specular coefficients define the amount of light that is reflected. The specular power determines the glossiness of reflection. You do not need to change the material shaders!

The ImageBasedLight currently uses standard cube maps. Cube maps can be loaded via the content pipeline or generated dynamically at runtime.

We have added 2 new samples (ImageBasedLightingSample and CathedralSample) which demonstrate how to generate environment maps at runtime and how to apply image-based lighting. Below is a screenshot showing the Sibenik Cathedral. In this example image-based lights are used to add reflections.

The image-based lights can also be used to influence diffuse lighting (to add bounce light) or to replace the normal ambient lighting.

Here are some screenshots of the CathedralSample:

IBL-01
Figure 1: Sibenik Cathedral without IBL (top) and with IBL (bottom). Without IBL pure metals simply appear black.
IBL-02
Figure 2: Sibenik Cathedral without IBL (top) and with IBL (bottom). Note how the IBL adds a diffuse, red light bounce at the altar area.

Static batching and hardware instancing

Another question which we address in this release is: How to render a large number of meshes efficiently?

One option is to merge several mesh nodes into one to reduce the per-object overhead. The MeshHelper now provides functions to merge meshes at runtime.

Another option is to use hardware instancing. The DigitalRune MeshRenderer already supports hardware instancing: When mesh nodes are rendered, it gathers all instances of one mesh and sends them to the GPU using a single draw call to reduce overhead.

However, if you add many individual mesh nodes to a scene, there is still a significant overhead per-object. This release includes a new class MeshInstancingNodeT which is derived from MeshNode. It allows to group lots of instances into one scene node. Rendering a MeshInstancingNodeT is extremely fast because the instance-data buffers need to be created only once and not per frame.

The new BatchingSample demonstrates these new features.

Vegetation

The new VegetationSample uses the MeshInstancingNode to draw large quantities of grass, bushes and trees. It also shows how to

  • animate plants on the GPU to make them sway in the wind,
  • add a simple subsurface scattering/translucency effect for leaves,
  • blend between different levels of detail,
  • fade instances in/out.
Vegetation-Sample
VegetationSample
Change log

General

  • NEW: iOS libraries are now built for the Xamarin.iOS Unified API.
  • NEW: Windows Store and Windows Phone builds updated to Windows Store 8.1 Universal Apps.
    The folder References/WindowsPhone has been removed. The assemblies for Windows Store 8.1 Universal Apps (Windows + Windows Phone) can be found in References/.NETCore.
  • NEW: Added new folders References/Android and References/iOS with builds which do not require MonoGame.
  • FIX: "InvalidProgramException: Invalid IL code…" error in Mono caused by code obfuscation.
  • Many other internal improvements.

DigitalRune Base 1.17

  • REMOVE: Clipboard support was removed for Windows Store Universal Apps.

DigitalRune Animation 1.4

  • FIX: Possible endless loops if several animated properties have the same hash code.

DigitalRune Graphics 1.0beta

DigitalRune Game UI 1.6

  • NEW: TextBox uses the new MonoGame KeyboardInput class on phones and Windows Store apps.

Samples

  • NEW: ImageBasedLightingSample.
  • NEW: CathedralSample.
  • NEW: BatchingSample.
  • NEW: VegetationSample.
  • NEW: XNA-Kinect sample project replaced by MonoGame-Windows-Kinect samples project.
  • CHANGE: Windows Store sample changed to XAML-based MonoGame template.
  • CHANGE: Removed use of Segoe UI Mono and Miramote in sprite fonts. (These fonts come with XNA Game Studio. They are not included in Windows or MonoGame.)
  • FIX: Camera was disabled in Xbox avatar samples.
  • FIX: Some UI samples could not be switched with gamepad only.
  • Minor other improvements.

MonoGame

  • CHANGE: MonoGame.Framework.Net.dll is not required anymore by DigitalRune libraries and samples.
  • REMOVE: MonoGameContentProcessor assembly removed. Use the new MonoGame content pipeline instead!
  • Several other improvements.