Gamma
#2412 posted by mh on 2018/07/26 17:43:37
GLQuake defaulted it's gamma to 0.7 on non-3DFX hardware. Not sure why MarkV is doing similar but it seems too much of a coincidence.
#2413 posted by Baker on 2018/07/31 04:10:08
Mark V doesn't default gamma 0.75 (gamma 1 is default), but a certain revision did (revision 2? revision 3?) where I was merging with QuakeDroid. Johhny Law noticed different defaults in the Windows version and I corrected.
QuakeDroid defaults gamma 0.75 because gamma 1 is just too dark.
Windows 10/Poorchop/Johnny Law
#2414 posted by Baker on 2018/07/31 04:18:30
On my Windows 10 machine, I didn't experience any Poorchop/Johnny Law mouse oddities.
Makes me wonder if maybe I could cause the issue somehow by installing maybe new Direct X drivers? I don't know.
If I can't experience an issue, makes it tough to guess. The mouse was fine for me.
If Mark V 1036 download link doesn't experience the mouse issue on Johnny Law/PoorChop's machine, I would suspect the issue relates to DirectInput which 1.99 switched to.
If that is the case, I could make DirectInput turn on and off and maybe default off.
#2415 posted by Gunter on 2018/07/31 04:57:59
make DirectInput turn on and off and maybe default off.
I'm thinking that's probably the best option.
After playing Mark V and setting my sensitivity to an appropriate value to account for dinput, if I then use some other engine or a different version of Mark V, my sensitivity is way too high!
Here's another thought: If dinput is being used, automatically double the sensitivity value (rather, treat the value as doubled). That would probably get rid of the need for the Sensitivity slider to go up much higher to account for dinput being much less sensitive.
And if people wanna be more precise (even with the doubling happening behind the scenes), they can use decimal values, like sensitivity 10.5
But doubling the Sensitivity value for dinput would probably feel very close to the standard Sensitivity value when dinput is not being used.
#2416 posted by Poorchop on 2018/07/31 06:57:33
Bummer that you couldn't reproduce. I gave Mark V another few tries within the past few weeks and I had the same exact issues that Johnny Law spoke of - sometimes -mouse1 didn't register so I was firing indefinitely. Previously I just thought it was neither +mouse1 nor -mouse1 registering.
I'll spend some time playing around in 1036 to see if it works fine for me.
#2417 posted by Joel B on 2018/07/31 07:48:42
I'm about to go camping, but I'll remember to get back to this later.
#2418 posted by Baker on 2018/07/31 09:26:39
Guys take your time, it's the summer. But yeah, if either of you can find out if 1036 does or doesn't have the issue, it can really shed some light on the nature of the issue.
V1036 Works Just Fine
#2419 posted by Poorchop on 2018/08/01 01:17:12
I've tested long enough by now that I would've noticed if I was still having issues but I haven't had any problems with 1036. I spent a while bunny hopping and playing through maps, and all of my mouse clicks registered just fine.
On a side note, I am getting some pretty terrible performance outside of id1 maps but that's another issue.
#2420 posted by Baker on 2018/08/01 02:45:34
Thanks for info. Helps confirm thoughts on issue.
@poorchop
#2421 posted by Baker on 2018/08/01 05:44:02
May I trouble you to test one more build ...
The 1080 build. download
And tell me if you have the mouse issue with 1080.
The results from 1080 should allow me to conclusively and quickly do a patch fixing exactly the "right" thing. (The alternative is some guesswork and if I am wrong it could take 3 attempts.)
I'd like to resolve the "Poorchop/Johnny Law Windows 10 mouse issue" right the first time.
1080
#2422 posted by Poorchop on 2018/08/01 21:57:33
I played through some id1 and bunny hopped around for a long time, but I didn't notice any issues with mouse clicks registering. v1080 seems to be working fine here as well.
@Poorchop
#2423 posted by Baker on 2018/08/02 21:42:10
Thanks!
#2424 posted by anonymous user on 2018/08/15 01:45:36
FWIW I just played through Amphitheater Of Abaddon using build 1080 and didn't notice any problems.
#2425 posted by Joel B on 2018/08/15 01:55:22
(and that was me)
1099_r4
Defaults to gamma .75 I can confirm this as I've installed it into new directories 3x this week. I usually reset my config by hand BTW so it's defaulting for sure.
@Baker
Heads up that uwjam is performing pretty badly with this mod. Seems the sprites are causing significant framerate issues. I will test some more this evening but wanted to check with anyone else and see if they were experiencing issues.
I just played in QSS and did not experience the showdown.
#2428 posted by Poorchop on 2018/08/18 20:13:07
I haven't tested uwjam with Mark V but I've played a few other maps that have some frame rate issues despite running perfectly fine in other ports. Not really sure how to troubleshoot something like this though.
#2430 posted by mh on 2018/08/20 12:53:59
The MarkV D3D9 sprite drawing code is particularly sensitive to high numbers of sprites and will suffer performance problems in those situations.
Basically it looks something like this:
for (int i = 0; i < numsprites; i++)
{
SetState ();
DrawSprite ();
UnSetState ();
}
In order to deal with D3D9's well-known draw call overhead problems, the D3D9 wrapper code attempts to concatenate multiple draw calls with the same state into a single draw call, so that the whole thing can run with fewer draw calls.
The MarkV code (inherited from FitzQuake, in turn inherited from GLQuake) prevents it from being able to do that, because making any state change will break a batch.
Changing it to something like this will help a lot:
SetState ();
for (int i = 0; i < numsprites; i++)
DrawSprite ();
UnSetState ();
By SetState and UnSetState I specifically mean the alpha test state here; the polygon offset state only happens with Hipnotic bullet-hole decals and should be rare enough, whereas texture changes are something that has to happen so that's a state change that you'll just swallow. But this change on it's own should go a long way towards fixing things up.
@mh
#2431 posted by Baker on 2018/08/20 19:23:35
Added to the list.
#2432 posted by Baker on 2018/08/21 00:43:35
Recursion is hated in lowest-level coding -- when you look at what is going on at the stack level.
Recursion causes tons of unnecessary stack push/pop slowing down what would be faster loop mechanics inside a single function.
Elegance hates "goto". Yet "goto" dominates the world and well-written low-level code is code that the compiler can reduce to "goto" form avoiding the use of recursion.
/The D3D9 sprite handling is making me think about how to best optimize sprites next round to fit how D3D9 wants the data fed.
#2433 posted by mh on 2018/08/21 07:51:06
This is just similar to the technique for making dynamic lights go fast - if you have a bunch of work to do, dividing it into fewer large batches will always outperform many smaller batches. Beyond that it's just a matter of understanding what patterns can prevent fewer large batches, and in any 3D API (including native OpenGL) that's going to be things like unnecessary state changes. Typically brought on by things that seem "right", such as unbinding textures/buffers, or putting state back the way it was after drawing an object.
The Quake code is riddled with small inefficiencies and it's death by 1000 cuts. None of this mattered in 1996 when GLQuake only ran on high end workstations, and everybody else had a 3DFX which routed it's drawing through a layer which tried to make something sensible out of it.
Ever bought a new GPU and found that Quake ran no faster on it?
Recursion is going to be down in the noise in any Q1 performance graph. Any decent compiler will automatically generate the right optimized tail-recursion code for you, without you needing to resort to tricksy or cutesy obfuscation. Don't waste time on the small beans.
In an ideal world that D3D9 code would not be needed; you could rip it out tomorrow and start investing time in making your OpenGL go fast, which IMO would be preferable to trying to make the 2 APIs coexist peacefully. The big secret is that Intel graphics are no longer crap, and haven't been for a long time. It's not Intel graphics, it's Quake's use of OpenGL that's crap.
As a general rule, bad OpenGL code will go faster than bad D3D code. But good D3D code will go faster than good OpenGL code. But in order to get good D3D code you need to go native and start writing code that's tailored to D3D's strengths; trying to translate bad GL code into something that tries to do the right thing in D3D can only get so far and will always throw up unexpected glitches and bottlenecks - like the sprites case.
@mh
#2434 posted by Baker on 2018/08/21 08:12:58
I was thinking of qmb and to some extent Nehahra extra effects that are in the engine (above and beyond stock Quake sprites). qmb is highly recursed.
#2435 posted by mh on 2018/08/21 10:31:52
Ah, I'm not familiar with the QMB code although I've been aware of the effects since almost the very beginning. That's something I must rectify.
@mh
#2436 posted by Baker on 2018/08/22 01:23:38
I took a look at the real-time lighting prototype you made a few hours ago.
Looking at the source, I thought the dates were funny because you wrote it at the same time as the DX9 wrapper.
|