Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Only generate some images/FBO when they are used #1233

Merged
merged 4 commits into from
Sep 26, 2024
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
16 changes: 1 addition & 15 deletions src/engine/renderer/tr_fbo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -520,25 +520,11 @@ void R_InitFBOs()
R_CheckFBO( tr.portalRenderFBO );
}

if ( glConfig2.bloom )
{
width = glConfig.vidWidth * 0.25f;
height = glConfig.vidHeight * 0.25f;

tr.downScaleFBO_quarter = R_CreateFBO( "_downScale_quarter", width, height );
R_BindFBO( tr.downScaleFBO_quarter );

R_AttachFBOTexture2D( GL_TEXTURE_2D, tr.downScaleFBOImage_quarter->texnum, 0 );
R_CheckFBO( tr.downScaleFBO_quarter );

tr.downScaleFBO_64x64 = R_CreateFBO( "_downScale_64x64", 64, 64 );
R_BindFBO( tr.downScaleFBO_64x64 );

R_AttachFBOTexture2D( GL_TEXTURE_2D, tr.downScaleFBOImage_64x64->texnum, 0 );
R_CheckFBO( tr.downScaleFBO_64x64 );

width = glConfig.vidWidth * 0.25f;
height = glConfig.vidHeight * 0.25f;

tr.contrastRenderFBO = R_CreateFBO( "_contrastRender", width, height );
R_BindFBO( tr.contrastRenderFBO );

Expand Down
77 changes: 12 additions & 65 deletions src/engine/renderer/tr_image.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2249,6 +2249,8 @@ R_CreateFogImage
*/
static void R_CreateFogImage()
{
// Fog image is always created because disabling fog is cheat.

int x, y;
byte *data, *ptr;
float d;
Expand Down Expand Up @@ -2381,51 +2383,13 @@ static void R_CreateNoFalloffImage()
tr.noFalloffImage = R_CreateImage( "_noFalloff", ( const byte ** ) &dataPtr, 8, 8, 1, imageParams );
}

static const int ATTENUATION_XY_SIZE = 128;
static void R_CreateAttenuationXYImage()
static void R_CreateContrastRenderFBOImage()
{
int x, y;
byte data[ ATTENUATION_XY_SIZE ][ ATTENUATION_XY_SIZE ][ 4 ];
byte *ptr = &data[0][0][0];
byte *dataPtr = &data[0][0][0];
int b;

// make a centered inverse-square falloff blob for dynamic lighting
for ( y = 0; y < ATTENUATION_XY_SIZE; y++ )
if ( !glConfig2.bloom)
{
for ( x = 0; x < ATTENUATION_XY_SIZE; x++ )
{
float d;

d = ( ATTENUATION_XY_SIZE / 2 - 0.5f - x ) * ( ATTENUATION_XY_SIZE / 2 - 0.5f - x ) +
( ATTENUATION_XY_SIZE / 2 - 0.5f - y ) * ( ATTENUATION_XY_SIZE / 2 - 0.5f - y );
b = 1000 / d;

if ( b > 255 )
{
b = 255;
}
else if ( b < 75 )
{
b = 0;
}

ptr[ 0 ] = ptr[ 1 ] = ptr[ 2 ] = b;
ptr[ 3 ] = 255;
ptr += 4;
}
return;
}

imageParams_t imageParams = {};
imageParams.bits = IF_NOPICMIP;
imageParams.filterType = filterType_t::FT_DEFAULT;
imageParams.wrapType = wrapTypeEnum_t::WT_CLAMP;

tr.attenuationXYImage = R_CreateImage( "_attenuationXY", ( const byte ** ) &dataPtr, ATTENUATION_XY_SIZE, ATTENUATION_XY_SIZE, 1, imageParams );
}

static void R_CreateContrastRenderFBOImage()
{
int width, height;

width = glConfig.vidWidth * 0.25f;
Expand All @@ -2439,8 +2403,13 @@ static void R_CreateContrastRenderFBOImage()
tr.contrastRenderFBOImage = R_CreateImage( "_contrastRenderFBO", nullptr, width, height, 1, imageParams );
}

static void R_CreateBloomRenderFBOImage()
static void R_CreateBloomRenderFBOImages()
{
if ( !glConfig2.bloom)
{
return;
}

illwieckz marked this conversation as resolved.
Show resolved Hide resolved
int i;
int width, height;

Expand Down Expand Up @@ -2587,26 +2556,6 @@ static void R_CreatePortalRenderImage()
tr.portalRenderImage = R_CreateImage( "_portalRender", nullptr, width, height, 1, imageParams );
}

// Tr3B: clean up this mess some day ...
static void R_CreateDownScaleFBOImages()
{
int width, height;

width = glConfig.vidWidth * 0.25f;
height = glConfig.vidHeight * 0.25f;

imageParams_t imageParams = {};
imageParams.bits = IF_NOPICMIP;
imageParams.filterType = filterType_t::FT_NEAREST;
imageParams.wrapType = wrapTypeEnum_t::WT_CLAMP;

tr.downScaleFBOImage_quarter = R_CreateImage( "_downScaleFBOImage_quarter", nullptr, width, height, 1, imageParams );

width = height = 64;

tr.downScaleFBOImage_64x64 = R_CreateImage( "_downScaleFBOImage_64x64", nullptr, width, height, 1, imageParams );
}

// *INDENT-OFF*
static void R_CreateShadowMapFBOImage()
{
Expand Down Expand Up @@ -2946,13 +2895,11 @@ void R_CreateBuiltinImages()
R_CreateRandomNormalsImage();
R_CreateFogImage();
R_CreateNoFalloffImage();
R_CreateAttenuationXYImage();
R_CreateContrastRenderFBOImage();
R_CreateBloomRenderFBOImage();
R_CreateBloomRenderFBOImages();
R_CreateCurrentRenderImage();
R_CreateDepthRenderImage();
R_CreatePortalRenderImage();
R_CreateDownScaleFBOImages();
R_CreateShadowMapFBOImage();
R_CreateShadowCubeFBOImage();
R_CreateBlackCubeImage();
Expand Down
5 changes: 0 additions & 5 deletions src/engine/renderer/tr_local.h
Original file line number Diff line number Diff line change
Expand Up @@ -2631,7 +2631,6 @@ enum class realtimeLightingRenderer_t { LEGACY, TILED };
image_t *flatImage; // use this as default normalmap
image_t *randomNormalsImage;
image_t *noFalloffImage;
image_t *attenuationXYImage;
image_t *blackCubeImage;
image_t *whiteCubeImage;

Expand All @@ -2644,8 +2643,6 @@ enum class realtimeLightingRenderer_t { LEGACY, TILED };
image_t *lighttileRenderImage;
image_t *portalRenderImage;

image_t *downScaleFBOImage_quarter;
image_t *downScaleFBOImage_64x64;
image_t *shadowMapFBOImage[ MAX_SHADOWMAPS * 2 ];
image_t *shadowCubeFBOImage[ MAX_SHADOWMAPS ];
image_t *sunShadowMapFBOImage[ MAX_SHADOWMAPS * 2 ];
Expand All @@ -2663,8 +2660,6 @@ enum class realtimeLightingRenderer_t { LEGACY, TILED };
FBO_t *depthtile2FBO;
FBO_t *lighttileFBO;
FBO_t *portalRenderFBO; // holds a copy of the last currentRender that was rendered into a FBO
FBO_t *downScaleFBO_quarter;
FBO_t *downScaleFBO_64x64;
FBO_t *contrastRenderFBO;
FBO_t *bloomRenderFBO[ 2 ];
FBO_t *shadowMapFBO[ MAX_SHADOWMAPS ];
Expand Down
2 changes: 1 addition & 1 deletion src/engine/renderer/tr_shade.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ static void GLSL_InitGPUShadersOrError()
}
}

if ( !r_noFog->integer )
// Fog GLSL is always loaded and built because disabling fog is cheat.
{
// Q3A volumetric fog
gl_shaderManager.load( gl_fogQuake3Shader );
Expand Down