mirror of
https://bitbucket.org/CPMADevs/cnq3
synced 2025-02-22 03:41:21 +00:00
fixed hyperspace rendering
This commit is contained in:
parent
cb0ef3aab8
commit
0cbfe60d86
5 changed files with 29 additions and 26 deletions
|
@ -687,4 +687,13 @@ void RB_PopShader()
|
|||
{
|
||||
tess.shader = prevShader;
|
||||
tess.xstages = prevStages;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// used when a player has predicted a teleport, but hasn't arrived yet
|
||||
float RB_HyperspaceColor()
|
||||
{
|
||||
const float c = 0.25f + 0.5f * sinf(M_PI * (backEnd.refdef.time & 0x01FF) / 0x0200);
|
||||
|
||||
return c;
|
||||
}
|
||||
|
|
|
@ -2307,19 +2307,17 @@ static void GAL_Begin3D()
|
|||
memcpy(d3d.projectionMatrix, backEnd.viewParms.projectionMatrix, sizeof(d3d.projectionMatrix));
|
||||
ApplyViewportAndScissor(backEnd.viewParms.viewportX, backEnd.viewParms.viewportY, backEnd.viewParms.viewportWidth, backEnd.viewParms.viewportHeight, glConfig.vidHeight);
|
||||
|
||||
d3d.context->ClearDepthStencilView(d3d.depthStencilView, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);
|
||||
if(backEnd.refdef.rdflags & RDF_HYPERSPACE)
|
||||
{
|
||||
const FLOAT c = 0.25 + 0.5 * sin(M_PI * (backEnd.refdef.time & 0x01FF) / 0x0200);
|
||||
const FLOAT c = RB_HyperspaceColor();
|
||||
const FLOAT clearColor[4] = { c, c, c, 1.0f };
|
||||
d3d.context->ClearRenderTargetView(d3d.backBufferRTView, clearColor);
|
||||
return;
|
||||
d3d.context->ClearRenderTargetView(d3d.renderTargetViewMS, clearColor);
|
||||
}
|
||||
|
||||
d3d.context->ClearDepthStencilView(d3d.depthStencilView, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);
|
||||
if(r_fastsky->integer && !(backEnd.refdef.rdflags & RDF_NOWORLDMODEL))
|
||||
else if(r_fastsky->integer && !(backEnd.refdef.rdflags & RDF_NOWORLDMODEL))
|
||||
{
|
||||
const FLOAT clearColor[4] = { 0.0f, 0.0f, 0.0f, 1.0f };
|
||||
d3d.context->ClearRenderTargetView(d3d.backBufferRTView, clearColor);
|
||||
d3d.context->ClearRenderTargetView(d3d.renderTargetViewMS, clearColor);
|
||||
}
|
||||
|
||||
if(backEnd.viewParms.isPortal)
|
||||
|
|
|
@ -1141,16 +1141,6 @@ static void GL_State( unsigned long stateBits )
|
|||
}
|
||||
|
||||
|
||||
// a player has predicted a teleport, but hasn't arrived yet
|
||||
|
||||
static void RB_Hyperspace()
|
||||
{
|
||||
float c = 0.25 + 0.5 * sin( M_PI * (backEnd.refdef.time & 0x01FF) / 0x0200 );
|
||||
glClearColor( c, c, c, 1 );
|
||||
glClear( GL_COLOR_BUFFER_BIT );
|
||||
}
|
||||
|
||||
|
||||
static void ApplyViewportAndScissor()
|
||||
{
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
|
@ -1191,8 +1181,11 @@ static void GAL_Begin3D()
|
|||
// clear relevant buffers
|
||||
clearBits = GL_DEPTH_BUFFER_BIT;
|
||||
|
||||
if ( r_fastsky->integer && !( backEnd.refdef.rdflags & RDF_NOWORLDMODEL ) )
|
||||
{
|
||||
if ( backEnd.refdef.rdflags & RDF_HYPERSPACE ) {
|
||||
const float c = RB_HyperspaceColor();
|
||||
clearBits |= GL_COLOR_BUFFER_BIT;
|
||||
glClearColor( c, c, c, 1.0f );
|
||||
} else if ( r_fastsky->integer && !( backEnd.refdef.rdflags & RDF_NOWORLDMODEL ) ) {
|
||||
clearBits |= GL_COLOR_BUFFER_BIT;
|
||||
// tr.sunLight could have colored fastsky properly for the last 9 years,
|
||||
// ... if the code had actually been right >:( but, it's a bad idea to trust mappers anyway
|
||||
|
@ -1200,11 +1193,6 @@ static void GAL_Begin3D()
|
|||
}
|
||||
glClear( clearBits );
|
||||
|
||||
if ( backEnd.refdef.rdflags & RDF_HYPERSPACE ) {
|
||||
RB_Hyperspace();
|
||||
return;
|
||||
}
|
||||
|
||||
glState.faceCulling = -1; // force face culling to set next time
|
||||
|
||||
// clip to the plane of the portal
|
||||
|
|
|
@ -2283,7 +2283,13 @@ static void GAL_Begin3D()
|
|||
ApplyState(GLS_DEFAULT, CT_TWO_SIDED, qfalse);
|
||||
|
||||
GLbitfield clearBits = GL_DEPTH_BUFFER_BIT;
|
||||
if(r_fastsky->integer && (backEnd.refdef.rdflags & RDF_NOWORLDMODEL) != 0)
|
||||
if(backEnd.refdef.rdflags & RDF_HYPERSPACE)
|
||||
{
|
||||
clearBits |= GL_COLOR_BUFFER_BIT;
|
||||
const float c = RB_HyperspaceColor();
|
||||
glClearColor(c, c, c, 1.0f);
|
||||
}
|
||||
else if(r_fastsky->integer && (backEnd.refdef.rdflags & RDF_NOWORLDMODEL) != 0)
|
||||
{
|
||||
clearBits |= GL_COLOR_BUFFER_BIT;
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
|
|
|
@ -1563,6 +1563,8 @@ void RB_ExecuteRenderCommands( const void *data );
|
|||
void RB_PushSingleStageShader( int stateBits, cullType_t cullType );
|
||||
void RB_PopShader();
|
||||
|
||||
float RB_HyperspaceColor();
|
||||
|
||||
void RB_DrawSky();
|
||||
void R_BuildCloudData();
|
||||
|
||||
|
|
Loading…
Reference in a new issue