#2367 posted by mankrip on 2018/07/18 02:21:05
For the people who want to test it, here are some of the ID1 maps I've recompiled with lit liquids:
http://www.quaketastic.com/files/misc/litwater_id1mapexamples.7z
I've tried to figure out how to implement lightmapped translucent liquids in mh's GLQuake code, but hardware rendering isn't my thing and I've got no time to learn it.
#2368 posted by mh on 2018/07/18 04:28:49
If I get time I'll do a 2.0 build. It's not overly difficult, like you indicate, just a matter of knowing what to do.
When You Wish Upon A Star...
#2369 posted by Redfield on 2018/07/18 06:13:46
So these lit water and things are looking cool. I am also wondering about the possibility to implement sv_protocol 999 support in Mark V.
The map I'm working on needs it, and I get a hard crash with hunc_alloc error similar to TerShib when I try to force it.
Is there a chance to see this happen? I would love to be able to see how the map handles in Mark V.
#2370 posted by mh on 2018/07/18 11:06:20
#2371 posted by mankrip on 2018/07/18 16:19:52
HUGE thanks!
Initially I thought "well, I can just combine the texture & lighting like the translucent mirrors does before blending", but then I found out that GLQuake's mirrors doesn't use lightmaps either. No way for clueless me to hack it in.
#2372 posted by mankrip on 2018/07/18 17:15:43
#2373 posted by mh on 2018/07/18 17:54:52
I have to be quite tiresome about this and confess that I'm still not a fan of the look. To me, the water no longer looks like water - it looks solid instead.
I'd also be of the opinion that light should go through translucent water.
But then, Quake's rendering was never really about being 100% realistic anyway.
#2374 posted by mankrip on 2018/07/18 18:13:37
Well, it still looks better in Retroquad, mainly because of soft depth. But I'm confident that mappers will figure out good ways to use it.
And it should certainly be optional.
Feature Request For The Future
cl_autodemo is really invaluable. If you could append the map filename to the file they generate that would be super helpful. Or at least part of the name. Ppl ask me to play their maps often and I use autodemo for this. Would be great to know what map a given demo is for outside of the exe. I am constantly renaming files.
#2376 posted by Baker on 2018/07/18 23:06:42
Redfield -- A large coordinates protocol would be a next year most likely. It wouldn't be sv_protocol 999, which sports lots of brokeness (I should make a video sometime).
Dumptruck - Mark V autodemo was adapted loosely from Qrack autodemo which does exactly that. If I am able to determine the cause of the Poorchop/Johnny Law mouse issue, I would probably throw in a "cl_autodemo 2" that like, Qrack, does exactly what you want.
Ooh Ooh, An Idea!
#2377 posted by Qmaster on 2018/07/19 01:43:00
play_autos mydemo
To play all of mydemo0, mydemo1, 2, 3, 4 etc. automatically in a row.
And if someone leaves out, mydemo3 for instance, it would just skip to mydemo4.
Protocol 999 opt in cvar pretty please please. With sugar and a cherry on top. I've got a few Orl-size maps I'm working on that have a 99.9% chance of needing 999.
Baker
#2378 posted by Orl on 2018/07/19 05:30:16
Yes, would you make that video demonstrating 999's brokenness? Or at least briefly talk about it? Cause I'm curious to know.
@ORL
#2379 posted by Baker on 2018/07/19 06:45:01
Yes, in time I will make a video.
mh has an expression "once you see something, you can't unsee it".
I think seeing in this case is going to be necessary.
Protocol 999
#2380 posted by mh on 2018/07/19 08:45:51
I'm the original designer.
The core idea is actually quite solid. It's based on 666, but with the addition of a bunch of opt-in features. The client and server negotiate which features to use, and the whole thing can gracefully degrade if a feature is unsupported.
It was always more about higher precision angles and more TE_ effects than big coords, or at least that's how it seems to me thinking back, but big coords was just one of the things it could also support. The important thing though is that it's extensible nature means that you could plug in your own big coords system if you wanted.
Being built on 666 means that it inherits all of an NQ protocol's weaknesses. That's not an attack on 666, it's an observation on NQ protocols in general. There are much better ways of doing all of this stuff; supporting big coords, more precision, more effects AND being more efficient in the data stream. NQ is a bit brute force, which is fine in simpler setups but hits scalability ceilings much faster.
#2381 posted by Baker on 2018/07/19 10:01:51
mh: it was always more about higher precision angles ...
Translated: nice smooth rotating doors and draw bridges.
(like Remake Quake could do -- as opposed to clunky hipnotic doors)
Fitz 666 didn't have enough angle precision resulting in walking on a drawbridge coming down to not feel jerky and the same for getting pushed by an opening door. Also the higher precision angles were used for some rotating effects in QuakeC.
So...
#2382 posted by Qmaster on 2018/07/19 18:58:25
999 should be used on any map with bsp rotation such as drawbridges, pushable gates (ne_ruins), rotating path changers (like Dismal Oubliette but rotaty), etc.
OR maps as big as Orl's.
Still not sure what the problem with it is.
#2383 posted by Gunter on 2018/07/19 19:06:26
It should probably just be renamed to "ORL Protocol."
@qmaster
#2384 posted by Baker on 2018/07/19 21:51:14
Nope. 999 does nothing for hipnotic rotation at all.
If you want to see real rotation, you'll have to play Remake Quake and trigger the draw bridge or find a rotating door.
Must use the Remake Quake engine -- Quakespasm doesn't support true rotation (nor does Mark V, it did briefly once upon a time but it led to the discovery of some oddness with existing Quake maps -- even a couple of stock Quake ones -- and was removed).
Sadly, true rotation sadly interferes some with existing maps where entities or even maps have the angles key set (and they shouldn't be). I think dis_sp3 is an example.
#2385 posted by Tribal on 2018/07/19 23:51:48
a lot of games come with two *.exe's
one for windows 32 bits and one for windows 64 bits...quakespasm have quakespasm.exe and quakespasm-sdl2.exe... even quake has two exe's (normal and opengl)
maybe would be cool to have two markv.exe's, one for old maps and one for new maps with true rotation :)
just my two cents :)
MH
#2386 posted by mankrip on 2018/07/19 23:53:00
There's something strange I've spotted on your GLQuake code, in R_BuildLightMap.
This is your source:
for (j=0 ; j<smax ; j++)
{
t = *bl++;
t >>= 8;
if (t > 255)
t = 255;
dest[j] = t;
}
But this is the original source:
for (j=0 ; j<smax ; j++)
{
t = *bl++;
t >>= 7;
if (t > 255)
t = 255;
dest[j] = 255-t;
}
What's the reasoning behind that?
(255 - (t >> 7)) == (t >> 8) ?
Oh, wait, I've found it:
" shift the lightmap by 8 (jnstead of by 7) in R_BuildLightmap"
Overbrights, ok.
However, by doing that you lose precision, resulting in more abrupt discrepancies in light values across different surfaces, which is likely another reason why the lightmapped water in your GLQuake engine looks worse than in Retroquad.
Compare these shots:
GLQuake
Retroquad (with soft depth disabled)
#2387 posted by mh on 2018/07/20 02:03:46
Yeah, that's overbrights. Yeah, it loses 1 bit of precision, but it still has 256 gradations of light - software Quake only had 64.
Rotation: higher precision can't fix Hipnotic rotation, that was born broke (fun fact: the hackiest mod is Nehahra, the second-most hackiest is Hipnotic). I can't recall the exact use case but it would have been something like a drawbridge that had the herky-jerkies with standard 8-bit angles.
#2388 posted by mankrip on 2018/07/20 02:20:53
Retroquad uses the full 8 bits of precision, and it also compensates for the loss of precision. It has nothing in common with WinQuake when it comes to shading & texturing.
The fact is that the same light can be raycast to slightly different levels across the edges shared between different surfaces. The less precision is used, the bigger this difference can become.
#2389 posted by mh on 2018/07/20 02:38:44
The full range of light scales per the BSP format can't be represented by standard 2x overbrights. "z" is double-bright, so with 4 lightsyles combined I make that 11 bits per channel, and that's not including dynamics.
I guess that the point is, you're always going to be losing precision.
@Tribal
#2390 posted by Baker on 2018/07/20 03:13:35
maybe would be cool to have two markv.exe's, one for old maps and one for new maps with true rotation :)
32-bit vs. 64 bit doesn't have anything to do with rotation. Remake Quake engine with true rotation is a 32-bit.
Half-Life has had true rotation since 1998 and it evident in all aspects of the game.
There really aren't any advantages for 64-bit on Windows that I can name, except 64-bit uses a bit more memory because pointers are twice the size.
The Linux build of Mark V, for instance, has always been 64 bit.
#2391 posted by mankrip on 2018/07/20 03:42:55
I guess it wasn't clear that I'm implying that the loss of precision can be compensated for by doing t = (t + (1 << 7)) >> 8. It's exactly the same principle of adding 0.5 to the velocity to fix the gravity issues in low framerates. It's obvious.
Anyway, it may be not enough. Besides this compensation, Retroquad performs color correction, gamma correction, brightness correction and multiple kinds of error diffusion.
Maybe the results will be better when your code gets ported to Mark V or other advanced engines.
|