Quake III: Arena Gate (the Milky Way :)

(DynAsm and DynC Practices in OpenGL Projects)

Moderator: Mike Lobanovsky

Quake III: Arena Gate (the Milky Way :)

Unread postby Mike Lobanovsky » Fri Jun 25, 2010 11:30 pm

Dear all,


When I first published the Run Baby Run script here (http://www.fbsl.net/phpbb2/viewtopic.php?p=8538#p8538), Codeman said it was OK but the FPS rate was misleading because of the lack of proper lighting, or textures, or lightmaps, or dynamic meshes, etc etc etc...

I didn't answer then but I felt it a challenge, and now I am nearly 85 per cent through with it, and I just can't help boasting ... :D

Those who don't know would say: this is Quake III Arena. Those who know, wouldn't. They'll say: this LOOKS like Quake III Arena, very nearly but not quite.

OK, this isn't Q3A. This is NOT A GAME, this is a TOY. This is a MilkShape 3D model of the first and the most well-known level of the magnificent 3D shooter by ID Software released way back in 1999. That release ushered in a new era in 3D game engine development, and when the Q3A engine's sources were later very generously made public by ID Software, a whole bunch of competitive shooter games sprang up, both professional and otherwise. Suffice it to say that the Quake III: Team Arena shooter game (the web-based variety of the original multiplayer Q3A shooter) is extremely popular even now, more than a decade after the original release.

So, what you see here is a model. Of course, it uses some basic orthogonal geometry from the original Q3A level to keep the general proportions intact. And of course, it uses a lot of textures from the original level pack supplied with the demo version of the game.

But this is where similarity ends.

This model and its viewer DO NOT use a single line, not even a single byte, of the original source code released by ID Software. No BSP trees, no multitexturing, no geometric LOD tricks, no NURBS surfaces, and of course, no player models. Mostly, just because the MS3D model's tight format doesn't allow for all that.

Still, in order to keep the flavor of the game intact, the viewer (which is an extremely simplified version of Codeman's MilkFarm v2 MS3D Explorer) uses a first-person camera, basic bilinear mipmapping, simplistic box-in-frustum culling, point-in-rectangle collision detection, and MS3D bone animation to control the dynamic portions of the scenery ('map objects', in Q3A terms).

The model viewer uses very simple OpenGL v1.3 techniques to reproduce ALL of the original eye-candies of the level ranging from the dynamic burning flames thru the sparkling energy aura and glistening pools of flowing blood to the blinking magic letters on the devil's computer screen.

The viewer uses my own home-brewed light-and-color map on the major surfaces of the model to emulate the original colorful per-poly lightmaps of the game. The exact replica would nearly double the model's poly count and, apart from that, the MS3D format does not allow for storing natively a second, alternative set of texture coords for use with a genuine lightmap (perhaps, only as a set of literal numeric values stored as an ASCII-format comment to each group of renderable polygons).

Of course, the model can also be viewed in an editor, the most suitable being the genuine MS3D model editor (http://chumbalum.swissquake.ch) and also the free LithUnwrap UV mapper easily googled for on the net.

BUT! The static camera viewpoint, poor lighting, and absolutely inedequate all-purpose SRC_ALPHA/ONE_MINUS_SRC_ALPHA transparent blend function characteristic of almost all MS3D editor/viewer tools available on the net ruin the beauty of the model.

Instead, the viewer uses 8 real-time light sources and custom texture matrix transforms and blend functions for almost half of the poly groups being rendered.

All NURBS surfaces have been emulated with their low-poly editable mesh equivalents. The geometry objects not readily found in the demo distribution pack have been replaced with their equivalents developed by various modders and published openly at various sites on the net.

The viewer renders all of the static and texture-matrix-driven dynamic geometry through the use of VBOs, and it uses the conventional CPU with Dynamic Assembler vector/matrix/quaternion math routines to render dynamically moving scenery objects.

On my 2.2-GHz genuine Intel with 1.0-MB GeForce 8600 in a 1640x870-pixel window, the FPS rate varies from 250 to 450 frames per second depending on the frustum (camera view) orientation. The model comprises about 26,000 vertices (23,000 triangles), 128 groups and 128 materials (the upper limit for a single MS3D-format model).

When ready, the model and its viewer will be available for download.

Why am I doing this? Firstly, for fun - it is easy to reproduce somebody else's code and claim you have re-invented 'a game engine' (ROFL) but it is more difficult and challenging to find your own alternative ways. Hence, secondly, for self-education. Thirdly, to show that the most genial things are more often than not rather simple and obvious. And lastly (but not, uhm-hm-hm, least-ly), as an appreciation of the tremendous impact ID Software's original effort has made on the entire gaming world.

@Gerome: Sorry for the extra space needed for the pictures - the beauty always requires a sacrifice.. :) We can delete them when the download is ready... :)

@Codeman: Chris, I promise: you'll be the first to enjoy the model AND the source code... :D


Yours,

Mike :)
Attachments
Q3A_1.jpg
Q3A_1.jpg (549.85 KiB) Viewed 4277 times
Q3A_2.jpg
Q3A_2.jpg (908.14 KiB) Viewed 4277 times
Q3A_3.jpg
Q3A_3.jpg (593.37 KiB) Viewed 4277 times
Q3A_4.jpg
Q3A_4.jpg (581.04 KiB) Viewed 4277 times
Mike
"Я старый солдат, мадам, и не знаю слов любви."
"I am an old soldier, ma'am, and I don't know the words of love."
"Je suis un vieux soldat, madame, et je ne connais pas les mots d'amour."
"Ich bin ein alter Soldat, gnädige Frau, und ich weiß nicht die Worte der Liebe."

__________________________________________________________________________________________________________________________________________________
(3.2GHz i5 Core Quad, 8GB RAM / 2 x nVidia GTX 550Ti SLI-bridged, 2GB VRAM)
(x86 Win XP Pro Russian Sp3/x86 Win Vista Ultimate Sp2/x64 Win 7 Ultimate Sp1/Wine in x64 elementaryOS Luna)
User avatar
Mike Lobanovsky
FBSL Administrator
FBSL Administrator
 
Posts: 1824
Joined: Tue Apr 19, 2005 8:22 am
Location: Republic of Belarus

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Codeman » Sun Jun 27, 2010 3:28 pm

looking good ^^
_-=<(¯`·._.·[ CodeMan ]·._.·´¯)>=-_
Your only limit : Your imagination

FBSL V3 TESTED On :
Image

Chris 1 (Corei5-4460S 2.9 GHZ w/ 16GB RAM, GeForce GTX 745 w/ 4GB VRAM, Windows 8 x64 Fr)
Chris 2 (2.0GHz AMD Atlon 64 X2 3800+ w/ 4GB RAM, GeForce 9600GT w/ 1GB VRAM, Windows 7 x64 Fr)
Chris 3 (Tablet pc : ASUS Transformer Book T100)
User avatar
Codeman
FBSL Administrator
FBSL Administrator
 
Posts: 497
Joined: Sat Nov 24, 2007 4:33 pm
Location: France

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Gerome » Sun Jun 27, 2010 8:25 pm

MARVELLOUS !!!!!!!!!!!!!!!
Yours,

(¯`·._.·[Gerome GUILLEMIN]·._.·´¯)
:: Full SETUP w. HELP 05th of December 2011 ::
http://www.fbsl.net/setup/FBSLv3.exe [full v3.4.10 installation pack]
http://www.fbsl.net/setup/FBSLv3bin.zip [minimal upgrade to v3.4.10]
Laissons les jolies femmes aux hommes sans imagination. / Let us leave pretty women to men without imagination.(M.Proust)
The success is a defeat for the one who does not want to dance any more! (H.F. Thiefaine)
User avatar
Gerome
FBSL Administrator
FBSL Administrator
 
Posts: 3149
Joined: Sat Mar 12, 2005 9:06 pm
Location: Paris -- France

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby taobert » Sun Jun 27, 2010 9:56 pm

Waow :shock: :P 8)
> B e r t r a n d <
User avatar
taobert
FBSL geek
FBSL geek
 
Posts: 318
Joined: Sun Oct 29, 2006 4:22 pm
Location: France (Nord)

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Mike Lobanovsky » Sun Jun 27, 2010 10:54 pm

Codeman wrote:looking good ^^


No Chris, "good" is a bit out of place here ... :D It is looking bloody damn gorgeous, it is so nearly perfect for a model that I sometimes can't tell which screen I am looking at -- the original game scenery or the MS3D model of it! :D So c'mon, Chris, go google up some better, juicier adjectives! :D
Mike
"Я старый солдат, мадам, и не знаю слов любви."
"I am an old soldier, ma'am, and I don't know the words of love."
"Je suis un vieux soldat, madame, et je ne connais pas les mots d'amour."
"Ich bin ein alter Soldat, gnädige Frau, und ich weiß nicht die Worte der Liebe."

__________________________________________________________________________________________________________________________________________________
(3.2GHz i5 Core Quad, 8GB RAM / 2 x nVidia GTX 550Ti SLI-bridged, 2GB VRAM)
(x86 Win XP Pro Russian Sp3/x86 Win Vista Ultimate Sp2/x64 Win 7 Ultimate Sp1/Wine in x64 elementaryOS Luna)
User avatar
Mike Lobanovsky
FBSL Administrator
FBSL Administrator
 
Posts: 1824
Joined: Tue Apr 19, 2005 8:22 am
Location: Republic of Belarus

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Mike Lobanovsky » Mon Jun 28, 2010 2:08 am

Well Chris, again, perhaps you just didn't notice: this isn't just another Q3A BSP loader rewritten for a hundredth time from ID Software's sources as a high-school homework.

This is all about doing the same things by completely different means! :D Not because FBSL can't bear porting professional C code -- I assure you, it can! I tried it, and it worked! :D BUT IT AIN'T FUN! :D

Besides, I stress again: this is a model. You can toy with it, turning it round and examining each and every detail at any angle and from any viewpoint you like, inside and outside, and it will remain a causa sui - a finished, self-sufficient and integral piece of geometry (you know my sensitivity to all-in-one-piece products ;-) ). And it is within a hand-reach of becoming a 'game engine', forgive me God for using here this term so often used and abused everywhere over the net to denote ugly but ambitious home-made trash.

D'you know what a player would see were he/she allowed to go through the walls in the original Q3A? Have a look at Orig_Q3A_Sideview.jpg below! See these pieces of scenery torn apart by rigorous frustum culling in a chase for a couple of extra FPS? Do you know why the Carmacks didn't let their 'health' balls roll together with the crosses? Just because everyone would see that most of the time, they are not balls at all - they are at best octahedrons, again for the sake of a couple more FPS. Do we need this LOD trickery in a model? I doubt it.

Now have a look at My_Q3A_Sideview.jpg snapshot taken at almost the same viewpoint -- do you see what I mean by 'a model' as opposed to 'a game level'? Tired? Welcome inside, and enjoy the familiar surroundings of the Hell's Gate as the Carmacks prescribe and I allow. 8)

A little on mipmapping. I think mipmapping (bilinear, trilinear, whatever) has been invented by a physiologically short-sighted egghead wearing -8 goggles in bed with his girl-friend. I've personally always been able to read the lowest line of the table at the ofthalmologist's, and so do about 10 per cent of the younger population, to say nothing about another 25 per cent of people who are physiologically on the wrong side of fifty. MIPMAPPING IS NOT HOW WE SEE THE REAL WORLD! OVER 30 PER CENT OF US ARE FAR-SIGHTED AND ANOTHER 30 ARE NORMAL! THE FARTHER THINGS ARE, THE SHARPER WE SEE THEM! I've allowed for bilinear mipmapping in the viewer ONLY to preserve the original Q3A flavor. You can't switch it off in the original game... ;-)

More on home-made BSP loaders. The so-called 'BSP game engines' (95 per cent of them) would go as far as loading bare textures, and a few of them (certainly NOT all of them) would also be able to map them to the geometry more or less correctly -- see Q3A_orig_unlit.jpg for an example of what they will end up with... ;-) Another 5 per cent would also discover that there's also a mysterious something called lightmaps but since there're no explicit lightmaps in the texture pack, only about 1 per cent would get what you can see in Q3A_orig_lit.jpg (BTW watch that right foot of Visor's original statue not fitting into its pedestal -- whatcha call it, professionalism, eh? :lol: ).

But as soon as it comes to rendering original Q3A shaders (here 'shader' means 'material properties'+'texture'+'lighting'+'color/alpha blend function'), even with the aid of ID Software's original code, the home-brewed 'game-engine' writers end up with vague promises to add this support in the next version/build/release and then just abandon the topic and/or the site altogether.

Now have a look at My_Q3A_Plaza.jpg (a slight difference in brightness/coloring is due to the fact that the original Q3A brutally interferes with your monitor's brightness settings and also uses intrinsic gamma correction for the textures because the ordinary tga's and jpg's are too dark for the MODULATE blend function used in the original multitextured lightmapping). I repeat -- I am not using multitexturing, everything is done with a couple of extra transparent planes (actually about 800 extra polygons) in one and the same texture unit. My code is much simpler and yet, you can see -- the original geometry WITH rigorous frustum culling (very few surfaces rendered) and WITHOUT high-quality color-mapping and WITHOUT dynamic map objects and WRITTEN IN C renders at about 250 to 400 FPS while my FBSL CODE with rudimentary frustum culling (many surfaces rendered) and WITH extra planes and WITH light- and color-mapping and WITH dynamic map objects (health balls, weaponry, ammo, lights, blood, lava, flames, armor, etc.) and WITH two additional high-quality sky spheres (that's another 4100 extra polygons) renders at the same 250-to-450-FPS rate in a window that's nearly 1.5 TIMES LARGER!.. 8) What if I decide to use genuine BSP? 900 to 1000 frames per second? Easily... ;-)

Quake III: Arena was the shooter I played with everyone of my three sons, at different periods of my life. The oldest one is now 30, developing his own shooter games professionally (that's 'arilou' - one of the oldest forum members... :D ) I hope to live and play it with my grandchildren too. I think so far this has been the greatest shooter game, ever. Perhaps this is why I've chosen it, quite subconsciously, for my 3D exercises.

Mike :)
Attachments
Orig_Q3A_Sideview.jpg
Orig_Q3A_Sideview.jpg (315.68 KiB) Viewed 4243 times
My_Q3A_Sideview.jpg
My_Q3A_Sideview.jpg (733.97 KiB) Viewed 4243 times
Q3A_orig_unlit.jpg
Q3A_orig_unlit.jpg (680.92 KiB) Viewed 4243 times
Q3A_orig_lit.jpg
Q3A_orig_lit.jpg (720.51 KiB) Viewed 4243 times
My_Q3A_Plaza.jpg
My_Q3A_Plaza.jpg (927.72 KiB) Viewed 4243 times
Mike
"Я старый солдат, мадам, и не знаю слов любви."
"I am an old soldier, ma'am, and I don't know the words of love."
"Je suis un vieux soldat, madame, et je ne connais pas les mots d'amour."
"Ich bin ein alter Soldat, gnädige Frau, und ich weiß nicht die Worte der Liebe."

__________________________________________________________________________________________________________________________________________________
(3.2GHz i5 Core Quad, 8GB RAM / 2 x nVidia GTX 550Ti SLI-bridged, 2GB VRAM)
(x86 Win XP Pro Russian Sp3/x86 Win Vista Ultimate Sp2/x64 Win 7 Ultimate Sp1/Wine in x64 elementaryOS Luna)
User avatar
Mike Lobanovsky
FBSL Administrator
FBSL Administrator
 
Posts: 1824
Joined: Tue Apr 19, 2005 8:22 am
Location: Republic of Belarus

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Codeman » Mon Jun 28, 2010 4:51 pm

yup , you're right mike , as always you are about to do another "beauty" release also the last screenies show awasome rendering and lightening effects really nice :D
seems you now master opengl quite well mike :mrgreen:

also a good way to improve fps is to use rendertotexture to do doublebuffering instead of using the default opengl one :
a simple sample :http://willperone.net/Code/coderendertotexture.php
basically you render the geometry on a texture applied to a plane then just draw the end result plane quad on the screen, so you got more fps
it is like comparing betwen drawing a picture point by point and drawing it fully at one time. (hope you understand what i mean ^^)
_-=<(¯`·._.·[ CodeMan ]·._.·´¯)>=-_
Your only limit : Your imagination

FBSL V3 TESTED On :
Image

Chris 1 (Corei5-4460S 2.9 GHZ w/ 16GB RAM, GeForce GTX 745 w/ 4GB VRAM, Windows 8 x64 Fr)
Chris 2 (2.0GHz AMD Atlon 64 X2 3800+ w/ 4GB RAM, GeForce 9600GT w/ 1GB VRAM, Windows 7 x64 Fr)
Chris 3 (Tablet pc : ASUS Transformer Book T100)
User avatar
Codeman
FBSL Administrator
FBSL Administrator
 
Posts: 497
Joined: Sat Nov 24, 2007 4:33 pm
Location: France

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Mike Lobanovsky » Mon Jun 28, 2010 8:00 pm

Thanks everybody (including Chris this time :) ) for your kind words of appreciation! I hope I will not let you down in your expectations! :D

@Chris: Thank you also for this tip with the render to texture code! Does it really produce any visible increase in speed? Basically, the classic way also draws to a backbuffer then flips everything to the screen with a SwapBuffers() call... So how can there be any major difference? Does it mean that an FBO or a PBuffer are some special, faster sorts of buffers than the ordinary OGL backbuffer is? Or is it a workaround for the extremely slow SwapBuffers() process?

In my code, I tried to use the most basic OGL techniques described in the Red Book and available in all versions of OpenGL since v1.3 which is now over a decade old. They say some of them, BTW including hardware pipelining used in the original Q3A code and not present in my code, have become deprecated and will not be supported in the coming OpenGL v4.0 (at least, they are not included in its current specification), but God only knows exactly when this v4.0 is going to be actually released. My goal was to try and prove that the very basic skills are quite sufficient to produce quality results without copying and recopying each others' code like bad pupils at high school do not really understanding what's going on behind the curtains of OpenGL.

Another possible way could have been taking after all these modernistic trends towards GLSL with per-pixel lighting, bump/specular/glow/etc-mapping and the like, but all that would not give the look and feel of good old everlasting Quake III: Arena. That would have been another story -- Quake V: Fifth Dimension, perhaps... ;-)

Mike :)
Mike
"Я старый солдат, мадам, и не знаю слов любви."
"I am an old soldier, ma'am, and I don't know the words of love."
"Je suis un vieux soldat, madame, et je ne connais pas les mots d'amour."
"Ich bin ein alter Soldat, gnädige Frau, und ich weiß nicht die Worte der Liebe."

__________________________________________________________________________________________________________________________________________________
(3.2GHz i5 Core Quad, 8GB RAM / 2 x nVidia GTX 550Ti SLI-bridged, 2GB VRAM)
(x86 Win XP Pro Russian Sp3/x86 Win Vista Ultimate Sp2/x64 Win 7 Ultimate Sp1/Wine in x64 elementaryOS Luna)
User avatar
Mike Lobanovsky
FBSL Administrator
FBSL Administrator
 
Posts: 1824
Joined: Tue Apr 19, 2005 8:22 am
Location: Republic of Belarus

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Mike Lobanovsky » Mon Jun 28, 2010 9:37 pm

One Final Touch

Though the above snapshots show the MS3D model of Q3A Gate in the MDI environment of Chris' MilkFarm MS3D Explorer, the final release of the viewer will have its own, SDI (probably skinned) environment. The code will be completely OOP'ed following the modern programming trends.

I have already made some basic tests.

The feel of Q3A would be incomplete without its console, wouldn't it? So I decided to add my own console too, just for fun. But, in contrast to the original Q3A where it is just an ordinary OGL viewport with its own dynamic textures and text, my console would be a separate Windows GUI window.

But!

To preserve the visual effect intact, it will also be dynamic. See the attached snapshot and guess what you are looking at. ;-) A window with a tiled background and text printed over it? No! This is a true resizable and scrollable rich edit control with a dynamically moving two-layer background (solid bottom and semi-transparent top) and transparent text. Completely flickerless! Go google for a compatible solution -- you'll find none, though a few fair attempts have been made over the years the richedit controls are available! 8)

It uses the original Q3A console's two background textures but they are dynamically rendered with different speeds at about 30 FPS using Msimg32.dll's AlphaBlend function to give the full impression of being a true OpenGL window. The static snapshot makes the semi-transparent top background texture almost imperceptible but the overall dynamic effect is rather realistic.

I have not yet taken a final decision as to the source code licensing, but my prevailing inclination is to make it public domain which means open-source without any restrictions or obligations, not even those of the GNU General Public License which is, in fact, extremely restrictive and obligatory in contrast to what they allegedly claim.

That is, if Chris agrees to it because the carcass of the OpenGL rendering code is his creation.

Mike :)
Attachments
Console.jpg
Console.jpg (333.01 KiB) Viewed 4220 times
Mike
"Я старый солдат, мадам, и не знаю слов любви."
"I am an old soldier, ma'am, and I don't know the words of love."
"Je suis un vieux soldat, madame, et je ne connais pas les mots d'amour."
"Ich bin ein alter Soldat, gnädige Frau, und ich weiß nicht die Worte der Liebe."

__________________________________________________________________________________________________________________________________________________
(3.2GHz i5 Core Quad, 8GB RAM / 2 x nVidia GTX 550Ti SLI-bridged, 2GB VRAM)
(x86 Win XP Pro Russian Sp3/x86 Win Vista Ultimate Sp2/x64 Win 7 Ultimate Sp1/Wine in x64 elementaryOS Luna)
User avatar
Mike Lobanovsky
FBSL Administrator
FBSL Administrator
 
Posts: 1824
Joined: Tue Apr 19, 2005 8:22 am
Location: Republic of Belarus

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Codeman » Mon Jun 28, 2010 10:14 pm

so to answer quickly, rendertotexture use the gpu speed where the gl one use the pc ram so in loops you will gain a lot of fps i think :p

also you can distribute your code freely as i am rethinking some parts of the modeler code to enlarges its possibilities :twisted:
_-=<(¯`·._.·[ CodeMan ]·._.·´¯)>=-_
Your only limit : Your imagination

FBSL V3 TESTED On :
Image

Chris 1 (Corei5-4460S 2.9 GHZ w/ 16GB RAM, GeForce GTX 745 w/ 4GB VRAM, Windows 8 x64 Fr)
Chris 2 (2.0GHz AMD Atlon 64 X2 3800+ w/ 4GB RAM, GeForce 9600GT w/ 1GB VRAM, Windows 7 x64 Fr)
Chris 3 (Tablet pc : ASUS Transformer Book T100)
User avatar
Codeman
FBSL Administrator
FBSL Administrator
 
Posts: 497
Joined: Sat Nov 24, 2007 4:33 pm
Location: France

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Mike Lobanovsky » Mon Jun 28, 2010 10:48 pm

Codeman wrote:so to answer quickly, rendertotexture use the gpu speed where the gl one use the pc ram so in loops you will gain a lot of fps i think :p


I got it, Chris. Still, my code already uses VRAM in the form of vertex buffer objects to render all static geometry groups and also static geometry with texture-matrix-transform animation (that's about 90 per cent of the total vertex count). Dynamic geometry groups (map objects that use translation and rotation permutations of vertices) can't keep their data in static VBO arrays so they are rendered conventionally using your BuildFrame() interpolated transforms. I wonder if VBOs and render-to-texture can coexist and visibly improve the already high FPS rates. I have a couple of ideas how to improve the existing frustum culling efficiency using very cheap (programmatically-wise) tricks and perhaps that would be easier than re-writing the core code based on the new FBO/PBuffer approach... By my estimation, the new culling scheme may almost double the existing FPS rate... Anyway, I'll try to test the both approaches.

Codeman wrote:also you can distribute your code freely as i am rethinking some parts of the modeler code to enlarges its possibilities :twisted:


Thank you, Chris. I think I'll choose public domain then.

Mike :)
Mike
"Я старый солдат, мадам, и не знаю слов любви."
"I am an old soldier, ma'am, and I don't know the words of love."
"Je suis un vieux soldat, madame, et je ne connais pas les mots d'amour."
"Ich bin ein alter Soldat, gnädige Frau, und ich weiß nicht die Worte der Liebe."

__________________________________________________________________________________________________________________________________________________
(3.2GHz i5 Core Quad, 8GB RAM / 2 x nVidia GTX 550Ti SLI-bridged, 2GB VRAM)
(x86 Win XP Pro Russian Sp3/x86 Win Vista Ultimate Sp2/x64 Win 7 Ultimate Sp1/Wine in x64 elementaryOS Luna)
User avatar
Mike Lobanovsky
FBSL Administrator
FBSL Administrator
 
Posts: 1824
Joined: Tue Apr 19, 2005 8:22 am
Location: Republic of Belarus

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Mike Lobanovsky » Thu Jul 01, 2010 10:49 pm

This short-sighted mipmapping thing is a real PITA... ;-)
Attachments
Altar.jpg
Altar.jpg (722.79 KiB) Viewed 4194 times
Mike
"Я старый солдат, мадам, и не знаю слов любви."
"I am an old soldier, ma'am, and I don't know the words of love."
"Je suis un vieux soldat, madame, et je ne connais pas les mots d'amour."
"Ich bin ein alter Soldat, gnädige Frau, und ich weiß nicht die Worte der Liebe."

__________________________________________________________________________________________________________________________________________________
(3.2GHz i5 Core Quad, 8GB RAM / 2 x nVidia GTX 550Ti SLI-bridged, 2GB VRAM)
(x86 Win XP Pro Russian Sp3/x86 Win Vista Ultimate Sp2/x64 Win 7 Ultimate Sp1/Wine in x64 elementaryOS Luna)
User avatar
Mike Lobanovsky
FBSL Administrator
FBSL Administrator
 
Posts: 1824
Joined: Tue Apr 19, 2005 8:22 am
Location: Republic of Belarus

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Gerome » Thu Jul 01, 2010 11:03 pm

Mike Lobanovsky wrote:This short-sighted mipmapping thing is a real PITA... ;-)


WOWOWOWOW !!!
Yours,

(¯`·._.·[Gerome GUILLEMIN]·._.·´¯)
:: Full SETUP w. HELP 05th of December 2011 ::
http://www.fbsl.net/setup/FBSLv3.exe [full v3.4.10 installation pack]
http://www.fbsl.net/setup/FBSLv3bin.zip [minimal upgrade to v3.4.10]
Laissons les jolies femmes aux hommes sans imagination. / Let us leave pretty women to men without imagination.(M.Proust)
The success is a defeat for the one who does not want to dance any more! (H.F. Thiefaine)
User avatar
Gerome
FBSL Administrator
FBSL Administrator
 
Posts: 3149
Joined: Sat Mar 12, 2005 9:06 pm
Location: Paris -- France

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Mike Lobanovsky » Fri Jul 02, 2010 1:08 am

And this is how the transparent lightmap group currently looks (around 890 polys all in all).

The lightmap I'm using is not automatically ray-traced -- I'm drawing it by hand little by little using Photoshop and Windows Paint. The reason is triple:
- to get it, I'd first have to write my own ray tracer plug-in for the MilkShape editor (it doesn't have this feature and I don't want to do it because it's not my editor ;-) ) while the available ray tracers do not support the MS3D format or are far too amateurish for any serious task;
- to store its coordinates in an MS3D format as group comments, I'd have to write another plug-in to automate this task because it's not practical to enter thousands of numbers by hand, and I don't want to do it for the same reason as above;
- to render the lightmap as the original Q3A does, I'd have to use hardware pipelining with at least 3 texture units which is, firstly, not the basic OpenGL feature, and, secondly, rather cumbersome to do in OpenGL.

So I've chosen to use a separate transparent group of vertices which follows the basic parts of geometry as a carrier for my hand-made lightmap to emulate the original game's lightmaps in order to obtain a competitive visual effect which makes the scenery so vivid and specular.

As you see, there's yet no devil's mouth lightmap implemented but, in fact, this is the last thing left to do as far as the model itself goes, and then I'll be able to finalize the programming part of the project and release the complete download.
Attachments
Lightmap.jpg
Lightmap.jpg (288.51 KiB) Viewed 4189 times
Mike
"Я старый солдат, мадам, и не знаю слов любви."
"I am an old soldier, ma'am, and I don't know the words of love."
"Je suis un vieux soldat, madame, et je ne connais pas les mots d'amour."
"Ich bin ein alter Soldat, gnädige Frau, und ich weiß nicht die Worte der Liebe."

__________________________________________________________________________________________________________________________________________________
(3.2GHz i5 Core Quad, 8GB RAM / 2 x nVidia GTX 550Ti SLI-bridged, 2GB VRAM)
(x86 Win XP Pro Russian Sp3/x86 Win Vista Ultimate Sp2/x64 Win 7 Ultimate Sp1/Wine in x64 elementaryOS Luna)
User avatar
Mike Lobanovsky
FBSL Administrator
FBSL Administrator
 
Posts: 1824
Joined: Tue Apr 19, 2005 8:22 am
Location: Republic of Belarus

Re: Quake III: Arena Gate (the Milky Way :)

Unread postby Mike Lobanovsky » Tue Jul 06, 2010 4:19 am

Believe it or not, but the only thing I was ever able to draw was an elephant (rear view)... :D

So the creative part seems to be over. Next comes the gloomy routine coding stuff... :D
Attachments
Elephant.JPG
Elephant.JPG (5.09 KiB) Viewed 4170 times
Mouth.jpg
Mouth.jpg (880.66 KiB) Viewed 4170 times
Mike
"Я старый солдат, мадам, и не знаю слов любви."
"I am an old soldier, ma'am, and I don't know the words of love."
"Je suis un vieux soldat, madame, et je ne connais pas les mots d'amour."
"Ich bin ein alter Soldat, gnädige Frau, und ich weiß nicht die Worte der Liebe."

__________________________________________________________________________________________________________________________________________________
(3.2GHz i5 Core Quad, 8GB RAM / 2 x nVidia GTX 550Ti SLI-bridged, 2GB VRAM)
(x86 Win XP Pro Russian Sp3/x86 Win Vista Ultimate Sp2/x64 Win 7 Ultimate Sp1/Wine in x64 elementaryOS Luna)
User avatar
Mike Lobanovsky
FBSL Administrator
FBSL Administrator
 
Posts: 1824
Joined: Tue Apr 19, 2005 8:22 am
Location: Republic of Belarus


Return to Applied Dynamic Assembler & Dynamic C in OpenGL

Who is online

Users browsing this forum: No registered users and 1 guest

cron