Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/engine/renderer/GLUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ struct GLConfig

bool colorGrading;
bool realtimeLighting;
int maxRealtimeLights;
int realtimeLightLayers;
bool deluxeMapping;
bool normalMapping;
Expand Down
2 changes: 1 addition & 1 deletion src/engine/renderer/gl_shader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -679,7 +679,7 @@ static std::string GenEngineConstants() {
AddDefine( str, "r_zNear", r_znear->value );

AddDefine( str, "M_PI", static_cast< float >( M_PI ) );
AddDefine( str, "MAX_REF_LIGHTS", MAX_REF_LIGHTS );
AddDefine( str, "MAX_REALTIME_LIGHTS", glConfig.maxRealtimeLights );
AddDefine( str, "NUM_LIGHT_LAYERS", glConfig.realtimeLightLayers );
AddDefine( str, "TILE_SIZE", TILE_SIZE );

Expand Down
2 changes: 1 addition & 1 deletion src/engine/renderer/glsl_source/computeLight_fp.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ layout(std140, binding = BIND_LIGHTS) uniform u_Lights {
#else
layout(std140) uniform u_Lights {
#endif
Light lights[MAX_REF_LIGHTS];
Light lights[MAX_REALTIME_LIGHTS];
};

#define GetLight( idx ) lights[idx]
Expand Down
2 changes: 1 addition & 1 deletion src/engine/renderer/glsl_source/lighttile_fp.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ layout(std140, binding = BIND_LIGHTS) uniform u_Lights {
#else
layout(std140) uniform u_Lights {
#endif
Light lights[MAX_REF_LIGHTS];
Light lights[MAX_REALTIME_LIGHTS];
};

Light GetLight( in uint idx ) {
Expand Down
2 changes: 1 addition & 1 deletion src/engine/renderer/tr_scene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ void RE_AddDynamicLightToScene( const vec3_t org, float radius, float r, float g
return;
}

if ( r_numLights >= MAX_REF_LIGHTS )
if ( r_numLights >= glConfig.maxRealtimeLights )
{
return;
}
Expand Down
8 changes: 6 additions & 2 deletions src/engine/renderer/tr_shade.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,19 @@ static void EnableAvailableFeatures()
}

if ( glConfig.realtimeLighting ) {
// Minimum possible is 16384 / 48 = 341
glConfig.maxRealtimeLights =
std::min<size_t>( MAX_REF_LIGHTS, glConfig.maxUniformBlockSize / sizeof( shaderLight_t ) );

glConfig.realtimeLightLayers = r_realtimeLightLayers.Get();

if ( glConfig.realtimeLightLayers > glConfig.max3DTextureSize ) {
glConfig.realtimeLightLayers = glConfig.max3DTextureSize;
Log::Notice( "r_realtimeLightLayers exceeds maximum 3D texture size, using %i instead.", glConfig.max3DTextureSize );
}

Log::Notice( "Using %i dynamic light layers, %i dynamic lights available per tile", glConfig.realtimeLightLayers,
glConfig.realtimeLightLayers * 16 );
Log::Notice( "Using %i dynamic light layers, %i dynamic lights available per tile, max %d lights",
glConfig.realtimeLightLayers, glConfig.realtimeLightLayers * 16, glConfig.maxRealtimeLights );
}

glConfig.colorGrading = r_colorGrading.Get();
Expand Down
2 changes: 1 addition & 1 deletion src/engine/renderer/tr_vbo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -698,7 +698,7 @@ static void R_InitLightUBO()
if( glConfig.uniformBufferObjectAvailable ) {
glGenBuffers( 1, &tr.dlightUBO );
glBindBuffer( GL_UNIFORM_BUFFER, tr.dlightUBO );
glBufferData( GL_UNIFORM_BUFFER, MAX_REF_LIGHTS * sizeof( shaderLight_t ), nullptr, GL_DYNAMIC_DRAW );
glBufferData( GL_UNIFORM_BUFFER, glConfig.maxRealtimeLights * sizeof( shaderLight_t ), nullptr, GL_DYNAMIC_DRAW );
glBindBuffer( GL_UNIFORM_BUFFER, 0 );
}
}
Expand Down
Loading