02 Sep 2009

This commit is contained in:
g-cont 2009-09-02 00:00:00 +04:00 committed by Alibek Omarov
parent 45d0c492dc
commit d71ae7d5a6
27 changed files with 813 additions and 743 deletions

View File

@ -7,14 +7,13 @@
typedef enum
{
TRI_FRONT = 0,
TRI_FRONT = 1,
TRI_BACK,
TRI_NONE,
} TRI_CULL;
typedef enum
{
TRI_TRIANGLES = 0,
TRI_TRIANGLES = 1,
TRI_TRIANGLE_FAN,
TRI_TRIANGLE_STRIP,
TRI_POLYGON,
@ -24,7 +23,8 @@ typedef enum
typedef enum
{
TRI_SHADER = 0,
TRI_NONE = 0,
TRI_SHADER,
TRI_CLIP_PLANE,
} TRI_CAPS;

View File

@ -171,7 +171,7 @@ public:
}
int DirToBits( void )
{
int max, bits, numBits = 15; // pack as unsigned short ( state->skin supports this )
int max, bits, numBits = 8; // pack as unsigned char ( state->skin supports this )
float bias;
numBits /= 3;
@ -190,7 +190,7 @@ public:
Vector BitsToDir( int bits )
{
static float sign[2] = { 1.0f, -1.0f };
int max, numBits = 15; // pack as unsigned short
int max, numBits = 8; // pack as unsigned char
float invMax;
numBits /= 3;

View File

@ -347,6 +347,41 @@ void SCR_DrawFPS( void )
SCR_DrawBigStringColor( SCREEN_WIDTH - 146, SCREEN_HEIGHT - 32, fpsstring, color );
}
/*
================
SCR_RSpeeds
================
*/
void SCR_RSpeeds( void )
{
char msg[MAX_SYSPATH];
if( re->RSpeedsMessage( msg, sizeof( msg )))
{
int x, y, height;
char *p, *start, *end;
vec4_t color;
x = SCREEN_WIDTH - 320;
y = 64;
height = SMALLCHAR_HEIGHT;
Vector4Set( color, 1.0f, 1.0f, 1.0f, 1.0f );
p = start = msg;
do
{
end = com.strchr( p, '\n' );
if( end ) msg[end-start] = '\0';
SCR_DrawStringExt( x, y, SMALLCHAR_WIDTH, SMALLCHAR_HEIGHT, p, color, true );
y += height;
if( end ) p = end + 1;
else break;
} while( 1 );
}
}
/*
==================
SCR_UpdateScreen

View File

@ -222,6 +222,7 @@ V_PostRender
*/
void V_PostRender( void )
{
SCR_RSpeeds();
SCR_DrawNet();
SCR_DrawFPS();
UI_Draw();

View File

@ -556,6 +556,7 @@ void SCR_DrawSmallStringExt( int x, int y, const char *string, float *setColor,
void SCR_DrawStringExt( int x, int y, float w, float h, const char *string, float *setColor, bool forceColor );
void SCR_DrawBigString( int x, int y, const char *s, float alpha );
void SCR_DrawBigStringColor( int x, int y, const char *s, vec4_t color );
void SCR_RSpeeds( void );
void SCR_DrawFPS( void );
void SCR_DrawNet( void );

View File

@ -637,9 +637,11 @@ void SV_InitEdict( edict_t *pEdict )
{
Com_Assert( pEdict == NULL );
Com_Assert( pEdict->pvPrivateData != NULL );
// Com_Assert( pEdict->pvServerData != NULL );
pEdict->v.pContainingEntity = pEdict; // make cross-links for consistency
pEdict->pvServerData = (sv_priv_t *)Mem_Alloc( svgame.mempool, sizeof( sv_priv_t ));
if( !pEdict->pvServerData ) // FIXME
pEdict->pvServerData = (sv_priv_t *)Mem_Alloc( svgame.mempool, sizeof( sv_priv_t ));
pEdict->pvPrivateData = NULL; // will be alloced later by pfnAllocPrivateData
pEdict->serialnumber = NUM_FOR_EDICT( pEdict );
pEdict->free = false;

View File

@ -342,6 +342,13 @@ void Callback_ApplyTransform( const NewtonBody* body, const float* matrix );
//
void CM_InitMaterials( void );
//
// cm_model.c
//
void CM_CreateMeshBuffer( cmodel_t *mod );
void CM_FreeMeshBuffer( cmodel_t *mod );
//
// cm_collision.c
//

View File

@ -119,28 +119,17 @@ const char *CM_TexName( int index ){ return cm.shaders[index].name; }
BSP_CreateMeshBuffer
=================
*/
void BSP_CreateMeshBuffer( int modelnum )
void BSP_CreateMeshBuffer( cmodel_t *mod )
{
csurface_t *m_surface;
int d, i, j, k;
int flags;
// ignore world or bsplib instance
if( app_name == HOST_BSPLIB || modelnum >= cms.numbmodels )
return;
loadmodel = &cms.bmodels[modelnum];
if( modelnum ) loadmodel->type = mod_brush;
else loadmodel->type = mod_world; // level static geometry
loadmodel->TraceBox = CM_TraceBmodel;
loadmodel->PointContents = CM_PointContents;
// because world loading collision tree from LUMP_COLLISION
if( modelnum < 1 ) return;
if( mod->col[0] ) return; // already loaded
studio.m_pVerts = &studio.vertices[0]; // using studio vertex buffer for bmodels too
studio.numverts = 0; // clear current count
for( d = 0, i = loadmodel->firstface; d < loadmodel->numfaces; i++, d++ )
for( d = 0, i = mod->firstface; d < mod->numfaces; i++, d++ )
{
m_surface = cm.surfaces + i;
flags = cm.shaders[m_surface->shadernum].flags;
@ -162,11 +151,11 @@ void BSP_CreateMeshBuffer( int modelnum )
if( studio.numverts )
{
// grab vertices
loadmodel->col[loadmodel->numbodies] = (cmesh_t *)Mem_Alloc( loadmodel->mempool, sizeof(*loadmodel->col[0]));
loadmodel->col[loadmodel->numbodies]->verts = Mem_Alloc( loadmodel->mempool, studio.numverts * sizeof(vec3_t));
Mem_Copy( loadmodel->col[loadmodel->numbodies]->verts, studio.m_pVerts, studio.numverts * sizeof(vec3_t));
loadmodel->col[loadmodel->numbodies]->numverts = studio.numverts;
loadmodel->numbodies++;
mod->col[mod->numbodies] = (cmesh_t *)Mem_Alloc( mod->mempool, sizeof(*mod->col[0]));
mod->col[mod->numbodies]->verts = Mem_Alloc( mod->mempool, studio.numverts * sizeof(vec3_t));
Mem_Copy( mod->col[loadmodel->numbodies]->verts, studio.m_pVerts, studio.numverts * sizeof(vec3_t));
mod->col[mod->numbodies]->numverts = studio.numverts;
mod->numbodies++;
}
}
@ -214,9 +203,16 @@ void BSP_LoadModels( lump_t *l )
out->numbrushes = c = LittleLong( in->numbrushes );
if( n < 0 || n + c > cm.numbrushes )
Host_Error( "BSP_LoadModels: invalid brush range %i : %i (%i brushes)\n", n, n+c, cm.numsurfaces );
com.strncpy( out->name, va("*%i", i ), sizeof(out->name));
com.strncpy( out->name, va("*%i", i ), sizeof( out->name ));
out->mempool = Mem_AllocPool( va("^3%s^7", out->name )); // difference with render and cm pools
BSP_CreateMeshBuffer( i ); // bsp physic
if( i >= cms.numbmodels ) continue;
loadmodel = &cms.bmodels[i];
if( i ) loadmodel->type = mod_brush;
else loadmodel->type = mod_world; // level static geometry
loadmodel->TraceBox = CM_TraceBmodel;
loadmodel->PointContents = CM_PointContents;
}
}
@ -1102,16 +1098,7 @@ void CM_LoadBSP( const void *buffer )
void CM_FreeBSP( void )
{
int i;
cmodel_t *mod;
CM_FreeWorld();
for( i = 0, mod = cms.cmodels; i < cms.numcmodels; i++, mod++)
{
if( !mod->name[0] ) continue;
CM_FreeModel( mod );
}
}
static void CM_AddCollision( file_t *f, const void* buffer, size_t size )
@ -1334,9 +1321,9 @@ void CM_EndRegistration( void )
cmodel_t *mod;
int i;
for( i = 0, mod = &cms.cmodels[0]; i < cms.numcmodels; i++, mod++)
for( i = 0, mod = &cms.cmodels[0]; i < cms.numcmodels; i++, mod++ )
{
if(!mod->name[0]) continue;
if( !mod->name[0] ) continue;
if( mod->registration_sequence != registration_sequence )
CM_FreeModel( mod );
}
@ -1553,26 +1540,39 @@ void CM_StudioGetVertices( void )
CM_StudioLookMeshes();
}
void CM_CreateMeshBuffer( byte *buffer )
void CM_CreateMeshBuffer( cmodel_t *mod )
{
int i, j;
Com_Assert( mod == NULL );
switch( mod->type )
{
case mod_world:
case mod_brush:
BSP_CreateMeshBuffer( mod );
return;
case mod_studio:
break;
default: return;
}
// setup global pointers
studio.hdr = (dstudiohdr_t *)buffer;
studio.hdr = (dstudiohdr_t *)mod->extradata;
studio.m_pVerts = &studio.vertices[0];
CM_GetBodyCount();
for( i = 0; i < studio.bodycount; i++)
for( i = 0; i < studio.bodycount; i++ )
{
// already loaded
if( loadmodel->col[i] ) continue;
if( mod->col[i] ) continue;
CM_StudioSetUpTransform();
CM_StudioSetupBones();
// lookup all bodies
for (j = 0; j < studio.hdr->numbodyparts; j++)
for( j = 0; j < studio.hdr->numbodyparts; j++ )
{
CM_StudioSetupModel( j, i );
CM_StudioGetVertices();
@ -1589,6 +1589,24 @@ void CM_CreateMeshBuffer( byte *buffer )
}
}
void CM_FreeMeshBuffer( cmodel_t *mod )
{
int i;
Com_Assert( mod == NULL );
for( i = 0; i < mod->numbodies; i++ )
{
if( mod->col[i] )
{
if( mod->col[i]->verts ) Mem_Free( mod->col[i]->verts );
Mem_Free( mod->col[i] );
mod->col[i] = NULL;
}
}
mod->numbodies = 0;
}
bool CM_StudioModel( byte *buffer, uint filesize )
{
dstudiohdr_t *phdr;
@ -1603,6 +1621,7 @@ bool CM_StudioModel( byte *buffer, uint filesize )
loadmodel->numbodies = 0;
loadmodel->type = mod_studio;
loadmodel->registration_sequence = registration_sequence;
loadmodel->extradata = Mem_Alloc( loadmodel->mempool, filesize );
Mem_Copy( loadmodel->extradata, buffer, filesize );
@ -1620,8 +1639,6 @@ bool CM_StudioModel( byte *buffer, uint filesize )
VectorCopy( loadmodel->mins, loadmodel->yawmins );
VectorCopy( loadmodel->maxs, loadmodel->yawmaxs );
CM_CreateMeshBuffer( buffer ); // newton collision mesh
return true;
}
@ -1640,6 +1657,7 @@ bool CM_SpriteModel( byte *buffer, uint filesize )
loadmodel->type = mod_sprite;
loadmodel->numbodies = 0; // sprites don't have bodies
loadmodel->numframes = phdr->numframes;
loadmodel->registration_sequence = registration_sequence;
loadmodel->mins[0] = loadmodel->mins[1] = -phdr->bounds[0] / 2;
loadmodel->maxs[0] = loadmodel->maxs[1] = phdr->bounds[0] / 2;
loadmodel->mins[2] = -phdr->bounds[1] / 2;
@ -1683,8 +1701,7 @@ cmodel_t *CM_RegisterModel( const char *name )
}
// FIXME: use registration_sequence for worldmodel
if( !com.strcmp( name, cm.name ))
return &cms.bmodels[0];
if( !com.strcmp( name, cm.name )) return &cms.bmodels[0];
for( i = 0; i < cms.numcmodels; i++ )
{
@ -1699,7 +1716,7 @@ cmodel_t *CM_RegisterModel( const char *name )
}
// find a free model slot spot
for( i = 0, mod = cms.cmodels; i < cms.numcmodels; i++, mod++)
for( i = 0, mod = cms.cmodels; i < cms.numcmodels; i++, mod++ )
if( !mod->name[0] ) break; // free spot
if( i == cms.numcmodels )
{
@ -1716,7 +1733,7 @@ cmodel_t *CM_RegisterModel( const char *name )
if( !buf )
{
MsgDev( D_ERROR, "CM_LoadModel: %s not found\n", name );
Mem_Set(mod->name, 0, sizeof(mod->name));
Mem_Set( mod->name, 0, sizeof( mod->name ));
return NULL;
}

View File

@ -7,6 +7,7 @@
#include "mathlib.h"
#include "matrix_lib.h"
#include "cm_local.h"
#include "entity_def.h"
physbody_t *Phys_CreateBody( edict_t *ed, cmodel_t *mod, const vec3_t org, const matrix3x3 m, int solid, int move )
{
@ -85,8 +86,11 @@ physbody_t *Phys_CreateBody( edict_t *ed, cmodel_t *mod, const vec3_t org, const
break;
case SOLID_BSP:
case SOLID_MESH:
vertices = pi.GetModelVerts( ed, &numvertices );
if(!vertices || !numvertices ) return NULL;
if( mod->col[bound( 0, ed->v.body, mod->numbodies )] == NULL )
CM_CreateMeshBuffer( mod );
if( mod->col[bound( 0, ed->v.body, mod->numbodies )] == NULL ) return NULL; // I_Error()
vertices = (float *)mod->col[bound( 0, ed->v.body, mod->numbodies )]->verts;
numvertices = mod->col[bound( 0, ed->v.body, mod->numbodies )]->numverts;
col = NewtonCreateConvexHull( gWorld, numvertices, vertices, sizeof(vec3_t), &offset[0][0] );
break;
default:

View File

@ -43,9 +43,6 @@ typedef struct cl_globalvars_s cl_globalvars_t;
typedef struct ui_globalvars_s ui_globalvars_t;
typedef struct physbody_s physbody_t;
// FIXME: get rid of this
typedef vec_t gl_matrix[16];
// platform instances
typedef enum
{

View File

@ -90,6 +90,9 @@ typedef struct render_exp_s
void (*DrawStretchRaw)( int x, int y, int w, int h, int cols, int rows, byte *data, bool redraw );
void (*DrawStretchPic)( float x, float y, float w, float h, float s1, float t1, float s2, float t2, shader_t shader );
int (*GetFragments)( const vec3_t org, float rad, vec3_t axis[3], int maxverts, vec3_t *verts, int maxfrags, fragment_t *frags );
int (*WorldToScreen)( const float *world, float *screen );
void (*ScreenToWorld)( const float *screen, float *world );
bool (*RSpeedsMessage)( char *out, size_t size );
} render_exp_t;
typedef struct render_imp_s

View File

@ -467,7 +467,7 @@ static void R_DrawAliasFrameLerp( const meshbuffer_t *mb, float backlerp )
maliasmesh_t *mesh;
maliasvertex_t *v, *ov;
ref_entity_t *e = RI.currententity;
ref_model_t *mod = Mod_ForHandle( mb->LODModelHandle );
ref_model_t *mod = Mod_ForHandle( mb->modhandle );
maliasmodel_t *model = ( maliasmodel_t * )mod->extradata;
ref_shader_t *shader;
static maliasmesh_t *alias_prevmesh;
@ -739,7 +739,7 @@ bool R_CullAliasModel( ref_entity_t *e )
if( shader && ( shader->sort <= SORT_ALPHATEST ))
{
mb = R_AddMeshToList( MB_MODEL, NULL, R_PlanarShadowShader(), -( i+1 ));
if( mb ) mb->LODModelHandle = modhandle;
if( mb ) mb->modhandle = modhandle;
}
}

View File

@ -664,7 +664,7 @@ static void R_DrawAliasFrameLerp( const meshbuffer_t *mb, float backlerp )
maliasmesh_t *mesh;
maliasvertex_t *v, *ov;
ref_entity_t *e = RI.currententity;
ref_model_t *mod = Mod_ForHandle( mb->LODModelHandle );
ref_model_t *mod = Mod_ForHandle( mb->modhandle );
maliasmodel_t *model = ( maliasmodel_t * )mod->extradata;
ref_shader_t *shader;
static maliasmesh_t *alias_prevmesh;
@ -918,9 +918,7 @@ bool R_CullAliasModel( ref_entity_t *e )
{
shader = NULL;
if( e->skinfile )
shader = R_FindShaderForSkinFile( e->skinfile, mesh->name );
else if(( e->skin >= 0 ) && ( e->skin < aliasmodel->numskins ))
if(( e->skin >= 0 ) && ( e->skin < aliasmodel->numskins ))
shader = aliasmodel->skins[e->skin].shader;
else if( mesh->numskins )
{
@ -936,7 +934,7 @@ bool R_CullAliasModel( ref_entity_t *e )
if( shader && ( shader->sort <= SORT_ALPHATEST ))
{
mb = R_AddMeshToList( MB_MODEL, NULL, R_PlanarShadowShader(), -( i+1 ));
if( mb ) mb->LODModelHandle = modhandle;
if( mb ) mb->modhandle = modhandle;
}
}
@ -995,8 +993,7 @@ void R_AddAliasModelToList( ref_entity_t *e )
{
shader = NULL;
if( e->skinfile ) shader = R_FindShaderForSkinFile( e->skinfile, mesh->name );
else if( ( e->skin >= 0 ) && ( e->skin < aliasmodel->numskins ))
if(( e->skin >= 0 ) && ( e->skin < aliasmodel->numskins ))
shader = aliasmodel->skins[e->skin].shader;
else if( mesh->numskins )
{

View File

@ -409,7 +409,7 @@ void R_BackendEndFrame( void )
case 1:
default:
com.snprintf( r_speeds_msg, sizeof( r_speeds_msg ),
"%4i wpoly %4i leafs %4i verts %4i tris %4i flushes %3i locks",
"%4i wpoly %4i leafs %4i verts\n%4i tris %4i flushes %4i locks",
c_brush_polys,
c_world_leafs,
r_backacc.c_totalVerts,
@ -420,7 +420,7 @@ void R_BackendEndFrame( void )
break;
case 2:
com.snprintf( r_speeds_msg, sizeof( r_speeds_msg ),
"lvs: %5i node: %5i farclip: %6.f",
"lvs: %5i node: %5i\nfarclip: %6.f",
r_mark_leaves,
r_world_node,
RI.farClip
@ -428,7 +428,7 @@ void R_BackendEndFrame( void )
break;
case 3:
com.snprintf( r_speeds_msg, sizeof( r_speeds_msg ),
"polys\\ents: %5i\\%5i sort\\draw: %5i\\%i",
"polys\\ents: %5i\\%5i\nsort\\draw: %5i\\%i",
r_add_polys, r_add_entities,
r_sort_meshes, r_draw_meshes
);
@ -449,7 +449,7 @@ void R_BackendEndFrame( void )
break;
case 5:
com.snprintf( r_speeds_msg, sizeof( r_speeds_msg ),
"%.1f %.1f %.1f (%.1f,%.1f,%.1f)",
"%.1f %.1f %.1f\n(%.1f,%.1f,%.1f)",
RI.refdef.vieworg[0], RI.refdef.vieworg[1], RI.refdef.vieworg[2],
RI.refdef.viewangles[0], RI.refdef.viewangles[1], RI.refdef.viewangles[2]
);
@ -2976,15 +2976,14 @@ R_SetColorForOutlines
*/
static _inline void R_SetColorForOutlines( void )
{
int type = r_currentMeshBuffer->sortkey & 3;
int type = r_currentMeshBuffer->sortkey & 3;
switch( type )
{
case MB_MODEL:
if( r_currentMeshBuffer->infokey < 0 )
pglColor4fv( colorRed );
else
pglColor4fv( colorWhite );
else pglColor4fv( colorWhite );
break;
case MB_SPRITE:
pglColor4fv( colorBlue );
@ -3017,7 +3016,7 @@ R_DrawNormals
*/
static void R_DrawNormals( void )
{
unsigned int i;
uint i;
if( r_shownormals->integer == 2 )
R_SetColorForOutlines();
@ -3062,9 +3061,14 @@ void R_DrawPhysDebug( void )
if( r_physbdebug->integer )
{
// physic debug
pglDisable( GL_TEXTURE_2D );
GL_SetState( GLSTATE_SRCBLEND_SRC_ALPHA|GLSTATE_DSTBLEND_ONE_MINUS_SRC_ALPHA );
GL_LoadMatrix( RI.worldviewMatrix );
pglBegin( GL_LINES );
ri.ShowCollision( R_DrawLine );
pglEnd();
pglEnable( GL_TEXTURE_2D );
}
}

View File

@ -300,9 +300,9 @@ void R_LightForOrigin( const vec3_t origin, vec3_t dir, vec4_t ambient, vec4_t d
{
int i, j;
int k, s;
int vi[3], elem[4];
float dot, t[8];
vec3_t vf, vf2, tdir;
int vi[3], elem[4];
vec3_t ambientLocal, diffuseLocal;
vec_t *gridSize, *gridMins;
int *gridBounds;
@ -337,7 +337,7 @@ void R_LightForOrigin( const vec3_t origin, vec3_t dir, vec4_t ambient, vec4_t d
for( i = 0; i < 4; i++ )
{
if( elem[i] < 0 || elem[i] >= ( r_worldbrushmodel->numlightarrayelems-1 ) )
if( elem[i] < 0 || elem[i] >= ( r_worldbrushmodel->numlightarrayelems - 1 ))
{
VectorSet( dir, 0.5f, 0.2f, -1.0f );
goto dynamic;

View File

@ -36,7 +36,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# define ALIGN(x)
#endif
#include "r_public.h"
#include "r_opengl.h"
extern stdlib_api_t com; // engine toolbox
@ -45,9 +44,9 @@ extern byte *r_temppool;
#define Host_Error com.error
typedef unsigned int elem_t;
typedef enum { RT_MODEL, RT_SPRITE, RT_PORTALSURFACE, NUM_RTYPES } refEntityType_t;
/*
skins will be outline flood filled and mip mapped
pics and sprites with alpha will be outline flood filled
pic won't be mip mapped
@ -130,6 +129,10 @@ enum
#define SHADOW_PLANAR 1
#define SHADOW_MAPPING 2
#define MAX_ENTITIES 2048
#define MAX_POLY_VERTS 3000
#define MAX_POLYS 2048
//===================================================================
#include "r_math.h"
@ -196,6 +199,12 @@ typedef struct
const ref_shader_t *shader;
} dlight_t;
typedef struct
{
float rgb[3]; // 0.0 - 2.0
} lightstyle_t;
typedef struct
{
int features;
@ -205,6 +214,122 @@ typedef struct
float stOffset[LM_STYLES][2];
} superLightStyle_t;
typedef struct
{
byte open; // 0 = mouth closed, 255 = mouth agape
byte sndcount; // counter for running average
int sndavg; // running average
} mouth_t;
typedef struct latchedvars_s
{
float animtime; // ???
float sequencetime;
vec3_t origin; // edict->v.old_origin
vec3_t angles;
vec3_t gaitorigin;
int sequence; // ???
float frame;
} latchedvars_t;
typedef struct studiolatched_s
{
float blending[MAXSTUDIOBLENDS];
float seqblending[MAXSTUDIOBLENDS];
float controller[MAXSTUDIOCONTROLLERS];
} studiolatched_t;
typedef struct studiolight_s
{
vec3_t lightvec; // light vector
vec4_t lightcolor; // ambient light color
vec4_t lightdiffuse; // diffuse light color
vec3_t bonelightvec[MAXSTUDIOBONES]; // ambient lightvectors per bone
vec3_t dynlightcolor[MAX_DLIGHTS]; // ambient dynamic light colors
vec3_t dynlightvec[MAX_DLIGHTS][MAXSTUDIOBONES];
int numdynlights;
} studiolight_t;
typedef struct studiovars_s
{
studiolatched_t prev;
mouth_t mouth; // for synchronizing mouth movements.
float blending[MAXSTUDIOBLENDS];
float controller[MAXSTUDIOCONTROLLERS];
// cached bones, valid only for current frame
char bonenames[MAXSTUDIOBONES][32];// used for attached entities
matrix4x4 *bonestransform;
int numbones;
// StudioBoneLighting (fast but ugly)
studiolight_t *light; // FIXME: alloc match size not maximum
} studiovars_t;
typedef struct ref_entity_s
{
edtype_t ent_type; // entity type
uint m_nCachedFrameCount;// keep current render frame
int index; // viewmodel has entindex -1
refEntityType_t rtype;
struct ref_model_s *model; // opaque type outside refresh
struct ref_model_s *weaponmodel; // opaque type outside refresh
latchedvars_t prev; // previous frame values for lerping
float framerate; // custom framerate
float animtime; // lerping animtime
float frame; // also used as RF_BEAM's diameter
int body;
int skin;
int movetype; // entity moving type
int sequence;
float scale;
void *extradata; // studiomodel bones, etc
// misc
float backlerp; // 0.0 = current, 1.0 = old
rgb_t rendercolor; // hl1 rendercolor
byte renderamt; // hl1 alphavalues
int rendermode; // hl1 rendermode
int renderfx; // server will be translate hl1 values into flags
int colormap; // q1 and hl1 model colormap (can applied for sprites)
int flags; // q1 effect flags, EF_ROTATE, EF_DIMLIGHT etc
// EF_ANIMATE stuff
int m_fSequenceLoops;
int m_fSequenceFinished;
// client gait sequence (local stuff)
int gaitsequence; // client->sequence + yaw
float gaitframe; // client->frame + yaw
float gaityaw; // local value
// most recent data
vec3_t axis[3];
vec3_t angles;
vec3_t movedir; // forward vector that computed on a server
vec3_t origin, origin2;
vec3_t lightingOrigin;
// RT_SPRITE stuff
struct ref_shader_s *spriteshader; // client drawing stuff
float radius; // used as RT_SPRITE's radius
// outilne stuff
float outlineHeight;
rgba_t outlineColor;
} ref_entity_t;
typedef struct
{
int params; // rendering parameters
@ -435,11 +560,9 @@ void NormToLatLong( const vec3_t normal, byte latlong[2] );
//
// r_alias.c
//
bool R_CullAliasModel( ref_entity_t *e );
bool R_CullAliasModel( ref_entity_t *e );
void R_AddAliasModelToList( ref_entity_t *e );
void R_DrawAliasModel( const meshbuffer_t *mb );
bool R_AliasModelLerpTag( orientation_t *orient, maliasmodel_t *aliasmodel, int framenum, int oldframenum,
float lerpfrac, const char *name );
float R_AliasModelBBox( ref_entity_t *e, vec3_t mins, vec3_t maxs );
//
@ -527,6 +650,9 @@ void R_ShowTextures( void );
texture_t *R_LoadTexture( const char *name, rgbdata_t *pic, int samples, texFlags_t flags );
texture_t *R_FindTexture( const char *name, const byte *buf, size_t size, texFlags_t flags );
bool VID_ScreenShot( const char *filename, bool levelshot );
bool VID_CubemapShot( const char *base, uint size, bool skyshot );
//
// r_light.c
//
@ -536,33 +662,34 @@ texture_t *R_FindTexture( const char *name, const byte *buf, size_t size, texFl
extern int r_numSuperLightStyles;
extern superLightStyle_t r_superLightStyles[MAX_SUPER_STYLES];
void R_LightBounds( const vec3_t origin, float intensity, vec3_t mins, vec3_t maxs );
void R_LightBounds( const vec3_t origin, float intensity, vec3_t mins, vec3_t maxs );
bool R_SurfPotentiallyLit( msurface_t *surf );
unsigned int R_AddSurfDlighbits( msurface_t *surf, unsigned int dlightbits );
void R_AddDynamicLights( unsigned int dlightbits, int state );
void R_LightForEntity( ref_entity_t *e, byte *bArray );
void R_LightForOrigin( const vec3_t origin, vec3_t dir, vec4_t ambient, vec4_t diffuse, float radius );
void R_BuildLightmaps( int numLightmaps, int w, int h, const byte *data, mlightmapRect_t *rects );
void R_InitLightStyles( void );
int R_AddSuperLightStyle( const int *lightmaps, const byte *lightmapStyles, const byte *vertexStyles,
uint R_AddSurfDlighbits( msurface_t *surf, unsigned int dlightbits );
void R_AddDynamicLights( unsigned int dlightbits, int state );
void R_LightForEntity( ref_entity_t *e, byte *bArray );
void R_LightForOrigin( const vec3_t origin, vec3_t dir, vec4_t ambient, vec4_t diffuse, float radius );
void R_BuildLightmaps( int numLightmaps, int w, int h, const byte *data, mlightmapRect_t *rects );
void R_InitLightStyles( void );
int R_AddSuperLightStyle( const int *lightmaps, const byte *lightmapStyles, const byte *vertexStyles,
mlightmapRect_t **lmRects );
void R_SortSuperLightStyles( void );
void R_SortSuperLightStyles( void );
void R_InitCoronas( void );
void R_DrawCoronas( void );
void R_InitCoronas( void );
void R_DrawCoronas( void );
//
// r_main.c
//
void GL_Cull( int cull );
void GL_SetState( int state );
void GL_FrontFace( int front );
void R_Set2DMode( bool enable );
void GL_Cull( int cull );
void GL_SetState( int state );
void GL_FrontFace( int front );
void R_Set2DMode( bool enable );
void R_BeginFrame( void );
void R_EndFrame( void );
void R_RenderView( const ref_params_t *fd );
const char *R_SpeedsMessage( char *out, size_t size );
void R_BeginFrame( void );
void R_EndFrame( void );
void R_RenderScene( const ref_params_t *fd );
void R_RenderView( const ref_params_t *fd );
void R_ClearScene( void );
bool R_CullBox( const vec3_t mins, const vec3_t maxs, const uint clipflags );
bool R_CullSphere( const vec3_t centre, const float radius, const uint clipflags );
@ -573,12 +700,12 @@ int R_CullModel( ref_entity_t *e, vec3_t mins, vec3_t maxs, float radius );
mfog_t *R_FogForSphere( const vec3_t centre, const float radius );
bool R_CompletelyFogged( mfog_t *fog, vec3_t origin, float radius );
void R_LoadIdentity( void );
void R_RotateForEntity( ref_entity_t *e );
void R_TranslateForEntity( ref_entity_t *e );
void R_TransformToScreen_Vec3( vec3_t in, vec3_t out );
void R_TransformVectorToScreen( const ref_params_t *rd, const vec3_t in, vec2_t out );
void R_TransformEntityBBox( ref_entity_t *e, vec3_t mins, vec3_t maxs, vec3_t bbox[8], bool local );
void R_LoadIdentity( void );
void R_RotateForEntity( ref_entity_t *e );
void R_TranslateForEntity( ref_entity_t *e );
bool R_TransformToScreen_Vec3( const vec3_t in, vec3_t out );
void R_TransformVectorToScreen( const ref_params_t *rd, const vec3_t in, vec2_t out );
void R_TransformEntityBBox( ref_entity_t *e, vec3_t mins, vec3_t maxs, vec3_t bbox[8], bool local );
bool R_SpriteOverflow( void );
bool R_PushSpriteModel( const meshbuffer_t *mb );
@ -693,13 +820,17 @@ mspriteframe_t *R_GetSpriteFrame( ref_entity_t *ent );
//
// r_studio.c
//
extern byte *studiopool;
void R_AddStudioModelToList( ref_entity_t *e );
void R_DrawStudioModel( const meshbuffer_t *mb );
void R_StudioResetSequenceInfo( ref_entity_t *ent );
float R_StudioFrameAdvance( ref_entity_t *ent, float flInterval );
void R_StudioModelBBox( ref_entity_t *e, vec3_t mins, vec3_t maxs );
bool R_CullStudioModel( ref_entity_t *e );
void R_StudioDrawDebug( void );
void R_StudioInit( void );
void R_StudioNewMap( void );
void R_StudioShutdown( void );
//
@ -731,15 +862,6 @@ void R_ClearSurfOcclusionQueryKeys( void );
int R_SurfOcclusionQueryKey( ref_entity_t *e, msurface_t *surf );
void R_SurfIssueOcclusionQueries( void );
//
// r_skin.c
//
void R_InitSkinFiles( void );
void R_ShutdownSkinFiles( void );
struct skinfile_s *R_SkinFile_Load( const char *name );
struct skinfile_s *R_RegisterSkinFile( const char *name );
ref_shader_t *R_FindShaderForSkinFile( const struct skinfile_s *skinfile, const char *meshname );
//
// r_sky.c
//

View File

@ -426,7 +426,7 @@ R_InitCustomColors
*/
void R_InitCustomColors( void )
{
memset( r_customColors, 255, sizeof( r_customColors ) );
Mem_Set( r_customColors, 255, sizeof( r_customColors ));
}
/*
@ -936,7 +936,7 @@ R_AddModelMeshOutline
void R_AddModelMeshOutline( unsigned int modhandle, mfog_t *fog, int meshnum )
{
meshbuffer_t *mb = R_AddMeshToList( MB_MODEL, fog, r_outlineShader, -( meshnum+1 ) );
if( mb ) mb->LODModelHandle = modhandle;
if( mb ) mb->modhandle = modhandle;
}
//=======================================================================
@ -1327,11 +1327,11 @@ R_CullEntities
*/
static void R_CullEntities( void )
{
unsigned int i;
ref_entity_t *e;
bool culled;
uint i;
ref_entity_t *e;
bool culled;
memset( r_entVisBits, 0, sizeof( r_entVisBits ) );
Mem_Set( r_entVisBits, 0, sizeof( r_entVisBits ));
if( !r_drawentities->integer )
return;
@ -1695,6 +1695,8 @@ void R_RenderView( const ref_params_t *fd )
R_RenderDebugSurface ();
R_StudioDrawDebug ();
R_DrawPhysDebug ();
R_DrawNullEntities();
@ -1964,11 +1966,13 @@ void R_EndFrame( void )
R_SpeedsMessage
===============
*/
const char *R_SpeedsMessage( char *out, size_t size )
static bool R_SpeedsMessage( char *out, size_t size )
{
if( out )
com.strncpy( out, r_speeds_msg, size );
return out;
if( r_speeds->integer <= 0 ) return false;
if( !out || !size ) return false;
com.strncpy( out, r_speeds_msg, size );
return true;
}
//==================================================================================
@ -1978,22 +1982,23 @@ const char *R_SpeedsMessage( char *out, size_t size )
R_TransformToScreen_Vec3
=============
*/
void R_TransformToScreen_Vec3( vec3_t in, vec3_t out )
bool R_TransformToScreen_Vec3( const vec3_t in, vec3_t out )
{
vec4_t temp, temp2;
vec4_t temp, temp2;
temp[0] = in[0];
temp[1] = in[1];
temp[2] = in[2];
temp[3] = 1.0f;
Matrix4x4_ConcatVector( RI.worldviewProjectionMatrix, temp, temp2 );
if( !temp2[3] )
return;
Matrix4x4_ConcatVector( RI.worldviewProjectionMatrix, temp, temp2 );
if( !temp2[3] ) return true; // Z-clipped
out[0] = (temp2[0] / temp2[3] + 1.0f) * 0.5f * RI.refdef.viewport[2];
out[1] = (temp2[1] / temp2[3] + 1.0f) * 0.5f * RI.refdef.viewport[3];
out[2] = (temp2[2] / temp2[3] + 1.0f) * 0.5f;
return false;
}
/*
@ -2020,13 +2025,21 @@ void R_TransformVectorToScreen( const ref_params_t *rd, const vec3_t in, vec2_t
Matrix4x4_ConcatVector( m, temp, temp2 );
Matrix4x4_ConcatVector( p, temp2, temp );
if( !temp[3] )
return;
if( !temp[3] ) return;
out[0] = rd->viewport[0] + ( temp[0] / temp[3] + 1.0f ) * rd->viewport[2] * 0.5f;
out[1] = rd->viewport[1] + ( temp[1] / temp[3] + 1.0f ) * rd->viewport[3] * 0.5f;
}
static void R_ScreenToWorld( const float *screen, float *world )
{
// FIXME: implement
}
static bool R_WorldToScreen( const float *world, float *screen )
{
return R_TransformToScreen_Vec3( world, screen );
}
//==================================================================================
/*
@ -2222,18 +2235,62 @@ bool R_AddGenericEntity( edict_t *pRefEntity, ref_entity_t *refent, int ed_type,
VectorNegate( refent->axis[1], refent->axis[1] );
}
// copy controllers
for( i = 0; i < MAXSTUDIOCONTROLLERS; i++ )
if( refent->model->type == mod_studio )
{
refent->prev.controller[i] = refent->controller[i];
refent->controller[i] = pRefEntity->v.controller[i];
}
studiovars_t *studio;
int numbones = ((mstudiomodel_t *)refent->model->extradata)->phdr->numbones;
if( !refent->extradata )
refent->extradata = (void *)Mem_Alloc( studiopool, sizeof( studiovars_t ));
studio = (studiovars_t *)refent->extradata;
// copy blends
for( i = 0; i < MAXSTUDIOBLENDS; i++ )
// copy controllers
for( i = 0; i < MAXSTUDIOCONTROLLERS; i++ )
{
studio->prev.controller[i] = studio->controller[i];
studio->controller[i] = pRefEntity->v.controller[i];
}
// copy blends
for( i = 0; i < MAXSTUDIOBLENDS; i++ )
{
studio->prev.blending[i] = studio->blending[i];
studio->blending[i] = pRefEntity->v.blending[i];
}
if( !studio->bonestransform || studio->numbones != numbones )
{
size_t cache_size = sizeof( matrix4x4 ) * numbones;
size_t names_size = numbones * 32; // bonename length
// allocate or merge bones cache
studio->bonestransform = (matrix4x4 *)Mem_Realloc( studiopool, studio->bonestransform, cache_size );
studio->numbones = numbones;
}
if( r_studio_bonelighting->integer )
{
if( !studio->light )
studio->light = Mem_Alloc( studiopool, sizeof( studiolight_t ));
}
else
{
if( studio->light ) Mem_Free( studio->light );
studio->light = NULL;
}
}
else
{
refent->prev.blending[i] = refent->blending[i];
refent->blending[i] = pRefEntity->v.blending[i];
// entity has changed model, so no reason to keep this data
if( refent->extradata )
{
studiovars_t *studio = (studiovars_t *)refent->extradata;
if( studio->bonestransform ) Mem_Free( studio->bonestransform );
if( studio->light ) Mem_Free( studio->light );
Mem_Free( refent->extradata );
}
refent->extradata = NULL;
}
if( refent->ent_type == ED_CLIENT )
@ -2423,6 +2480,9 @@ render_exp_t DLLEXPORT *CreateAPI(stdlib_api_t *input, render_imp_t *engfuncs )
re.DrawStretchRaw = R_DrawStretchRaw;
re.DrawStretchPic = R_DrawStretchPic;
re.GetFragments = R_GetClippedFragments;
re.ScreenToWorld = R_ScreenToWorld;
re.WorldToScreen = R_WorldToScreen;
re.RSpeedsMessage = R_SpeedsMessage;
return &re;
}

View File

@ -394,8 +394,7 @@ void R_AddModelMeshToList( unsigned int modhandle, mfog_t *fog, ref_shader_t *sh
meshbuffer_t *mb;
mb = R_AddMeshToList( MB_MODEL, fog, shader, -( meshnum+1 ) );
if( mb )
mb->LODModelHandle = modhandle;
if( mb ) mb->modhandle = modhandle;
if( !GL_Support( R_SHADER_GLSL100_EXT ) && RI.currententity->outlineHeight/* && !(RI.params & RP_SHADOWMAPVIEW)*/ )
{

View File

@ -89,7 +89,7 @@ typedef struct
{
int lastPoly;
uint dlightbits;
uint LODModelHandle;
uint modhandle;
};
uint shadowbits;
} meshbuffer_t;

View File

@ -400,6 +400,9 @@ mleaf_t *Mod_PointInLeaf( float *p, ref_model_t *model );
byte *Mod_ClusterPVS( int cluster, ref_model_t *model );
uint Mod_Handle( ref_model_t *mod );
ref_model_t *Mod_ForHandle( unsigned int elem );
ref_model_t *R_RegisterModel( const char *name );
void R_BeginRegistration( const char *model, const dvis_t *visData );
void R_EndRegistration( const char *skyname );
#define Mod_Malloc( mod, size ) Mem_Alloc(( mod )->mempool, size )
#define Mod_Realloc( mod, data, size ) Mem_Realloc(( mod )->mempool, data, size )

View File

@ -21,151 +21,5 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define __R_PUBLIC_H__
// FIXME: move these to r_local.h?
#define MAX_SKINFILES 256
#define MAX_ENTITIES 2048
#define MAX_POLY_VERTS 3000
#define MAX_POLYS 2048
typedef struct
{
vec3_t axis[3];
vec3_t origin;
} orientation_t;
typedef struct
{
float rgb[3]; // 0.0 - 2.0
} lightstyle_t;
typedef enum
{
RT_MODEL,
RT_SPRITE,
RT_PORTALSURFACE,
NUM_RTYPES
} refEntityType_t;
typedef struct
{
byte open; // 0 = mouth closed, 255 = mouth agape
byte sndcount; // counter for running average
int sndavg; // running average
} mouth_t;
typedef struct latchedvars_s
{
float animtime; // ???
float sequencetime;
vec3_t origin; // edict->v.old_origin
vec3_t angles;
vec3_t gaitorigin;
int sequence; // ???
float frame;
float blending[MAXSTUDIOBLENDS];
float seqblending[MAXSTUDIOBLENDS];
float controller[MAXSTUDIOCONTROLLERS];
} latchedvars_t;
typedef struct entity_s
{
edtype_t ent_type; // entity type
uint renderframe; // keep current render frame
int index; // viewmodel has entindex -1
refEntityType_t rtype;
struct ref_model_s *model; // opaque type outside refresh
struct ref_model_s *weaponmodel; // opaque type outside refresh
struct skinfile_s *skinfile; // registered .skin file
latchedvars_t prev; // previous frame values for lerping
float framerate; // custom framerate
float animtime; // lerping animtime
float frame; // also used as RF_BEAM's diameter
int body;
int skin;
float blending[MAXSTUDIOBLENDS];
vec3_t attachment[MAXSTUDIOATTACHMENTS];
float controller[MAXSTUDIOCONTROLLERS];
mouth_t mouth; // for synchronizing mouth movements.
int gaitsequence; // client->sequence + yaw
float gaitframe; // client->frame + yaw
float gaityaw; // local value
int movetype; // entity moving type
int sequence;
float scale;
// misc
float backlerp; // 0.0 = current, 1.0 = old
rgb_t rendercolor; // hl1 rendercolor
byte renderamt; // hl1 alphavalues
int rendermode; // hl1 rendermode
int renderfx; // server will be translate hl1 values into flags
int colormap; // q1 and hl1 model colormap (can applied for sprites)
int flags; // q1 effect flags, EF_ROTATE, EF_DIMLIGHT etc
int m_fSequenceLoops;
int m_fSequenceFinished;
/*
** most recent data
*/
vec3_t axis[3];
vec3_t angles;
vec3_t movedir; // forward vector that computed on a server
vec3_t origin, origin2;
vec3_t lightingOrigin;
// RT_SPRITE stuff
struct ref_shader_s *spriteshader; // client drawing stuff
float radius; // used as RT_SPRITE's radius
// outilne stuff
float outlineHeight;
rgba_t outlineColor;
} ref_entity_t;
void R_ModelBounds( const struct ref_model_s *model, vec3_t mins, vec3_t maxs );
struct ref_model_s *R_RegisterModel( const char *name );
struct skinfile_s *R_RegisterSkinFile( const char *name );
void R_ClearScene( void );
void R_AddLightToScene( const vec3_t org, float intensity, float r, float g, float b, const struct ref_shader_s *shader );
bool R_AddPolyToScene( const poly_t *poly );
void R_AddLightStyleToScene( int style, float r, float g, float b );
void R_DrawStretchPic( float x, float y, float w, float h, float s1, float t1, float s2, float t2, shader_t shader );
void R_DrawStretchRaw( int x, int y, int w, int h, int cols, int rows, const byte *data, bool redraw );
void R_SetCustomColor( int num, int r, int g, int b );
void R_LightForOrigin( const vec3_t origin, vec3_t dir, vec4_t ambient, vec4_t diffuse, float radius );
int R_GetClippedFragments( const vec3_t origin, float radius, vec3_t axis[3], int maxfverts, vec3_t *fverts,
int maxfragments, fragment_t *fragments );
void R_TransformVectorToScreen( const ref_params_t *rd, const vec3_t in, vec2_t out );
const char *R_SpeedsMessage( char *out, size_t size );
// Xash renderer exports
bool R_Init( bool full );
void R_Shutdown( bool full );
void R_BeginRegistration( const char *model, const dvis_t *visData );
shader_t Mod_RegisterShader( const char *name, int shaderType );
void R_EndRegistration( const char *skyname );
void R_BeginFrame( void );
void R_RenderScene( const ref_params_t *fd );
void R_EndFrame( void );
bool R_AddEntityToScene( edict_t *pRefEntity, int ed_type, float lerp );
bool VID_ScreenShot( const char *filename, bool levelshot );
bool VID_CubemapShot( const char *base, uint size, bool skyshot );
#endif /*__R_PUBLIC_H__*/
#endif // __R_PUBLIC_H__

View File

@ -511,7 +511,7 @@ void GL_InitCommands( void )
r_novis = Cvar_Get( "r_novis", "0", 0, "ignore vis information (perfomance test)" );
r_nocull = Cvar_Get( "r_nocull", "0", 0, "ignore frustrum culling (perfomance test)" );
r_lerpmodels = Cvar_Get( "r_lerpmodels", "1", 0, "use lerping for alias and studio models" );
r_speeds = Cvar_Get( "r_speeds", "0", 0, "shows r_speeds" );
r_speeds = Cvar_Get( "r_speeds", "0", CVAR_ARCHIVE, "shows r_speeds" );
r_drawelements = Cvar_Get( "r_drawelements", "1", 0, "use gldrawElements or glDrawRangeElements" );
r_showtris = Cvar_Get( "r_showtris", "0", CVAR_CHEAT, "show mesh triangles" );
r_lockpvs = Cvar_Get( "r_lockpvs", "0", CVAR_CHEAT, "lockpvs area at current point (pvs test)" );
@ -1015,6 +1015,9 @@ void GL_InitExtensions( void )
Cvar_Set( "r_anisotropy", va( "%f", bound( 0, gl_texture_anisotropy->value, glConfig.max_texture_anisotropy )));
// software mipmap generator does wrong result with NPOT textures ...
if( !GL_Support( R_SGIS_MIPMAPS_EXT )) GL_SetExtension( R_ARB_TEXTURE_NPOT_EXT, false );
if( GL_Support( R_TEXTURE_COMPRESSION_EXT )) flags |= IL_DDS_HARDWARE;
flags |= IL_USE_LERPING|IL_ALLOW_OVERWRITE;
@ -1040,7 +1043,6 @@ static void R_InitMedia( void )
R_InitCinematics ();
R_InitShaders();
R_InitModels();
R_InitSkinFiles();
R_InitCoronas();
R_InitShadows();
R_InitOcclusionQueries();
@ -1066,7 +1068,6 @@ static void R_FreeMedia( void )
R_ShutdownOcclusionQueries();
R_ShutdownShadows();
R_ShutdownSkinFiles();
R_ShutdownModels();
R_ShutdownShaders();
R_ShutdownCinematics ();
@ -1143,6 +1144,7 @@ void R_NewMap( void )
R_InitLightStyles(); // clear lightstyles
R_InitCustomColors(); // clear custom colors
R_InitCoronas(); // update corona shader (because we can't make it static)
R_StudioNewMap (); // free boneposes
GL_SetDefaultTexState ();
Mem_Set( &RI, 0, sizeof( refinst_t ));

View File

@ -43,14 +43,14 @@ extern int r_entShadowBits[MAX_ENTITIES];
void R_InitShadows( void );
void R_ShutdownShadows( void );
bool R_CullPlanarShadow( ref_entity_t *e, vec3_t mins, vec3_t maxs, bool occclusionQuery );
bool R_CullPlanarShadow( struct ref_entity_s *e, vec3_t mins, vec3_t maxs, bool occclusionQuery );
void R_DeformVPlanarShadow( int numV, float *v );
void R_PlanarShadowPass( int state );
ref_shader_t *R_PlanarShadowShader( void );
void R_ClearShadowmaps( void );
void R_GroupShadowCasters( void );
bool R_AddShadowCaster( ref_entity_t *ent );
bool R_AddShadowCaster( struct ref_entity_s *ent );
void R_CullShadowmapGroups( void );
void R_DrawShadowmaps( void );

File diff suppressed because it is too large Load Diff

View File

@ -190,10 +190,6 @@ SOURCE=.\r_shadow.c
# End Source File
# Begin Source File
SOURCE=.\r_skin.c
# End Source File
# Begin Source File
SOURCE=.\r_sky.c
# End Source File
# Begin Source File

View File

@ -3,56 +3,55 @@
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: render - Win32 Debug--------------------
--------------------Configuration: render - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP213C.tmp" with contents
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP2CB1.tmp" with contents
[
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../public" /I "../common" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\render\!debug/" /Fo"..\temp\render\!debug/" /Fd"..\temp\render\!debug/" /FD /c
/nologo /MD /W3 /GX /O2 /I "../public" /I "../common" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fo"..\temp\render\!release/" /Fd"..\temp\render\!release/" /FD /c
"D:\Xash3D\src_main\render\r_studio.c"
]
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP213C.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP213D.tmp" with contents
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP2CB1.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP2CB2.tmp" with contents
[
msvcrtd.lib user32.lib gdi32.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\temp\render\!debug/render.pdb" /debug /machine:I386 /nodefaultlib:"msvcrt.lib" /out:"..\temp\render\!debug/render.dll" /implib:"..\temp\render\!debug/render.lib" /pdbtype:sept
"\Xash3D\src_main\temp\render\!debug\cin.obj"
"\Xash3D\src_main\temp\render\!debug\r_aliasq.obj"
"\Xash3D\src_main\temp\render\!debug\r_backend.obj"
"\Xash3D\src_main\temp\render\!debug\r_bloom.obj"
"\Xash3D\src_main\temp\render\!debug\r_cin.obj"
"\Xash3D\src_main\temp\render\!debug\r_cull.obj"
"\Xash3D\src_main\temp\render\!debug\r_draw.obj"
"\Xash3D\src_main\temp\render\!debug\r_image.obj"
"\Xash3D\src_main\temp\render\!debug\r_light.obj"
"\Xash3D\src_main\temp\render\!debug\r_main.obj"
"\Xash3D\src_main\temp\render\!debug\r_math.obj"
"\Xash3D\src_main\temp\render\!debug\r_mesh.obj"
"\Xash3D\src_main\temp\render\!debug\r_model.obj"
"\Xash3D\src_main\temp\render\!debug\r_opengl.obj"
"\Xash3D\src_main\temp\render\!debug\r_poly.obj"
"\Xash3D\src_main\temp\render\!debug\r_program.obj"
"\Xash3D\src_main\temp\render\!debug\r_register.obj"
"\Xash3D\src_main\temp\render\!debug\r_shader.obj"
"\Xash3D\src_main\temp\render\!debug\r_shadow.obj"
"\Xash3D\src_main\temp\render\!debug\r_skin.obj"
"\Xash3D\src_main\temp\render\!debug\r_sky.obj"
"\Xash3D\src_main\temp\render\!debug\r_sprite.obj"
"\Xash3D\src_main\temp\render\!debug\r_studio.obj"
"\Xash3D\src_main\temp\render\!debug\r_surf.obj"
msvcrt.lib user32.lib gdi32.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 /nodefaultlib:"libc.lib" /out:"..\temp\render\!release/render.dll" /implib:"..\temp\render\!release/render.lib" /libpath:"../public/libs/"
"\Xash3D\src_main\temp\render\!release\cin.obj"
"\Xash3D\src_main\temp\render\!release\r_aliasq.obj"
"\Xash3D\src_main\temp\render\!release\r_backend.obj"
"\Xash3D\src_main\temp\render\!release\r_bloom.obj"
"\Xash3D\src_main\temp\render\!release\r_cin.obj"
"\Xash3D\src_main\temp\render\!release\r_cull.obj"
"\Xash3D\src_main\temp\render\!release\r_draw.obj"
"\Xash3D\src_main\temp\render\!release\r_image.obj"
"\Xash3D\src_main\temp\render\!release\r_light.obj"
"\Xash3D\src_main\temp\render\!release\r_main.obj"
"\Xash3D\src_main\temp\render\!release\r_math.obj"
"\Xash3D\src_main\temp\render\!release\r_mesh.obj"
"\Xash3D\src_main\temp\render\!release\r_model.obj"
"\Xash3D\src_main\temp\render\!release\r_opengl.obj"
"\Xash3D\src_main\temp\render\!release\r_poly.obj"
"\Xash3D\src_main\temp\render\!release\r_program.obj"
"\Xash3D\src_main\temp\render\!release\r_register.obj"
"\Xash3D\src_main\temp\render\!release\r_shader.obj"
"\Xash3D\src_main\temp\render\!release\r_shadow.obj"
"\Xash3D\src_main\temp\render\!release\r_sky.obj"
"\Xash3D\src_main\temp\render\!release\r_sprite.obj"
"\Xash3D\src_main\temp\render\!release\r_studio.obj"
"\Xash3D\src_main\temp\render\!release\r_surf.obj"
]
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP213D.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP213E.bat" with contents
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP2CB2.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP2CB3.bat" with contents
[
@echo off
copy \Xash3D\src_main\temp\render\!debug\render.dll "D:\Xash3D\bin\render.dll"
copy \Xash3D\src_main\temp\render\!release\render.dll "D:\Xash3D\bin\render.dll"
]
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP213E.bat"
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP2CB3.bat"
Compiling...
r_studio.c
Linking...
Creating library ..\temp\render\!debug/render.lib and object ..\temp\render\!debug/render.exp
Creating library ..\temp\render\!release/render.lib and object ..\temp\render\!release/render.exp
<h3>Output Window</h3>
Performing Custom Build Step on \Xash3D\src_main\temp\render\!debug\render.dll
Performing Custom Build Step on \Xash3D\src_main\temp\render\!release\render.dll
‘ª®¯¨à®¢ ­® ä ©«®¢: 1.

View File

@ -132,7 +132,6 @@ Beta 13.12.09
108. prepare QuArK to Xash-ready OK
109. implement q1 models instead of q3 models OK
110. loading textures for q1 models OK
111. implement SSE_Transform if possible
112. finalize alias models
113. clean up renderer sources
114. reorganize MathLib.
111. finalize alias models
112. clean up renderer sources
113. fixup debug tools OK