mirror of
https://github.com/DrBeef/QuestZDoom.git
synced 2025-04-24 18:22:02 +00:00
- Added menu option to switch between light buffer Can be selected UBO or SSBO, the default is UBO, SSBO is recommended for the Quest 2 to prevent crash with some mods. From my test UBO is faster by ~5fps.
This commit is contained in:
parent
440c189939
commit
71543d81cd
6 changed files with 23 additions and 2 deletions
|
@ -25,6 +25,8 @@
|
|||
**
|
||||
**/
|
||||
|
||||
#include "version.h"
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "gl/shaders/gl_shader.h"
|
||||
#include "gl/dynlights/gl_lightbuffer.h"
|
||||
|
@ -35,6 +37,10 @@
|
|||
static const int ELEMENTS_PER_LIGHT = 4; // each light needs 4 vec4's.
|
||||
static const int ELEMENT_SIZE = (4*sizeof(float));
|
||||
|
||||
CUSTOM_CVAR (Int, gl_light_buffer_type, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
||||
{
|
||||
Printf("You must restart " GAMENAME " to switch the light buffer\n");
|
||||
}
|
||||
|
||||
FLightBuffer::FLightBuffer()
|
||||
{
|
||||
|
|
|
@ -442,7 +442,10 @@ bool FShader::Load(const char * name, const char * vert_prog_lump, const char *
|
|||
unsigned int lightbuffertype = GLRenderer->mLights->GetBufferType();
|
||||
unsigned int lightbuffersize = GLRenderer->mLights->GetBlockSize();
|
||||
#ifdef __MOBILE__
|
||||
vp_comb.Format(ES_VERSION_STR"\n#define SHADER_STORAGE_LIGHTS\n");
|
||||
if (gl_light_buffer_type == 0)
|
||||
vp_comb.Format(ES_VERSION_STR"\n#define NUM_UBO_LIGHTS %d\n", lightbuffersize);
|
||||
else
|
||||
vp_comb.Format(ES_VERSION_STR"\n#define SHADER_STORAGE_LIGHTS\n");
|
||||
#else
|
||||
if (lightbuffertype == GL_UNIFORM_BUFFER)
|
||||
{
|
||||
|
|
|
@ -29,6 +29,7 @@ EXTERN_CVAR (Bool, gl_light_sprites);
|
|||
EXTERN_CVAR (Bool, gl_light_particles);
|
||||
EXTERN_CVAR (Bool, gl_light_shadowmap);
|
||||
EXTERN_CVAR (Int, gl_shadowmap_quality);
|
||||
EXTERN_CVAR (Int, gl_light_buffer_type);
|
||||
|
||||
EXTERN_CVAR(Int, gl_fogmode)
|
||||
EXTERN_CVAR(Int, gl_lightmode)
|
||||
|
|
|
@ -212,7 +212,8 @@ void gl_LoadExtensions()
|
|||
gl.glslversion = 3.3;
|
||||
gl.flags |= RFL_NO_CLIP_PLANES;
|
||||
gl.flags |= RFL_UINT_IDX;
|
||||
gl.flags |= RFL_SHADER_STORAGE_BUFFER;
|
||||
if (gl_light_buffer_type == 1)
|
||||
gl.flags |= RFL_SHADER_STORAGE_BUFFER;
|
||||
}
|
||||
#else
|
||||
|
||||
|
|
|
@ -2762,6 +2762,7 @@ GLLIGHTMNU_LIGHTPARTICLES = "Lights affect particles";
|
|||
GLLIGHTMNU_LIGHTSHADOWMAP = "Light shadowmaps";
|
||||
GLLIGHTMNU_LIGHTSHADOWMAPQUALITY = "Shadowmap quality";
|
||||
GLLIGHTMNU_LIGHTSHADOWMAPFILTER = "Shadowmap filter";
|
||||
GLLIGHTMNU_LIGHTBUFFERTYPE = "Light buffer type";
|
||||
|
||||
// OpenGL Preferences
|
||||
GLPREFMNU_TITLE = "OPENGL PREFERENCES";
|
||||
|
@ -2882,6 +2883,8 @@ OPTVAL_CLASSICZ = "Classic ZDoom";
|
|||
OPTVAL_MODERN = "Modern (WASD)";
|
||||
OPTVAL_MODERN2 = "Modern (ESDF)";
|
||||
OPTVAL_MODERN3 = "Modern (OKL;)";
|
||||
OPTVAL_UBO = "UBO (faster, unstable)";
|
||||
OPTVAL_SSBO = "SSBO (slower)";
|
||||
|
||||
// QZDoom exclusive:
|
||||
|
||||
|
|
|
@ -2588,6 +2588,12 @@ OptionValue "FogMode"
|
|||
2, "$OPTVAL_RADIAL"
|
||||
}
|
||||
|
||||
OptionValue "LightBuffer"
|
||||
{
|
||||
0, "$OPTVAL_UBO"
|
||||
1, "$OPTVAL_SSBO"
|
||||
}
|
||||
|
||||
OptionValue "FuzzStyle"
|
||||
{
|
||||
0, "$OPTVAL_SHADOW"
|
||||
|
@ -2669,6 +2675,7 @@ OptionMenu "GLLightOptions" protected
|
|||
Option "$GLLIGHTMNU_LIGHTSPRITES", gl_light_sprites, "YesNo"
|
||||
Option "$GLLIGHTMNU_LIGHTPARTICLES", gl_light_particles, "YesNo"
|
||||
Option "$GLLIGHTMNU_LIGHTSHADOWMAP", gl_light_shadowmap, "YesNo"
|
||||
Option "$GLLIGHTMNU_LIGHTBUFFERTYPE", gl_light_buffer_type, "LightBuffer"
|
||||
Option "$GLLIGHTMNU_LIGHTSHADOWMAPQUALITY", gl_shadowmap_quality, "ShadowMapQuality"
|
||||
Option "$GLLIGHTMNU_LIGHTSHADOWMAPFILTER", gl_shadowmap_filter, "ShadowMapFilter"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue