Personally,
#1181 posted by lei-lei on 2014/09/09 02:43:02
I think .ent files shouldn't be done to 'fix' this. I can't see it working on demos for example. It's pure shooting-fish-in-a-barrel.
Instead, I think a new format (.off?) should be created just to add polygonal offset origins or angles to map entities and this would only apply visually in the renderer, rather than server. Probably could start off the same as ent files, just parsed separately, disregarding other entity keys the renderer shouldn't care about.
#1182 posted by ptoing on 2014/09/09 17:05:47
Pure shooting-fish-in-a-barrel? I think you are misunderstanding that analogy, unless you mean that using .ent files to do this is super trivial. And if that is the case, why wouldn't you do it that way. :P
A special format for doing this might be warranted though, but I will leave the coder folk to that.
#1183 posted by metlslime on 2014/09/09 21:36:35
If i were fixing it, i would do it as narrowly targeted as possible to the actual problem:
1. do it all in the engine
2. do it on the client (it is only a rendering problem)
3. detect the specifc combination of map (name + CRC), model, and origin that causes the problem. (i.e. this would only take effect when the model is in the open state, if that is when the problem occurs.)
4. apply a specific offset to correct the problem. (add '0 0 -0.5' to the position for example)
The engine would have a table of such fixes, one for each known map that has this problem.
Those fixes would work in demos, they would work as a client in a MP game, they would not affect gameplay at all, and they would never have false positives against other maps that have the same filename, and they wouldn't prevent players from using their own .ent files for other purposes (like replacing all the monsters.)
Yeah, That Does Sound Optimal
#1184 posted by ericw on 2014/09/09 22:09:50
and more targeted than the .ent files. maybe we could migrate to that at some point, using the data from the .ent files as a guide
Followup
#1185 posted by metlslime on 2014/09/10 02:31:47
I think there may be cases where a secret door slides sideways first, and z-fights the entire time it's sliding. This is different from the e1m1 platform that only zfights in one position. So there may be cases where you need to apply the fix for all but the initial position of the entity.
Re: Followup
#1186 posted by svdijk on 2014/09/10 08:23:02
Yes, that applies to at least two of the most obvious examples, the exit doors in e1m2 and the bars before the exit doors in e2m7.
I agree with most of your points, especially since not all cases can be fixed with ent files, at least not without noticeable side effects. For instance in e1m3 one of the sliding plates in the floor in front of the wall that shoots the big spike causes z-fighting with the floor in the adjacent room when opened; since func_doors can't move down "a little" (their direction is either vertical or horizontal), I don't see how this could be fixed without changing eithers its origin (not wanted) or its class (also not wanted).
There's one point that you mentioned that I don't agree with though, the first one, to do it all in the engine. These are content errors, and fixes for them hence also belong content side, not engine side. Support for some kind of external "renderfix" files would be needed IMO.
Anyway, at least for the moment I think external ents suffice, since they improve two things compared to the last formal release: they avoid the glitches gl_zfix gave, and the move the fix to the content side.
.png Screenshots
#1187 posted by Baker on 2014/09/11 02:02:01
.tga screenshots are cruel and unusual punishment to an average user.
First, they can't share them on the internet easily.
Second, to even *view* their own screenshots on Windows they will need a special graphics because nothing that comes with Windows supports .tga.
The next Mark V uses only .png for screenshots.
I happen to be using http://lodev.org/lodepng/ since it doesn't require .dll/.so dependencies.
Another Thought
#1188 posted by Baker on 2014/09/11 02:05:29
You might also consider applying the current level of gamma to the screenshots so the screenshots actually look like what the user sees on the screen.
[If you aren't, I haven't checked in Quakespasm lately ...]
Omi's Negative Acceleration
#1189 posted by Baker on 2014/09/11 03:12:26
Might be solved with
cl_minpitch "-70"
cl_maxpitch "79.49"
The pitch bounds in original Quake are -70 to 80. Some servers reject pitch angles out of this range and bound them to the -70 to 80 range.
[FitzQuake 0.85 rounds angles to the next integer, even *after* the pitch bounds checking. Then the angles are converted to bytes (protocol 15) or a short (protocol 666), which may adjust the angle even further in the conversion process. So the 79.49 is to prevent it from being rounded up to 80, which can get converted to 80.0024 which result in some negative acceleration.]
#1190 posted by necros on 2014/09/11 03:31:42
There's one point that you mentioned that I don't agree with though, the first one, to do it all in the engine. These are content errors, and fixes for them hence also belong content side, not engine side. Support for some kind of external "renderfix" files would be needed IMO.
Yes, thanks. This is what I have been thinking during that whole discussion. Sometimes you engine coders creep me out with your suggestions for fixes. A problem in the progs or a map does not ever belong in the engine. These are hacks!
If a problem lies in one of the ID maps, then it should be fixed in the .map, recompiled and an unofficial patch made. When people complain about bugs in stock maps, the patch can then be pointed to that will work on all engines.
@necros
#1191 posted by Baker on 2014/09/11 03:55:35
The z-fighting in the original levels in some places (E2M3 is one example) is too severe to ever be "fixed" without making material alterations to the map.
There are many platform entities that occupy the same location as the world model.
The only "true" solution would be an advanced rendering engine that clipped entities the way WinQuake does.
No amount of .ent files or even recompiling maps is going to stop that z-fighting.
Case in point, you have a platform that extends out which is situated exactly where a world brush is: you can't move the platform down; you can't move the world model brush.
If you do, it won't look the same.
WinQuake clips those.
#1192 posted by metlslime on 2014/09/11 03:57:40
I feel like replacement content to fix bugs is an extra burden on the user. Maybe if there was a common, easily accessible pak file with everything fix in it (that everyone agrees on) for people to install, it might not be that bad. Otherwise, it's all theoretical. These bugs could have been fixed with a replacement pak file 15 years ago when glquake came out, does that pak file exist? And how many of you (non-newbie, power users) have it installed?
The reason I am okay with engine hacks to fix stuff like this is that the content wasn't broken when it was released (it worked fine in the engine that shipped with the levels) and it's only more recent engines that can't render it as intended. Also because i like things to be easy for the user and these hacks are completely transparent to them (or at least, they should be.)
Another Way Of Putting It
#1193 posted by Baker on 2014/09/11 03:59:48
Technology available back in 1996 inside the original DOS Quake.exe --- can solve all z-fighting.
Haha
#1194 posted by Baker on 2014/09/11 04:00:56
metslime nailed it.
#1195 posted by necros on 2014/09/11 06:00:10
I had actually forgotten dosquake didn't z fight... so the problem is that the renderer is different between software and opengl. Is it then not possible to just give precedence to bmodels? That would serve to emulate the original behaviour.
I just started to raise my eyebrows at the talk of detecting the map being played, the entity with the problem... it's just crazy.
I mean, you couldn't even say 'I will displace all entities up 0.5 units', because sometimes there's z-fighting on the walls or the ceiling.
#1196 posted by JneeraZ on 2014/09/11 11:33:15
Is there a solution where you could draw the world, then change the depth test bias, and then draw the entities? I have NO idea how the engine works so apologies if that is super basic and already dismissed ...
Seems A Bit Pointless
#1197 posted by ijed on 2014/09/11 15:34:33
Patching content over fifteen years old. How far do you go? Fix the texture misalignments as well? That will mean new brushwork and expanding on the texture sets.
The best way would be to organise some sort of community project to rebuild all the maps, maybe adding some new content like enemies and so on.
Has anyone tried that before?
ISeeWhatYouDidThere.map
#1199 posted by Lunaran on 2014/09/11 17:26:56
the engine guys want fixes in the engine and the level guys want to rebuild the levels
What Would Jesus Do?
#1200 posted by ijed on 2014/09/11 18:54:59
#1201 posted by necros on 2014/09/11 19:28:31
the engine guys want fixes for the levels in the engine and the level guys want to rebuild the levels
#1202 posted by ericw on 2014/09/11 19:47:40
The funny thing is, IMO anyway, Fitzquake's rendering has been the benchmark for a lot longer than software quake. So even if we had a perfect OpenGL clone of whatever winquake does, I would argue there's not much point.
The gl_zfix hack that was enabled by default in QS was pretty decent, besides showing outlines of secret doors sometimes, and one of the results was Scampie put Z-fighting in one of his jam maps because he didn't see it when testing in QS :-/
#1203 posted by metlslime on 2014/09/11 22:04:35
I'd also be fine with not fixing these bugs at all. Either way the solution (or absence of a solution) should not break newer content that was authored correctly.
VBO Version Revision
#1204 posted by Baker on 2014/09/12 00:55:27
Intel ATI Mobility:
Arwop: Roman1 --> +2 fps (18 -->20)
id1: start --> (-10 fps?) (172-->162) ???
Thx For Trying That Baker
#1205 posted by ericw on 2014/09/12 02:44:56
Would you mind trying the roman1 demo again with "gl_fullbrights 0" and "r_drawentities 0"? That should cut off all drawing that's not using the vbo - I just use it on the lightmap + texture pass for world + brush models - and maybe show more clearly if there's any benefit to the vbo.
I'm not sure about why id1 start got slower. I am using unsigned int indices which is sometimes not recommended.
|