Forum

Doom 3 engine release and game code

Discuss programming topics for any language, any source base. If it is programming related but doesn't fit in one of the below categories, it goes here.

Moderator: InsideQC Admins

Re: Doom 3 engine release and game code

Postby revelator » Sun Jan 01, 2012 9:58 pm

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.
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Doom 3 engine release and game code

Postby revelator » Sun Jan 01, 2012 10:06 pm

latest changes previous code had some wrong assumptions it would seem.

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.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Doom 3 engine release and game code

Postby New Horizon » Sun Jan 01, 2012 11:19 pm

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

Postby revelator » Sun Jan 01, 2012 11:47 pm

draw_common.cpp holds all changes.

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.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Doom 3 engine release and game code

Postby revelator » Mon Jan 02, 2012 12:03 am

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.
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Doom 3 engine release and game code

Postby New Horizon » Mon Jan 02, 2012 1:14 am

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

Postby revelator » Mon Jan 02, 2012 1:26 am

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).
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Doom 3 engine release and game code

Postby New Horizon » Mon Jan 02, 2012 2:01 am

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

Postby revelator » Mon Jan 02, 2012 2:13 am

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 ?.
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Doom 3 engine release and game code

Postby revelator » Mon Jan 02, 2012 4:54 am

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.

Image
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Doom 3 engine release and game code

Postby revelator » Wed Jan 04, 2012 1:42 am

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 :mrgreen: 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.
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Doom 3 engine release and game code

Postby andrewj » Wed Jan 04, 2012 11:44 am

reckless wrote: adding 1024x1024 dds textures and using pom ....

I thought that said 'porn' at first :lol:
andrewj
 
Posts: 133
Joined: Mon Aug 30, 2010 3:29 pm
Location: Australia

Re: Doom 3 engine release and game code

Postby revelator » Wed Jan 04, 2012 2:47 pm

kinky extentions :P
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Doom 3 engine release and game code

Postby leileilol » Wed Jan 04, 2012 3:19 pm

1024 x 1024 DD's.......... you wish.
i should not be here
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Re: Doom 3 engine release and game code

Postby revelator » Thu Jan 05, 2012 3:22 am

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.
User avatar
revelator
 
Posts: 2567
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

PreviousNext

Return to General Programming

Who is online

Users browsing this forum: No registered users and 1 guest