Balder performance

Jan 27, 2010 at 10:23 AM


Does Balder uses some kind of hardware accelerated rendering ? Or it is all from software. Is it possible to control framerate for custom animation? How many triangles and vertices are acceptable for smooth rendering? Does it implement frustum culling, etc? What are the main performance issues?


Jan 27, 2010 at 12:12 PM


Balder does not do any hardware accelerated rendering, this is because Silverlight does not support it. Balder has its own pixel rendering pipeline that draws everything, and with the next version Balder has increased its performance by at least 200%. We haven't gotten around to properly stresstest everything yet, but having a couple of thousand polygons/triangles gives you 60 FPS with the next version we're pushing soon. We have started on the frustum culling, but its not completely finished. 

The main performance issue is the rendering, but still there is a lot of potential to improve this even further.

Jan 27, 2010 at 12:13 PM
Edited Jan 27, 2010 at 12:14 PM

I've got a sample before the optimizations done this week that you can see here

Apr 20, 2010 at 5:04 PM
Edited Apr 20, 2010 at 5:06 PM


Is this next version meanwhile shipped out? I'm trying to render 1000 simple cubes (8 Points) and I'm getting only one frame per second. What am I doing wrong?

I'm using Version

public override void OnLoadContent()
    Random rand = new Random();
    int randBound = 200;
    for (int i = 0; i < 1000; i++)
        Mesh mesh = ContentManager.Load<Mesh>("finalBox.ase");
        mesh.Scale = new Balder.Core.Math.Coordinate(1000, 1000, 1000);
        mesh.Position.X = rand.Next(-randBound, randBound);
        mesh.Position.Y = rand.Next(-randBound, randBound);
        mesh.Position.Z = rand.Next(-randBound, randBound);

Apr 21, 2010 at 7:08 AM


your code looks fine. The next version has great performance improvements, and my tests so far show that I am getting about 10 FPS with 2500 boxes.

There will also be new features in the next version tuned for better performance, if your boxes are statically positioned during initialization, there will be something called MergedGeometry that allows for merging all your boxes into one larger geometry and still allow for identifying each individual element plus be able to change Color and such as well. 

The performance improvements are already in the source control, so if you want to download the source and run the build.cmd script, you should get a new version in the Build directory.


The next couple of months will be dedicated even more to performance, so hopefully I'll be able to push the possibilities of Silverlight even further.

Apr 21, 2010 at 8:04 PM


I tested the same code on the latest source (0808578064ca) and its a bit better now:

500 Boxes: 7.5 fps
1000 Boxes: 3.5 fps
1500 Boxes: 2.5 fps

Can you post your test code or send me your test-solution?

I'm using HP Elitbook 8540w, Intel Core i7, Windows 7, IE 8, VS 2010

Built for Silverlight 3, tested on VS-Cassini Web-Server, no VS-Debug-Process in background.


Apr 22, 2010 at 7:43 AM

If you look at the samplebrowser code (open the SampleBrowser solution), in the NodesControl and HierarchicalNodesControl source.

On my Virtual Machine on my Mac (a MacBook Pro Core 2 Duo 2.9 GHz CPU), I get 24 FPS on IE, 22 FPS on FF and 20 on Safari with 625 objects in the NodesControl sample. With the HierarchicalNodesControl sample I get 19 FPS with 1000 boxes.


Is it possible for you to email me your application ? (einar _at_ dolittle _dot_ com)

Apr 22, 2010 at 2:02 PM

You've got mail.

Ok, I will try these samples.