Home Artists Posts Import Register

Content

A lot of work was done under the hood. The most noticeable changes are that soft-depth and semitransparent objects will receive raytraced dynamic lighting on their backfaces now, because they shouldn't block lighting traces (see the first two screenshots), and that dynamic light sampling on external BSP models (e.g. ammo boxes) was actually giving less light than it should under colored dynamic lighting, which made those models looks darker under colored dynamic faint lights, but this was fixed now.

In vanilla Quake and most mods and total conversions, external BSP models are used exclusively for items and other dynamic objects that are not part of the level architecture. As one of the goals of the raytracing code in Retroquad is to improve the visual discernment of the level's architecture, I've excluded external BSP models from the raytracing code entirely, and they are treated the same as MDL models (backfaced dynamic lighting, global dynamic light level that doesn't receive raytraced shadows, and doesn't block lighting traces). This means that if you see a dynamic light casting shadows, you'll know that it's the environment blocking it, which makes level navigation more intuitive.

That's right, I'm advocating for less realtime shadows in games' graphics! Excessive amounts of realtime shadows may look impressive, but doesn't contribute to gameplay clarity. A clearer discernment between environment details and gameplay items makes the navigation visually easier, allowing players to focus better on their objectives, which makes games more fun. And I'm doing this in a way where the items doesn't feel detached from the world, so the intended atmosphere isn't affected.

A number of small optimizations were done and the code is being overhauled to the final steps of the pseudo-deviance optimization I have in mind. Right now the pseudo-deviance code is disabled while I work on it, but essentially, it requires 9 traces for each lightblock, which is why it's so heavy on the CPU. The final optimization I'm working on involves implementing a small cache for the traces, which will allow the pseudo-deviance to be computed from just 1 trace per lightblock, which will eliminate its slowdown almost entirely.

Files

Comments

No comments found for this post.