Can't say I've noticed anything particularly broken with the gibs while playing with bots. Instead, I've noticed something different: in some cases when a bot respawns, position of it's corpse is interpolated from bot's current position to corpse position. This doesn't happen every time and seems to happen only when corpse and bot's respawn location are in player's PVS. This happens regardless of cl_async and cl_predict settings.
Here's a short video demonstrating the bug (watching at 0.5 speed makes the bug easier to spot):
In some cases debris/gib models are rendered black on sloped surfaces. More info here.
I already have a fix for in my merged missionpack source that by adding a small bounding box to all gibs: VectorSet (gib->mins, -4, -4, -4); VectorSet (gib->maxs, 4, 4, 4); gib->solid = SOLID_TRIGGER; // Knightmare- was SOLID_NOT
Last Edit: Jun 5, 2019 18:04:51 GMT -5 by knightmare
Another issue with gibs/debris: when they start fading, there's a noticeable jump in opacity, which happens because during the first server frame of gib/debris fading, the alpha is interpolated from 0 to 0.95. I fixed that by setting gib/debris alpha in their spawn functions.
Out of curiosity, why fog logic was made so complicated? More specifically, what's the reasoning behind storing 3 separate copies of fog-related vars (in refdef_t.foginfo, in r_foginfo and as local vars in r_fog.c)?
The local fog vars in r_fog.c were there first, which were directly set by a servercommand received by the client. I discovered that the fog values were lost on a vid_restart, so I added r_foginfo in the client and the foginfo struct to the refedef for re-initialization. I may look at getting rid of the renderer-local fog vars in the future.
Last Edit: Jun 7, 2019 23:56:16 GMT -5 by knightmare
I discovered that the fog values were lost on a vid_restart.
But do they even need to be reset? Default values are assigned to all fog vars in r_fog.c and R_InitFogVars() is called only from R_Init(), which makes it redundant. Simply removing R_InitFogVars() seems to fix the issue.
Those default values only exist when the .exe starts up the first time- subsequent vid_restarts don't restore them, as the renderer is integrated into the exe. Quite frankly, they shouldn't be there, and I'll likely remove them in the near future.
As far as the local renderer fog vars themselves, I admit they need to be rethought. The r_foginfo struct in the client will likely take their place for initialization/defaults.