Immortal Isles - Gfx demo

Here is the graphics demo for Immortal Isles, my MMORPG project. It features my Shader Generator, and my Terrain System. Currently you can run around and look at some fancy graphics effects, and thats about it.

My shader generator has the ability to specify flags that effect the generated shaders, and my rendering system uses this to support both forward and differed shading. The “Fancy” version features the full deferred shading, cartoon inking, SSAO (my own implementation), and dynamic lights. The “minimal” one lacks those, but still has normal maps, and glow+bloom, and uses the same lighting equations (thanks to my shader generator making that easy!). I should have exposed the selection between these modes (and specific feature toggles) in menus, or on the command line, but I haven’t yet.

My terrain system provided procedural ferns and trees with LODs scattered over a selected part of the ground, and loads the vegetation in tiles asynchronously from a pre-generated cache.

wasd+qe (move and turn)
mouse1 and mouse2 drag (free-look and mouse steer, both=mouse drive)
scroll wheel (zoom)
arrow keys (free-look again)
shift (fast run for debugging)
[ ] (adjust exposure up/down, will be automatic eventually)
space (jump)
v (view buffers)

Known Issues:
This is the first demo release of any kind. There is no gameplay, and there are massive random holes in the map, and seams everywhere. The collision is very poor (enjoy falling infinitely and relaunching). Ground has bad aliasing issues.

Please report any graphics issues, or crashes. The main purpose of this release is to get an idea of what computers which effects work on. When reporting a graphical issue, please include a screenshot with the buffer shown (hit v) if possible. For both graphical issues and crashes, include terminal output or the p3dseccsion log (which contains the same output).

In addition to test results, I’d like comments and suggestions on the graphical style taken. I’m going for a happy magical fantasy world vibe.

One tester saw this on Windows:
We shall call this the “saturated SSAO bug”. Let me know if you see it, and what OS+GPU you have, but I don’t need more logs or images of this particular issue.

Please try the fancy one first. It requires some pretty serious shaders so it is likely to fail. If it fails, try the minimal version. The Panda3D Runtime is required to run the p3d files. They should work on all supported operating systems (Mac+Windows+Linux+anything else you can get panda onto) as long as a modern GPU is present.
You can get the p3d files here:
The new fancy version accepts some command line switches:
panda3d ImmortalIsles.p3d -deferredShading
this runs without deferredShading, which is the mode the minimal version runs in. The available options are:

The fancy version start:

The minimal version start:

Another place on the fancy version:

Another place on the fancy version:

Thanks, and I hope you enjoy this gfx demo. I’m happy to answer any questions regarding how it works.


I have the AO bug as well :

Nvidia Gtx 260 - drivers 285.58
Windows XP 32 bits

Will test on linux as soon as possible.

AMD Athlon™ II X2 250 @ 3Ghz.
ATI Radeon HD 5450.
64-bit Ubuntu Linux (11.10).

The “fancy version” runs pretty well, effects etc. all good. On the default window size (whatever that is - looks about 640x480) - 40 or so FPS. If I resize the window to about 1200x1024 I’m down to 12fps.

Hope that helps. :slight_smile:


Thanks for the testing!

Looks like nvidia’s drivers have some issue with my SSAO on linux and windows.

Running with “-enableSSAO” (no enableSSAO) like:
“panda3d ImmortalIslesFancy.p3d -enableSSAO”
should turn it off and avoid the ugly broken effect if its not working for you (and it should also drastically improve frame rate).

I have the results I wanted from this round of tests. Thanks again everyone one! I’ll update this thread when there is a new version with some new stuff to show/test.

you’ve done some nice work mate :slight_smile:
keep it up!

New build here:

I decided to test that my build system still works with panda 1.8.0, and it does, so have a build :slight_smile:

Some images from this build:

Not much progress over the last build really, but a few things have been tweaked (lights, lighting style, map). I imaging it still has the SSAO bug for a lot of people.

I’ve been having some issues with my new dae based map pipeline, so the geom count is way high in this build.

Hi, looks like nice progress.

I have this error :

File "ImmortalIsles.p3d", line 3
SyntaxError: Non-ASCII character '\xab' in file ImmortalIsles.p3d on line 4, but no encoding declared; see for details

Maybe related to 1.8 (dev version here), I have same error with your first .p3D; was working with 1.7.2.

Hope it helps.

You’re trying to run it with python instead of the Panda3D runtime.

lol, right ! working now.

I have the AO bug as with previous version :confused:

Wow. that looks great!

How about posting some of the screenshots to the gallery?

Keep up the good work.

I’ve got some new art in-game, and have been cranking up the stylized effects in the shaders. There are a bunch of screenshots here:

Here is a sample thumbnail. Go see more/bigger at the link above.

There is no updated release yet.

Man, amazing light effects. Doesn’t that make the FPS rate go down to hell?

Only thing your pics are missing are shadows. They’d boost the graphics onto AAA level.


The SSAO, Glow+Bloom (windows, lanterns and such) and directional light are all does in post process, which is a bit slow, but not too bad really (It runs a bit slower than I would like on my 3+ year old macBook pro, but thats ok). All the fancy effects can individually be toggled on/off in a settings file too.

The point lights need a lot of performance tuning, but as deferred lights, they only really have issues when you get a lot of overdraw. Once they are intelligently placed instead of randomly scattered, their sizes can be better tuned, and it should run+look much better. Also, I can dynamically shrink their lighting volumes by quite a bit if the frame rate gets too low, which only has small effects (specular refections from them tend to be cut off and such).

I’m excited to get my lights hooked up to the glowy things: those lanterns just have bloom+glow, no actual lights attached, and look at all those random scattered lights. It would be so much better if they matched :slight_smile:. The main issue there is bad dae support, and exporter issues.

As for shadows, they are a pain, and I don’t really know if I want them. Its really only practical to do them on the directional light. Wow used to not have shadows, and last I checked they had shadows from characters and such, but not terrain (weird!).

Thats not all thats missing though. There is still a ton to do: lighting volumes for colors space transforms, fog/dust, forward shaded translucent objects, grass, wind effects, particle effects, flicker light effects, dynamic sky box and animated texture+normal maps for water+lava etc. So much to do! Also, for one of our game play mechanics, I want portal rendering, but thats another story :slight_smile:

I got the lights hooked up to the lamps and such. It went easier than I expected:

Again, lots of new screenshots are up at:

I was testing that my build script still works, and thus happened to produce a working build. I figured I’d share incase anyone wants to give it a try.

New art, and some improved model preprocessing are included in this an updated build here:

Now most of the geometry is split into the terrain tiles, which helps keep the geom and triangle counts down, and really helps load time since most of the map is streamed in asynchronously. Still needs real LOD meshes though.

Also added is some basic depth fog.

There is a lot known to be broken map wise (random holes, duplicated faces, messed collosion etc), and I assume the SSAO bug is still present.

New build is up. Improved lighting, larger+more detailed map, and better async-terrain loading.

Get it at:

I’ve added some ambient light for the various areas of the map, and adjusted the the automatic brightness adjustment more dynamic range so its brighter (you can actually see) at night. The response time in intentionally a bit slow, so when entering a bright/dark area it appears bright/dark before adjusting, but in the current builds, this also makes sunrise a bit blinding since the sun rises really fast (60 seconds days!).

More images at

One thing that really needs to be done is more stuff needs to change over time. Since my lightning is completely dynamic, there is no reason not to have a bit of flicker and motion (wind etc) everywhere, and I think it would really help the feel a lot.

Also, for most of the content there is no LOD, and the mesh flattening is pretty bad, so I set the cull distances very low for the smaller meshes. This needs to be fixed! The collision is also pretty broken. Lots to do!

I got an Nvidia card for my Windows box and thus have now fixed the Nvidia Windows (and also Linux) issues I think. Looks like 2 unrelated shader compiler bugs were the cause of 3 rendering bugs I had (Including the SSAO bug).

The build linked in the previous post has now been updated with these fixes, as well as some tweaks to the lighting and bloom.

Looks great Craig! Have you decided what you want your gameplay to be like?


Yes, we have the gameplay pretty much fully designed, including lore, lists of abilities, balance, PvP, PvE etc. Currently I’m working on getting it implemented to the point where we can do game play tests and see how fun the design is, and how much we have to change. As tempting as it is, I’m going to avoid publishing page after page of gameplay plans at this point, since its all subject to change.

I will say that it will be an MMORPG with a focus on PvP. I think its a new take on MMORPGs, and I think it will work well, but we will have to wait and see. There are a lot of issues we saw with existing MMORPGs, and by making a few tradeoffs, I think we fixed all the ones that bothered us personally and got the project down to a scale we could manage (as 1 artist, and 1 coder).

I’m hoping to have minimal PvP gameplay tests in a few months.