Click or drag to resize
DigitalRuneRelease 2015-05-09
Release notes

Memory leak in MonoGame

A critical memory leak in MonoGame has been fixed. The problem was caused by the following methods:

  • VertexBuffer.GetData
  • IndexBuffer.GetData

These methods pinned the data arrays and thereby prevented these objects from being garbage collected.

The following DigitalRune methods were affected by this bug:

Weighted blended order-independent transparency

A new sample demonstrates weighted blended order-independent transparency, which is a technique for rendering transparent objects. In contrast to traditional alpha blending, it does not require geometry to be rendered in sorted order (back-to-front).

Figure 1 shows an opaque tank model (reference), the model rendered with alpha blending (α = 0.8), and the model rendered with weighted blended order-independent transparency (α = 0.8). Triangles are submitted unsorted, which results in wrong visibility when using traditional alpha blending.

Weighted Blended Order-Independent Transparency
Figure 1: Opaque model (top), alpha blended transparency (middle), weighted blended order-independent transparency (bottom).

(Note: The shader used during weighted blended order-independent transparency uses a different lighting model, therefore the shading does not match exactly.)

For more information:

  • McGuire and Bavoil, Weighted Blended Order-Independent Transparency, Journal of Computer Graphics Techniques (JCGT), vol. 2, no. 2, 122--141, 2013. Available online http://jcgt.org/published/0002/02/09/

Documentation

The documentation is now generated using the latest Sandcastle presentation style.

Change log

General

  • CHANGE: Documentation uses latest Sandcastle presentation style.

DigitalRune Geometry 1.17.1

DigitalRune Graphics 1.0beta2

  • NEW: Support for processing additional texture formats. Formats supported in previous release:
    • R32G32B32A32_Float,
    • R8G8B8A8_UNorm,
    • R8G8B8A8_UNorm_SRgb,
    • R8_UNorm,
    • A8_UNorm,
    • BC1_UNorm,
    • BC1_UNorm_SRgb,
    • BC2_UNorm,
    • BC2_UNorm_SRgb,
    • BC3_UNorm,
    • BC3_UNorm_SRgb,
    • B8G8R8A8_UNorm,
    • B8G8R8A8_UNorm_SRgb,
    • B5G6R5_UNorm*,
    • B5G5R5A1_UNorm*,
    • B4G4R4A4_UNorm* (* loading only)
    Formats added in this release:
    • R32G32B32A32_UInt,
    • R32G32B32A32_SInt,
    • R32G32B32_Float,
    • R32G32B32_UInt,
    • R32G32B32_SInt,
    • R32G32_Float,
    • R32G32_UInt,
    • R32G32_SInt,
    • R32_Float,
    • R32_UInt,
    • R32_SInt,
    • R16G16B16A16_Float,
    • R16G16B16A16_UNorm,
    • R16G16B16A16_UInt,
    • R16G16B16A16_SNorm,
    • R16G16B16A16_SInt,
    • R16G16_Float,
    • R16G16_UNorm,
    • R16G16_UInt,
    • R16G16_SNorm,
    • R16G16_SInt,
    • R16_Float,
    • R16_UNorm,
    • R16_UInt,
    • R16_SNorm,
    • R16_SInt,
    • R8G8B8A8_UInt,
    • R8G8B8A8_SNorm,
    • R8G8B8A8_SInt,
    • R8G8_UNorm,
    • R8G8_UInt,
    • R8G8_SNorm,
    • R8G8_SInt,
    • R8_UInt,
    • R8_SNorm,
    • R8_SInt,
    • A8_UNorm,
    • B8G8R8X8_UNorm,
    • B8G8R8X8_UNorm_SRgb
  • NEW: Effect parameter bindings will throw an exception if the value type is not compatible with effect parameter.
    (Additional checks are necessary because MonoGame does not fully validate effect parameter values.)
  • NEW: Properties EffectName and EffectParameterName added to EffectBindingException to provide additional information when a binding fails.
  • NEW: FormsPresentationTarget is now also available in MonoGame.
  • CHANGE: Presentation targets refactored. It is now possible to implement custom presentation targets. (Methods IPresentationTargetBeginRender and IPresentationTargetEndRender added. IPresentationTarget.Handle is no longer needed and has been marked as obsolete.)
  • CHANGE: Conservative shadow caster culling improved.
  • CHANGE: Some "false positives" removed in progressive shadow caster culling.
  • CHANGE: Clamp large (infinite) AABBs to camera/light AABB in OcclusionBuffer. Automatically handle infinite objects. Improve performance for large objects.
  • CHANGE: Calculate exact view-normalized distance in OcclusionBuffer. (Currently shader computes position from AABB instead of scene node origin.)
  • CHANGE: MeshHelper.ToTriangleMesh now supports meshes with 32 bit indices.
  • REMOVE: Method GraphicsManager.Present() has been marked as obsolete and will be removed in future version.
  • FIX: ArgumentNullException in DigitalRune Model Processor if skinned model is exported without any materials. (XNA only.)
  • FIX: When a skinned model without textures and without material definition (.drmat file) is processed, the wrong effect may stored in the .xnb file.
  • FIX: When skinned model is exported without any materials, a SkinnedEffect is set as default.
  • FIX: Content processors try to automatically find resources if models contain invalid paths. (For example, when a FBX file contains an invalid texture file name (path does not exist), the model processor will search in the content folder and in the current directory for a matching file.)
  • FIX: The DigitalRune Texture processor may throw an exception ("Surface format is not supported.") even if no processing is required.
  • FIX: Minor floating-point rounding issues in SpriteRenderer.
  • FIX: Effect parameter bindings for XNA stock effects (AlphaTestEffect, BasicEffect, etc.) fail when using Vector3F/Vector4F instead of Vector3/Vector4.
  • FIX: OcclusionBuffer does not handle partially infinite shapes (e.g. ocean's PlaneShape) correctly.
  • FIX: OcclusionBuffer did not cull shadow casters that were occluded from the light's point of view when "progressive shadow caster culling" is enabled.
  • FIX: OcclusionBuffer may uses wrong MaxDistance when culling shadow casters.
  • FIX: Wrong order of gamma correction and premultiplication in Billboard.fx.
  • FIX: Wrong opacity when rendering semi-transparent textures with Forward.fx. (Premultiplication and gamma correction are calculated in the wrong order, which results in a low opacity.)

Samples

  • NEW: WeightedBlendedOITSample added, which implements weighted blended order-independent transparency.
  • CHANGE: InteropSample (XNA) and WpfInteropSample (MonoGame) merged (shared source code).
    The folder InteropSample now includes two Visual Studio projects: InteropSample-XNA.csproj and InteropSample-MonoGame.csproj.
    The folder WpfInteropSample has been removed.
  • FIX: WpfInteropSample does not end when WPF window is active and ALT+F4 is pressed. (This bug was introduced by a change in MonoGame.)
  • FIX: Mesh name not set in ProceduralObject.cs.

MonoGame 3.4

  • MonoGame 3.4 Release Notes
  • BREAKING CHANGE: MGFX uses a new preprocessor for effect files. Include files now need to end with a newline character, otherwise compilation fails.
  • BREAKING CHANGE: Effect files (.fx) need to be rebuilt.
  • CRITICAL FIX: Memory leak in VertexBuffer.GetData and IndexBuffer.GetData.
  • FIX: It is now possible to import skinned models from FBX files where the root bone has a transformation pivot.