Daemon icon indicating copy to clipboard operation
Daemon copied to clipboard

Some fixes and optimizations in the renderer

Open illwieckz opened this issue 1 year ago • 3 comments

  • use glConfig.* instead of r_* when exists as the features can now be disabled if hardware doesn't support it, this is a fixup for: https://github.com/DaemonEngine/Daemon/pull/1228
  • more unused GLSL permutation detection,
  • disable normal, specular and physical mapping when deluxe mapping is disabled,
  • do not sample dummy material map when feature is disabled, some low-end hardware have a low amount of texture fetches, so we better avoid that if possible,
  • produce smaller GLSL files, do not allocate unused structures,
  • also reorganize a bit the code.

illwieckz avatar Aug 16 '24 23:08 illwieckz

About “produce smaller GLSL files, do not allocate unused structures”, on lowest graphics preset,

before:

8,0K	glsl/generic2D/generic2D_0.bin
8,0K	glsl/generic2D/generic2D_1.bin
8,0K	glsl/generic/generic_0.bin
48K	glsl/generic/generic_1.bin
8,0K	glsl/generic/generic_2.bin
12K	glsl/generic/generic_4.bin
8,0K	glsl/generic/generic_8.bin
48K	glsl/generic/generic_9.bin
12K	glsl/generic/generic_10.bin
12K	glsl/generic/generic_12.bin
8,0K	glsl/generic/generic_16.bin
48K	glsl/generic/generic_17.bin
8,0K	glsl/generic/generic_18.bin
12K	glsl/generic/generic_20.bin
8,0K	glsl/generic/generic_32.bin
48K	glsl/generic/generic_33.bin
12K	glsl/generic/generic_34.bin
12K	glsl/generic/generic_40.bin
48K	glsl/generic/generic_41.bin
12K	glsl/generic/generic_42.bin
8,0K	glsl/generic/generic_48.bin
48K	glsl/generic/generic_49.bin
12K	glsl/generic/generic_50.bin
584K	glsl/lightMapping/lightMapping_0.bin
584K	glsl/lightMapping/lightMapping_1.bin
620K	glsl/lightMapping/lightMapping_2.bin
620K	glsl/lightMapping/lightMapping_3.bin
584K	glsl/lightMapping/lightMapping_4.bin
584K	glsl/lightMapping/lightMapping_5.bin
584K	glsl/lightMapping/lightMapping_16.bin
584K	glsl/lightMapping/lightMapping_17.bin
620K	glsl/lightMapping/lightMapping_18.bin
620K	glsl/lightMapping/lightMapping_19.bin
584K	glsl/lightMapping/lightMapping_20.bin
584K	glsl/lightMapping/lightMapping_21.bin
8,0K	glsl/fogQuake3/fogQuake3_0.bin
48K	glsl/fogQuake3/fogQuake3_1.bin
8,0K	glsl/fogQuake3/fogQuake3_2.bin
8,0K	glsl/fogGlobal/fogGlobal_0.bin
8,0K	glsl/portal/portal_0.bin
8,0K	glsl/cameraEffects/cameraEffects_0.bin
8,0K	glsl/motionblur/motionblur_0.bin
7,6M	total

after:

8,0K	glsl/generic2D/generic2D_0.bin
8,0K	glsl/generic2D/generic2D_1.bin
8,0K	glsl/generic/generic_0.bin
48K	glsl/generic/generic_1.bin
8,0K	glsl/generic/generic_2.bin
12K	glsl/generic/generic_4.bin
8,0K	glsl/generic/generic_8.bin
48K	glsl/generic/generic_9.bin
12K	glsl/generic/generic_10.bin
12K	glsl/generic/generic_12.bin
8,0K	glsl/generic/generic_16.bin
48K	glsl/generic/generic_17.bin
8,0K	glsl/generic/generic_18.bin
12K	glsl/generic/generic_20.bin
8,0K	glsl/generic/generic_32.bin
48K	glsl/generic/generic_33.bin
12K	glsl/generic/generic_34.bin
12K	glsl/generic/generic_40.bin
48K	glsl/generic/generic_41.bin
12K	glsl/generic/generic_42.bin
8,0K	glsl/generic/generic_48.bin
48K	glsl/generic/generic_49.bin
12K	glsl/generic/generic_50.bin
8,0K	glsl/lightMapping/lightMapping_0.bin
8,0K	glsl/lightMapping/lightMapping_1.bin
48K	glsl/lightMapping/lightMapping_2.bin
48K	glsl/lightMapping/lightMapping_3.bin
12K	glsl/lightMapping/lightMapping_4.bin
12K	glsl/lightMapping/lightMapping_5.bin
12K	glsl/lightMapping/lightMapping_16.bin
12K	glsl/lightMapping/lightMapping_17.bin
48K	glsl/lightMapping/lightMapping_18.bin
48K	glsl/lightMapping/lightMapping_19.bin
12K	glsl/lightMapping/lightMapping_20.bin
12K	glsl/lightMapping/lightMapping_21.bin
8,0K	glsl/fogQuake3/fogQuake3_0.bin
48K	glsl/fogQuake3/fogQuake3_1.bin
8,0K	glsl/fogQuake3/fogQuake3_2.bin
8,0K	glsl/fogGlobal/fogGlobal_0.bin
8,0K	glsl/portal/portal_0.bin
8,0K	glsl/cameraEffects/cameraEffects_0.bin
8,0K	glsl/motionblur/motionblur_0.bin
832K	total

The big deal is the lights[ MAX_REF_LIGHTS ] not being allocated in the compiled file. I noticed it by looking at file size, finding it surprisingly large for a lowest preset, and opening the files in an hexadecimal editor and nothing the many lights.* allocated fields.

illwieckz avatar Aug 16 '24 23:08 illwieckz

Wrong commit message: gl_shader: there is no USE_DELUXE_MAPPING macro anymore

slipher avatar Aug 28 '24 21:08 slipher

LGTM

slipher avatar Aug 29 '24 18:08 slipher