Skip to content

Model Data + Near Plane & Detail Culling Dithering + Zone Reveal Fade + Wind & Character Displacement - #1010

Open
RuffledPlume wants to merge 67 commits into
117HD:masterfrom
RuffledPlume:DitherGeomNearPlane
Open

Model Data + Near Plane & Detail Culling Dithering + Zone Reveal Fade + Wind & Character Displacement#1010
RuffledPlume wants to merge 67 commits into
117HD:masterfrom
RuffledPlume:DitherGeomNearPlane

Conversation

@RuffledPlume

Copy link
Copy Markdown
Contributor

Uses ordered dithering to fade out geometry that is about to clip with the near plane

image image

aHooder
aHooder previously requested changes May 9, 2026

@aHooder aHooder left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code looks good to me, but I think we should add a toggle for this, which removes the extra fragment input when disabled, so this performance difference is an opt-in thing:
image

@RuffledPlume
RuffledPlume force-pushed the DitherGeomNearPlane branch from bc421e1 to 88d935c Compare May 9, 2026 13:47
@RuffledPlume
RuffledPlume requested a review from aHooder May 9, 2026 13:50
@RuffledPlume
RuffledPlume force-pushed the DitherGeomNearPlane branch 2 times, most recently from 5df2bdf to c7d1ced Compare May 14, 2026 11:03
@RuffledPlume RuffledPlume changed the title Dither out geom that is about the clip with the near plane Model Data + Near Plane Dithering + Zone Reveal Fade May 14, 2026
@RuffledPlume
RuffledPlume force-pushed the DitherGeomNearPlane branch 2 times, most recently from c3b9629 to 4618659 Compare May 16, 2026 19:29
@RuffledPlume
RuffledPlume force-pushed the DitherGeomNearPlane branch from 4618659 to a728bc3 Compare June 29, 2026 02:23
@RuffledPlume RuffledPlume changed the title Model Data + Near Plane Dithering + Zone Reveal Fade Model Data + Near Plane & Detail Culling Dithering + Zone Reveal Fade Jun 29, 2026
@RuffledPlume

Copy link
Copy Markdown
Contributor Author

Rebased off master & added detail model culling:

DetailModelCullingDithering.mp4

@RuffledPlume
RuffledPlume force-pushed the DitherGeomNearPlane branch from b797e70 to e25c6c4 Compare June 29, 2026 02:34
@RuffledPlume

Copy link
Copy Markdown
Contributor Author

Ready for review, the dither options is behind a config so can be opted out to reduce performance cost:
image

@RuffledPlume

Copy link
Copy Markdown
Contributor Author

Wind & Character Displacement:

ZoneRenderer.Displacement.mp4

@RuffledPlume
RuffledPlume force-pushed the DitherGeomNearPlane branch 3 times, most recently from 6291d07 to 8fce6a7 Compare July 10, 2026 10:41
@RuffledPlume RuffledPlume changed the title Model Data + Near Plane & Detail Culling Dithering + Zone Reveal Fade Model Data + Near Plane & Detail Culling Dithering + Zone Reveal Fade + Wind & Character Displacement Jul 10, 2026
@RuffledPlume

RuffledPlume commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Adds FrameTimer Graphs:
image

This was moved to PR: #1139

@RuffledPlume

RuffledPlume commented Aug 13, 2026

Copy link
Copy Markdown
Contributor Author

@aHooder I've optimized the Dithering such that only Zones which intersect with the camera with a radius of 2 tiles draw with discard variant of the scene shader. Here a before & after:

Before:
image

After:
image

So I think it should be safe for this to be enabled by default?

@RuffledPlume

Copy link
Copy Markdown
Contributor Author

b35b752

I think we should keep some explanation of the format, since the layout no longer matches the vao binding layout

@RuffledPlume

Copy link
Copy Markdown
Contributor Author

156e136

Removal of this check helps IGPU, since the staging buffer is meant to help coalcse the draws into a single drawCall

@aHooder

aHooder commented Aug 26, 2026

Copy link
Copy Markdown
Member

b35b752

I think we should keep some explanation of the format, since the layout no longer matches the vao binding layout

The offsets & byte counts were kinda nice, but the (24 bytes) thing is already in a constant directly below it, and I'm not sure how useful the (unaligned) thing is. The main reason I figured it was LLM is because it removed the info about how two flags are packed into the textureFaceIdx, which imo really should remain specified somewhere.

@aHooder
aHooder dismissed their stale review August 26, 2026 08:04

Stale & mentioned issues have been resolved. The remaining issue at this point is the GPU performance, even with dithering disabled, but the PR is still a big win on the CPU-side & bringing feature parity with legacy, so this is arguably good to go.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants