Doom 3 engine release and game code
Moderator: InsideQC Admins
Re: Doom 3 engine release and game code
it should offer some better optimization but benching it here allready hits the hardcoded 60 fps limit on my gfx card so i cant tell.
if someone has an older gfx card i would be interrested to hear results as well.
if someone has an older gfx card i would be interrested to hear results as well.
Productivity is a state of mind.
-

revelator - Posts: 2567
- Joined: Thu Jan 24, 2008 12:04 pm
- Location: inside tha debugger
Re: Doom 3 engine release and game code
latest changes previous code had some wrong assumptions it would seem.
i moved the test for two sided stencil to the function where its used so it does not play havoc with the GL2 seperate stencil path and reenabled depth clamp for all paths.
so the function just below the above code now looks like this.
- Code: Select all
// preload the shadows
if ( !external ) {
// glStencilOpSeparate if your card supports OpenGL2
if (glConfig.twoSidedStencilAvailable && r_useTwoSidedStencil.GetBool() && glConfig.glVersion >= 2.0) {
qglStencilOpSeparate( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK, GL_KEEP, tr.stencilDecr, tr.stencilDecr );
qglStencilOpSeparate( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT, GL_KEEP, tr.stencilIncr, tr.stencilIncr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else if (glConfig.twoSidedStencilAvailable && r_useTwoSidedStencil.GetBool()) {
// else fall back to old pre OpenGL2 twosided stencil.
qglEnable( GL_STENCIL_TEST_TWO_SIDE_EXT );
qglActiveStencilFaceEXT( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK );
qglStencilOp( GL_KEEP, tr.stencilDecr, tr.stencilDecr );
qglActiveStencilFaceEXT( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT );
qglStencilOp( GL_KEEP, tr.stencilIncr, tr.stencilIncr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else if (glConfig.atiTwoSidedStencilAvailable && r_useTwoSidedStencil.GetBool()) {
// if you got a newer ATI card use the ATI version of the OpenGL2 functions.
qglStencilOpSeparateATI( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK, GL_KEEP, tr.stencilDecr, tr.stencilDecr );
qglStencilOpSeparateATI( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT, GL_KEEP, tr.stencilIncr, tr.stencilIncr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else {
// if you got here your card is ancient good luck.
qglStencilOp( GL_KEEP, tr.stencilDecr, tr.stencilDecr );
GL_Cull( CT_FRONT_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
qglStencilOp( GL_KEEP, tr.stencilIncr, tr.stencilIncr );
GL_Cull( CT_BACK_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
}
}
// traditional depth-pass stencil shadows (not an else we allways draw this cap)
if (glConfig.twoSidedStencilAvailable && r_useTwoSidedStencil.GetBool() && glConfig.glVersion >= 2.0 ) {
qglStencilOpSeparate( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK, GL_KEEP, GL_KEEP, tr.stencilIncr );
qglStencilOpSeparate( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT, GL_KEEP, GL_KEEP, tr.stencilDecr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else if (glConfig.twoSidedStencilAvailable && r_useTwoSidedStencil.GetBool()) {
qglEnable( GL_STENCIL_TEST_TWO_SIDE_EXT );
qglActiveStencilFaceEXT( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK );
qglStencilOp( GL_KEEP, GL_KEEP, tr.stencilIncr );
qglActiveStencilFaceEXT( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT );
qglStencilOp( GL_KEEP, GL_KEEP, tr.stencilDecr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else if(glConfig.atiTwoSidedStencilAvailable && r_useTwoSidedStencil.GetBool()) {
qglStencilOpSeparateATI( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK, GL_KEEP, GL_KEEP, tr.stencilIncr );
qglStencilOpSeparateATI( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT, GL_KEEP, GL_KEEP, tr.stencilDecr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else {
qglStencilOp( GL_KEEP, GL_KEEP, tr.stencilIncr );
GL_Cull( CT_FRONT_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
qglStencilOp( GL_KEEP, GL_KEEP, tr.stencilDecr );
GL_Cull( CT_BACK_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
}
i moved the test for two sided stencil to the function where its used so it does not play havoc with the GL2 seperate stencil path and reenabled depth clamp for all paths.
so the function just below the above code now looks like this.
- Code: Select all
void RB_StencilShadowPass( const drawSurf_t *drawSurfs ) {
if ( !r_shadows.GetBool() ) {
return;
}
if ( !drawSurfs ) {
return;
}
RB_LogComment( "---------- RB_StencilShadowPass ----------\n" );
globalImages->BindNull();
qglDisableClientState( GL_TEXTURE_COORD_ARRAY );
// for visualizing the shadows
if ( r_showShadows.GetInteger() ) {
if ( r_showShadows.GetInteger() == 2 ) {
// draw filled in
GL_State( GLS_DEPTHMASK | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE | GLS_DEPTHFUNC_LESS );
} else {
// draw as lines, filling the depth buffer
GL_State( GLS_SRCBLEND_ONE | GLS_DSTBLEND_ZERO | GLS_POLYMODE_LINE | GLS_DEPTHFUNC_ALWAYS );
}
} else {
// don't write to the color buffer, just the stencil buffer
GL_State( GLS_DEPTHMASK | GLS_COLORMASK | GLS_ALPHAMASK | GLS_DEPTHFUNC_LESS );
}
if ( r_shadowPolygonFactor.GetFloat() || r_shadowPolygonOffset.GetFloat() ) {
qglPolygonOffset( r_shadowPolygonFactor.GetFloat(), -r_shadowPolygonOffset.GetFloat() );
qglEnable( GL_POLYGON_OFFSET_FILL );
}
qglStencilFunc( GL_ALWAYS, 1, 255 );
if ( glConfig.depthBoundsTestAvailable && r_useDepthBoundsTest.GetBool() ) {
qglEnable( GL_DEPTH_BOUNDS_TEST_EXT );
}
// LEITH: enable depth clamp
if ( glConfig.depthClampAvailable && r_useDepthClamp.GetBool() ) {
qglEnable( GL_DEPTH_CLAMP );
}
RB_RenderDrawSurfChainWithFunction( drawSurfs, RB_T_Shadow );
GL_Cull( CT_FRONT_SIDED );
if ( r_shadowPolygonFactor.GetFloat() || r_shadowPolygonOffset.GetFloat() ) {
qglDisable( GL_POLYGON_OFFSET_FILL );
}
if ( glConfig.depthBoundsTestAvailable && r_useDepthBoundsTest.GetBool() ) {
qglDisable( GL_DEPTH_BOUNDS_TEST_EXT );
}
// LEITH: disable depth clamp
if ( glConfig.depthClampAvailable && r_useDepthClamp.GetBool() ) {
qglDisable( GL_DEPTH_CLAMP );
}
qglEnableClientState( GL_TEXTURE_COORD_ARRAY );
qglStencilFunc( GL_GEQUAL, 128, 255 );
qglStencilOp( GL_KEEP, GL_KEEP, GL_KEEP );
}
Productivity is a state of mind.
-

revelator - Posts: 2567
- Joined: Thu Jan 24, 2008 12:04 pm
- Location: inside tha debugger
Re: Doom 3 engine release and game code
Would it be possible to have all the merged changes posted step by step as you had in your previous post? For a newbie like me, it's a dangerous game figuring out where to patch these changes in. 
- New Horizon
- Posts: 6
- Joined: Sat Nov 26, 2011 3:24 am
Re: Doom 3 engine release and game code
draw_common.cpp holds all changes.
the code at the end is what you have to replace from /* new code start */ to /* new code end */
below that function replace this
Btw i looked at your darkmod site and noticed you had some other projects running like a hexen mod also noticed that sikkmod seemed to be related to you. Sikkmod will bump doom3 to near crysis levels but it has a few bugs that the author couldnt sort out cause he lacked the full source when he made it. So my idea is to work the improvements from sikkmod into doom3 now that we have the full source. Any who can give a hand with this are welcome since my shader fu is somewhat lacking.
- Code: Select all
static void RB_T_Shadow( const drawSurf_t *surf ) {
const srfTriangles_t *tri;
// set the light position if we are using a vertex program to project the rear surfaces
if ( tr.backEndRendererHasVertexPrograms && r_useShadowVertexProgram.GetBool() && surf->space != backEnd.currentSpace ) {
idVec4 localLight;
R_GlobalPointToLocal( surf->space->modelMatrix, backEnd.vLight->globalLightOrigin, localLight.ToVec3() );
localLight.w = 0.0f;
qglProgramEnvParameter4fvARB( GL_VERTEX_PROGRAM_ARB, PP_LIGHT_ORIGIN, localLight.ToFloatPtr() );
}
tri = surf->geo;
if ( !tri->shadowCache ) {
return;
}
qglVertexPointer( 4, GL_FLOAT, sizeof( shadowCache_t ), vertexCache.Position(tri->shadowCache) );
// we always draw the sil planes, but we may not need to draw the front or rear caps
int numIndexes;
bool external = false;
if ( !r_useExternalShadows.GetInteger() ) {
numIndexes = tri->numIndexes;
} else if ( r_useExternalShadows.GetInteger() == 2 ) { // force to no caps for testing
numIndexes = tri->numShadowIndexesNoCaps;
external = true;
} else if ( ( glConfig.depthClampAvailable && r_useDepthClamp.GetBool() ) || !(surf->dsFlags & DSF_VIEW_INSIDE_SHADOW) ) {
// if we aren't inside the shadow projection, no caps are ever needed
// LEITH: also if depth clamp is enabled the near and far clip planes are disabled removing the need for any caps
numIndexes = tri->numShadowIndexesNoCaps;
external = true;
} else if ( !backEnd.vLight->viewInsideLight && !(surf->geo->shadowCapPlaneBits & SHADOW_CAP_INFINITE) ) {
// if we are inside the shadow projection, but outside the light, and drawing
// a non-infinite shadow, we can skip some caps
if ( backEnd.vLight->viewSeesShadowPlaneBits & surf->geo->shadowCapPlaneBits ) {
// we can see through a rear cap, so we need to draw it, but we can skip the
// caps on the actual surface
numIndexes = tri->numShadowIndexesNoFrontCaps;
} else {
// we don't need to draw any caps
numIndexes = tri->numShadowIndexesNoCaps;
}
external = true;
} else {
// must draw everything
numIndexes = tri->numIndexes;
}
// set depth bounds
if( glConfig.depthBoundsTestAvailable && r_useDepthBoundsTest.GetBool() ) {
qglDepthBoundsEXT( surf->scissorRect.zmin, surf->scissorRect.zmax );
}
// debug visualization
if ( r_showShadows.GetInteger() ) {
if ( r_showShadows.GetInteger() == 3 ) {
if ( external ) {
qglColor3f( 0.1/backEnd.overBright, 1/backEnd.overBright, 0.1/backEnd.overBright );
} else {
// these are the surfaces that require the reverse
qglColor3f( 1/backEnd.overBright, 0.1/backEnd.overBright, 0.1/backEnd.overBright );
}
} else {
// draw different color for turboshadows
if ( surf->geo->shadowCapPlaneBits & SHADOW_CAP_INFINITE ) {
if ( numIndexes == tri->numIndexes ) {
qglColor3f( 1/backEnd.overBright, 0.1/backEnd.overBright, 0.1/backEnd.overBright );
} else {
qglColor3f( 1/backEnd.overBright, 0.4/backEnd.overBright, 0.1/backEnd.overBright );
}
} else {
if ( numIndexes == tri->numIndexes ) {
qglColor3f( 0.1/backEnd.overBright, 1/backEnd.overBright, 0.1/backEnd.overBright );
} else if ( numIndexes == tri->numShadowIndexesNoFrontCaps ) {
qglColor3f( 0.1/backEnd.overBright, 1/backEnd.overBright, 0.6/backEnd.overBright );
} else {
qglColor3f( 0.6/backEnd.overBright, 1/backEnd.overBright, 0.1/backEnd.overBright );
}
}
}
qglStencilOp( GL_KEEP, GL_KEEP, GL_KEEP );
qglDisable( GL_STENCIL_TEST );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
GL_Cull( CT_FRONT_SIDED );
qglEnable( GL_STENCIL_TEST );
return;
}
/* new code start */
// preload the shadows
if ( !external ) {
// use glStencilOpSeparate if your card supports OpenGL2
if (glConfig.twoSidedStencilAvailable && r_useTwoSidedStencil.GetBool() && glConfig.glVersion >= 2.0) {
qglStencilOpSeparate( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK, GL_KEEP, tr.stencilDecr, tr.stencilDecr );
qglStencilOpSeparate( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT, GL_KEEP, tr.stencilIncr, tr.stencilIncr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else if (glConfig.twoSidedStencilAvailable && r_useTwoSidedStencil.GetBool()) {
// else fall back to old pre OpenGL2 twosided stencil.
qglEnable( GL_STENCIL_TEST_TWO_SIDE_EXT );
qglActiveStencilFaceEXT( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK );
qglStencilOp( GL_KEEP, tr.stencilDecr, tr.stencilDecr );
qglActiveStencilFaceEXT( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT );
qglStencilOp( GL_KEEP, tr.stencilIncr, tr.stencilIncr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else if (glConfig.atiTwoSidedStencilAvailable && r_useTwoSidedStencil.GetBool()) {
// if you got a newer ATI card use the ATI version of the OpenGL2 functions.
qglStencilOpSeparateATI( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK, GL_KEEP, tr.stencilDecr, tr.stencilDecr );
qglStencilOpSeparateATI( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT, GL_KEEP, tr.stencilIncr, tr.stencilIncr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else {
// if you got here your card is ancient good luck.
qglStencilOp( GL_KEEP, tr.stencilDecr, tr.stencilDecr );
GL_Cull( CT_FRONT_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
qglStencilOp( GL_KEEP, tr.stencilIncr, tr.stencilIncr );
GL_Cull( CT_BACK_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
}
}
// traditional depth-pass stencil shadows (not an else we allways draw this cap)
if (glConfig.twoSidedStencilAvailable && r_useTwoSidedStencil.GetBool() && glConfig.glVersion >= 2.0 ) {
qglStencilOpSeparate( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK, GL_KEEP, GL_KEEP, tr.stencilIncr );
qglStencilOpSeparate( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT, GL_KEEP, GL_KEEP, tr.stencilDecr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else if (glConfig.twoSidedStencilAvailable && r_useTwoSidedStencil.GetBool()) {
qglEnable( GL_STENCIL_TEST_TWO_SIDE_EXT );
qglActiveStencilFaceEXT( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK );
qglStencilOp( GL_KEEP, GL_KEEP, tr.stencilIncr );
qglActiveStencilFaceEXT( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT );
qglStencilOp( GL_KEEP, GL_KEEP, tr.stencilDecr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else if(glConfig.atiTwoSidedStencilAvailable && r_useTwoSidedStencil.GetBool()) {
qglStencilOpSeparateATI( backEnd.viewDef->isMirror ? GL_FRONT : GL_BACK, GL_KEEP, GL_KEEP, tr.stencilIncr );
qglStencilOpSeparateATI( backEnd.viewDef->isMirror ? GL_BACK : GL_FRONT, GL_KEEP, GL_KEEP, tr.stencilDecr );
GL_Cull( CT_TWO_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
} else {
qglStencilOp( GL_KEEP, GL_KEEP, tr.stencilIncr );
GL_Cull( CT_FRONT_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
qglStencilOp( GL_KEEP, GL_KEEP, tr.stencilDecr );
GL_Cull( CT_BACK_SIDED );
RB_DrawShadowElementsWithCounters( tri, numIndexes );
}
/* new code end */
}
the code at the end is what you have to replace from /* new code start */ to /* new code end */
below that function replace this
- Code: Select all
void RB_StencilShadowPass( const drawSurf_t *drawSurfs ) {
if ( !r_shadows.GetBool() ) {
return;
}
if ( !drawSurfs ) {
return;
}
RB_LogComment( "---------- RB_StencilShadowPass ----------\n" );
globalImages->BindNull();
qglDisableClientState( GL_TEXTURE_COORD_ARRAY );
// for visualizing the shadows
if ( r_showShadows.GetInteger() ) {
if ( r_showShadows.GetInteger() == 2 ) {
// draw filled in
GL_State( GLS_DEPTHMASK | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE | GLS_DEPTHFUNC_LESS );
} else {
// draw as lines, filling the depth buffer
GL_State( GLS_SRCBLEND_ONE | GLS_DSTBLEND_ZERO | GLS_POLYMODE_LINE | GLS_DEPTHFUNC_ALWAYS );
}
} else {
// don't write to the color buffer, just the stencil buffer
GL_State( GLS_DEPTHMASK | GLS_COLORMASK | GLS_ALPHAMASK | GLS_DEPTHFUNC_LESS );
}
if ( r_shadowPolygonFactor.GetFloat() || r_shadowPolygonOffset.GetFloat() ) {
qglPolygonOffset( r_shadowPolygonFactor.GetFloat(), -r_shadowPolygonOffset.GetFloat() );
qglEnable( GL_POLYGON_OFFSET_FILL );
}
qglStencilFunc( GL_ALWAYS, 1, 255 );
if ( glConfig.depthBoundsTestAvailable && r_useDepthBoundsTest.GetBool() ) {
qglEnable( GL_DEPTH_BOUNDS_TEST_EXT );
}
// LEITH: enable depth clamp
if ( glConfig.depthClampAvailable && r_useDepthClamp.GetBool() ) {
qglEnable( GL_DEPTH_CLAMP );
}
RB_RenderDrawSurfChainWithFunction( drawSurfs, RB_T_Shadow );
GL_Cull( CT_FRONT_SIDED );
if ( r_shadowPolygonFactor.GetFloat() || r_shadowPolygonOffset.GetFloat() ) {
qglDisable( GL_POLYGON_OFFSET_FILL );
}
if ( glConfig.depthBoundsTestAvailable && r_useDepthBoundsTest.GetBool() ) {
qglDisable( GL_DEPTH_BOUNDS_TEST_EXT );
}
// LEITH: disable depth clamp
if ( glConfig.depthClampAvailable && r_useDepthClamp.GetBool() ) {
qglDisable( GL_DEPTH_CLAMP );
}
qglEnableClientState( GL_TEXTURE_COORD_ARRAY );
qglStencilFunc( GL_GEQUAL, 128, 255 );
qglStencilOp( GL_KEEP, GL_KEEP, GL_KEEP );
}
Btw i looked at your darkmod site and noticed you had some other projects running like a hexen mod also noticed that sikkmod seemed to be related to you. Sikkmod will bump doom3 to near crysis levels but it has a few bugs that the author couldnt sort out cause he lacked the full source when he made it. So my idea is to work the improvements from sikkmod into doom3 now that we have the full source. Any who can give a hand with this are welcome since my shader fu is somewhat lacking.
Productivity is a state of mind.
-

revelator - Posts: 2567
- Joined: Thu Jan 24, 2008 12:04 pm
- Location: inside tha debugger
Re: Doom 3 engine release and game code
uploaded my fork here http://code.google.com/p/realm/download ... z&can=2&q=
also includes a few bugfixes i havent posted and enabled precompiled headers for faster compiling.
also includes a few bugfixes i havent posted and enabled precompiled headers for faster compiling.
Productivity is a state of mind.
-

revelator - Posts: 2567
- Joined: Thu Jan 24, 2008 12:04 pm
- Location: inside tha debugger
Re: Doom 3 engine release and game code
Btw i looked at your darkmod site and noticed you had some other projects running like a hexen mod also noticed that sikkmod seemed to be related to you. Sikkmod will bump doom3 to near crysis levels but it has a few bugs that the author couldnt sort out cause he lacked the full source when he made it. So my idea is to work the improvements from sikkmod into doom3 now that we have the full source. Any who can give a hand with this are welcome since my shader fu is somewhat lacking.
Hexen and Sikkmod are separate from Dark Mod. Our personal visual enhancements are far more conservative.
- New Horizon
- Posts: 6
- Joined: Sat Nov 26, 2011 3:24 am
Re: Doom 3 engine release and game code
oki
well i hope someone can help with the changes nessesary, especially i have a problem rebuilding the sikkmod gamex86.dll with msvc 2010
probably because i cannot get typeinfo.exe to generate its output with the commandline they used for older msvc. Only big problem with sikkmod atm is SSAO which causes a few glitches in drawing (skyboxes most notably).
probably because i cannot get typeinfo.exe to generate its output with the commandline they used for older msvc. Only big problem with sikkmod atm is SSAO which causes a few glitches in drawing (skyboxes most notably).
Productivity is a state of mind.
-

revelator - Posts: 2567
- Joined: Thu Jan 24, 2008 12:04 pm
- Location: inside tha debugger
Re: Doom 3 engine release and game code
Been trying to compile the source but after adding your changes it fails to build the doom3.exe for some reason. Unfortunately I'm not a coder, so I have no idea what to look for in terms of fatal errors.
First I tried pasting the changes in and when that didn't work I just dropped the modified files into our source instead.
- New Horizon
- Posts: 6
- Joined: Sat Nov 26, 2011 3:24 am
Re: Doom 3 engine release and game code
cant just drop the code in you need to replace the functions with the same names
but copying the modified files will also work. My guess is the error you got was that the function was allready declared.
ill probably drop the old code for dual pass stencil as it doesnt seem to give any huge improvements and just go with mh's version (need a below geforce 7000 card anyway to not have gl2 and a few of the opengl2 functions where actually supported by even older ones like the 6600).
Depth clamp still seems to be a bit flaky with mh's version (shadows dissapear at a certain range) not sure if depth clamp is even possible with his version it might be part of the function allready hmm ?.
ill probably drop the old code for dual pass stencil as it doesnt seem to give any huge improvements and just go with mh's version (need a below geforce 7000 card anyway to not have gl2 and a few of the opengl2 functions where actually supported by even older ones like the 6600).
Depth clamp still seems to be a bit flaky with mh's version (shadows dissapear at a certain range) not sure if depth clamp is even possible with his version it might be part of the function allready hmm ?.
Productivity is a state of mind.
-

revelator - Posts: 2567
- Joined: Thu Jan 24, 2008 12:04 pm
- Location: inside tha debugger
Re: Doom 3 engine release and game code
Ok finally got the sikkmod gamecode to compile (insert lots of nasty swearing here) i had to make a bat script to run the typeinfo.exe and create the new variables needed for it, was a total succes though and it runs fine on unmodified doom3 to
the new gamecode makes it possible to pick up items you normally cant so its more or less a cosmetic change.
heres a shot with sikkmod and highres textures.

heres a shot with sikkmod and highres textures.

Productivity is a state of mind.
-

revelator - Posts: 2567
- Joined: Thu Jan 24, 2008 12:04 pm
- Location: inside tha debugger
Re: Doom 3 engine release and game code
hehe after some digging around adding 1024x1024 dds textures and using pom (parralax occlusion mapping)
with compressed textures turned of and anisotrophy at 16 and no downsampling i can tell that doom3 is still more than capable of bringing even modern graphics
cards to there knees
also looks absolutetly stunning but i doubt peeps can live with 3 fps on a geforce 560 ti overclocked rofl.
i wonder how good this game could look with some dedicated texture baking hmm ? maybe convert some of the env to megatexture.
with compressed textures turned of and anisotrophy at 16 and no downsampling i can tell that doom3 is still more than capable of bringing even modern graphics
cards to there knees
i wonder how good this game could look with some dedicated texture baking hmm ? maybe convert some of the env to megatexture.
Productivity is a state of mind.
-

revelator - Posts: 2567
- Joined: Thu Jan 24, 2008 12:04 pm
- Location: inside tha debugger
Re: Doom 3 engine release and game code
reckless wrote: adding 1024x1024 dds textures and using pom ....
I thought that said 'porn' at first
- andrewj
- Posts: 133
- Joined: Mon Aug 30, 2010 3:29 pm
- Location: Australia
Re: Doom 3 engine release and game code
was what the author said but i checked an the biggest ones are 256x256 so ... still a lot bigger than the originals 
Productivity is a state of mind.
-

revelator - Posts: 2567
- Joined: Thu Jan 24, 2008 12:04 pm
- Location: inside tha debugger
Who is online
Users browsing this forum: No registered users and 1 guest