Glow, silhouettes, cube lighting, fresnel reflection, ...

All I could learn from this forum in 20 screenshots here :
This post is here to discuss features so feel free to comment / flame all you see.

Still missing hatching and shadows … coming soon …

The game should be signed to a publisher soon, thanks for your help all,


[This message has been edited by SeskaPeel (edited 11-25-2003).]

A little cartoonish, but I suppose that’s intentional?

The cartoonishness is intentional. If you look there’s an NPR silhouette on all scene objects.

Nice work, well done.

very stylish cartoony… first you don’t note it… then you feel it looks somehow surreal, painted…

looks cool

Cartoonish is certainly not what I intended to do, but “painterly” fits well. Actually, this feeling comes from the fact that the textures are painted, and from silhouettes. Still working on hatching (per pixel hatching is a pain in the ass as ARL function is not effective in fragment programs). Still working on pre computed radiance transfer too.

There’s a nice work done on silhouettes : they are lit by a fragment program instead of being simply rendered black.

I’m a bit disapointed that you didn’t talk about the sky. Of course screenshots don’t reflect it, but the sky is changing dynamically, smoothly blending from one cube map to another. I render to texture those cube maps so that they can be correctly relfected on the sea. I also render to texture the associated cube map for directional lighting, so that the scene is correctly lit each time of the day (the lighting cube map can be considered as a blurred lowfrequency low resolution of the skybox). This method can give any effect you want (cel shading, …), at artist wishes.

The second stuff I particularly like is the “glow” effect, that is a superb obfuscation of the classical algorithms. There’s no alpha channel to encode radiance, neither any high dynamic range effect. Only a full screen grab, blur and blend.

Other feedbacks, or ideas of what could be done to add even more painterly rendering style ?


I agree, it looks pretty cool! It has a softer feel that’s quite unlike what’s seen in most games. Quite refreshing. . .

Good stuff, especially the sky
(you really need it to be a cubemap?)

You should take a look at the Prince of Persia game on the xbox to see a fine example of this kind of image-space effect (blurring/glowing etc).

I was just gonna mention Prince of Persia as I was catching up on the thread, but you beat me to it.

P of P has a nice pastel effect with some post processing to soften it up a bit & help with the light bloom.

Knackered : I don’t understand the “do you need it to be a cubemap ?” …

What are other alternatives ? Having 6 different textures ? We first did it this way, and we simply finf it easier using a cube map and tweaking the matrix texture to have the sky rotate with the sun.

Actually, our sun position is computed using ephemerids, you give longitude, latitude, year, month, day, hour, minute and seconds, and it outputs the correct position of the sun.
So that at sunset we can have a red/pink skybox, looking nice, with colored distant clouds too, we needed it to be artist generated. Now we had to make the skybox “track” the sun position, so that when the sun rotates, the skybox rotates with it too. This way, the artist only needs to draw skyboxes where the sun doesn’t rotate, only the altitude is changing. I’m not sure how clear my explanations are …

And finally, I wanted to avoid overdraw, so the sky is rendered after opaque geometry, and before translucent geometry. In a previous thread, I asked how I could do this, and I don’t remember who answered me, but the method was cool (the concept was to tesselate a plane ortho to the screen, at the correct depth, so that polygons that are hidden by geometry are be culled efficiently). Each vertex texture coordinate is computed at startup and compiled in a display list. We only tweak texture matrix (and only a rotation over the Y axis).


[This message has been edited by SeskaPeel (edited 11-26-2003).]

You keep saying “we”. Are you working alone or is there a team?

We are a team of 7 developers.

I suppose the question was even more that what it seemed so I’ll answer before it being asked :

1 working on texture loading and all Win32 API related stuff (audio, input, window creation and PFD, ActiveX, …) (21 years old)
1 (very new) working on state engine and soon on biped physics (33 years old, former Ubi Soft R&D team)
1 working on GUI (28 years old)
1 working on exporter (25 years old)
1 researcher (silhouette detection, stripifier, collision detection, morphing and skinning …) (23 years old)
1 working on aerial stuff (clouds, skyboxes, ephemerids, sun) and animation controllers (24 years old)
and your humble servitor working on all cited above (state of the art survey, conception, lead, human resources, coffee maker) + quite all development on graphical aspect (mostly OpenGL related) (26 years old).

I’m slowly passing all the implementation work to my colleagues because managing my company is a huge time consumer. Even the lead will go to someone else (leading the leader from the shadows is better than being insulted).

All the team is new to CG (1 year experience starting from scratch or from college level), except I with 4 years. We are only 2 on 7 that worked in a company before.

In french you literally call this a “broken arm team”. But the result begins to show up, I hope. This forum is an invaluable resource, along with NVidia website.

This is it,

Dorbie and knackered : we inspired from P&P Sands of time for this effect. I still didn’t see what it looked like real time animated.


Prince of Persia is not only one of the best looking games I’ve ever seen (at a very high frame rate), but it is also one of the most enjoyable games I’ve played in years. It gets my stamp of approval, for sure. You should all take a look at it. We’re so up to date aren’t we dorbie? Unlike these ignorant 26 year olds…

I suppose with a flying game you should put this much effort into rendering the sky (cubemaps etc.) - it’s just that in ground based games I’ve never seen the point in putting much effort into the sky.
BTW, is this game going to be something like Pilotwings64?

Knackered : yes, kind of.

Originally posted by knackered:
Good stuff, especially the sky
(you really need it to be a cubemap?)

You could tell it’s a cubemap just by looking at the pics?

The graphics looks pretty good if you are going for that painted look. Specially the rocks. I wouldn’t mind beta testing this!

The water needs a fix :
Here it looks nice

and the others, not as good.


for the water, we have a problem involving mip mapping of the bump map, and the mesh (a basic plane) for the water is not as large as it should be. Actually it should be infinite, but I don’t know how to do this correctly. We tried a huge mesh, but frame rate dropped down drastically …

We could offset the skybox a bit down so that we won’t have a seam problem at the horizon, but we missed time to do that.

And now we are rather working on trees (it was a pain in the ass for the artist to position those 1000 trees, and we need 10 thousands of them), and on the shadows (shadows under the trees - lightmap ? - , and shadows under the plane - stencil ? -)

For the beta test, you’ll have to wait one year at least. I’ll sure post an annoucement in here (not out of topic : test of the OGL rendering engine).


Originally posted by SeskaPeel:
the mesh (a basic plane) for the water is not as large as it should be. Actually it should be infinite, but I don’t know how to do this correctly. We tried a huge mesh, but frame rate dropped down drastically …

You could use vertices with W=0, although I’m not sure how you’d texture a mesh that has a few of those in it (use texcoords with Q=0, I guess). The easiest solution is probably to use a finite mesh and to cover up the edges with fog instead.

– Tom

I would certainly intersect the plane with the view frustum. You’d need to make up some kind of horizon for an infinite projection though.

Madoc, actually, intersecting with the view frustum would give some bad results, as the plane won’t be infinite.

It won’t be if I used an infinite projection matrix, but going this way, there’s no need ot intersect with the view frustum.


Talking about skies, it is worth taking a look at

(It’s a pity that there are no high dynamic range ones)