04 Aug 2009

This commit is contained in:
g-cont 2009-08-04 00:00:00 +04:00 committed by Alibek Omarov
parent d22bf723bb
commit be2ac55788
15 changed files with 383 additions and 4576 deletions

View File

@ -1,16 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: client - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
<h3>Results</h3>
client.dll - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

View File

@ -1,16 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: engine - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
<h3>Results</h3>
engine.dll - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

View File

@ -1,64 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: launch - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPC7.tmp" with contents
[
/nologo /MD /W3 /GX /O2 /I "./" /I "imagelib" /I "../public" /I "../common" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fo"..\temp\launch\!release/" /Fd"..\temp\launch\!release/" /FD /c
"D:\Xash3D\src_main\launch\memlib.c"
]
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPC7.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPC8.tmp" with contents
[
zlib.lib png.lib user32.lib gdi32.lib advapi32.lib winmm.lib /nologo /dll /pdb:none /machine:I386 /nodefaultlib:"libc.lib" /out:"..\temp\launch\!release/launch.dll" /implib:"..\temp\launch\!release/launch.lib" /libpath:"./imagelib" /opt:nowin98
"\Xash3D\src_main\temp\launch\!release\cmd.obj"
"\Xash3D\src_main\temp\launch\!release\console.obj"
"\Xash3D\src_main\temp\launch\!release\cpuinfo.obj"
"\Xash3D\src_main\temp\launch\!release\crclib.obj"
"\Xash3D\src_main\temp\launch\!release\cvar.obj"
"\Xash3D\src_main\temp\launch\!release\export.obj"
"\Xash3D\src_main\temp\launch\!release\filesystem.obj"
"\Xash3D\src_main\temp\launch\!release\img_bmp.obj"
"\Xash3D\src_main\temp\launch\!release\img_dds.obj"
"\Xash3D\src_main\temp\launch\!release\img_jpg.obj"
"\Xash3D\src_main\temp\launch\!release\img_main.obj"
"\Xash3D\src_main\temp\launch\!release\img_pcx.obj"
"\Xash3D\src_main\temp\launch\!release\img_png.obj"
"\Xash3D\src_main\temp\launch\!release\img_tga.obj"
"\Xash3D\src_main\temp\launch\!release\img_utils.obj"
"\Xash3D\src_main\temp\launch\!release\img_vtf.obj"
"\Xash3D\src_main\temp\launch\!release\img_wad.obj"
"\Xash3D\src_main\temp\launch\!release\memlib.obj"
"\Xash3D\src_main\temp\launch\!release\network.obj"
"\Xash3D\src_main\temp\launch\!release\parselib.obj"
"\Xash3D\src_main\temp\launch\!release\patch.obj"
"\Xash3D\src_main\temp\launch\!release\stdlib.obj"
"\Xash3D\src_main\temp\launch\!release\system.obj"
"\Xash3D\src_main\temp\launch\!release\utils.obj"
]
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPC8.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPC9.bat" with contents
[
@echo off
copy \Xash3D\src_main\temp\launch\!release\launch.dll "D:\Xash3D\bin\launch.dll"
]
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPC9.bat"
Compiling...
memlib.c
Linking...
Creating library ..\temp\launch\!release/launch.lib and object ..\temp\launch\!release/launch.exp
<h3>Output Window</h3>
Performing Custom Build Step on \Xash3D\src_main\temp\launch\!release\launch.dll
‘ª®¯¨à®¢ ­® ä ©«®¢: 1.
<h3>Results</h3>
launch.dll - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

View File

@ -33,6 +33,10 @@ static float r_triangletable[FTABLE_SIZE];
static float r_squaretable[FTABLE_SIZE];
static float r_sawtoothtable[FTABLE_SIZE];
static float r_inversesawtoothtable[FTABLE_SIZE];
static float r_warpsintable[256] =
{
#include "warpsin.h"
};
#define NOISE_SIZE 256
#define NOISE_VAL( a ) r_noiseperm[( a ) & ( NOISE_SIZE - 1 )]
@ -59,10 +63,10 @@ vec2_t *coordsArray;
vec2_t *lightmapCoordsArray[LM_STYLES];
rgba_t colorArray[MAX_ARRAY_VERTS];
ref_globals_t tr;
ref_backacc_t r_backacc;
ref_globals_t tr;
ref_backacc_t r_backacc;
bool r_triangleOutlines;
bool r_triangleOutlines;
static vec4_t colorWhite = { 1.0f, 1.0f, 1.0f, 1.0f };
static vec4_t colorRed = { 1.0f, 0.0f, 0.0f, 1.0f };
@ -109,25 +113,24 @@ R_BackendInit
*/
void R_BackendInit( void )
{
int i;
float t;
int i;
float t;
r_numAccumPasses = 0;
r_arraysLocked = false;
r_triangleOutlines = false;
tr.iRenderMode = kRenderNormal;
R_ClearArrays();
R_InitVertexBuffers();
R_BackendResetPassMask();
pglEnableClientState( GL_VERTEX_ARRAY );
if( !r_ignorehwgamma->integer )
r_identityLighting = (int)( 255.0f / pow( 2, max( 0, floor( r_overbrightbits->value ) ) ) );
else
r_identityLighting = 255;
r_identityLighting = (int)( 255.0f / pow( 2, max( 0, floor( r_overbrightbits->value ))));
else r_identityLighting = 255;
// build lookup tables
for( i = 0; i < FTABLE_SIZE; i++ )
@ -136,41 +139,34 @@ void R_BackendInit( void )
r_sintable[i] = sin( t * M_PI2 );
if( t < 0.25 )
r_triangletable[i] = t * 4.0;
else if( t < 0.75 )
r_triangletable[i] = 2 - 4.0 * t;
else
r_triangletable[i] = ( t - 0.75 ) * 4.0 - 1.0;
if( t < 0.25f ) r_triangletable[i] = t * 4.0f;
else if( t < 0.75f ) r_triangletable[i] = 2 - 4.0f * t;
else r_triangletable[i] = ( t - 0.75f ) * 4.0f - 1.0f;
if( t < 0.5 )
r_squaretable[i] = 1.0f;
else
r_squaretable[i] = -1.0f;
if( t < 0.5f ) r_squaretable[i] = 1.0f;
else r_squaretable[i] = -1.0f;
r_sawtoothtable[i] = t;
r_inversesawtoothtable[i] = 1.0 - t;
r_inversesawtoothtable[i] = 1.0f - t;
}
for( i = 0; i < 256; i++ )
r_sintableByte[i] = sin( (float)i / 255.0 * M_PI2 );
r_sintableByte[i] = sin((float)i / 255.0f * M_PI2 );
// init the noise table
srand( 1001 );
for( i = 0; i < NOISE_SIZE; i++ )
{
r_noisetable[i] = (float)( ( ( rand() / (float)RAND_MAX ) * 2.0 - 1.0 ) );
r_noiseperm[i] = (unsigned char)( rand() / (float)RAND_MAX * 255 );
r_noisetable[i] = Com_RandomFloat( -1.0f, 1.0f );
r_noiseperm[i] = Com_RandomLong( 0, 255 );
}
// init dynamic lights pass
memset( &r_dlightsPass, 0, sizeof( ref_stage_t ) );
Mem_Set( &r_dlightsPass, 0, sizeof( ref_stage_t ) );
r_dlightsPass.flags = SHADERSTAGE_DLIGHT;
r_dlightsPass.glState = GLSTATE_DEPTHFUNC_EQ|GLSTATE_SRCBLEND_DST_COLOR|GLSTATE_DSTBLEND_ONE;
// init fog pass
memset( &r_fogPass, 0, sizeof( ref_stage_t ) );
Mem_Set( &r_fogPass, 0, sizeof( ref_stage_t ) );
r_fogPass.tcgen = TCGEN_FOG;
r_fogPass.rgbGen.type = RGBGEN_FOG;
r_fogPass.alphaGen.type = ALPHAGEN_IDENTITY;
@ -192,7 +188,7 @@ void R_BackendInit( void )
}
// init optional GLSL program passes
memset( r_GLSLpasses, 0, sizeof( r_GLSLpasses ) );
Mem_Set( r_GLSLpasses, 0, sizeof( r_GLSLpasses ) );
r_GLSLpasses[0].flags = SHADERSTAGE_DLIGHT|SHADERSTAGE_BLEND_ADD;
r_GLSLpasses[0].glState = GLSTATE_DEPTHFUNC_EQ|GLSTATE_SRCBLEND_ONE|GLSTATE_DSTBLEND_ONE;
@ -248,11 +244,11 @@ R_LatLongToNorm
*/
void R_LatLongToNorm( const byte latlong[2], vec3_t out )
{
float sin_a, sin_b, cos_a, cos_b;
float sin_a, sin_b, cos_a, cos_b;
cos_a = r_sintableByte[( latlong[0] + 64 ) & 255];
cos_a = r_sintableByte[(latlong[0] + 64) & 255];
sin_a = r_sintableByte[latlong[0]];
cos_b = r_sintableByte[( latlong[1] + 64 ) & 255];
cos_b = r_sintableByte[(latlong[1] + 64) & 255];
sin_b = r_sintableByte[latlong[1]];
VectorSet( out, cos_b * sin_a, sin_b * sin_a, cos_a );
@ -263,7 +259,7 @@ void R_LatLongToNorm( const byte latlong[2], vec3_t out )
R_TableForFunc
==============
*/
static float *R_TableForFunc( unsigned int func )
static float *R_TableForFunc( uint func )
{
switch( func )
{
@ -277,17 +273,26 @@ static float *R_TableForFunc( unsigned int func )
return r_sawtoothtable;
case WAVEFORM_INVERSESAWTOOTH:
return r_inversesawtoothtable;
case WAVEFORM_NOISE:
return r_sintable; // default to sintable
default:
return NULL;
}
// assume error
Host_Error( "R_TableForFunc: unknown function\n" );
return NULL;
}
static float R_TableEvaluate( waveFunc_t func, float index )
{
float *table = R_TableForFunc( func.type );
if( table == NULL )
{
if( func.type == WAVEFORM_TABLE )
return R_LookupTable( func.tableIndex, index );
return 1.0f; // assume error
}
return FTABLE_EVALUATE( table, index );
}
/*
==============
R_BackendGetNoiseValue
@ -295,11 +300,11 @@ R_BackendGetNoiseValue
*/
float R_BackendGetNoiseValue( float x, float y, float z, float t )
{
int i;
int ix, iy, iz, it;
float fx, fy, fz, ft;
float front[4], back[4];
float fvalue, bvalue, value[2], finalvalue;
int i;
int ix, iy, iz, it;
float fx, fy, fz, ft;
float front[4], back[4];
float fvalue, bvalue, value[2], finalvalue;
ix = ( int )floor( x );
fx = x - ix;
@ -326,7 +331,6 @@ float R_BackendGetNoiseValue( float x, float y, float z, float t )
bvalue = NOISE_LERP( NOISE_LERP( back[0], back[1], fx ), NOISE_LERP( back[2], back[3], fx ), fy );
value[i] = NOISE_LERP( fvalue, bvalue, fz );
}
finalvalue = NOISE_LERP( value[0], value[1], ft );
return finalvalue;
@ -339,7 +343,7 @@ R_BackendResetCounters
*/
void R_BackendResetCounters( void )
{
memset( &r_backacc, 0, sizeof( r_backacc ) );
Mem_Set( &r_backacc, 0, sizeof( r_backacc ));
}
/*
@ -546,7 +550,7 @@ R_CleanUpTextureUnits
*/
static void R_CleanUpTextureUnits( int last )
{
int i;
int i;
for( i = glState.activeTMU; i > last - 1; i-- )
{
@ -568,7 +572,6 @@ void R_DeformVertices( void )
uint i, j, k;
double args[4], temp;
float deflect, *quad[4];
const float *table;
const deform_t *deformv;
vec3_t tv, rot_centre;
@ -579,15 +582,12 @@ void R_DeformVertices( void )
{
case DEFORM_NONE:
break;
case DEFORM_WAVE:
table = R_TableForFunc( deformv->func.type );
// Deflect vertex along its normal by wave amount
if( deformv->func.args[3] == 0 )
{
temp = deformv->func.args[2];
deflect = FTABLE_EVALUATE( table, temp ) * deformv->func.args[1] + deformv->func.args[0];
deflect = R_TableEvaluate( deformv->func, temp ) * deformv->func.args[1] + deformv->func.args[0];
for( j = 0; j < r_backacc.numVerts; j++ )
VectorMA( inVertsArray[j], deflect, inNormalsArray[j], inVertsArray[j] );
@ -602,12 +602,11 @@ void R_DeformVertices( void )
for( j = 0; j < r_backacc.numVerts; j++ )
{
temp = args[2] + args[3] * ( inVertsArray[j][0] + inVertsArray[j][1] + inVertsArray[j][2] );
deflect = FTABLE_EVALUATE( table, temp ) * args[1] + args[0];
deflect = R_TableEvaluate( deformv->func, temp ) * args[1] + args[0];
VectorMA( inVertsArray[j], deflect, inNormalsArray[j], inVertsArray[j] );
}
}
break;
case DEFORM_NORMAL:
// without this * 0.1f deformation looks wrong, although q3a doesn't have it
args[0] = deformv->func.args[3] * r_currentShaderTime * 0.1f;
@ -622,16 +621,13 @@ void R_DeformVertices( void )
VectorNormalizeFast( inNormalsArray[j] );
}
break;
case DEFORM_MOVE:
table = R_TableForFunc( deformv->func.type );
temp = deformv->func.args[2] + r_currentShaderTime * deformv->func.args[3];
deflect = FTABLE_EVALUATE( table, temp ) * deformv->func.args[1] + deformv->func.args[0];
deflect = R_TableEvaluate( deformv->func, temp ) * deformv->func.args[1] + deformv->func.args[0];
for( j = 0; j < r_backacc.numVerts; j++ )
VectorMA( inVertsArray[j], deflect, deformv->args, inVertsArray[j] );
break;
case DEFORM_BULGE:
args[0] = deformv->args[0];
args[1] = deformv->args[1];
@ -644,7 +640,6 @@ void R_DeformVertices( void )
VectorMA( inVertsArray[j], deflect, inNormalsArray[j], inVertsArray[j] );
}
break;
case DEFORM_AUTOSPRITE:
{
vec4_t *v;
@ -709,7 +704,6 @@ void R_DeformVertices( void )
}
}
break;
case DEFORM_AUTOSPRITE2:
if( r_backacc.numElems % 6 )
break;
@ -842,11 +836,9 @@ void R_DeformVertices( void )
}
}
break;
case DEFORM_PROJECTION_SHADOW:
R_DeformVPlanarShadow( r_backacc.numVerts, inVertsArray[0] );
break;
case DEFORM_AUTOPARTICLE:
{
float scale;
@ -972,7 +964,6 @@ static bool R_VertexTCBase( const ref_stage_t *pass, int unit, mat4x4_t matrix )
pglTexCoordPointer( 2, GL_FLOAT, 0, tr.tcoordBuffer[unit]->pointer );
return true;
}
case TCGEN_VECTOR:
{
GLfloat genVector[2][4];
@ -1032,7 +1023,6 @@ static bool R_VertexTCBase( const ref_stage_t *pass, int unit, mat4x4_t matrix )
pglTexGenfv( GL_Q, GL_OBJECT_PLANE, genVector[3] );
return false;
}
case TCGEN_REFLECTION_CELLSHADE:
if( RI.currententity && !( RI.params & RP_SHADOWMAPVIEW ) )
{
@ -1056,7 +1046,6 @@ static bool R_VertexTCBase( const ref_stage_t *pass, int unit, mat4x4_t matrix )
GL_EnableTexGen( GL_R, GL_REFLECTION_MAP_ARB );
GL_EnableTexGen( GL_Q, 0 );
return true;
case TCGEN_FOG:
{
int fogPtype;
@ -1135,7 +1124,6 @@ static bool R_VertexTCBase( const ref_stage_t *pass, int unit, mat4x4_t matrix )
pglTexCoordPointer( 2, GL_FLOAT, 0, tr.tcoordBuffer[unit]->pointer );
return false;
}
case TCGEN_SVECTORS:
GL_DisableAllTexGens();
R_UpdateVertexBuffer( tr.tcoordBuffer[unit], sVectorsArray, r_backacc.numVerts * sizeof( vec4_t ));
@ -1159,10 +1147,10 @@ R_ApplyTCMods
static void R_ApplyTCMods( const ref_stage_t *pass, mat4x4_t result )
{
int i;
const float *table;
double t1, t2, sint, cost;
mat4x4_t m1, m2;
const tcMod_t *tcmod;
waveFunc_t func;
for( i = 0, tcmod = pass->tcMods; i < pass->numtcMods; i++, tcmod++ )
{
@ -1181,14 +1169,15 @@ static void R_ApplyTCMods( const ref_stage_t *pass, mat4x4_t result )
Matrix4_Scale2D( result, tcmod->args[0], tcmod->args[1] );
break;
case TCMOD_TURB:
t1 = ( 1.0 / 4.0 );
t1 = ( 1.0f / 4.0f );
t2 = tcmod->args[2] + r_currentShaderTime * tcmod->args[3];
Matrix4_Scale2D( result, 1 + ( tcmod->args[1] * R_FastSin( t2 ) + tcmod->args[0] ) * t1, 1 + ( tcmod->args[1] * R_FastSin( t2 + 0.25 ) + tcmod->args[0] ) * t1 );
break;
case TCMOD_STRETCH:
table = R_TableForFunc( tcmod->args[0] );
func.type = (uint)tcmod->args[0];
func.tableIndex = (uint)tcmod->args[5];
t2 = tcmod->args[3] + r_currentShaderTime * tcmod->args[4];
t1 = FTABLE_EVALUATE( table, t2 ) * tcmod->args[2] + tcmod->args[1];
t1 = R_TableEvaluate( func, t2 ) * tcmod->args[2] + tcmod->args[1];
t1 = t1 ? 1.0f / t1 : 1.0f;
t2 = 0.5f - 0.5f * t1;
Matrix4_Stretch2D( result, t1, t2 );
@ -1197,7 +1186,8 @@ static void R_ApplyTCMods( const ref_stage_t *pass, mat4x4_t result )
t1 = tcmod->args[0] * r_currentShaderTime;
t2 = tcmod->args[1] * r_currentShaderTime;
if( pass->program_type != PROGRAM_TYPE_DISTORTION )
{ // HACK HACK HACK
{
// HACKHACK
t1 = t1 - floor( t1 );
t2 = t2 - floor( t2 );
}
@ -1231,6 +1221,196 @@ static _inline texture_t *R_ShaderpassTex( const ref_stage_t *pass, int unit )
return ( pass->textures[0] ? pass->textures[0] : tr.defaultTexture );
}
/*
=================
RB_SetShaderRenderMode
UNDONE: not all cases are filled
=================
*/
static void R_ShaderpassRenderMode( ref_stage_t *pass )
{
int mod_type = mod_bad; // mod_bad interpretate as orthogonal shader
if(!(pass->flags & SHADERSTAGE_RENDERMODE))
return;
if( RI.currentmodel && !glState.in2DMode )
mod_type = RI.currentmodel->type;
switch( tr.iRenderMode )
{
case kRenderNormal:
switch( mod_type )
{
case mod_bad:
pass->rgbGen.type = RGBGEN_IDENTITY;
pass->alphaGen.type = ALPHAGEN_IDENTITY;
break;
case mod_world:
case mod_brush:
// bsp surfaces uses lightmaps and ignore color values as well
pass->glState &= ~(GLSTATE_BLENDFUNC|GLSTATE_ALPHAFUNC);
pass->glState |= GLSTATE_DEPTHWRITE;
pass->rgbGen.type = RGBGEN_IDENTITY_LIGHTING;
pass->alphaGen.type = ALPHAGEN_IDENTITY;
break;
case mod_studio:
// UNDONE: wrote R_StudioLighting, change rgbGen to RGBGEN_VERTEX
// UNDONE: setup custom alpha channel for NF_ADDITIVE, change alphaGen to ALPHAGEN_VERTEX
pass->glState &= ~(GLSTATE_BLENDFUNC|GLSTATE_ALPHAFUNC);
pass->rgbGen.type = RGBGEN_LIGHTING_AMBIENT_ONLY;
pass->alphaGen.type = ALPHAGEN_IDENTITY;
break;
case mod_sprite:
pass->glState &= ~(GLSTATE_BLENDFUNC|GLSTATE_ALPHAFUNC);
pass->rgbGen.type = RGBGEN_LIGHTING_AMBIENT_ONLY;
pass->alphaGen.type = ALPHAGEN_IDENTITY;
break;
}
break;
case kRenderTransColor:
switch( mod_type )
{
case mod_bad:
pass->glState &= ~GLSTATE_ALPHAFUNC;
pass->glState |= (GLSTATE_SRCBLEND_ZERO|GLSTATE_DSTBLEND_SRC_COLOR);
pass->rgbGen.type = RGBGEN_VERTEX;
pass->alphaGen.type = ALPHAGEN_VERTEX;
break;
case mod_world:
pass->glState &= ~(GLSTATE_BLENDFUNC|GLSTATE_ALPHAFUNC);
pass->glState |= GLSTATE_DEPTHWRITE;
pass->rgbGen.type = RGBGEN_IDENTITY_LIGHTING;
pass->alphaGen.type = ALPHAGEN_IDENTITY;
break;
case mod_brush:
case mod_studio:
case mod_sprite:
break;
}
break;
case kRenderTransTexture:
switch( mod_type )
{
case mod_bad:
pass->glState &= ~GLSTATE_ALPHAFUNC;
pass->glState |= (GLSTATE_SRCBLEND_SRC_ALPHA|GLSTATE_DSTBLEND_ONE_MINUS_SRC_ALPHA);
pass->rgbGen.type = RGBGEN_VERTEX;
pass->alphaGen.type = ALPHAGEN_VERTEX;
break;
case mod_world:
pass->glState &= ~(GLSTATE_BLENDFUNC|GLSTATE_ALPHAFUNC);
pass->glState |= GLSTATE_DEPTHWRITE;
pass->rgbGen.type = RGBGEN_IDENTITY_LIGHTING;
pass->alphaGen.type = ALPHAGEN_IDENTITY;
break;
case mod_brush:
pass->glState &= ~(GLSTATE_DEPTHWRITE|GLSTATE_ALPHAFUNC);
pass->glState |= (GLSTATE_SRCBLEND_SRC_ALPHA|GLSTATE_DSTBLEND_ONE_MINUS_SRC_ALPHA);
pass->rgbGen.type = RGBGEN_IDENTITY_LIGHTING;
pass->alphaGen.type = ALPHAGEN_ENTITY;
break;
case mod_studio:
case mod_sprite:
break;
}
break;
case kRenderGlow:
switch( mod_type )
{
case mod_bad:
pass->glState &= ~GLSTATE_ALPHAFUNC;
pass->glState |= (GLSTATE_SRCBLEND_SRC_ALPHA|GLSTATE_DSTBLEND_ONE);
pass->rgbGen.type = RGBGEN_VERTEX;
pass->alphaGen.type = ALPHAGEN_VERTEX;
break;
case mod_world:
case mod_brush:
// completely ignore glow mode for world surfaces
pass->glState &= ~(GLSTATE_BLENDFUNC|GLSTATE_ALPHAFUNC);
pass->glState |= GLSTATE_DEPTHWRITE;
pass->rgbGen.type = RGBGEN_IDENTITY_LIGHTING;
pass->alphaGen.type = ALPHAGEN_IDENTITY;
break;
case mod_studio:
case mod_sprite:
pass->glState &= ~(GLSTATE_ALPHAFUNC|GLSTATE_DEPTHWRITE|GLSTATE_DEPTHFUNC_EQ);
pass->glState |= (GLSTATE_SRCBLEND_ONE_MINUS_SRC_ALPHA|GLSTATE_DSTBLEND_ONE);
pass->rgbGen.type = RGBGEN_IDENTITY; // hl1 glow sprites ignores color
pass->alphaGen.type = ALPHAGEN_ENTITY;
break;
}
break;
case kRenderTransAlpha:
switch( mod_type )
{
case mod_bad:
pass->glState &= ~GLSTATE_BLENDFUNC;
pass->glState |= GLSTATE_AFUNC_GE128;
pass->rgbGen.type = RGBGEN_VERTEX;
pass->alphaGen.type = ALPHAGEN_VERTEX;
break;
case mod_world:
// always ignore transparent surfaces for world
pass->glState &= ~(GLSTATE_BLENDFUNC|GLSTATE_ALPHAFUNC);
pass->glState |= GLSTATE_DEPTHWRITE;
pass->rgbGen.type = RGBGEN_IDENTITY_LIGHTING;
pass->alphaGen.type = ALPHAGEN_IDENTITY;
break;
case mod_brush:
pass->glState &= ~GLSTATE_BLENDFUNC;
pass->glState |= GLSTATE_AFUNC_GE128;
pass->rgbGen.type = RGBGEN_IDENTITY;
pass->alphaGen.type = ALPHAGEN_IDENTITY;
case mod_studio:
// UNDONE: wrote R_StudioLighting, change rgbGen to RGBGEN_VERTEX
// UNDONE: setup custom alpha channel for NF_ADDITIVE, change alphaGen to ALPHAGEN_VERTEX
pass->glState &= ~GLSTATE_BLENDFUNC;
pass->glState |= GLSTATE_AFUNC_GE128;
pass->rgbGen.type = RGBGEN_LIGHTING_AMBIENT_ONLY;
pass->alphaGen.type = ALPHAGEN_ENTITY;
case mod_sprite:
pass->glState &= ~GLSTATE_BLENDFUNC;
pass->glState |= GLSTATE_AFUNC_GE128;
pass->rgbGen.type = RGBGEN_LIGHTING_AMBIENT_ONLY;
pass->alphaGen.type = ALPHAGEN_ENTITY;
break;
}
break;
case kRenderTransAdd:
switch( mod_type )
{
case mod_bad:
pass->glState &= ~GLSTATE_ALPHAFUNC;
pass->glState |= (GLSTATE_SRCBLEND_SRC_ALPHA|GLSTATE_DSTBLEND_ONE);
pass->rgbGen.type = RGBGEN_VERTEX;
pass->alphaGen.type = ALPHAGEN_VERTEX;
break;
case mod_world:
pass->glState &= ~(GLSTATE_BLENDFUNC|GLSTATE_ALPHAFUNC);
pass->glState |= GLSTATE_DEPTHWRITE;
pass->rgbGen.type = RGBGEN_IDENTITY_LIGHTING;
pass->alphaGen.type = ALPHAGEN_IDENTITY;
break;
case mod_brush:
pass->glState &= ~(GLSTATE_ALPHAFUNC|GLSTATE_DEPTHWRITE);
pass->glState |= (GLSTATE_SRCBLEND_SRC_ALPHA|GLSTATE_DSTBLEND_ONE);
pass->rgbGen.type = RGBGEN_IDENTITY_LIGHTING;
pass->alphaGen.type = ALPHAGEN_ENTITY;
break;
case mod_studio:
case mod_sprite:
pass->glState &= ~(GLSTATE_ALPHAFUNC|GLSTATE_DEPTHWRITE);
pass->glState |= (GLSTATE_SRCBLEND_SRC_ALPHA|GLSTATE_DSTBLEND_ONE);
pass->rgbGen.type = RGBGEN_IDENTITY_LIGHTING;
pass->alphaGen.type = ALPHAGEN_ENTITY;
break;
}
break;
}
}
/*
================
R_BindShaderpass
@ -1238,15 +1418,14 @@ R_BindShaderpass
*/
static void R_BindShaderpass( const ref_stage_t *pass, texture_t *tex, int unit )
{
mat4x4_t m1, m2, result;
bool identityMatrix;
mat4x4_t m1, m2, result;
bool identityMatrix;
if( !tex )
tex = R_ShaderpassTex( pass, unit );
if( !tex ) tex = R_ShaderpassTex( pass, unit );
GL_Bind( unit, tex );
if( unit && !pass->program ) pglEnable( GL_TEXTURE_2D );
GL_SetTexCoordArrayMode( ( tex->flags & TF_CUBEMAP ? GL_TEXTURE_CUBE_MAP_ARB : GL_TEXTURE_COORD_ARRAY ));
GL_SetTexCoordArrayMode(( tex->flags & TF_CUBEMAP ? GL_TEXTURE_CUBE_MAP_ARB : GL_TEXTURE_COORD_ARRAY ));
identityMatrix = R_VertexTCBase( pass, unit, result );
@ -1267,8 +1446,7 @@ static void R_BindShaderpass( const ref_stage_t *pass, texture_t *tex, int unit
if( identityMatrix )
GL_LoadIdentityTexMatrix();
else
GL_LoadTexMatrix( result );
else GL_LoadTexMatrix( result );
}
/*
@ -1279,9 +1457,9 @@ R_ModifyColor
void R_ModifyColor( const ref_stage_t *pass )
{
uint i;
float a;
int c, bits;
double temp;
float *table, a;
vec3_t t, v, style;
byte *bArray, *inArray, rgba[4] = { 255, 255, 255, 255 };
bool noArray, identityAlpha, entityAlpha;
@ -1297,18 +1475,18 @@ void R_ModifyColor( const ref_stage_t *pass )
if( pass->rgbGen.type == RGBGEN_IDENTITY_LIGHTING )
{
entityAlpha = identityAlpha = false;
memset( bArray, r_identityLighting, sizeof( rgba_t ) * r_backacc.numColors );
Mem_Set( bArray, r_identityLighting, sizeof( rgba_t ) * r_backacc.numColors );
}
else if( pass->rgbGen.type == RGBGEN_EXACT_VERTEX )
{
entityAlpha = identityAlpha = false;
memcpy( bArray, inArray, sizeof( rgba_t ) * r_backacc.numColors );
Mem_Copy( bArray, inArray, sizeof( rgba_t ) * r_backacc.numColors );
}
else
{
entityAlpha = false;
identityAlpha = true;
memset( bArray, 255, sizeof( rgba_t ) * r_backacc.numColors );
Mem_Set( bArray, 255, sizeof( rgba_t ) * r_backacc.numColors );
switch( pass->rgbGen.type )
{
@ -1330,9 +1508,8 @@ void R_ModifyColor( const ref_stage_t *pass )
}
else
{
table = R_TableForFunc( rgbgenfunc->type );
temp = r_currentShaderTime * rgbgenfunc->args[3] + rgbgenfunc->args[2];
temp = FTABLE_EVALUATE( table, temp ) * rgbgenfunc->args[1] + rgbgenfunc->args[0];
temp = R_TableEvaluate( *rgbgenfunc, temp ) * rgbgenfunc->args[1] + rgbgenfunc->args[0];
}
temp = temp * rgbgenfunc->args[1] + rgbgenfunc->args[0];
@ -1389,7 +1566,7 @@ void R_ModifyColor( const ref_stage_t *pass )
float *tc;
vec3_t temp[MAX_ARRAY_VERTS];
memset( temp, 0, sizeof( vec3_t ) * r_backacc.numColors );
Mem_Set( temp, 0, sizeof( vec3_t ) * r_backacc.numColors );
for( j = 0; j < LM_STYLES && r_superLightStyle->vertexStyles[j] != 255; j++ )
{
@ -1504,9 +1681,8 @@ void R_ModifyColor( const ref_stage_t *pass )
}
else
{
table = R_TableForFunc( alphagenfunc->type );
a = alphagenfunc->args[2] + r_currentShaderTime * alphagenfunc->args[3];
a = FTABLE_EVALUATE( table, a );
a = R_TableEvaluate( *alphagenfunc, a );
}
a = a * alphagenfunc->args[1] + alphagenfunc->args[0];
@ -1734,6 +1910,7 @@ void R_RenderMeshGeneric( void )
{
const ref_stage_t *pass = r_accumPasses[0];
R_ShaderpassRenderMode( (ref_stage_t *)pass );
R_BindShaderpass( pass, NULL, 0 );
R_ModifyColor( pass );

View File

@ -80,6 +80,7 @@ typedef struct
{
// renderer global variables
int registration_sequence;
kRenderMode_t iRenderMode;
// vbo stuff
int numVertexBufferObjects;

File diff suppressed because it is too large Load Diff

View File

@ -56,6 +56,7 @@ void R_DrawStretchPic( float x, float y, float w, float h, float s1, float t1, f
}
}
tr.iRenderMode = glState.draw_rendermode;
pic_mbuffer.infokey -= 4;
pic_mbuffer.shaderkey = shader->sortkey;

View File

@ -759,6 +759,7 @@ enum
// #define SHADERPASS_DSTBLEND_MASK (((GLSTATE_DSTBLEND_DST_ALPHA)<<1)-GLSTATE_DSTBLEND_ZERO)
#define GLSTATE_DSTBLEND_MASK 0xF0
#define GLSTATE_BLENDFUNC ( GLSTATE_SRCBLEND_MASK|GLSTATE_DSTBLEND_MASK )
#define GLSTATE_ALPHAFUNC ( GLSTATE_AFUNC_GT0|GLSTATE_AFUNC_LT128|GLSTATE_AFUNC_GE128 )
typedef struct

View File

@ -92,8 +92,8 @@ static void R_LoadTable( const char *name, tableFlags_t flags, size_t size, floa
Host_Error( "R_LoadTable: MAX_TABLES limit exceeds\n" );
// fill it in
r_tables[r_numTables++] = table = Mem_Alloc( r_shaderpool, sizeof( table_t ));
com.strncpy( table->name, name, sizeof( table->name ));
table = r_tables[r_numTables++] = Mem_Alloc( r_shaderpool, sizeof( table_t ));
table->name = Shader_CopyString( name );
table->index = r_numTables - 1;
table->flags = flags;
table->size = size;
@ -274,7 +274,7 @@ static bool R_ParseTable( script_t *script, tableFlags_t flags )
R_LookupTable
=================
*/
static float R_LookupTable( int tableIndex, float index )
float R_LookupTable( int tableIndex, float index )
{
table_t *table;
float frac, value;
@ -308,6 +308,27 @@ static float R_LookupTable( int tableIndex, float index )
return value;
}
/*
=================
R_GetTableByHandle
=================
*/
float *R_GetTableByHandle( int tableIndex )
{
table_t *table;
if( tableIndex < 0 || tableIndex >= r_numTables )
{
MsgDev( D_ERROR, "R_GetTableByHandle: out of range\n" );
return NULL;
}
table = r_tables[tableIndex];
if( !table ) return NULL;
return table->values;
}
/*
=======================================================================
@ -637,10 +658,13 @@ static bool Shader_ParseSkySides( script_t *script, ref_shader_t *shader, ref_sh
static bool Shader_ParseFunc( script_t *script, waveFunc_t *func, ref_shader_t *shader )
{
token_t tok;
table_t *tb;
if( !Com_ReadToken( script, false, &tok ))
return false;
func->tableIndex = -1;
if( !com.stricmp( tok.string, "0" )) func->type = WAVEFORM_SIN;
else if( !com.stricmp( tok.string, "sin" )) func->type = WAVEFORM_SIN;
else if( !com.stricmp( tok.string, "triangle" )) func->type = WAVEFORM_TRIANGLE;
@ -649,9 +673,18 @@ static bool Shader_ParseFunc( script_t *script, waveFunc_t *func, ref_shader_t *
else if( !com.stricmp( tok.string, "inverseSawtooth" )) func->type = WAVEFORM_INVERSESAWTOOTH;
else if( !com.stricmp( tok.string, "noise" )) func->type = WAVEFORM_NOISE;
else
{
MsgDev( D_WARN, "unknown waveform '%s' in shader '%s', defaulting to sin\n", tok.string, shader->name );
func->type = WAVEFORM_SIN;
{ // check for custom table
tb = R_FindTable( tok.string );
if( tb )
{
func->type = WAVEFORM_TABLE;
func->tableIndex = tb->index;
}
else
{
MsgDev( D_WARN, "unknown waveform '%s' in shader '%s', defaulting to sin\n", tok.string, shader->name );
func->type = WAVEFORM_SIN;
}
}
if( !Shader_ParseVector( script, func->args, 4 ))
@ -2065,6 +2098,7 @@ static bool Shaderpass_TcMod( ref_shader_t *shader, ref_stage_t *pass, script_t
}
tcMod->args[0] = func.type;
tcMod->args[5] = func.tableIndex;
for( i = 1; i < 5; i++ )
tcMod->args[i] = func.args[i-1];
tcMod->type = TCMOD_STRETCH;
@ -2352,7 +2386,10 @@ void R_ShaderList_f( void )
Msg( "?? %i", shader->type );
break;
}
Msg( " %s\n", shader->name );
Msg( " %s", shader->name );
if( shader->flags & SHADER_DEFAULTED )
Msg( " DEFAULTED\n" );
else Msg( "\n" );
shaderCount++;
}
@ -3504,6 +3541,7 @@ static ref_shader_t *Shader_CreateDefault( ref_shader_t *shader, int type, int a
// calculate sortkey
shader->sortkey = Shader_Sortkey( shader, shader->sort );
shader->flags |= SHADER_DEFAULTED;
// add to hash table
hashKey = Com_HashKey( shortname, SHADERS_HASH_SIZE );

View File

@ -70,6 +70,7 @@ typedef enum
SHADER_PORTAL_CAPTURE1 = BIT(15),
SHADER_PORTAL_CAPTURE2 = BIT(16),
SHADER_RENDERMODE = BIT(17),
SHADER_DEFAULTED = BIT(18),
SHADER_PORTAL_CAPTURE = (SHADER_PORTAL_CAPTURE1|SHADER_PORTAL_CAPTURE1),
SHADER_CULL = (SHADER_CULL_FRONT|SHADER_CULL_BACK)
} shaderFlags_t;
@ -121,7 +122,8 @@ typedef enum
WAVEFORM_SAWTOOTH,
WAVEFORM_INVERSESAWTOOTH,
WAVEFORM_NOISE,
WAVEFORM_CONSTANT
WAVEFORM_CONSTANT,
WAVEFORM_TABLE // custom table
} waveForm_t;
// RGB colors generation
@ -237,6 +239,7 @@ typedef struct table_s
typedef struct
{
waveForm_t type; // SHADER_FUNC enum
uint tableIndex; // valid only for WAVEFORM_TABLE
float args[4]; // offset, amplitude, phase_offset, rate
} waveFunc_t;
@ -333,6 +336,8 @@ ref_shader_t *R_LoadShader( const char *name, int type, bool forceDefault, int a
// misc utilities
void R_ShaderFreeUnused( void );
float R_LookupTable( int tableIndex, float index );
float *R_GetTableByHandle( int tableIndex );
void Shader_TouchImages( ref_shader_t *shader, bool free_unused );
void R_ShaderSetSpriteTexture( texture_t *mipTex );
void R_ShaderSetRenderMode( kRenderMode_t mode );

File diff suppressed because it is too large Load Diff

View File

@ -6,13 +6,13 @@
--------------------Configuration: render - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPD5.tmp" with contents
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP47C.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
"D:\Xash3D\src_main\render\r_image.c"
"D:\Xash3D\src_main\render\r_backend.c"
]
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPD5.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPD6.tmp" with contents
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP47C.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP47D.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"
@ -38,16 +38,17 @@ msvcrtd.lib user32.lib gdi32.lib /nologo /subsystem:windows /dll /incremental:ye
"\Xash3D\src_main\temp\render\!debug\r_sky.obj"
"\Xash3D\src_main\temp\render\!debug\r_surf.obj"
]
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPD6.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPD7.bat" with contents
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP47D.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP47E.bat" with contents
[
@echo off
copy \Xash3D\src_main\temp\render\!debug\render.dll "D:\Xash3D\bin\render.dll"
]
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPD7.bat"
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP47E.bat"
Compiling...
r_image.c
r_backend.c
Linking...
Creating library ..\temp\render\!debug/render.lib and object ..\temp\render\!debug/render.exp
<h3>Output Window</h3>
Performing Custom Build Step on \Xash3D\src_main\temp\render\!debug\render.dll
‘ª®¯¨à®¢ ­® ä ©«®¢: 1.

53
render/warpsin.h Normal file
View File

@ -0,0 +1,53 @@
/*
Copyright (C) 1997-2001 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
0.000000, 0.098165, 0.196270, 0.294259, 0.392069, 0.489643, 0.586920, 0.683850,
0.780360, 0.876405, 0.971920, 1.066850, 1.161140, 1.254725, 1.347560, 1.439580,
1.530735, 1.620965, 1.710220, 1.798445, 1.885585, 1.971595, 2.056410, 2.139990,
2.222280, 2.303235, 2.382795, 2.460925, 2.537575, 2.612690, 2.686235, 2.758160,
2.828425, 2.896990, 2.963805, 3.028835, 3.092040, 3.153385, 3.212830, 3.270340,
3.325880, 3.379415, 3.430915, 3.480350, 3.527685, 3.572895, 3.615955, 3.656840,
3.695520, 3.731970, 3.766175, 3.798115, 3.827760, 3.855105, 3.880125, 3.902810,
3.923140, 3.941110, 3.956705, 3.969920, 3.980740, 3.989160, 3.995180, 3.998795,
4.000000, 3.998795, 3.995180, 3.989160, 3.980740, 3.969920, 3.956705, 3.941110,
3.923140, 3.902810, 3.880125, 3.855105, 3.827760, 3.798115, 3.766175, 3.731970,
3.695520, 3.656840, 3.615955, 3.572895, 3.527685, 3.480350, 3.430915, 3.379415,
3.325880, 3.270340, 3.212830, 3.153385, 3.092040, 3.028835, 2.963805, 2.896990,
2.828425, 2.758160, 2.686235, 2.612690, 2.537575, 2.460925, 2.382795, 2.303235,
2.222280, 2.139990, 2.056410, 1.971595, 1.885585, 1.798445, 1.710220, 1.620965,
1.530735, 1.439580, 1.347560, 1.254725, 1.161140, 1.066850, 0.971920, 0.876405,
0.780360, 0.683850, 0.586920, 0.489643, 0.392069, 0.294259, 0.196270, 0.098165,
0.000000, -0.098165, -0.196270, -0.294259, -0.392069, -0.489643, -0.586920, -0.683850,
-0.780360, -0.876405, -0.971920, -1.066850, -1.161140, -1.254725, -1.347560, -1.439580,
-1.530735, -1.620965, -1.710220, -1.798445, -1.885585, -1.971595, -2.056410, -2.139990,
-2.222280, -2.303235, -2.382795, -2.460925, -2.537575, -2.612690, -2.686235, -2.758160,
-2.828425, -2.896990, -2.963805, -3.028835, -3.092040, -3.153385, -3.212830, -3.270340,
-3.325880, -3.379415, -3.430915, -3.480350, -3.527685, -3.572895, -3.615955, -3.656840,
-3.695520, -3.731970, -3.766175, -3.798115, -3.827760, -3.855105, -3.880125, -3.902810,
-3.923140, -3.941110, -3.956705, -3.969920, -3.980740, -3.989160, -3.995180, -3.998795,
-4.000000, -3.998795, -3.995180, -3.989160, -3.980740, -3.969920, -3.956705, -3.941110,
-3.923140, -3.902810, -3.880125, -3.855105, -3.827760, -3.798115, -3.766175, -3.731970,
-3.695520, -3.656840, -3.615955, -3.572895, -3.527685, -3.480350, -3.430915, -3.379415,
-3.325880, -3.270340, -3.212830, -3.153385, -3.092040, -3.028835, -2.963805, -2.896990,
-2.828425, -2.758160, -2.686235, -2.612690, -2.537575, -2.460925, -2.382795, -2.303235,
-2.222280, -2.139990, -2.056410, -1.971595, -1.885585, -1.798445, -1.710220, -1.620965,
-1.530735, -1.439580, -1.347560, -1.254725, -1.161140, -1.066850, -0.971920, -0.876405,
-0.780360, -0.683850, -0.586920, -0.489643, -0.392069, -0.294259, -0.196270, -0.098165,

View File

@ -1,100 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: server - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPBB.tmp" with contents
[
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "./" /I "ents" /I "game" /I "global" /I "monsters" /I "../common" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\server\!debug/" /Fo"..\temp\server\!debug/" /Fd"..\temp\server\!debug/" /FD /c
"D:\Xash3D\src_main\server\global\client.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPBB.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPBC.tmp" with contents
[
msvcrtd.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\temp\server\!debug/server.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /def:".\server.def" /out:"..\temp\server\!debug/server.dll" /implib:"..\temp\server\!debug/server.lib" /pdbtype:sept
"\Xash3D\src_main\temp\server\!debug\ai_sound.obj"
"\Xash3D\src_main\temp\server\!debug\animating.obj"
"\Xash3D\src_main\temp\server\!debug\animation.obj"
"\Xash3D\src_main\temp\server\!debug\apache.obj"
"\Xash3D\src_main\temp\server\!debug\barnacle.obj"
"\Xash3D\src_main\temp\server\!debug\barney.obj"
"\Xash3D\src_main\temp\server\!debug\basebrush.obj"
"\Xash3D\src_main\temp\server\!debug\baseentity.obj"
"\Xash3D\src_main\temp\server\!debug\basefunc.obj"
"\Xash3D\src_main\temp\server\!debug\basefx.obj"
"\Xash3D\src_main\temp\server\!debug\baseinfo.obj"
"\Xash3D\src_main\temp\server\!debug\baseitem.obj"
"\Xash3D\src_main\temp\server\!debug\baselogic.obj"
"\Xash3D\src_main\temp\server\!debug\basemonster.obj"
"\Xash3D\src_main\temp\server\!debug\basemover.obj"
"\Xash3D\src_main\temp\server\!debug\baseother.obj"
"\Xash3D\src_main\temp\server\!debug\basepath.obj"
"\Xash3D\src_main\temp\server\!debug\basephys.obj"
"\Xash3D\src_main\temp\server\!debug\baserockets.obj"
"\Xash3D\src_main\temp\server\!debug\basetank.obj"
"\Xash3D\src_main\temp\server\!debug\basetrigger.obj"
"\Xash3D\src_main\temp\server\!debug\baseutil.obj"
"\Xash3D\src_main\temp\server\!debug\baseweapon.obj"
"\Xash3D\src_main\temp\server\!debug\baseworld.obj"
"\Xash3D\src_main\temp\server\!debug\client.obj"
"\Xash3D\src_main\temp\server\!debug\combat.obj"
"\Xash3D\src_main\temp\server\!debug\decals.obj"
"\Xash3D\src_main\temp\server\!debug\defaultai.obj"
"\Xash3D\src_main\temp\server\!debug\dll_int.obj"
"\Xash3D\src_main\temp\server\!debug\flyingmonster.obj"
"\Xash3D\src_main\temp\server\!debug\game.obj"
"\Xash3D\src_main\temp\server\!debug\gamerules.obj"
"\Xash3D\src_main\temp\server\!debug\generic.obj"
"\Xash3D\src_main\temp\server\!debug\globals.obj"
"\Xash3D\src_main\temp\server\!debug\gman.obj"
"\Xash3D\src_main\temp\server\!debug\hassassin.obj"
"\Xash3D\src_main\temp\server\!debug\headcrab.obj"
"\Xash3D\src_main\temp\server\!debug\hgrunt.obj"
"\Xash3D\src_main\temp\server\!debug\leech.obj"
"\Xash3D\src_main\temp\server\!debug\legacy.obj"
"\Xash3D\src_main\temp\server\!debug\lights.obj"
"\Xash3D\src_main\temp\server\!debug\multiplay_gamerules.obj"
"\Xash3D\src_main\temp\server\!debug\nodes.obj"
"\Xash3D\src_main\temp\server\!debug\osprey.obj"
"\Xash3D\src_main\temp\server\!debug\parent.obj"
"\Xash3D\src_main\temp\server\!debug\player.obj"
"\Xash3D\src_main\temp\server\!debug\rat.obj"
"\Xash3D\src_main\temp\server\!debug\roach.obj"
"\Xash3D\src_main\temp\server\!debug\saverestore.obj"
"\Xash3D\src_main\temp\server\!debug\scientist.obj"
"\Xash3D\src_main\temp\server\!debug\scripted.obj"
"\Xash3D\src_main\temp\server\!debug\sfx.obj"
"\Xash3D\src_main\temp\server\!debug\singleplay_gamerules.obj"
"\Xash3D\src_main\temp\server\!debug\sound.obj"
"\Xash3D\src_main\temp\server\!debug\squadmonster.obj"
"\Xash3D\src_main\temp\server\!debug\talkmonster.obj"
"\Xash3D\src_main\temp\server\!debug\teamplay_gamerules.obj"
"\Xash3D\src_main\temp\server\!debug\turret.obj"
"\Xash3D\src_main\temp\server\!debug\utils.obj"
"\Xash3D\src_main\temp\server\!debug\weapon_generic.obj"
"\Xash3D\src_main\temp\server\!debug\zombie.obj"
]
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPBC.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPBD.bat" with contents
[
@echo off
copy \Xash3D\src_main\temp\server\!debug\server.dll "D:\Xash3D\bin\server.dll"
]
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSPBD.bat"
Compiling...
client.cpp
Linking...
<h3>Output Window</h3>
Performing Custom Build Step on \Xash3D\src_main\temp\server\!debug\server.dll
‘ª®¯¨à®¢ ­® ä ©«®¢: 1.
<h3>Results</h3>
server.dll - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

View File

@ -111,9 +111,10 @@ Beta 13.12.08
80. implement $rgb, $alpha OK
89. get rid of R_Upload32 OK
90. get rid of Com_ParseExt OK
91. Xash backend extensions
91. implement rendermodes
92. implement VBO OK
93. implement sky rotate
94. make default sky shader, R_SetupSky
95. support for custom tables (external)
96. implement sprite format
95. support for custom tables (external) OK
96. implement sprite format
97. fix fog color on q3tourney5