u/SurDno

How to balance shader work vs bandwidth?

I am working on a small scale voxel engine and currently just trying to push rendering distance to its absolute limits.

One of the optimisations I hear often is reducing the amount of data sent to the GPU. So I reduced my vertex buffer 7x to 4 bytes (32 bits) by storing local chunk coordinates instead of float global coord, packing normal vector into first 3 bits of a byte (as it can only ever have 6 values) and using the rest for block type.

But the work I had to do in a shader to decode those values ended up resulting in (slightly but still) worse performance than when sending all the data raw, at least on my high end GPU.

Is there a rule of thumb somewhere about how much to send vs what to delegate to a shader? Is less bandwidth always better or does it only start to become an issue once you reach certain amount of data sent? Is this balance any different on lower end GPUs, and I will feel the optimisation if I benchmark on a different machine?

Sorry if the question is stipud, I’m just a beginner.

reddit.com
u/SurDno — 1 day ago

How to balance shader work vs bandwidth?

I am working on a small scale voxel engine and currently just trying to push rendering distance to its absolute limits.

One of the optimisations I hear often is reducing the amount of data sent to the GPU. So I reduced my vertex buffer 7x to 4 bytes (32 bits) by storing local chunk coordinates instead of float global coord, packing normal vector into first 3 bits of a byte (as it can only ever have 6 values) and using the rest for block type.

But the work I had to do in a shader to decode those values ended up resulting in (slightly but still) worse performance than when sending all the data raw, at least on my high end GPU.

Is there a rule of thumb somewhere about how much to send vs what to delegate to a shader? Is less bandwidth always better or does it only start to become an issue once you reach certain amount of data sent? Is this balance any different on lower end GPUs, and I will feel the optimisation if I benchmark on a different machine?

Sorry if the question is stipud, I’m just a beginner.

reddit.com
u/SurDno — 1 day ago

How to combat extreme Moire pattern when generating terrain with extremely small voxels?

This is on a 4k screen. MSAA helps a bit, using LOD chunks with larger voxels helps further but if I decrease the LOD distance to the point where Moire disappears, the pop-in of LODS becomes obvious. Any other solutions I am not thinking of?

u/SurDno — 2 days ago
▲ 51 r/DotA2

Texture filtering got broken in Spoon Man

In an absolutely disheartening turn of events, a recent update seems to have enabled anisotropic filtering instead of point (nearest neighbor) for the pixel art sprites used in Spoon Man minigame. Some textures are unaffected (the background looks fine!) but character sprites, items, VFX are all blurry.

This makes the minigame literally unplayable, it looks like shit. I am only bringing this up in hopes that someone from Valve sees that post, because this *has* to be addressed as soon as possible. An issue like that cannot stay in DotA.

u/SurDno — 5 days ago
▲ 392 r/DotA2

My first green wall after 5 years of Dota! So proud.

u/SurDno — 6 days ago
▲ 55 r/DotA2

At this point I get a lot more excited for a bunch of QoL changes over number changes for a couple heroes. Was really looking forward to Spring Cleaning 2026, but apparently it ain't coming.

Some changes I would personally appreciate:

  • Getting rid of 2 pings in a short time frame limit when you are pinging different things in quick succession (e.g. bkb ready, refresher ready, ult ready). Or better yet, not having any ping limit at all for 12k behaviour score.
  • Replacing "I will stack" message with "This camp is empty" when pinging an empty camp, so that you can communicate an area has been farmed or the camp is blocked.
  • Adding an extra "potential enemy vision here" ping, because neither "We need vision" nor "Enemy has vision" communicate that you want a sentry but aren't 100% sure.
  • "On my way" ping minimap pathfinding taking the twin gates into account, so if you're standing next to a gate and pinging the opposite lane, it does not show that the shortest path is you going through the entire map.
  • "On my way" pings still working on stuff like Wisdom Shrines instead of just displaying when it activates without the info that you are going there.
  • "Wisdom Shrine is active" ping to differentiate between having it in vision (and thus knowing it's active) and not having it in vision (and thus "might be active").
  • Rune pings when not seeing them directly to work on pinging the actual rune spot, not just the minimap.
  • "Enemy Tower has X% HP" saying which tower specifically is getting pinged (e.g. "Bottom Tier 2 Tower").
reddit.com
u/SurDno — 21 days ago