Forum

is this code refering to mirrors as reflections in quake?

Post tutorials on how to do certain tasks within game or engine code here.

Moderator: InsideQC Admins

is this code refering to mirrors as reflections in quake?

Postby ceriux » Sun Dec 13, 2009 1:36 am

i was just wondering or is it something else? if anyone would mind letting me know im sure there's plenty of people who know more about this than i do.

http://www.quake-1.com/docs/quakesrc.org/96.html
User avatar
ceriux
 
Posts: 2223
Joined: Sat Sep 06, 2008 3:30 pm
Location: Indiana, USA

Re: is this code refering to mirrors as reflections in quake

Postby Baker » Sun Dec 13, 2009 1:46 am

ceriux wrote:i was just wondering or is it something else? if anyone would mind letting me know im sure there's plenty of people who know more about this than i do.

http://www.quake-1.com/docs/quakesrc.org/96.html


Load up GL ProQuake 4 or DX8 ProQuake 4 and go to the start map's easy hall. Type r_mirroralpha 0.5 in the console. There is only a single texture supported in GLQuake for the mirror effect, it's that one.

Image

You will see the above.

IF your video card supports it. My understanding is that ATI cards don't support that at least under OpenGL.

Aside from original GLQuake, I'm not too sure what other engines support r_mirroralpha. I'm kind of sentimental about original GLQuake and was like "Wow!" at the time (1999 or so for me, maybe early 2000) and I wanted this feature in ProQuake.

/Ha! I was using DX8 ProQuake and as I was typing in the console, I didn't really know whether or not the Direct 3D 8.1 wrapper MH wrote was going to support this. :D MH was thorough!
User avatar
Baker
 
Posts: 3666
Joined: Tue Mar 14, 2006 5:15 am

Postby ceriux » Sun Dec 13, 2009 2:09 am

IF i implemented this, how would i apply the reflection to specific textures?
User avatar
ceriux
 
Posts: 2223
Joined: Sat Sep 06, 2008 3:30 pm
Location: Indiana, USA

Postby Baker » Sun Dec 13, 2009 2:21 am

ceriux wrote:IF i implemented this, how would i apply the reflection to specific textures?


The texture name is hardcoded. I don't remember the texture name, but just look for anything "r_mirroralpha" in the source and in the vicinity you'll find where it checks for the hard-coded texture name.

And then you could change it so every texture that starts with "mirror_" uses the effect. Or however you choose to do it.

Code: Select all
if (!strncmp(texturename, "mirror_", 7)) {
          // Mirror texture
          // Do mirror stuffs!
          ....
User avatar
Baker
 
Posts: 3666
Joined: Tue Mar 14, 2006 5:15 am

Postby ceriux » Sun Dec 13, 2009 2:24 am

i might see if i can get reflections like this on water.
User avatar
ceriux
 
Posts: 2223
Joined: Sat Sep 06, 2008 3:30 pm
Location: Indiana, USA

Postby Trickle » Sun Dec 13, 2009 2:29 am

this should be added to Qrack
Image
User avatar
Trickle
 
Posts: 66
Joined: Thu Mar 26, 2009 11:20 pm

Postby ceriux » Sun Dec 13, 2009 3:12 am

does anyone know the name of the texture that works as a mirror in id's wad?
User avatar
ceriux
 
Posts: 2223
Joined: Sat Sep 06, 2008 3:30 pm
Location: Indiana, USA

Postby goldenboy » Sun Dec 13, 2009 8:26 am

Is it possible to have these textures somehow reflect light, too?

If you look at the RA room in dm6rq, the ceiling has these flames and angled copper plates above them - the idea behind that was that they are "medieval spotlights".

I can probably fake the effect later on, though :-/

Dunno if that sort of stuff is even possible in newer games :)
User avatar
goldenboy
 
Posts: 924
Joined: Fri Sep 05, 2008 11:04 pm
Location: Kiel

Postby Baker » Sun Dec 13, 2009 12:54 pm

ceriux wrote:does anyone know the name of the texture that works as a mirror in id's wad?


gl_rmisc.c

Code: Select all
   mirrortexturenum = -1;
   for (i=0 ; i<cl.worldmodel->numtextures ; i++)
   {
      if (!cl.worldmodel->textures[i])
         continue;
      if (!strncmp(cl.worldmodel->textures[i]->name,"sky",3) )
         skytexturenum = i;
      if (!strncmp(cl.worldmodel->textures[i]->name,"window02_1",10) )
         mirrortexturenum = i;
       cl.worldmodel->textures[i]->texturechain = NULL;
   }
User avatar
Baker
 
Posts: 3666
Joined: Tue Mar 14, 2006 5:15 am

Postby mh » Sun Dec 13, 2009 2:12 pm

Be aware that Quake's mirror code is really something of a hack. Carmack himself said (in GLQuake's readme) that it's not very robust but cool to look at, and also it wasn't carried forward to Q2, so while it was a rather neat little feature for the time, it's more of a "hey, you can do this kind of thing" gimmick rather than an essential feature of the engine.

There are a lot of things you need to consider when doing any mirror support in a modern engine - the overhead of rendering everything at least twice (and from different viewpoints, so rooms the mapper has designed to be fast might suddenly become real slow), how do you resolve the problems that are going to happen when 2 (or more) mirrors are pointing at each other (try this in real life and see what I mean), properly applying the mirror texture to a heavily tesselated surface (which may have more than 1 plane) and so on.
We had the power, we had the space, we had a sense of time and place
We knew the words, we knew the score, we knew what we were fighting for
User avatar
mh
 
Posts: 2292
Joined: Sat Jan 12, 2008 1:38 am

Postby Wazat » Sun Dec 13, 2009 7:17 pm

mh wrote:...how do you resolve the problems that are going to happen when 2 (or more) mirrors are pointing at each other (try this in real life and see what I mean)


Whenever I try that in real life, it creates an infinite loop and crashes the RLServer. I wake up the next morning and realize I've gone back in time, and have to repeat the day over again until I get it right, like in the movie Groundhog Day. Don't try it in real life!
When my computer inevitably explodes and kills me, my cat inherits everything I own. He may be the only one capable of continuing my work.
Wazat
 
Posts: 771
Joined: Fri Oct 15, 2004 9:50 pm
Location: Middle 'o the desert, USA

Postby Baker » Wed Dec 23, 2009 10:00 am

Here is some code that more or less makes the above easily to single out with specific texture names on map load:

viewtopic.php?p=20023
User avatar
Baker
 
Posts: 3666
Joined: Tue Mar 14, 2006 5:15 am

Re: is this code refering to mirrors as reflections in quake

Postby Ranger366 » Sat Jun 26, 2010 4:45 pm

Baker wrote:
ceriux wrote:i was just wondering or is it something else? if anyone would mind letting me know im sure there's plenty of people who know more about this than i do.

http://www.quake-1.com/docs/quakesrc.org/96.html


Load up GL ProQuake 4 or DX8 ProQuake 4 and go to the start map's easy hall. Type r_mirroralpha 0.5 in the console. There is only a single texture supported in GLQuake for the mirror effect, it's that one.

Image

You will see the above.

IF your video card supports it. My understanding is that ATI cards don't support that at least under OpenGL.

Aside from original GLQuake, I'm not too sure what other engines support r_mirroralpha. I'm kind of sentimental about original GLQuake and was like "Wow!" at the time (1999 or so for me, maybe early 2000) and I wanted this feature in ProQuake.

/Ha! I was using DX8 ProQuake and as I was typing in the console, I didn't really know whether or not the Direct 3D 8.1 wrapper MH wrote was going to support this. :D MH was thorough!


These HandSkins are awesome
User avatar
Ranger366
 
Posts: 203
Joined: Thu Mar 18, 2010 5:51 pm

Postby revelator » Sat Jun 26, 2010 9:30 pm

can do it with any of the textures but the thing is hardcoded ;)

could be interresting using some script method for setting the mirror flag on other windows.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Postby gnounc » Sat Jun 26, 2010 11:00 pm

would be nice too to have the gun model be to the right for idle animation so it matches the reflection
User avatar
gnounc
 
Posts: 424
Joined: Mon Apr 06, 2009 6:26 am

Next

Return to Programming Tutorials

Who is online

Users browsing this forum: No registered users and 1 guest