All I could learn from this forum in 20 screenshots here : http://dev.succubus.fr/3D/Gallery.htm
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,
SeskaPeel.
[This message has been edited by SeskaPeel (edited 11-25-2003).]
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 ?
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).
SeskaPeel.
[This message has been edited by SeskaPeel (edited 11-26-2003).]
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.
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?
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.