Fixed some render debugging tools

This commit is contained in:
Robert Beckebans 2013-03-24 15:39:52 +01:00
parent f3738d1a36
commit 4a02fc26cc
4 changed files with 131 additions and 31 deletions

View file

@ -86,6 +86,9 @@ void idRenderProgManager::Init()
{
{ BUILTIN_GUI, "gui.vfp" },
{ BUILTIN_COLOR, "color.vfp" },
// RB begin
{ BUILTIN_VERTEXCOLOR, "vertex_color.vfp" },
// RB end
{ BUILTIN_SIMPLESHADE, "simpleshade.vfp" },
{ BUILTIN_TEXTURED, "texture.vfp" },
{ BUILTIN_TEXTURE_VERTEXCOLOR, "texture_color.vfp" },

View file

@ -153,58 +153,79 @@ public:
{
BindShader_Builtin( BUILTIN_GUI );
}
void BindShader_Color( )
{
BindShader_Builtin( BUILTIN_COLOR );
}
// RB begin
void BindShader_VertexColor( )
{
BindShader_Builtin( BUILTIN_VERTEXCOLOR );
}
// RB end
void BindShader_Texture( )
{
BindShader_Builtin( BUILTIN_TEXTURED );
}
void BindShader_TextureVertexColor()
{
BindShader_Builtin( BUILTIN_TEXTURE_VERTEXCOLOR );
};
void BindShader_TextureVertexColorSkinned()
{
BindShader_Builtin( BUILTIN_TEXTURE_VERTEXCOLOR_SKINNED );
};
void BindShader_TextureTexGenVertexColor()
{
BindShader_Builtin( BUILTIN_TEXTURE_TEXGEN_VERTEXCOLOR );
};
void BindShader_Interaction()
{
BindShader_Builtin( BUILTIN_INTERACTION );
}
void BindShader_InteractionSkinned()
{
BindShader_Builtin( BUILTIN_INTERACTION_SKINNED );
}
void BindShader_InteractionAmbient()
{
BindShader_Builtin( BUILTIN_INTERACTION_AMBIENT );
}
void BindShader_InteractionAmbientSkinned()
{
BindShader_Builtin( BUILTIN_INTERACTION_AMBIENT_SKINNED );
}
void BindShader_SimpleShade()
{
BindShader_Builtin( BUILTIN_SIMPLESHADE );
}
void BindShader_Environment()
{
BindShader_Builtin( BUILTIN_ENVIRONMENT );
}
void BindShader_EnvironmentSkinned()
{
BindShader_Builtin( BUILTIN_ENVIRONMENT_SKINNED );
}
void BindShader_BumpyEnvironment()
{
BindShader_Builtin( BUILTIN_BUMPY_ENVIRONMENT );
}
void BindShader_BumpyEnvironmentSkinned()
{
BindShader_Builtin( BUILTIN_BUMPY_ENVIRONMENT_SKINNED );
@ -214,22 +235,27 @@ public:
{
BindShader_Builtin( BUILTIN_DEPTH );
}
void BindShader_DepthSkinned()
{
BindShader_Builtin( BUILTIN_DEPTH_SKINNED );
}
void BindShader_Shadow()
{
BindShader( builtinShaders[BUILTIN_SHADOW], -1 );
}
void BindShader_ShadowSkinned()
{
BindShader( builtinShaders[BUILTIN_SHADOW_SKINNED], -1 );
}
void BindShader_ShadowDebug()
{
BindShader_Builtin( BUILTIN_SHADOW_DEBUG );
}
void BindShader_ShadowDebugSkinned()
{
BindShader_Builtin( BUILTIN_SHADOW_DEBUG_SKINNED );
@ -239,50 +265,62 @@ public:
{
BindShader_Builtin( BUILTIN_BLENDLIGHT );
}
void BindShader_Fog()
{
BindShader_Builtin( BUILTIN_FOG );
}
void BindShader_FogSkinned()
{
BindShader_Builtin( BUILTIN_FOG_SKINNED );
}
void BindShader_SkyBox()
{
BindShader_Builtin( BUILTIN_SKYBOX );
}
void BindShader_WobbleSky()
{
BindShader_Builtin( BUILTIN_WOBBLESKY );
}
void BindShader_StereoDeGhost()
{
BindShader_Builtin( BUILTIN_STEREO_DEGHOST );
}
void BindShader_StereoWarp()
{
BindShader_Builtin( BUILTIN_STEREO_WARP );
}
void BindShader_StereoInterlace()
{
BindShader_Builtin( BUILTIN_STEREO_INTERLACE );
}
void BindShader_PostProcess()
{
BindShader_Builtin( BUILTIN_POSTPROCESS );
}
void BindShader_ZCullReconstruct()
{
BindShader_Builtin( BUILTIN_ZCULL_RECONSTRUCT );
}
void BindShader_Bink()
{
BindShader_Builtin( BUILTIN_BINK );
}
void BindShader_BinkGUI()
{
BindShader_Builtin( BUILTIN_BINK_GUI );
}
void BindShader_MotionBlur()
{
BindShader_Builtin( BUILTIN_MOTION_BLUR );
@ -325,6 +363,9 @@ protected:
{
BUILTIN_GUI,
BUILTIN_COLOR,
// RB begin
BUILTIN_VERTEXCOLOR,
// RB end
BUILTIN_SIMPLESHADE,
BUILTIN_TEXTURED,
BUILTIN_TEXTURE_VERTEXCOLOR,

View file

@ -1197,6 +1197,10 @@ void idRenderWorldLocal::ShowPortals()
GL_Color( 0, 1, 0 );
}
// RB begin
renderProgManager.CommitUniforms();
// RB end
qglBegin( GL_LINE_LOOP );
for( j = 0; j < w->GetNumPoints(); j++ )
{

View file

@ -136,7 +136,10 @@ static void RB_SimpleSurfaceSetup( const drawSurf_t* drawSurf )
// change the matrix if needed
if( drawSurf->space != backEnd.currentSpace )
{
qglLoadMatrixf( drawSurf->space->modelViewMatrix );
// RB begin
RB_SetMVP( drawSurf->space->mvp );
//qglLoadMatrixf( drawSurf->space->modelViewMatrix );
// RB end
backEnd.currentSpace = drawSurf->space;
}
@ -160,8 +163,10 @@ static void RB_SimpleWorldSetup()
{
backEnd.currentSpace = &backEnd.viewDef->worldSpace;
qglLoadMatrixf( backEnd.viewDef->worldSpace.modelViewMatrix );
// RB begin
//qglLoadMatrixf( backEnd.viewDef->worldSpace.modelViewMatrix );
RB_SetMVP( backEnd.viewDef->worldSpace.mvp );
// RB end
GL_Scissor( backEnd.viewDef->viewport.x1 + backEnd.viewDef->scissor.x1,
backEnd.viewDef->viewport.y1 + backEnd.viewDef->scissor.y1,
@ -579,6 +584,7 @@ static void RB_ShowLightCount()
}
}
#if 0
/*
===============
RB_SetWeaponDepthHack
@ -661,6 +667,7 @@ static void RB_LoadMatrixWithBypass( const float m[16] )
glLoadMatrixf( m );
}
#endif
/*
====================
RB_RenderDrawSurfListWithFunction
@ -682,7 +689,19 @@ static void RB_RenderDrawSurfListWithFunction( drawSurf_t** drawSurfs, int numDr
{
continue;
}
assert( drawSurf->space != NULL );
// RB begin
#if 1
if( drawSurf->space != backEnd.currentSpace )
{
backEnd.currentSpace = drawSurf->space;
RB_SetMVP( drawSurf->space->mvp );
}
#else
if( drawSurf->space != NULL ) // is it ever NULL? Do we need to check?
{
// Set these values ahead of time so we don't have to reconstruct the matrices on the consoles
@ -690,28 +709,30 @@ static void RB_RenderDrawSurfListWithFunction( drawSurf_t** drawSurfs, int numDr
{
RB_SetWeaponDepthHack();
}
if( drawSurf->space->modelDepthHack != 0.0f )
{
RB_SetModelDepthHack( drawSurf->space->modelDepthHack );
}
// change the matrix if needed
if( drawSurf->space != backEnd.currentSpace )
{
RB_LoadMatrixWithBypass( drawSurf->space->modelViewMatrix );
}
if( drawSurf->space->weaponDepthHack )
{
RB_EnterWeaponDepthHack();
}
if( drawSurf->space->modelDepthHack != 0.0f )
{
RB_EnterModelDepthHack( drawSurf->space->modelDepthHack );
}
}
#endif
// RB end
// change the scissor if needed
if( r_useScissor.GetBool() && !backEnd.currentScissor.Equals( drawSurf->scissorRect ) )
@ -726,10 +747,12 @@ static void RB_RenderDrawSurfListWithFunction( drawSurf_t** drawSurfs, int numDr
// render it
triFunc_( drawSurf );
if( drawSurf->space != NULL && ( drawSurf->space->weaponDepthHack || drawSurf->space->modelDepthHack != 0.0f ) )
// RB begin
/*if( drawSurf->space != NULL && ( drawSurf->space->weaponDepthHack || drawSurf->space->modelDepthHack != 0.0f ) )
{
RB_LeaveDepthHack();
}
}*/
// RB end
backEnd.currentSpace = drawSurf->space;
}
@ -756,11 +779,12 @@ static void RB_ShowSilhouette()
return;
}
//
// clear all triangle edges to black
//
globalImages->BindNull();
qglDisable( GL_TEXTURE_2D );
// RB begin
renderProgManager.BindShader_Color();
// RB end
GL_Color( 0, 0, 0 );
@ -772,9 +796,7 @@ static void RB_ShowSilhouette()
RB_DrawElementsWithCounters );
//
// now blend in edges that cast silhouettes
//
RB_SimpleWorldSetup();
GL_Color( 0.5, 0, 0 );
GL_State( GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE );
@ -914,7 +936,6 @@ static void RB_ShowSurfaceInfo( drawSurf_t** drawSurfs, int numDrawSurfs )
}
globalImages->BindNull();
qglDisable( GL_TEXTURE_2D );
GL_Color( 1, 1, 1 );
@ -949,6 +970,7 @@ static void RB_ShowViewEntitys( viewEntity_t* vModels )
{
return;
}
if( r_showViewEntitys.GetInteger() >= 2 )
{
common->Printf( "view entities: " );
@ -986,8 +1008,6 @@ static void RB_ShowViewEntitys( viewEntity_t* vModels )
continue;
}
// draw the model bounds in white if directly visible,
// or, blue if it is only-for-sahdow
idVec4 color;
@ -1062,7 +1082,7 @@ static void RB_ShowTexturePolarity( drawSurf_t** drawSurfs, int numDrawSurfs )
{
drawSurf = drawSurfs[i];
tri = drawSurf->frontEndGeo;
if( !tri->verts )
if( tri == NULL || tri->verts == NULL )
{
continue;
}
@ -1149,6 +1169,11 @@ static void RB_ShowUnsmoothedTangents( drawSurf_t** drawSurfs, int numDrawSurfs
RB_SimpleSurfaceSetup( drawSurf );
tri = drawSurf->frontEndGeo;
if( tri == NULL || tri->verts == NULL )
{
continue;
}
qglBegin( GL_TRIANGLES );
for( j = 0; j < tri->numIndexes; j += 3 )
{
@ -1199,10 +1224,11 @@ static void RB_ShowTangentSpace( drawSurf_t** drawSurfs, int numDrawSurfs )
RB_SimpleSurfaceSetup( drawSurf );
tri = drawSurf->frontEndGeo;
if( !tri->verts )
if( tri == NULL || tri->verts == NULL )
{
continue;
}
qglBegin( GL_TRIANGLES );
for( j = 0; j < tri->numIndexes; j++ )
{
@ -1255,6 +1281,9 @@ static void RB_ShowVertexColor( drawSurf_t** drawSurfs, int numDrawSurfs )
}
globalImages->BindNull();
// RB begin
renderProgManager.BindShader_VertexColor();
GL_State( GLS_DEPTHFUNC_LESS );
for( i = 0; i < numDrawSurfs; i++ )
@ -1264,10 +1293,13 @@ static void RB_ShowVertexColor( drawSurf_t** drawSurfs, int numDrawSurfs )
RB_SimpleSurfaceSetup( drawSurf );
tri = drawSurf->frontEndGeo;
if( !tri->verts )
if( tri == NULL || tri->verts == NULL )
{
continue;
}
renderProgManager.CommitUniforms();
qglBegin( GL_TRIANGLES );
for( j = 0; j < tri->numIndexes; j++ )
{
@ -1280,6 +1312,8 @@ static void RB_ShowVertexColor( drawSurf_t** drawSurfs, int numDrawSurfs )
qglEnd();
}
// RB end
GL_State( GLS_DEFAULT );
}
@ -1334,33 +1368,41 @@ static void RB_ShowNormals( drawSurf_t** drawSurfs, int numDrawSurfs )
RB_SimpleSurfaceSetup( drawSurf );
tri = drawSurf->frontEndGeo;
if( !tri->verts )
if( tri == NULL || tri->verts == NULL )
{
continue;
}
// RB begin
renderProgManager.BindShader_VertexColor();
qglBegin( GL_LINES );
for( j = 0; j < tri->numVerts; j++ )
{
const idVec3 normal = tri->verts[j].GetNormal();
const idVec3 tangent = tri->verts[j].GetTangent();
const idVec3 bitangent = tri->verts[j].GetBiTangent();
GL_Color( 0, 0, 1 );
qglColor3f( 0, 0, 1 );
qglVertex3fv( tri->verts[j].xyz.ToFloatPtr() );
VectorMA( tri->verts[j].xyz, size, normal, end );
qglVertex3fv( end.ToFloatPtr() );
GL_Color( 1, 0, 0 );
//GL_Color( 1, 0, 0 );
qglColor3f( 1, 0, 0 );
qglVertex3fv( tri->verts[j].xyz.ToFloatPtr() );
VectorMA( tri->verts[j].xyz, size, tangent, end );
qglVertex3fv( end.ToFloatPtr() );
GL_Color( 0, 1, 0 );
//GL_Color( 0, 1, 0 );
qglColor3f( 0, 1, 0 );
qglVertex3fv( tri->verts[j].xyz.ToFloatPtr() );
VectorMA( tri->verts[j].xyz, size, bitangent, end );
qglVertex3fv( end.ToFloatPtr() );
}
qglEnd();
// RB end
}
if( showNumbers )
@ -1370,7 +1412,7 @@ static void RB_ShowNormals( drawSurf_t** drawSurfs, int numDrawSurfs )
{
drawSurf = drawSurfs[i];
tri = drawSurf->frontEndGeo;
if( !tri->verts )
if( tri == NULL || tri->verts == NULL )
{
continue;
}
@ -1491,7 +1533,7 @@ static void RB_ShowTextureVectors( drawSurf_t** drawSurfs, int numDrawSurfs )
const srfTriangles_t* tri = drawSurf->frontEndGeo;
if( tri->verts == NULL )
if( tri == NULL || tri->verts == NULL )
{
continue;
}
@ -1600,7 +1642,7 @@ static void RB_ShowDominantTris( drawSurf_t** drawSurfs, int numDrawSurfs )
tri = drawSurf->frontEndGeo;
if( !tri->verts )
if( tri == NULL || tri->verts == NULL )
{
continue;
}
@ -1964,7 +2006,10 @@ static void RB_DrawText( const char* text, const idVec3& origin, float scale, co
{
renderProgManager.BindShader_Color();
// RB begin
GL_Color( color[0], color[1], color[2], 1 /*color[3]*/ );
renderProgManager.CommitUniforms();
// RB end
int i, j, len, num, index, charIndex, line;
float textLen = 1.0f, spacing = 1.0f;
@ -1973,7 +2018,6 @@ static void RB_DrawText( const char* text, const idVec3& origin, float scale, co
if( text && *text )
{
qglBegin( GL_LINES );
qglColor3fv( color.ToFloatPtr() );
if( text[0] == '\n' )
{
@ -2195,6 +2239,11 @@ void RB_ShowDebugLines()
// all lines are expressed in world coordinates
RB_SimpleWorldSetup();
// RB begin
renderProgManager.BindShader_VertexColor();
renderProgManager.CommitUniforms();
// RB end
globalImages->BindNull();
width = r_debugLineWidth.GetInteger();
@ -2331,9 +2380,12 @@ void RB_ShowDebugPolygons()
// all lines are expressed in world coordinates
RB_SimpleWorldSetup();
globalImages->BindNull();
// RB begin
renderProgManager.BindShader_VertexColor();
renderProgManager.CommitUniforms();
// RB end
qglDisable( GL_TEXTURE_2D );
globalImages->BindNull();
if( r_debugPolygonFilled.GetBool() )
{