View Issue Details

IDProjectCategoryView StatusLast Update
0005851The Dark ModGraphicspublic14.08.2022 19:14
Reporterstgatilov Assigned Tostgatilov  
PrioritylowSeverityminorReproducibilityN/A
Status resolvedResolutionfixed 
Product VersionTDM 2.10 
Target VersionTDM 2.11Fixed in VersionTDM 2.11 
Summary0005851: Stencil shadows with multisampling: don't blit whole framebuffer
DescriptionAfter real multisampling was returned back (I guess it was in 2.08), we had very inefficient implementation of stencil shadows.
I have fixed the simple issue causing huge slowdowns for 2.10, but some inefficiency still remains.

After we finish rendering the stencil buffer, we always blit-resolve the whole screen.
This means increased memory bandwidth, which is often the main bottleneck.
The original Doom 3 was very careful to limit light-related operations to the scissor rectangle, and we should do the same for blit-resolve.

Of course, there will be issues, e.g. currently Framebuffer class does not support blitting rectangle.
Moreover, if we blit a rectangle, it is not obvious how to specify the rectangle (there are different many ways due to e.g. "render scale").
Maybe it makes sense to add a flag "respect scissor", and specify the rectangle via OpenGL scissor (which already has multiple functions to set it).
TagsNo tags attached.

Activities

stgatilov

stgatilov

14.08.2022 19:14

administrator   ~0015166

Done in commits:
  r10075 Refactoring scissors.
  r10076 Implemented FrameBuffer::BlitToVidSize to copy part of FBO.
  r10077 Copy only light scissor region during stencil shadows AA resolve.

I had some bugs when I was trying to respect GL state scissor, so I implemented another interface for partial FBO blit:
  void BlitToVidSize(FrameBuffer *target, GLbitfield mask, GLenum filter, int x, int y, int w, int h);
I guess this is better in some way. And we can add "Relative" version in future if we need (unlikely).

On start of Bakery Job, with Medium soft quality and 4x multisampling, I get FPS boost from 108 to 120.
Well worth it =)

Issue History

Date Modified Username Field Change
21.12.2021 17:22 stgatilov New Issue
14.08.2022 19:01 stgatilov Assigned To => stgatilov
14.08.2022 19:01 stgatilov Status new => assigned
14.08.2022 19:14 stgatilov Note Added: 0015166
14.08.2022 19:14 stgatilov Status assigned => resolved
14.08.2022 19:14 stgatilov Resolution open => fixed
14.08.2022 19:14 stgatilov Fixed in Version => TDM 2.11