Browse Source

ref: gl: don't depend on lightgamma in recursive light point

pull/2/head
Alibek Omarov 10 months ago
parent
commit
8298053e6a
  1. 2
      ref/gl/gl_local.h
  2. 17
      ref/gl/gl_rlight.c
  3. 2
      ref/gl/gl_studio.c

2
ref/gl/gl_local.h

@ -238,7 +238,6 @@ typedef struct
int realframecount; // not including viewpasses int realframecount; // not including viewpasses
int framecount; int framecount;
qboolean ignore_lightgamma;
qboolean fCustomRendering; qboolean fCustomRendering;
qboolean fResetVis; qboolean fResetVis;
qboolean fFlipViewModel; qboolean fFlipViewModel;
@ -528,7 +527,6 @@ void GL_SetupAttributes( int safegl );
void GL_OnContextCreated( void ); void GL_OnContextCreated( void );
void GL_InitExtensions( void ); void GL_InitExtensions( void );
void GL_ClearExtensions( void ); void GL_ClearExtensions( void );
void VID_CheckChanges( void );
int GL_LoadTexture( const char *name, const byte *buf, size_t size, int flags ); int GL_LoadTexture( const char *name, const byte *buf, size_t size, int flags );
void GL_FreeImage( const char *name ); void GL_FreeImage( const char *name );
qboolean VID_ScreenShot( const char *filename, int shot_type ); qboolean VID_ScreenShot( const char *filename, int shot_type );

17
ref/gl/gl_rlight.c

@ -320,18 +320,10 @@ static qboolean R_RecursiveLightPoint( model_t *model, mnode_t *node, float p1f,
{ {
uint scale = tr.lightstylevalue[surf->styles[map]]; uint scale = tr.lightstylevalue[surf->styles[map]];
if( tr.ignore_lightgamma )
{
cv->r += lm->r * scale; cv->r += lm->r * scale;
cv->g += lm->g * scale; cv->g += lm->g * scale;
cv->b += lm->b * scale; cv->b += lm->b * scale;
}
else
{
cv->r += gEngfuncs.LightToTexGamma( lm->r ) * scale;
cv->g += gEngfuncs.LightToTexGamma( lm->g ) * scale;
cv->b += gEngfuncs.LightToTexGamma( lm->b ) * scale;
}
lm += size; // skip to next lightmap lm += size; // skip to next lightmap
if( dm != NULL ) if( dm != NULL )
@ -418,9 +410,10 @@ colorVec R_LightVecInternal( const vec3_t start, const vec3_t end, vec3_t lspot,
{ {
if( lspot ) VectorCopy( g_trace_lightspot, lspot ); if( lspot ) VectorCopy( g_trace_lightspot, lspot );
if( lvec ) VectorNormalize2( g_trace_lightvec, lvec ); if( lvec ) VectorNormalize2( g_trace_lightvec, lvec );
light.r = Q_min(( cv.r >> 7 ), 255 );
light.g = Q_min(( cv.g >> 7 ), 255 ); light.r = Q_min(( cv.r >> 8 ), 255 );
light.b = Q_min(( cv.b >> 7 ), 255 ); light.g = Q_min(( cv.g >> 8 ), 255 );
light.b = Q_min(( cv.b >> 8 ), 255 );
last_fraction = g_trace_fraction; last_fraction = g_trace_fraction;
if(( light.r + light.g + light.b ) != 0 ) if(( light.r + light.g + light.b ) != 0 )

2
ref/gl/gl_studio.c

@ -3661,9 +3661,7 @@ void R_GatherPlayerLight( void )
cl_entity_t *view = tr.viewent; cl_entity_t *view = tr.viewent;
colorVec c; colorVec c;
tr.ignore_lightgamma = true;
c = R_LightPoint( view->origin ); c = R_LightPoint( view->origin );
tr.ignore_lightgamma = false;
gEngfuncs.SetLocalLightLevel( ( c.r + c.g + c.b ) / 3 ); gEngfuncs.SetLocalLightLevel( ( c.r + c.g + c.b ) / 3 );
} }

Loading…
Cancel
Save