New OgreSpeedTree media up

Business, OGRE 11 Comments

A few people asked for an OgreSpeedTree video with more varied scenes, and I’ve now uploaded one to the OgreSpeedTree section of the Torus Knot site. Just scroll down below the screenshots if you want to view the video.

I have a higher resolution & better quality version (this one is H.264 at 1Kb/s) but I’ve kept this one small for now to keep my bandwidth under control. Places like Vimeo don’t allow commercial advertising, and while before I could get away with claiming it was just in-development test output shared with enthusiasts only, this is really an advertisement video so I’m hosting it myself. I have enough bandwidth to spare unless something really goes bonkers (I think) - in case it does, does anyone know of any reasonably priced business media hosts (UK only), should I need something more than just upping my bandwidth allowance? I’ve seen a few dedicated streaming media hosts around but don’t have a view on how good they are.

OgreSpeedTree 1.0 entered RC1 a week ago and I haven’t had any reports of any issues, so I’m pretty much ready to stick a fork in it & declare it done for now. I’ve been improving OgreSpeedGrass this week, such as making the grass paging re-entrant so that new cells can be filled gradually to spread the buffer update overhead over many frames, that seems to have helped in busier scenes. That just needs a couple more utility functions for loading in grass distributions from tools, then that will be done too. Then, it’ll be time to get the marketing wheels moving…

8000 trees and 2.5M blades of grass? No problem.

Business, Development, OGRE 12 Comments

I’ve been crazily busy lately trying to get OgreSpeedTree to a fit state for a 1.0 release alongside other projects (such as Ogre of course), so I can really start promoting it. Being the kind of person I am, I find it hard to stop tinkering and perfecting and I can’t let something go out the door without being totally happy with it. The screenshots and videos so far have been good I think, but I’ve been polishing away and making it all just that bit better, and one element of that has been some additional optimisation.

Thanks to some improved batching, OgreSpeedTree is now running even faster than before, and most importantly it scales to larger forests even better than before too. Here’s a short video where I tested adding over 8,000 trees (from 5 different models, and each with different rotations / scales) to the scene, together with over 2.5 million blades of grass, each of which can  be placed individually (I procedurally generated the distribution, but it could be done manually). Actually some of those tree models have multiple trees in them (the very close ‘clusters’ of 3/4 are actually one model), so in reality there are actually 12,000+ trees as far as the viewer is concerned.

Note that all the trees here are dynamically lit including normal mapping, and dynamic shadows are being cast through 3 shadow textures (PSSM). The LOD transitions are extremely hard to spot IMO too.

On my 9800 GX2 with a 2.66 dual-core, it runs consistently over 60fps (actually about 75fps most of the time). This is with a quite dense  clustering of the trees too; If you spread the trees out a bit more you can easily double that. The LOD settings are quite high too; reign those in and your lower class cards should be able to easily handle this, and of course you have the option of dropping or scaling back the dynamic shadows if you’re pushed.

I’m happy :) Not that I’ve quite finished of course, I have a couple of things still to polish for 1.0, but it shouldn’t be long now.

OgreSpeedGrass

Business, OGRE 12 Comments

Next in the line of OgreSpeed* products, here’s a shot of OgreSpeedGrass.

It’s based on IDV’s SpeedGrass but I’ve rewritten a fair amount to make it work conveniently with Ogre, and also improved it somewhat - such as better wind effects and the completely dynamic lighting and shadowing you see there, which I think looks rather nice.

OgreSpeedGrass will be bundled with a yearly support agreement for OgreSpeedTree, in the same way that the original SpeedGrass is licensed. I’m not looking for any additional beta testers right now, but there will be an official 1.0 release of both these libraries by the end of the month; if you’d like to be notified when that happens, please email enquiries at torusknot dot com.

More shots are available in the Ogre gallery.

Edit: and here’s a video, for those who asked:

OGRE 2008 User Survey Results!

OGRE 4 Comments

I’ve just released a report summarising the results of the OGRE 2008 User Survey. Thanks to everyone who participated, we did in fact break the 1,000 responses mark which was my goal when I decided to  run the survey, I think that’s a statistically respectable number to draw conclusions from.

I intend to give copies of this report to hardware and software companies I need to blag a bit of assistance from, so I think this will do the job. I’m also glad that some of the impressions I got from my work over the last few years were reinforced, such as that there are quite a lot of companies using OGRE for applications other than games.

I’ll write up a forum posting on it when I get a chance (probably tomorrow), but I don’t venture into the forum unless I have at least an hour or two free otherwise I miss some updated threads when I have to rush off! Blog readers get an early peek.

Phew…

OGRE 7 Comments

Today has been totally bonkers, but I finally got at least a large part of the Ogre 1.6.0 RC1 release done. I finished all the straggling documentation updates, the source releases are up and the prebuilt SDK for VC8 is there too. I have to do the VC7.1 SDK, the Mac OS X SDK and perhaps the VC9 SDK too (since I have a build of that locally now) yet. Florian was having a few odd linker problems with MinGW which didn’t occur on Linux or OS X so that one might take a while longer to resolve, perhaps until RC2.

It’s worth all the effort though, the 1.6 Changelog is positively bursting with goodness, and I’m pretty sure I probably missed some less headline things in there anyway. 1.6 is definitely a worthy release.

As you can see, I even found time to make a new release logo :)

It’s going on midnight here now though so I’m going to finish up and have a cup of tea before going to bed. Perhaps there might be rest for the wicked after all! ;)

Please take the 2008 OGRE User Survey!

OGRE 3 Comments

I’ve copied this message from ogre3d.org just in case there are those that track my blog more often than the main site:

2008 OGRE User Survey

One of the questions I always get asked when talking to other people in the industry is ‘How many people are using OGRE then?’. Compared to regular closed-source software where people can’t use it unless they pay, it’s hard for us to answer this question accurately, apart from pointing at download statistics (approximate 40,000 per month, if you were wondering). However, this doesn’t necessarily reflect how many people are seriously using OGRE.

So, why does it matter? Quite aside from it being nice to know, the practical reason is that the size of the user base influences how 3rd parties perceive us, and specifically how much priority is assigned to support requests we place with 3rd parties such as graphics card manufacturers and driver writers. Put simply, if we can show we have a large number of companies using OGRE for serious projects, the more resources we can get assigned to our support requests.

Since ‘gating’ downloads with forms requiring contact information is both undesirable and impractical in an open-source project, I’m instead running a survey to try to collect this information. It’s not perfect of course, since as an opt-in process it will ‘undersample’ the number of people using OGRE, but I’m hoping it will be enough. Please participate if you’re a serious OGRE user - the survey is short and sweet, and you don’t have to provide any identifying information if you don’t want to. However, if you are able, I would ask you to opt-in to provide a bit more information like your company name and projects, since having specific companies and projects to refer to can probably help our cause.

Thanks for your time!

I’ve had a pretty good response so far, in the last 12 hours or so we’ve had over 250 people completing the survey. However, the more the better! People I speak to at graphics card manufacturers etc regularly tell me that more definite information about the make-up of our user base is important for attracting more support resources to our cause when we need them, so I’d appreciate if you’d help us persuade them :)

Alpha to coverage support added to OGRE

OGRE 9 Comments

With only a couple of days to go before the feature lock-down of Ogre 1.6, in time for a release candidate next week, I decided to squeeze in one more feature of my own - Alpha to Coverage support. This allows the use of Multi-sample Anti-aliasing (MSAA) on transparent texture edges as well as the more usual polygon edges.

It headlines as a Dx10 feature, but in fact both ATI and NVIDIA have exposed it on GL and on Dx9, the latter via some nasty ‘magic’ state hacks since Dx9’s API doesn’t include it. They weren’t as nasty as I thought though, and since someone raised it in the forum recently, plus the fact that I’d been manually turning it on in the NVIDIA control panel for OgreSpeedTree, I figured I might as well add proper support for it.

In the image (if you click to get the full-size version), you can probably tell that the leaf on the right has alpha to coverage enabled, and the one on the left doesn’t - the right-hand one looks nicer, obviously. It does have an overhead of course, but those with decent cards will appreciate the extra quality I’m sure, and you can enable it on a per-pass basis in your materials to target it where you need it, which is better than enabling it across the board in the control panel like I was doing before. I’ve tested it on Dx9 and OpenGL on my GeForce 9800, and my Radeon HD 2900 (I guess I could update that, but it’s only a test box after all!) and it works nicely.

Yet another reason to upgrade to Ogre 1.6 :)

Parallel-split Shadow Maps are cool

Development, OGRE, OS X, Uncategorized 2 Comments

OgreSpeedTree with PSSMWe’re on the final home straight for Ogre 1.6 (aka Shoggoth), which should hit RC1 next week. One of the final features I wanted to squeeze in was support for Parallel-split Shadow Maps (PSSM), which uses multiple shadow maps per light in a hierarchical fashion to improve the quality while keeping the size down, particularly in outdoor scenes using global directional light. If you’ve played Assassin’s Creed, you will have seen this technique in action already.

For example, the screenshot on the right there is using 3 shadow maps for the single directional light, the closest one being 1024×1024, and the other two being 512×512 - together they are 38% of the size of a single 2048×2048 shadow map and yet provide greater detail. The 3 shadow textures are displayed for debug purposes on the right - notice that all 3 are using LiSPSM projection to bias the texture precision toward the camera which also helps. If you look really closely on the full resolution shot, you can see the transition from the highest resolution shadow map to the second shadow map about halfway up the screen, it changes near the top of the closest tree shadow. It’s quite hard to see though, which is kinda the point :)

One of the challenges with supporting PSSM is that Ogre had previously assumed that there is a 1:1 mapping between lights and shadow maps, which clearly had to be overcome - this limitation also prevented easy use of dual parabaloid and full cubic shadow maps for point lights of course. It was one of those things that had been languishing on my TODO for a while, begging me to find some time for it, and that’s where it still was until Pang Lih-Hern (aka lf3thn4d) from Malaysia came along and did it for me :) What a star! His initial patch allowed multiple shadow textures per light in a very sensible way, and he then implemented a PSSM facility on top of that, via our pluggable ShadowCameraSetup system (which he also extended in the patch to be aware of shadow map iteration). I adapted the PSSM code from his demo to be a little more flexible (it now handles any number of splits, and a more flexible split configuration) , so that setting it up goes something like this (simple projected shadows here, depth shadowmaps are also possible of course but let’s not overcomplicate it):


float shadowFarDistance = 3000;
mSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_ADDITIVE_INTEGRATED);
mSceneMgr->setShadowTextureCountPerLightType(Light::LT_DIRECTIONAL, 3);
mSceneMgr->setShadowTextureCount(3);
mSceneMgr->setShadowTextureConfig(0, 1024, 1024, PF_X8R8G8B8);
mSceneMgr->setShadowTextureConfig(1, 512, 512, PF_X8R8G8B8);
mSceneMgr->setShadowTextureConfig(2, 512, 512, PF_X8R8G8B8);
PSSMShadowCameraSetup* pssm = new PSSMShadowCameraSetup();
pssm->calculateSplitPoints(3, mCamera->getNearClipDistance(), shadowFarDistance);
pssm->setSplitPadding(mCamera->getNearClipDistance());
pssm->setOptimalAdjustFactor(0, 2);
pssm->setOptimalAdjustFactor(1, 1);
pssm->setOptimalAdjustFactor(2, 0.5);
mSceneMgr->setShadowCameraSetup(ShadowCameraSetupPtr(pssm));
mSceneMgr->setShadowFarDistance(shadowFarDistance);

Notice that I used Integrated Shadows, this is a requirement of PSSM since only shaders with integrated shadow support can decide on the fly which shadowmap to sample from.

My sincere thanks to lf3thn4d for helping us get this feature in to Ogre 1.6 (and to all those who send us patches in fact). If you want to see it and OgreSpeedTree in motion, there is a video available; that’s the low-quality streamed version but you can also download the higher resolution version if you want.

Lag Issues

Business, OGRE, Travel 1 Comment

I’m finally back at home and beginning to return to normal, trying to iron out the wrinkles in my sleep cycles. I’ve done 12 flights in the last month (I’m trying not to think of my carbon footprint, although at least I rarely drive back home) with a time zone range of 10 hours and I’m certainly feeling it - I’ll be happy to be settled in one place again for a while!

Siggraph was fine, very hectic with some long hours on the booth and some very late evenings at the office - as such I was lucky if I got to check my email for 10 minutes in the day, never mind trying to cope with the OGRE forum. I managed to meet up with a number of people from various companies in between working for my client which was great (such as AMD, NVIDIA, IDV, FMX), and even got recognised a couple of times by people I didn’t know which was kinda cool. On a personal level it was also great to finally meet Andres Carrera, aka Lioric, oFusion creator and long-time OGRE community member & GSoC mentor, who turned out to be a really nice bloke who was a lot of fun to be around. He doesn’t like to travel much and getting a US Visa from his home in Argentina is stupidly difficult so I was really happy to get the rare opportunity to meet him. I was also very happy to run into Sean Morrison from BRL-CAD and BZFlag again, which I always seem to do whenever I’m in the US!

It might have been nice to have some leisure time in LA, but there really wasn’t any time prior to or during the show, and I literally went straight from the closing of the show in the afternoon to the airport for my overnight flight, because I needed to get back in time for my cousin’s wedding yesterday. Luckily I made it, although a combination of sleep deprivation and jet lag meant I needed precision doses of coffee and Red Bull throughout the day :)

So, I plan to catch up with my email today and perhaps brave the Ogre forums tomorrow, although ‘catching up’ with those is probably impossible - I’ll skim and try to pick out anything important. My focus for the coming week will mostly be OgreSpeedTree and getting Ogre 1.6 even closer to RC status. The Google Summer of Code also finishes this week so I’ll be on hand for that if any organisation assistance is needed.

Sleepless in … LA

Business, OGRE, Travel, Uncategorized 4 Comments

I arrived in LA either Saturday night or Sunday morning depending on whose watch you believe, and am coping with the inevitable jet lag. Working helps to some degree, since it keeps you active, until you hit that ‘wall’ where suddenly your brain holds up it’s hands and says “I don’t care what the clock says, it’s 3am”, before grabbing its hat and coat and sodding off, leaving you a hollow shell looking at a screen full of C++ going ‘buh?’.

I’m staying in Torrance since that’s close to my client’s offices, but we’ll be heading downtown to get registered for Siggraph today I’m sure. I have a fair few things in my diary for the next few days so hopefully I’ll be lucid enough.

If you’re at Siggraph too and want to say hi, drop me an email (sinbad at ogre3d dot org or steve at torusknot dot com), I’ll check my email as often as I can. Alternatively you may find me on the ‘Works Zebra’ stand on the AMD booth (#323) where I’ll probably be from 3:30pm Tuesday, 12:30pm Wednesday and 1pm Thursday. The company will also have a presence on the Vicon booth (#1101) at times although I don’t think I’ll be needed for that. Bear in mind I’m there for my clients while on booth duty though, so if you want to yak about Ogre & unrelated TorusKnot stuff we’ll have to arrange to meet again later on.