#low@irc.freenode.net logs for 21 Aug 2005 (GMT)

Archive Today Yesterday Tomorrow
LoW homepage


[01:46:12] <-- Cahaan2 has left IRC ()
[22:41:13] --> Coren_ has joined #low
[22:41:14] --- ChanServ gives channel operator status to Coren_
[22:41:27] <Coren_> ?logs
[22:41:27] <exultbot> Logs are available at http://www.math.leidenuniv.nl/~wpalenst/lowlog.php
[22:41:47] <servus> When was the last cvscommit?
[22:42:02] <Coren_> Erm, 4-5 days ago methinks.
[22:42:10] <servus> Anything substantial?
[22:42:38] <servus> http://sammatthews.com/images/The%20Abyss/ Here is mine
[22:42:42] <Coren_> The new rendering engine; although you'd need the normal maps to see it. Lemme zip 'em up for you.
[22:43:52] <Coren_> I see you stuck to your original idea of redoing the world geometry?
[22:43:54] <servus> Compile in Linux?
[22:44:00] <servus> Oh that's not Ultima Underworld.
[22:44:07] <servus> I just like their design :)
[22:44:13] <servus> I'm not very creative, y'see.
[22:44:25] <servus> But yes, I have the entire entrance of UW1 mapped out in high detail :)
[22:44:25] <Coren_> Ah. :-) Your stone is shiny. :-)
[22:44:40] <servus> Which shot?
[22:44:48] <servus> http://sammatthews.com/images/The%20Abyss/Abyss06.jpg probably shows off the best
[22:45:04] <servus> That is actually the Loubet painting from the box of UW1, from a different angle :)
[22:45:17] <Coren_> All of 'em, really. Looks like specular lighting going crazy on brick walls. Or are those meant to be burshed steel blocks?
[22:46:03] <servus> It's not specular lighting.
[22:46:34] <servus> Just normal mapping. It is more apparent when the lights are in motion.
[22:47:13] <servus> I wanted to keep things very very dark, but let the player see where they were. Giving spatial hints on the layouts of walls by showing a light moving along the crevices lets your brain fill in a lot of the missing details.
[22:47:43] <Coren_> http://aleph.uberbox.org/~marc/textures.zip
[22:48:07] <servus> OK. Does it compile in Linux?
[22:48:23] <Coren_> I haven't tested it under win32 in ages.
[22:48:33] <servus> Just standard sf cvs?
[22:48:36] <Coren_> Waitaminit-- weren't you the total Microsoft Weenie not so long ago?
[22:49:09] <Coren_> Yes; you'll have to covert an uw2 level to start the game: make ark2map && ./ark2map 1
[22:49:49] <servus> "total Microsoft Weenie"?
[22:49:57] <Coren_> I might simply recall wrong.
[22:50:09] <servus> I still use Microsoft Visual Studio 6 and 7 daily, but I've used different sorts of Unix for a decade.
[22:50:12] <Coren_> Don't forget to autoconf after the checkout.
[22:51:15] <servus> How else would I get a configure?
[22:51:43] <servus> sound.cc:388: error: ISO C++ forbids declaration of `Sound' with no type
[22:51:49] <servus> Did you forget to add a file?
[22:52:31] <Coren_> Hm. Odd; I haven't touched the sound system in ages. Lemme check from a fresh checkout.
[22:52:39] <servus> Installing libsdl_mixer
[22:53:23] <Coren_> Still a bug; it should cope quietly (heh) with its absence. :-)
[22:53:44] <servus> It's a fatal error
[22:53:48] <servus> What is your gcc version?
[22:54:19] <servus> OK on to a new error :)
[22:55:10] <Coren_> gcc version 3.3.5
[22:55:27] <servus> GL_FRAGMENT_PROGRAM_ARB
[22:55:32] <Coren_> Compiles cleanly from a fresh checkout here; and my install is rather new.
[22:55:47] <Coren_> Meh-- your GL includes are antiquated.
[22:56:07] <servus> Yeah yeah.
[22:56:22] <servus> MY GL programs with fragment shaders are interopable, tsk tsk ;-)
[22:56:44] <Coren_> GL_FRAGMENT_PROGRAM_ARB is hardly strange and out of the way! :-)
[22:57:14] <Coren_> Lemme make a screenshot for you. ;-)
[22:58:08] <servus> I include my own fallback defines... Urgh, got to upgrade libgl now... What's the Debian package for it...
[22:58:32] <Coren_> Not sure. I do slack. Would you like to have a recent set of GL includes?
[22:59:13] <servus> I don't want to do it the non-Debian way, because if there IS a package for it, it'll fluxor things up in the feature
[22:59:16] <servus> future*
[22:59:29] <Coren_> Point
[22:59:46] <Coren_> http://aleph.uberbox.org/~marc/sd.png
[22:59:56] <Coren_> And don't laugh at my FPS. My card is *old*
[23:00:15] <servus> Did you notice all my fps'? ;-)
[23:01:01] <servus> And that is because vsync is turned on :P
[23:01:05] <Coren_> Yeah, but your card is probably considerably less old than mine. I get decent performance, actually, if I shut down specular highlights.
[23:02:12] <servus> Why should it matter?
[23:02:19] <servus> Is your fragment program going over the instruction limit for your card?
[23:02:49] <Coren_> The fragment program isn't that heavy; but my FX 5200 has cruddy fill rate. I'm not going over the limit, but I'm hitting a performance bottleneck on the ALU.
[23:03:19] <servus> You are doing extra fills for specular highlights?!
[23:03:25] <servus> You are doing multiple passes for a specular highlight?
[23:03:52] <Coren_> No, just the one pass, but having the highlight there costs just enough extra ALU instructions to shoot down my performance.
[23:04:33] <servus> What file is your GL_FRAGMENT_PROGRAM_ARB defined in?
[23:04:44] <servus> Can I see your fragment program? It shouldn't be making a difference.
[23:04:56] <servus> Oh guess I can look myself :)
[23:04:59] <servus> Still, wanna get it to compile first.
[23:05:02] <Coren_> fp_diffuse.cc fp_specular.cc
[23:05:09] <servus> No... Your GL includes
[23:05:13] <servus> I'm using Mesa 4.1 GL includes
[23:05:22] <servus> Debian doesn't seem to come with proper OpenGL
[23:05:27] <Coren_> Ah.
[23:05:40] <Coren_> I use those that come with the NV driver. Lemme zip 'em up for you
[23:05:53] <servus> Those might be naughty. I'm not using NVidia in Linux
[23:06:34] <Coren_> They're not; but they are arguably the most complete I've seen yet. They keep 'em very up ot date.
[23:06:48] <servus> I'll give it a shot
[23:06:50] <Coren_> Nothing NVish in there
[23:07:14] <Coren_> http://aleph.uberbox.org/~marc/glincs.tgz
[23:08:20] <servus> Thanks
[23:09:20] <Coren_> I would probably get reasonably fast even with the speculars if I didn't have to pay three DP3 and a MAD just to transform tangent space to world space for the map. I guess I could transform beforehand and cache.
[23:09:56] <servus> I have to inspect how you're doing it
[23:10:05] <servus> I get massive performance by doing everything I can in VPU
[23:10:15] <servus> I do all my halfspace transformations in VPU :)
[23:10:26] <servus> Then I use the results in FPU... Quite clever, I think
[23:10:34] <Coren_> So do I, but I expect therein lies the main difference between your card and mine.
[23:10:43] <servus> I have a GEForce on my main devbox
[23:11:20] <Coren_> Take a peek at fp_specular.cc and comment if you will. It's just a big string.
[23:11:31] <servus> Compile, but no link
[23:11:38] <servus> Rawrawrawr. I'll update my drivers later.
[23:11:55] <Coren_> No link?
[23:12:00] <servus> It didn't link
[23:12:24] <servus> I keep all my fragment programs as separate text files. I just press 'r' while my program is running and it recompiles the programs on the fly... Makes debugging fragment programs fun!
[23:13:19] <Coren_> Well, if your trusty enough to run a strange executable, I could just put it up for you. I'd be surprised to see what kind of performance you're getting.
[23:13:57] <servus> Where are your vertex programs?
[23:13:59] <Coren_> Oh, wait, chances are that won't help if your GL is missing symbols.
[23:14:06] <Coren_> What vertex programs? :-)
[23:14:11] <servus> Well, I'm using the newest unichrome drivers.
[23:14:21] <servus> You said you used vertex programs to do halfspace transformations
[23:14:27] <servus> I said that that's how I did it, and you said you did the same?
[23:14:54] <Coren_> Oh, *V*PU. I was reading *F*PU all along.
[23:15:09] <servus> Do everything you can in VPU!
[23:15:18] <servus> ARBvp :)
[23:15:31] <Coren_> Well, I don't see how I could transform the normal map in there. It's per texcel.
[23:15:36] <servus> The most important part of my lovely water is done in vertex shader
[23:15:54] <servus> Coren_: Yes, but is there _ever_ going to be concavity or convexity between vertices of a polygon?
[23:16:12] <servus> No, there will not. So, we can determine what we need to get on an eye-to-vertex basis, yes?
[23:16:47] <servus> Store the vector results as colours in the vertex output colour. It will be smoothly interpolated, and you can use it as a vector in the fragment program
[23:17:08] <servus> For a huge polygon, the difference between 3 transformations, or a zillion, is substantial :)
[23:17:11] <Coren_> Yes, I know that, but that doesn't do *bleep* for a normal _map_ in tangent space. :-)
[23:17:28] <servus> Why not?
[23:17:32] <Coren_> If you do it per vertex, the specular highlights look like crap.
[23:17:49] <servus> You do all of the base work in VPU, and fill in the gaps in Fragment
[23:18:07] <servus> Looks exactly the same as in full-fragment if you do it right, because it is the same.
[23:18:22] <servus> It's the difference between MQ + MP and M(Q+P)
[23:19:37] <Coren_> Well, you understand something I don't, then. Explain to me how I can have my normal map moved from tangent to world space with help from the vertex programs, because for the life of me I can't see it.
[23:20:59] <servus> OK.
[23:22:38] <Coren_> (Your water does look purdy, though)
[23:22:43] <servus> Same way as before. Remember that all texture coordinates start in vertex land, not as fragments. If you determine the correct coordinates in the vertex program, it will be correctly interpolated (perspective-correct, even), just as colours are.
[23:23:07] <servus> Water has correct Fresnel reflections and refractions :)
[23:23:20] <servus> Well, correctly hacked *grin*
[23:23:41] <servus> http://rafb.net/paste/results/WIEPMm66.html Here is my entire water vertex and fragment set
[23:23:46] <servus> Vertex at top
[23:24:50] <Coren_> Oh, wait, you're moving the eye (and light) vector into tangent space?
[23:25:18] <servus> And as soon as I can. Oops, noticed a big hack in my FP that I haven't fixed yet :)
[23:25:20] <Coren_> AAAAAAGH! I'm an idiot! And there I was spending all this processing power moving the normal map to world space!
[23:25:31] <servus> Ready to rewrite your programs now? :)
[23:25:58] <Coren_> @&#^#%@
[23:26:57] <servus> That's the weirdest smiley ever.
[23:31:54] <Coren_> That was meant to represent a fairly long string of obscenities cause by my frustration at my appaling inability to see the obvious.
[23:33:06] <Coren_> http://aleph.uberbox.org/~marc/low_bin.tgz has a binary
[23:33:56] <Coren_> You'll still need to convert a level. I think ark2map expects lev.ark to be in your pwd.
[23:34:02] <Coren_> cwd, evem
[23:34:05] <Coren_> even, even.
[23:34:07] <servus> Shouldn't be hard for me to compile
[23:34:47] <servus> I'm fairly sure I've compiled Bonk! on this server... Haven't I?
[23:35:07] <servus> That's what I get for having a bizarre video card, I guess
[23:38:03] <Coren_> Hm. Won't I have to renormalize the eye vector per vertex anyways?
[23:38:20] <Coren_> *shrug* still less expensive than the alternative.
[23:38:57] <servus> I currently normalize in the fragment program. See line 75 of my post.
[23:39:19] <servus> Hmm I have no idea what I'm not unitizing it in the vector program :)
[23:41:55] <servus> Bahh.. I have a GEForce4800 that I can put in my server... *Sigh*. I was so happy that I got my S3Savage to have DRI acceleration!
[23:46:58] <servus> Whoa, not normalizing my eye-to-fragment vector makes things look awesome :)