View Issue Details

IDProjectCategoryView StatusLast Update
0006271The Dark ModGraphicspublic19.03.2023 10:47
Reporterstgatilov Assigned Tostgatilov  
PriorityurgentSeveritynormalReproducibilityN/A
Status assignedResolutionopen 
Product VersionTDM 2.11 
Target VersionTDM 2.12 
Summary0006271: Merge old and new backend
DescriptionThe plan is to get a single code path again:
  1) it would use uniforms like the old backend
  2) it would be split into classes and methods like the new backend.
Additional Informationhttps://forums.thedarkmod.com/index.php?/topic/20949-on-bindless-textures-multidraws-and-improvements-to-the-new-render-backend/page/3/#comment-469307
https://forums.thedarkmod.com/index.php?/topic/21761-212-planning/&do=findComment&comment=482780
TagsNo tags attached.

Relationships

related to 0005285 closedcabalistic Remove old backend's depth/interaction/stencil stages 

Activities

stgatilov

stgatilov

17.03.2023 19:28

administrator   ~0015974

I started with some cleanup, removing dead experiments and totally obsolete code:
  r10296 Deleted manylight interaction code: both in old and new backend.
  r10297 Deleted INATTR_POSITION macro in shaders.

Then I converted the new backend to using uniforms, like in the old one.
The new backend source is so clean, and the DrawBatchExecutor's abstraction was so good, that it took me a few days to backport everything to single uniforms!
  r10298 DepthStage of new backend converted to single uniforms.
  r10299 Added DepthBoundsTest::Update method.
  r10300 Converted stencil shadow stage in new backend to single uniforms.
  r10301 Converted shadow map stage from new backend to single uniforms.
  r10302 Converted interaction stage of new backend to single uniforms.

Finally, the underlying tech of new backend is deleted:
  r10303 Deleted DrawBatchExecutor.
stgatilov

stgatilov

17.03.2023 19:31

administrator   ~0015975

What I plan next:
  1) Refactor shadow maps stage so that it can work in non-singlepass mode (which is default now).
  2) Try to delete as much duplicate code from the old backend as I can.
  3) Further refactor single-pass shadow maps so that they handle noselfshadow properly, then make them default.
  4) Try to remove some usages of backEnd global variable in the new backend: the individual stages should get all his data is parameters.
  5) See if I can convert more code form old backend into the new architecture.
stgatilov

stgatilov

18.03.2023 10:28

administrator   ~0015976

Last edited: 19.03.2023 10:45

Some more work with cleaning code of shadow map state:
  r10304 Deleted some commented code in shadow map stage.
  r10305 Don't forward declare nested enum.
  r10306 Support alpha-tested shadow mapping under r_shadowMapAlphaTested cvar.
  r10307 One more Linux build fix.
stgatilov

stgatilov

19.03.2023 10:47

administrator   ~0015977

I switched non-singlepass shadow maps to the new code too:
  r10308 Refactoring ShadowMapStage for future single-light support.
  r10309 Now ShadowMapStage code works even in "r_shadowMapSinglePass 0" mode.

And then supported local/global shadows division:
  r10310 Refactoring around InteractionStage + RenderBackend.
  r10311 Now single-pass shadow maps respect noselfshadow setting.

Now singlepass shadow maps should have no downside compared to non-singlepass ones.

Issue History

Date Modified Username Field Change
12.03.2023 16:31 stgatilov New Issue
12.03.2023 16:31 stgatilov Status new => assigned
12.03.2023 16:31 stgatilov Assigned To => stgatilov
12.03.2023 16:31 stgatilov Relationship added related to 0005285
12.03.2023 16:31 stgatilov Additional Information Updated
17.03.2023 19:28 stgatilov Note Added: 0015974
17.03.2023 19:31 stgatilov Note Added: 0015975
18.03.2023 10:28 stgatilov Note Added: 0015976
19.03.2023 10:45 stgatilov Note Edited: 0015976
19.03.2023 10:47 stgatilov Note Added: 0015977