Daemon
Daemon copied to clipboard
Some fixes and optimizations in the renderer
- 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.
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.
Wrong commit message: gl_shader: there is no USE_DELUXE_MAPPING macro anymore
LGTM