- Status
- Offline
- Joined
- Mar 3, 2026
- Messages
- 330
- Reaction score
- 7
Anyone else currently banging their head against the wall with external visibility checks in Valorant? Trying to stay away from memory writes is the play for longevity against Vanguard, but the standard UE heuristics are acting up lately.
I've been digging through my latest dump and testing the common LastRenderTime logic. In theory, it's simple: check if the last time the mesh was submitted for rendering is close enough to the current render time. But the engine updates seem to be making these values go stale or hiding them deeper in the component padding.
The Current Logic Issue
Using the standard float read:
The problem is lastRenderTimeOnScreen often stays frozen at old values even when the enemy is dead center in the crosshair. I've seen some builds switching these to doubles at 0x478 and 0x47C, which might be a precision thing or just different padding in the UPrimitiveComponent.
Potential Fixes?
If you're seeing stale values, the offset might have shifted into what the SDK calls padding. Also, check if you're reading the right primitive. Relying purely on render time can be flakey if the occlusion culling behaves differently between patches.
Are you guys still using the render time heuristic, or has anyone successfully implemented bSeenByResult externally without getting clapped?
who's tweaked this vis check logic lately?
I've been digging through my latest dump and testing the common LastRenderTime logic. In theory, it's simple: check if the last time the mesh was submitted for rendering is close enough to the current render time. But the engine updates seem to be making these values go stale or hiding them deeper in the component padding.
The Current Logic Issue
Using the standard float read:
Code:
float lastSubmitTime = read<float>(mesh + 0x480);
float lastRenderTimeOnScreen = read<float>(mesh + 0x484);
bool visible = (lastRenderTimeOnScreen + 0.06f >= lastSubmitTime);
Current offsets being analyzed:
- UWorld: 0xC19A0C0
- Mesh: Actor + 0x4E8
- Bone Array: mesh + 0x738
Potential Fixes?
If you're seeing stale values, the offset might have shifted into what the SDK calls padding. Also, check if you're reading the right primitive. Relying purely on render time can be flakey if the occlusion culling behaves differently between patches.
Are you guys still using the render time heuristic, or has anyone successfully implemented bSeenByResult externally without getting clapped?
who's tweaked this vis check logic lately?