Forum

Old school quake, well not quite but

Discuss anything not covered by any of the other categories.

Moderator: InsideQC Admins

Re: Old school quake, well not quite but

Postby frag.machine » Mon Mar 20, 2017 6:47 pm

toneddu2000 wrote:
frag.machine wrote:IIRC the VM is not even initialized (let alone running) during demo playback...
:?: And how's possible that demos run quakec code (weapon,ai, gameplay, etc.) if VM is not initialized? Did I miss something?


Quake demos are just network packets stored in a binary file. The client reads it back into the network message buffers and then treats it as normal network messages coming from a server. There is no server running (and thus no QuakeC involved) during demo playback.
I know FrikaC made a cgi-bin version of the quakec interpreter once and wrote part of his website in QuakeC :) (LordHavoc)
User avatar
frag.machine
 
Posts: 2068
Joined: Sat Nov 25, 2006 1:49 pm

Re: Old school quake, well not quite but

Postby revelator » Tue Mar 21, 2017 6:13 am

Heh didnt know that :) i guess thats why some mods who wanted something a bit more special like zerstoerer used cutscenes like demos.
Not that cutscenes are without problems either...

Btw fixing the broken lightpoint code had the curious side effect of turning off the somewhat colored appearance my engine has been (suffering ?) from,
it looks a bit bland now compared to before but i guess it just takes some getting used to after the massive overdose of colored lighting :smile:

Somehow i broke malice while hunting the before mentioned bugs sigh, now i get a heap collision error on the first map, and a bad lmp if i increase heap size :shock:
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2531
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Old school quake, well not quite but

Postby revelator » Tue Mar 21, 2017 8:03 am

So i got hipnotic to run but

Image

see the problem with this

Image

broken rotation on doors it seems, funny thing is it only happens at certain angles but looks like crap when it happens.
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2531
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Old school quake, well not quite but

Postby qbism » Tue Mar 21, 2017 11:43 pm

Yeah, demo parsing is separate from vm. Good opportunity to code bug checks in demo parser :)
User avatar
qbism
 
Posts: 1235
Joined: Thu Nov 04, 2004 5:51 am

Re: Old school quake, well not quite but

Postby toneddu2000 » Wed Mar 22, 2017 8:17 am

frag.machine wrote:Quake demos are just network packets stored in a binary file. The client reads it back into the network message buffers and then treats it as normal network messages coming from a server. There is no server running (and thus no QuakeC involved) during demo playback.
ah ok, understood, now. Thanks for the clarification, frag.machine. But, when client reads demo binary file, it loads its quakec to understand what sound play or what weapon model show, right? Either way I couldn't understand how demo could play
toneddu2000
 
Posts: 1308
Joined: Tue Feb 24, 2009 4:39 pm
Location: Italy

Re: Old school quake, well not quite but

Postby Spike » Wed Mar 22, 2017 3:45 pm

demos replace the server. there is no ssqc running at all when _playing_ demos, same as clients don't load any ssqc when connecting to remote servers.
Spike
 
Posts: 2882
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Re: Old school quake, well not quite but

Postby mh » Wed Mar 22, 2017 4:09 pm

Yeah, if you're crashing inside the VM while playing a demo, then you're more likely to have a bad pointer transferring execution to random memory locations than you are to have anything wrong with the VM.
We had the power, we had the space, we had a sense of time and place
We knew the words, we knew the score, we knew what we were fighting for
User avatar
mh
 
Posts: 2287
Joined: Sat Jan 12, 2008 1:38 am

Re: Old school quake, well not quite but

Postby revelator » Thu Mar 23, 2017 3:15 pm

Got that much :) i found atleast some of the problem and it seems related to avirox rotating bmodel code,
i might have broken something when i implemented it off the tutorial here,
but comparing the code brought me no answers so its probably something deeper in the code that messes up things.

I can run hipnotic with the bug check off now but it looks like shite with these doors messing up like that :S

Also found other bugs that i newer had suspected would cause so many problems, one was from when i took over this engine.

Code: Select all
/*
============
R_LightPoint
============
*/
void R_LightPoint(vec3_t p, vec3_t colour)
{
   vec3_t      start;
   vec3_t      end;
   int         lnum;
   vec3_t      dist;
   float      add;
   int         x;
   model_t      *mod;
   model_t      *shortest;

   if(!cl.worldmodel->lightdata)
   {
      colour[0] = 255;
      colour[1] = 255;
      colour[2] = 255;
      return;
   }

   // set up end point
   // this must be done seperately for each model checked as it's passed as a pointer to
   // RecursiveLightPoint, and therefore may have it's value changed
   end[0] = p[0];
   end[1] = p[1];
   end[2] = p[2] - 2048;

   // nothing hit yet
   lightplane = NULL;

   // do the world first
   RecursiveLightPoint(cl.worldmodel->nodes, p, end);

   // did we hit?
   if(lightplane)
   {
      // copy out the data
      cl.worldmodel->lightplane = lightplane;
      cl.worldmodel->lightspot[0] = lightspot[0];
      cl.worldmodel->lightspot[1] = lightspot[1];
      cl.worldmodel->lightspot[2] = lightspot[2];
      cl.worldmodel->pointcolour[0] = pointcolour[0];
      cl.worldmodel->pointcolour[1] = pointcolour[1];
      cl.worldmodel->pointcolour[2] = pointcolour[2];
   }
   else
   {
      // set to valid data for shortest path testing
      cl.worldmodel->lightplane = NULL;
      cl.worldmodel->lightspot[2] = -1000000;
      cl.worldmodel->pointcolour[0] = 0;
      cl.worldmodel->pointcolour[1] = 0;
      cl.worldmodel->pointcolour[2] = 0;
   }

   // find the shortest path - this will be the model with the highest value in lightspot[2]
   // init it to the worldmodel first
   shortest = cl.worldmodel;

   // now check the brush models
   for(x = 0; x < cl_numvisedicts; x++)
   {
      mod = cl_visedicts[x]->model;

      // no more models
      if(!mod)
      {
         break;
      }

      // don;t do * models (their data comes from the world)
      // the check here was wrong since it's inception, it was set to only allow '*' models and not the other way around Oo
      if(ISTURBTEX(mod->name))
      {
         continue;
      }

      // make sure we only get brush models
      if(mod->type != mod_brush)
      {
         continue;
      }

      // set up start point
      // offset the start [0] and [1] points by entity origin to do func_train bmodels
      // this is positioned above the model to account for moving bmodels (note the "-" in [2])
      start[0] = p[0] + cl_visedicts[x]->origin[0];
      start[1] = p[1] + cl_visedicts[x]->origin[1];
      start[2] = p[2] - cl_visedicts[x]->origin[2];

      // set up end point
      // this must be done seperately for each model checked as it's passed as a pointer to
      // RecursiveLightPoint, and therefore may have it's value changed
      // offset the end [0] and [1] points by entity origin to do func_train bmodels
      end[0] = p[0] + cl_visedicts[x]->origin[0];
      end[1] = p[1] + cl_visedicts[x]->origin[1];
      end[2] = p[2] - 2048 + cl_visedicts[x]->origin[2];

      // NULL it again
      lightplane = NULL;

      // and do it
      RecursiveLightPoint(mod->nodes + mod->hulls[0].firstclipnode, start, end);

      // did we hit?
      if(lightplane)
      {
         // copy out the data
         mod->lightplane = lightplane;
         mod->lightspot[0] = lightspot[0];
         mod->lightspot[1] = lightspot[1];

         // store the colour for this model.  it hit but we don't know if it's the shortest
         // yet, so each model must store it's own colour
         mod->pointcolour[0] = pointcolour[0];
         mod->pointcolour[1] = pointcolour[1];
         mod->pointcolour[2] = pointcolour[2];

         // add origin[2] cos the bmodel may move!!!
         // it's official.  i'm a stupid twit.  i was using the origin of the *model* originally,
         // not of the *entity*.  this works just fine.
         mod->lightspot[2] = lightspot[2] + cl_visedicts[x]->origin[2];

         // check for shortest path
         if(mod->lightspot[2] > shortest->lightspot[2])
         {
            shortest = mod;
         }
      }
      else
      {
         mod->lightplane = NULL;
         mod->pointcolour[0] = 0;
         mod->pointcolour[1] = 0;
         mod->pointcolour[2] = 0;
      }
   }

   // copy the shortest out to the globals
   lightplane = shortest->lightplane;
   lightspot[0] = shortest->lightspot[0];
   lightspot[1] = shortest->lightspot[1];
   lightspot[2] = shortest->lightspot[2];

   // store pointcolour back to colour
   if(!lightplane)
   {
      // hit nothing
      colour[0] = 0.0f;
      colour[1] = 0.0f;
      colour[2] = 0.0f;
   }
   else
   {
      // take the pointcolour from the shortest
      // (previous Realms took the global pointcolour, which may or may not have been the shortest)
      colour[0] = shortest->pointcolour[0];
      colour[1] = shortest->pointcolour[1];
      colour[2] = shortest->pointcolour[2];
   }

   // and add dynamic lights
   for(lnum = 0; lnum < MAX_DLIGHTS; lnum++)
   {
      if(cl_dlights[lnum].die >= cl.time)
      {
         VectorSubtract(p, cl_dlights[lnum].origin, dist);
         add = cl_dlights[lnum].radius - Length(dist);

         if(add > 0.0f)
         {
            VectorMA(colour, add, cl_dlights[lnum].RGB, colour);
         }
      }
   }
}


notice the check for turb models ? originally it was if(mod->name[0] != '*') continue; :S and the problem same in stainmaps.
This meant light started behaving rather strange at times (certainly made this engine extremely colorfull) but also caused weird behaviour with certain water surfs.
Not blaming anyone its an honest mistake that might have cropped up because of lack of sleep on the coders side, god knows i had many of those nights myself.
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2531
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Old school quake, well not quite but

Postby revelator » Fri Mar 24, 2017 6:44 am

Was indeed the rotating bmodel code that caused the bug,
i looked over the tutorial yesterday and noticed that there had been a few changes since i implemented it.

One of the functions im not 100% certain with still is this one

Code: Select all
void SV_FindTouchedLeafs(edict_t *ent, mnode_t *node, byte *pvs)
{
   mplane_t   *splitplane;
   int         sides;
   int         leafnum;

loc0:
   // ent already touches a leaf
   if(ent->touchleaf)
   {
      return;
   }

   // hit solid
   if(node->contents == CONTENTS_SOLID)
   {
      return;
   }

   // add an efrag if the node is a leaf
   // this is used for sending ents to the client so it needs to stay
   if(node->contents < 0)
   {
loc1:
      leafnum = ((mleaf_t *) node) - sv.worldmodel->leafs - 1;

      if((pvs[leafnum >> 3] & (1 << (leafnum & 7))))
      {
         ent->touchleaf = true;
      }
      return;
   }

   // NODE_MIXED
   splitplane = node->plane;
   sides = BOX_ON_PLANE_SIDE(ent->v.absmin, ent->v.absmax, splitplane);

   // recurse down the contacted sides, start dropping out if we hit anything
   if((sides & 1) && !ent->touchleaf && node->children[0]->contents != CONTENTS_SOLID)
   {
      if(!(sides & 2) && node->children[0]->contents < 0)
      {
         node = node->children[0];
         goto loc1;
      }
      else if(!(sides & 2))
      {
         node = node->children[0];
         goto loc0;
      }
      else
      {
         SV_FindTouchedLeafs(ent, node->children[0], pvs);
      }
   }

   if((sides & 2) && !ent->touchleaf && node->children[1]->contents != CONTENTS_SOLID)
   {
      // test for a leaf and drop out if so, otherwise it's a node so go round again
      node = node->children[1];

      if(node->contents < 0)
      {
         goto loc1;
      }
      else
      {
         goto loc0;
      }
   }
}


Where there any problems related to this function ? i could not quite grasp from one of the last comments if i had to revert everything to bakers version.
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2531
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Old school quake, well not quite but

Postby revelator » Sat Mar 25, 2017 8:46 pm

Holy hellhole batman :shock:

Code: Select all
Flad profil:

Hver stikprøve regnes som 0.01 seconds.
  %    kumulativ     selv              selv   totalt         
  tid   seconds   seconds     kald   s/kald   s/kald  navn   
 27.88     67.24    67.24                             _mcount_private
 23.06    122.85    55.61 3455449516     0.00     0.00  Sys_DoubleTime
  8.82    144.13    21.28     1492     0.01     0.01  MakeSpec
  6.52    159.85    15.72 756397056     0.00     0.00  BoxFilter
  5.21    172.41    12.56                             inflate
  3.45    180.74     8.33 3455424386     0.00     0.00  Host_Frame
  3.06    188.12     7.38 3455424386     0.00     0.00  _Host_Frame
  2.96    195.25     7.13 3455424386     0.00     0.00  Host_FilterTime
  2.62    201.58     6.33        1     6.33   113.43  WinMain@16
  1.73    205.74     4.16 174098534     0.00     0.00  R_GetVertexLightValue
  1.53    209.44     3.70 520397338     0.00     0.00  unzReadCurrentFile
  1.16    212.24     2.80                             fmod
  1.12    214.94     2.70 520397327     0.00     0.00  COM_FRead
  0.97    217.29     2.35                             crc32
  0.92    219.51     2.23                             _fentry__
  0.89    221.66     2.14      441     0.00     0.05  MakeDOT3
  0.75    223.46     1.80                             updatewindow
  0.58    224.87     1.41                             GL_ProcessTexturePass
  0.57    226.24     1.37     2098     0.00     0.00  GL_LoadTGA
  0.50    227.44     1.21   253591     0.00     0.00  GL_DrawAliasFrame
  0.44    228.51     1.07      176     0.01     0.01  GL_ResampleTexture
  0.40    229.47     0.96                             _setjmp3
  0.36    230.35     0.88 520396884     0.00     0.00  COM_FGetc
  0.34    231.16     0.81 189099264     0.00     0.00  ReadPixel
  0.23    231.73     0.56 520400025     0.00     0.00  COM_GetFileByHandle
  0.22    232.26     0.53        1     0.53     0.62  Sys_Quit
  0.20    232.74     0.48    23902     0.00     0.00  R_StencilHazeParticles
  0.16    233.13     0.40 87049267     0.00     0.00  R_SetVertexLightValue
  0.14    233.47     0.33    23999     0.00     0.00  R_RecursiveWorldNode
  0.12    233.76     0.30    67072     0.00     0.00  R_MarkLights
  0.12    234.06     0.30    60634     0.00     0.00  R_AddTransformedBSPBModelToList
  0.12    234.36     0.29    23999     0.00     0.00  R_KillParticles
  0.12    234.65     0.29   928929     0.00     0.00  RecursiveLightPoint
  0.12    234.94     0.29   329886     0.00     0.00  R_AddDynamicLights
  0.12    235.22     0.28    46091     0.00     0.00  R_DrawTorchSmokeEffect
  0.11    235.49     0.27    23999     0.00     0.00  R_DrawSmokeParticles
  0.11    235.75     0.26        1     0.26     0.26  Heap_PageIn
  0.10    236.00     0.25 55439360     0.00     0.00  R_UpdateTorchSmokeParticle
  0.10    236.25     0.25    25023     0.00     0.00  R_UpdateTorchSmokeParticles
  0.10    236.50     0.25    23999     0.00     0.00  R_DrawSurfaceChain
  0.10    236.73     0.23   179266     0.00     0.00  R_DrawAliasModelShadow
  0.09    236.95     0.22  4420335     0.00     0.00  R_SetupSurfaceVArrayVerts
  0.09    237.16     0.21    21302     0.00     0.00  R_UpdateParticles
  0.08    237.36     0.20 29361062     0.00     0.00  BoxOnPlaneSide
  0.08    237.55     0.19    36159     0.00     0.00  R_DrawParticleChain
  0.06    237.70     0.15    23999     0.00     0.00  R_DrawWaterSurfaces
  0.06    237.84     0.14 47274816     0.00     0.00  PackFloatInByte
  0.06    237.98     0.14                             unzlocal_getByte
  0.05    238.10     0.12                             memcpy
  0.04    238.19     0.09   330814     0.00     0.00  R_BuildLightMap
  0.04    238.28     0.09   330814     0.00     0.00  R_StoreLightmap
  0.04    238.37     0.09   207731     0.00     0.00  R_LightPoint
  0.04    238.46     0.09   207731     0.00     0.00  R_SetupAliasFrame
  0.04    238.55     0.09   160778     0.00     0.00  Mod_PointInLeaf
  0.04    238.64     0.09        1     0.09     0.09  COM_ShutdownFileSystem
  0.03    238.72     0.08    24008     0.00     0.00  CL_RelinkEntities
  0.03    238.79     0.07    23902     0.00     0.00  R_HeatHazePickup
  0.03    238.87     0.07 61094991     0.00     0.00  fread_file_func
  0.03    238.94     0.07  7968327     0.00     0.00  R_CullSphere
  0.03    239.00     0.07      160     0.00     0.00  va
  0.02    239.06     0.06  6164762     0.00     0.00  R_CullBox
  0.02    239.12     0.06  4056531     0.00     0.00  R_AnimateSurfaceLight
  0.02    239.18     0.06   229242     0.00     0.00  SND_PaintChannelFrom8
  0.02    239.24     0.06    55602     0.00     0.00  StripLength
  0.02    239.30     0.06    49995     0.00     0.00  R_DrawLavaStencilSmoke
  0.02    239.36     0.06                             MD5Transform
  0.02    239.41     0.05   107927     0.00     0.00  R_StainSurf
  0.02    239.46     0.05    26816     0.00     0.00  LMAllocBlock
  0.02    239.51     0.05    13663     0.00     0.00  R_CausticPickup
  0.02    239.55     0.04 40909800     0.00     0.00  Q_rand
  0.02    239.59     0.04   207731     0.00     0.00  R_RotateForEntity
  0.02    239.63     0.04    23999     0.00     0.00  R_AnimateLight
  0.02    239.67     0.04    23999     0.00     0.00  R_InitTextureChains
  0.02    239.71     0.04    23999     0.00     0.00  R_MarkLeaves
  0.02    239.75     0.04        2     0.02     0.03  R_InitTorchSmokeParticles
  0.01    239.78     0.03  4420335     0.00     0.00  R_TextureAnimation
  0.01    239.81     0.03   655121     0.00     0.00  unzGoToNextFile
  0.01    239.84     0.03    77604     0.00     0.00  R_StainNode
  0.01    239.87     0.03    55602     0.00     0.00  FanLength
  0.01    239.90     0.03    48106     0.00     0.00  S_PaintChannels
  0.01    239.93     0.03    23999     0.00     0.00  R_AddBModelsToDrawList
  0.01    239.96     0.03    23999     0.00     0.00  R_BloomBlend
  0.01    239.99     0.03    23999     0.00     0.00  R_Bloom_GeneratexDiamonds
  0.01    240.02     0.03    23902     0.00     0.00  R_DrawTurbFog
  0.01    240.05     0.03    19236     0.00     0.00  R_LumaPickup
  0.01    240.07     0.02  1518368     0.00     0.00  Normalize
  0.01    240.09     0.02  1365489     0.00     0.00  SND_Spatialize
  0.01    240.11     0.02   655901     0.00     0.00  unzGetCurrentFileInfo
  0.01    240.13     0.02   653948     0.00     0.00  unzStringFileNameCompare
  0.01    240.15     0.02   389825     0.00     0.00  R_TransformVArrayVerts
  0.01    240.17     0.02   232747     0.00     0.00  S_LoadSound
  0.01    240.19     0.02   214892     0.00     0.00  R_LeafForEntity
  0.01    240.21     0.02   207731     0.00     0.00  R_DrawAliasModel
  0.01    240.23     0.02    96236     0.00     0.00  R_TransformEntity
  0.01    240.25     0.02    47998     0.00     0.00  R_SetupGL
  0.01    240.27     0.02    47804     0.00     0.00  R_DrawSkyLists
  0.01    240.29     0.02    24031     0.00     0.00  SCR_UpdateScreen
  0.01    240.31     0.02    24008     0.00     0.00  S_Update
  0.01    240.33     0.02    23999     0.00     0.00  R_Bloom_DownsampleView
  0.01    240.35     0.02    23999     0.00     0.00  R_DrawAliasEntities
  0.01    240.37     0.02    23999     0.00     0.00  R_DrawSkyPickup
  0.01    240.39     0.02    23999     0.00     0.00  R_MarkPortals
  0.01    240.41     0.02    22893     0.00     0.00  V_CalcRefdef
  0.01    240.43     0.02      784     0.00     0.00  fopen_file_func
  0.01    240.45     0.02      212     0.00     0.00  GL_QuantumLumaHackery
  0.01    240.47     0.02                             R_DepthSortAliasEntities
  0.01    240.49     0.02                             png_read_filter_row_paeth_multibyte_pixel
  0.01    240.51     0.02                             unzlocal_getLong
  0.01    240.53     0.02                             unzlocal_getShort
  0.01    240.54     0.01  2186979     0.00     0.00  Draw_SingleScaledCharacter
  0.01    240.56     0.01    15292     0.00     0.00  R_RocketTrail
  0.01    240.57     0.01        1     0.01     0.01  R_InitVertexLights
  0.00    240.59     0.01   811871     0.00     0.00  LongNoSwap
  0.00    240.59     0.01   458117     0.00     0.00  Draw_Pic
  0.00    240.60     0.01   376909     0.00     0.00  LerpAngles
  0.00    240.62     0.01   210282     0.00     0.00  anglemod
  0.00    240.62     0.01   179579     0.00     0.00  CL_ParseUpdate
  0.00    240.63     0.01   120235     0.00     0.00  R_PushDlights
  0.00    240.65     0.01    76332     0.00     0.00  HUD_DrawIndividualWeapon
  0.00    240.66     0.01    68068     0.00     0.00  HUD_DrawNum
  0.00    240.66     0.01    62873     0.00     0.00  R_TurbDepthOn
  0.00    240.68     0.01    49554     0.00     0.00  R_ParticleSprite
  0.00    240.69     0.01    47998     0.00     0.00  GL_SetPerspective
  0.00    240.69     0.01    44675     0.00     0.00  R_StoreEfrags
  0.00    240.71     0.01    28290     0.00     0.00  Snd_WriteLinearBlastStereo16
  0.00    240.72     0.01    24125     0.00     0.00  GL_Set2D
  0.00    240.72     0.01    24098     0.00     0.00  IN_Accumulate
  0.00    240.74     0.01    24026     0.00     0.00  Con_CheckResize
  0.00    240.75     0.01    24026     0.00     0.00  GL_EndRendering
  0.00    240.75     0.01    24026     0.00     0.00  Sbar_Draw3DBrushes
  0.00    240.76     0.01    24008     0.00     0.00  CL_UpdateTEnts
  0.00    240.78     0.01    24008     0.00     0.00  S_UpdateAmbientSounds
  0.00    240.78     0.01    24005     0.00     0.00  R_RenderView
  0.00    240.79     0.01    24003     0.00     0.00  CL_SendMove
  0.00    240.81     0.01    23999     0.00     0.00  R_Clear
  0.00    240.81     0.01    23999     0.00     0.00  R_CullAliasEntities
  0.00    240.82     0.01    23999     0.00     0.00  R_CullBrushEntities
  0.00    240.84     0.01    23999     0.00     0.00  R_DrawSpriteEntities
  0.00    240.84     0.01    23999     0.00     0.00  R_DrawViewModel
  0.00    240.85     0.01    23999     0.00     0.00  R_InitRegularTMUs
  0.00    240.87     0.01    23999     0.00     0.00  R_KillTMUs
  0.00    240.88     0.01    23999     0.00     0.00  R_ShouldDrawViewModel
  0.00    240.88     0.01    23999     0.00     0.00  R_TransSortBrushEntities
  0.00    240.90     0.01    22893     0.00     0.00  Draw_XHair
  0.00    240.91     0.01    22893     0.00     0.00  V_CalcFloats
  0.00    240.91     0.01    22893     0.00     0.00  V_CalcGunAngle
  0.00    240.93     0.01    22796     0.00     0.00  HUD_DrawAmmoCount
  0.00    240.94     0.01    22796     0.00     0.00  HUD_DrawFaceBSP
  0.00    240.94     0.01    22796     0.00     0.00  Sbar_DrawAmmo
  0.00    240.96     0.01    11653     0.00     0.00  CL_ParseServerMessage
  0.00    240.97     0.01     5368     0.00     0.00  MarkPVSForLeaf
  0.00    240.97     0.01     2716     0.00     0.00  MSG_ReadString
  0.00    240.99     0.01      780     0.00     0.00  unzLocateFile
  0.00    241.00     0.01      231     0.00     0.00  Mod_CalcAliasBounds
  0.00    241.00     0.01      215     0.00     0.00  MarkLeafsForSurf
  0.00    241.01     0.01      206     0.00     0.00  SV_Physics_Client
  0.00    241.03     0.01       99     0.00     0.00  Draw_TextBox
  0.00    241.03     0.01        3     0.00     0.00  R_InitBLTable
  0.00    241.04     0.01                             R_DepthSortBrushEntities
  0.00    241.06     0.01                             __chkstk_ms
  0.00    241.06     0.01                             __sinl_internal
  0.00    241.07     0.01                             ceil
  0.00    241.09     0.01                             cos
  0.00    241.09     0.01                             floor
  0.00    241.10     0.01                             fread
  0.00    241.12     0.01                             inflate_table
  0.00    241.12     0.01    45585     0.00     0.00  CharBlockEnd
  0.00    241.12     0.01    23999     0.00     0.00  R_RenderDrawList
  0.00    241.13     0.01    11221     0.00     0.00  CL_ParseClientdata
  0.00    241.13     0.01      719     0.00     0.00  CL_ParseBaseline
  0.00    241.14     0.01       54     0.00     0.00  M_Quit_Draw
  0.00    241.15     0.01        1     0.01     0.63  M_Quit_Key
  0.00    241.15     0.00 82748236     0.00     0.00  fill_fopen_filefunc
  0.00    241.15     0.00  2186979     0.00     0.00  Draw_SingleCharacter
  0.00    241.15     0.00  1334550     0.00     0.00  fseek_file_func
  0.00    241.15     0.00   752211     0.00     0.00  ShortNoSwap
  0.00    241.15     0.00   640690     0.00     0.00  MSG_ReadByte
  0.00    241.15     0.00   377010     0.00     0.00  LerpVectors
  0.00    241.15     0.00   333621     0.00     0.00  R_CullModelForEntity
  0.00    241.15     0.00   309017     0.00     0.00  MSG_ReadShort
  0.00    241.15     0.00   305729     0.00     0.00  Draw_TransPic
  0.00    241.15     0.00   301630     0.00     0.00  R_BoxContainsPoint
  0.00    241.15     0.00   269270     0.00     0.00  Draw_Character
  0.00    241.15     0.00   268199     0.00     0.00  MSG_ReadCoord
  0.00    241.15     0.00   260077     0.00     0.00  Heap_Init
  0.00    241.15     0.00   243872     0.00     0.00  SZ_GetSpace
  0.00    241.15     0.00   240030     0.00     0.00  CL_KeyState
  0.00    241.15     0.00   215378     0.00     0.00  FloatNoSwap
  0.00    241.15     0.00   204871     0.00     0.00  MSG_ReadChar
  0.00    241.15     0.00   183626     0.00     0.00  GL_CheckError
  0.00    241.15     0.00   180149     0.00     0.00  CL_EntityNum
  0.00    241.15     0.00   171628     0.00     0.00  CRC_ProcessByte
  0.00    241.15     0.00   171338     0.00     0.00  GL_MakeAliasModelDisplayLists
  0.00    241.15     0.00   149735     0.00     0.00  HUD_DrawHUDModel
  0.00    241.15     0.00   145448     0.00     0.00  Q_sqrt
  0.00    241.15     0.00   145442     0.00     0.00  MSG_WriteByte
  0.00    241.15     0.00   136776     0.00     0.00  HUD_SetHUDState
  0.00    241.15     0.00   131428     0.00     0.00  Length
  0.00    241.15     0.00   117845     0.00     0.00  MSG_ReadAngle
  0.00    241.15     0.00    96236     0.00     0.00  R_AddTransformedBModelToList
  0.00    241.15     0.00    96236     0.00     0.00  R_InverseTransform
  0.00    241.15     0.00    95996     0.00     0.00  R_SignbitsForPlane
  0.00    241.15     0.00    93466     0.00     0.00  NormalizeFast
  0.00    241.15     0.00    85312     0.00     0.00  MD5_Compare
  0.00    241.15     0.00    73658     0.00     0.00  Sbar_itoa
  0.00    241.15     0.00    72618     0.00     0.00  MSG_WriteShort
  0.00    241.15     0.00    72024     0.00     0.00  MSG_WriteAngle
  0.00    241.15     0.00    71672     0.00     0.00  AngleVectors
  0.00    241.15     0.00    52107     0.00     0.00  V_CalcPowerupCshift
  0.00    241.15     0.00    50718     0.00     0.00  Heap_MemAlloc
  0.00    241.15     0.00    50458     0.00     0.00  Heap_MemAllocFree
  0.00    241.15     0.00    50289     0.00     0.00  R_TurbDepthOff
  0.00    241.15     0.00    48106     0.00     0.00  GetSoundtime
  0.00    241.15     0.00    48106     0.00     0.00  SNDDMA_GetDMAPos
  0.00    241.15     0.00    48106     0.00     0.00  SNDDMA_Submit
  0.00    241.15     0.00    48106     0.00     0.00  S_Update_
  0.00    241.15     0.00    48052     0.00     0.00  V_DropCShift
  0.00    241.15     0.00    47998     0.00     0.00  GL_SetViewPort
  0.00    241.15     0.00    47368     0.00     0.00  MSG_ReadByteShort
  0.00    241.15     0.00    46789     0.00     0.00  R_SetupAliasDraw
  0.00    241.15     0.00    46789     0.00     0.00  R_ShutdownAliasDraw
  0.00    241.15     0.00    46077     0.00     0.00  Cmd_Argc
  0.00    241.15     0.00    45786     0.00     0.00  angledelta
  0.00    241.15     0.00    45585     0.00     0.00  CharBlockBegin
  0.00    241.15     0.00    36409     0.00     0.00  Cvar_WriteVariables
  0.00    241.15     0.00    35661     0.00     0.00  CL_GetMessage
  0.00    241.15     0.00    35578     0.00     0.00  PF_WriteEntity
  0.00    241.15     0.00    35314     0.00     0.00  Heap_ZAlloc
  0.00    241.15     0.00    34830     0.00     0.00  M_DrawCharacter
  0.00    241.15     0.00    33615     0.00     0.00  R_UploadSingleLightmap
  0.00    241.15     0.00    32703     0.00     0.00  va_vsnprintf
  0.00    241.15     0.00    31518     0.00     0.00  va_snprintf
  0.00    241.15     0.00    29119     0.00     0.00  R_InitTorchSmokeParticle
  0.00    241.15     0.00    28081     0.00     0.00  V_CalcBlend
  0.00    241.15     0.00    28080     0.00     0.00  Mod_CalcSurfaceExtents
  0.00    241.15     0.00    28064     0.00     0.00  S_TransferPaintBuffer
  0.00    241.15     0.00    28064     0.00     0.00  S_TransferStereo16
  0.00    241.15     0.00    26846     0.00     0.00  GL_BuildPolygonFromSurface
  0.00    241.15     0.00    26816     0.00     0.00  GL_CreateSurfaceLightmap
  0.00    241.15     0.00    26670     0.00     0.00  SCR_CalcFov
  0.00    241.15     0.00    25826     0.00     0.00  COM_ParseString
  0.00    241.15     0.00    25607     0.00     0.00  SZ_Write
  0.00    241.15     0.00    25422     0.00     0.00  Cvar_FindVar
  0.00    241.15     0.00    25134     0.00     0.00  Cmd_Argv
  0.00    241.15     0.00    25024     0.00     0.00  SetNetTime
  0.00    241.15     0.00    24527     0.00     0.00  SZ_Clear
  0.00    241.15     0.00    24522     0.00     0.00  Cvar_Set
  0.00    241.15     0.00    24102     0.00     0.00  MSG_WriteFloat
  0.00    241.15     0.00    24098     0.00     0.00  S_ExtraUpdate
  0.00    241.15     0.00    24044     0.00     0.00  Cvar_SetValue
  0.00    241.15     0.00    24026     0.00     0.00  GL_BeginRendering
  0.00    241.15     0.00    24026     0.00     0.00  SCR_SetBrightness
  0.00    241.15     0.00    24026     0.00     0.00  SCR_SetUpToDrawConsole
  0.00    241.15     0.00    24026     0.00     0.00  V_RenderView
  0.00    241.15     0.00    24026     0.00     0.00  V_UpdatePalette
  0.00    241.15     0.00    24013     0.00     0.00  Sys_SendKeyEvents
  0.00    241.15     0.00    24012     0.00     0.00  CL_ReadFromServer
  0.00    241.15     0.00    24012     0.00     0.00  CL_SendCmd
  0.00    241.15     0.00    24012     0.00     0.00  Cbuf_Execute
  0.00    241.15     0.00    24012     0.00     0.00  Host_GetConsoleCommands
  0.00    241.15     0.00    24012     0.00     0.00  NET_Poll
  0.00    241.15     0.00    24012     0.00     0.00  Sys_ConsoleInput
  0.00    241.15     0.00    24008     0.00     0.00  CL_LerpPoint
  0.00    241.15     0.00    24005     0.00     0.00  CL_DecayLights
  0.00    241.15     0.00    24005     0.00     0.00  V_AddIdle
  0.00    241.15     0.00    24003     0.00     0.00  CL_AdjustAngles
  0.00    241.15     0.00    24003     0.00     0.00  CL_BaseMove
  0.00    241.15     0.00    24003     0.00     0.00  IN_MouseMove
  0.00    241.15     0.00    24003     0.00     0.00  IN_Move
  0.00    241.15     0.00    24003     0.00     0.00  V_StopPitchDrift
  0.00    241.15     0.00    24002     0.00     0.00  IN_MouseEvent
  0.00    241.15     0.00    23999     0.00     0.00  R_Bloom_DrawEffect
  0.00    241.15     0.00    23999     0.00     0.00  R_DrawParticles
  0.00    241.15     0.00    23999     0.00     0.00  R_DrawWorld
  0.00    241.15     0.00    23999     0.00     0.00  R_ExtractFrustum
  0.00    241.15     0.00    23999     0.00     0.00  R_InitDetailOnlyTMU
  0.00    241.15     0.00    23999     0.00     0.00  R_InitSurfVArrays
  0.00    241.15     0.00    23999     0.00     0.00  R_PolyBlend
  0.00    241.15     0.00    23999     0.00     0.00  R_RenderScene
  0.00    241.15     0.00    23999     0.00     0.00  R_SetupFrame
  0.00    241.15     0.00    23999     0.00     0.00  R_TransSortAliasEntities
  0.00    241.15     0.00    23999     0.00     0.00  V_SetContentsColor
  0.00    241.15     0.00    23902     0.00     0.00  R_FragOff
  0.00    241.15     0.00    23795     0.00     0.00  Cmd_TokenizeString
  0.00    241.15     0.00    22991     0.00     0.00  V_CalcRoll
  0.00    241.15     0.00    22908     0.00     0.00  M_Draw
  0.00    241.15     0.00    22908     0.00     0.00  SCR_CheckDrawCenterString
  0.00    241.15     0.00    22908     0.00     0.00  SCR_DrawConsole
  0.00    241.15     0.00    22908     0.00     0.00  SCR_DrawNet
  0.00    241.15     0.00    22908     0.00     0.00  SCR_DrawPause
  0.00    241.15     0.00    22908     0.00     0.00  SCR_DrawRam
  0.00    241.15     0.00    22908     0.00     0.00  SCR_DrawTurtle
  0.00    241.15     0.00    22908     0.00     0.00  Sbar_Draw
  0.00    241.15     0.00    22893     0.00     0.00  Draw_XHairWrapper
  0.00    241.15     0.00    22893     0.00     0.00  V_BoundOffsets
  0.00    241.15     0.00    22893     0.00     0.00  V_CalcBob
  0.00    241.15     0.00    22893     0.00     0.00  V_CalcViewRoll
  0.00    241.15     0.00    22893     0.00     0.00  V_DriftPitch
  0.00    241.15     0.00    22796     0.00     0.00  HUD_DrawAmmo
  0.00    241.15     0.00    22796     0.00     0.00  HUD_DrawArmour
  0.00    241.15     0.00    22796     0.00     0.00  HUD_DrawBits
  0.00    241.15     0.00    22796     0.00     0.00  HUD_DrawPowerups
  0.00    241.15     0.00    22796     0.00     0.00  HUD_DrawWeapons
  0.00    241.15     0.00    22796     0.00     0.00  Sbar_Draw3DModels
  0.00    241.15     0.00    22796     0.00     0.00  Sbar_DrawArmor
  0.00    241.15     0.00    22789     0.00     0.00  Con_DrawNotify
  0.00    241.15     0.00    22643     0.00     0.00  R_SetupAliasShadowDraw
  0.00    241.15     0.00    22643     0.00     0.00  R_ShutdownAliasShadowDraw
  0.00    241.15     0.00    21623     0.00     0.00  Draw_CachePic
  0.00    241.15     0.00    21302     0.00     0.00  R_ExecStateChangeForParticles
  0.00    241.15     0.00    17374     0.00     0.00  R_FragOn
  0.00    241.15     0.00    14112     0.00     0.00  R_RemoveEfrags
  0.00    241.15     0.00    11751     0.00     0.00  MSG_BeginReading
  0.00    241.15     0.00    11322     0.00     0.00  MSG_ReadFloat
  0.00    241.15     0.00    11251     0.00     0.00  MSG_ReadLong
  0.00    241.15     0.00    10740     0.00     0.00  R_DrawLavaSmokeEffect
  0.00    241.15     0.00    10352     0.00     0.00  Mod_LeafPVS
  0.00    241.15     0.00    10194     0.00     0.00  BoundPoly
  0.00    241.15     0.00     8890     0.00     0.00  strlcpy
  0.00    241.15     0.00     8311     0.00     0.00  R_AddStain
  0.00    241.15     0.00     8288     0.00     0.00  R_DrawSpriteModel
  0.00    241.15     0.00     7948     0.00     0.00  COM_FOpenFile
  0.00    241.15     0.00     7948     0.00     0.00  COM_FOpenFileRead
  0.00    241.15     0.00     7948     0.00     0.00  COM_HandleForFile
  0.00    241.15     0.00     7874     0.00     0.00  HUD_DrawIndividualPowerup
  0.00    241.15     0.00     7300     0.00     0.00  R_SetupVolumeEffect
  0.00    241.15     0.00     7300     0.00     0.00  R_ShutDownVolumeEffect
  0.00    241.15     0.00     6024     0.00     0.00  SNDGetLittleLong
  0.00    241.15     0.00     5663     0.00     0.00  CL_AllocDlight
  0.00    241.15     0.00     5590     0.00     0.00  Mod_DecompressVis
  0.00    241.15     0.00     5590     0.00     0.00  Sbar_IntermissionNumber
  0.00    241.15     0.00     5276     0.00     0.00  HUD_DrawIndividualBit
  0.00    241.15     0.00     4952     0.00     0.00  pr_ChkEdict
  0.00    241.15     0.00     4518     0.00     0.00  COM_FGetcLittleShort
  0.00    241.15     0.00     4232     0.00     0.00  pr_ChkEField
  0.00    241.15     0.00     3879     0.00     0.00  MD5Update
  0.00    241.15     0.00     3857     0.00     0.00  SCR_DrawCenterString
  0.00    241.15     0.00     3717     0.00     0.00  SND_PickChannel
  0.00    241.15     0.00     3717     0.00     0.00  S_StartSound
  0.00    241.15     0.00     3685     0.00     0.00  MSG_ReadByteShort2
  0.00    241.15     0.00     3599     0.00     0.00  Mod_RadiusFromBounds
  0.00    241.15     0.00     3431     0.00     0.00  CL_ParseStartSoundPacket
  0.00    241.15     0.00     3242     0.00     0.00  SV_AddToFatPVS
  0.00    241.15     0.00     3242     0.00     0.00  SV_FatPVS
  0.00    241.15     0.00     3177     0.00     0.00  Mod_LoadAliasFrame
  0.00    241.15     0.00     3148     0.00     0.00  R_SetupAliasUnderwaterDraw
  0.00    241.15     0.00     3148     0.00     0.00  R_ShutdownAliasUnderwaterDraw
  0.00    241.15     0.00     2890     0.00     0.00  GL_InitTextureSlot
  0.00    241.15     0.00     2631     0.00     0.00  FindNextChunk
  0.00    241.15     0.00     2572     0.00     0.00  FindChunk
  0.00    241.15     0.00     2541     0.00     0.00  GL_LoadPNG
  0.00    241.15     0.00     2210     0.00     0.00  Sys_Printf
  0.00    241.15     0.00     1929     0.00     0.00  SNDGetLittleShort
  0.00    241.15     0.00     1926     0.00     0.00  COM_Read
  0.00    241.15     0.00     1838     0.00     0.00  pr_ChkGlobalsF
  0.00    241.15     0.00     1811     0.00     0.00  CL_NewTempEntity
  0.00    241.15     0.00     1734     0.00     0.00  COM_FCloseFile
  0.00    241.15     0.00     1645     0.00     0.00  pr_ChkFunction
  0.00    241.15     0.00     1564     0.00     0.00  unzGoToFirstFile
  0.00    241.15     0.00     1427     0.00     0.01  GL_TryForExternalTexture
  0.00    241.15     0.00     1345     0.00     0.00  GL_LoadBMP
  0.00    241.15     0.00     1345     0.00     0.00  GL_LoadPCX
  0.00    241.15     0.00     1293     0.00     0.00  MD5Final
  0.00    241.15     0.00     1293     0.00     0.00  MD5Init
  0.00    241.15     0.00     1293     0.00     0.00  MD5_Checksum
  0.00    241.15     0.00     1291     0.00     0.00  R_ParseParticleEffect
  0.00    241.15     0.00     1290     0.00     0.00  R_BloodParticleSplash
  0.00    241.15     0.00     1273     0.00     0.00  GL_UploadTextureToOpenGL
  0.00    241.15     0.00     1270     0.00     0.00  GL_MakeTextureObjects
  0.00    241.15     0.00     1246     0.00     0.00  CL_KeepaliveMessage
  0.00    241.15     0.00     1236     0.00     0.00  COM_FileBase
  0.00    241.15     0.00     1118     0.00     0.00  Sbar_IntermissionOverlay
  0.00    241.15     0.00     1112     0.00     0.00  V_CalcIntermissionRefdef
  0.00    241.15     0.00     1071     0.00     0.00  R_SmokeEffect
  0.00    241.15     0.00     1055     0.00     0.00  Mod_FindName
  0.00    241.15     0.00     1042     0.00     0.00  PR_EnterFunction
  0.00    241.15     0.00     1042     0.00     0.00  PR_LeaveFunction
  0.00    241.15     0.00      970     0.00     0.00  GL_SubdivideSurface
  0.00    241.15     0.00      970     0.00     0.00  SubdividePolygon
  0.00    241.15     0.00      953     0.00     0.00  COM_LoadTempFile
  0.00    241.15     0.00      949     0.00     0.00  CL_ParseTEnt
  0.00    241.15     0.00      947     0.00     0.00  Heap_ScratchZAlloc
  0.00    241.15     0.00      945     0.00     0.00  Con_DPrintf
  0.00    241.15     0.00      902     0.00     0.00  Cmd_ExecuteString
  0.00    241.15     0.00      856     0.00     0.00  strlcat
  0.00    241.15     0.00      843     0.00     0.02  GL_LoadQuakeTexture
  0.00    241.15     0.00      828     0.00     0.00  pr_GetString
  0.00    241.15     0.00      784     0.00     0.00  unzOpen
  0.00    241.15     0.00      784     0.00     0.00  unzOpen2
  0.00    241.15     0.00      782     0.00     0.00  fclose_file_func
  0.00    241.15     0.00      782     0.00     0.00  ftell_file_func
  0.00    241.15     0.00      782     0.00     0.00  unzClose
  0.00    241.15     0.00      780     0.00     0.00  unzCloseCurrentFile
  0.00    241.15     0.00      780     0.00     0.00  unzOpenCurrentFile
  0.00    241.15     0.00      780     0.00     0.00  unzOpenCurrentFile3
  0.00    241.15     0.00      770     0.00     0.00  GL_GetTextureSlotInCache
  0.00    241.15     0.00      709     0.00     0.00  pr_ChkGlobals
  0.00    241.15     0.00      707     0.00     0.00  R_RunGunshotEffect
  0.00    241.15     0.00      687     0.00     0.02  Mod_ForName
  0.00    241.15     0.00      687     0.00     0.02  Mod_LoadModel
  0.00    241.15     0.00      643     0.00     0.00  GetWavinfo
  0.00    241.15     0.00      643     0.00     0.00  ResampleSfx
  0.00    241.15     0.00      634     0.00     0.00  S_FindName
  0.00    241.15     0.00      634     0.00     0.00  S_PrecacheSound
  0.00    241.15     0.00      621     0.00     0.00  SV_RunThink
  0.00    241.15     0.00      607     0.00     0.00  Cbuf_AddText
  0.00    241.15     0.00      594     0.00     0.00  M_PrintWhite
  0.00    241.15     0.00      571     0.00     0.00  Con_Linefeed
  0.00    241.15     0.00      540     0.00     0.00  M_Print
  0.00    241.15     0.00      521     0.00     0.00  Key_Event
  0.00    241.15     0.00      514     0.00     0.00  MD5_Copy
  0.00    241.15     0.00      499     0.00     0.00  Loop_GetMessage
  0.00    241.15     0.00      499     0.00     0.00  NET_GetMessage
  0.00    241.15     0.00      483     0.00     0.00  Cbuf_AddText2
  0.00    241.15     0.00      472     0.00     0.00  Con_Printf
  0.00    241.15     0.00      465     0.00     0.00  Con_Print
  0.00    241.15     0.00      442     0.00     0.00  Con_SafePrintf
  0.00    241.15     0.00      409     0.00     0.00  V_cshift_f
  0.00    241.15     0.00      404     0.00     0.00  Cvar_VariableValue
  0.00    241.15     0.00      404     0.00     0.00  PF_cvar
  0.00    241.15     0.00      402     0.00     0.00  R_AddTexturesToListForModel
  0.00    241.15     0.00      398     0.00     0.00  MSG_WriteString
  0.00    241.15     0.00      352     0.00     0.00  MakeResamplePoint
  0.00    241.15     0.00      335     0.00     0.00  PR_ExecuteProgram
  0.00    241.15     0.00      318     0.00     0.00  GL_FlushTextureCache
  0.00    241.15     0.00      303     0.00     0.00  MSG_WriteCoord
  0.00    241.15     0.00      284     0.00     0.00  MarkSurfaceVolumesInLeaf
  0.00    241.15     0.00      254     0.00     0.00  CL_ParseStaticSound
  0.00    241.15     0.00      254     0.00     0.00  S_StaticSound
  0.00    241.15     0.00      241     0.00     0.00  Mod_FloodFillSkin
  0.00    241.15     0.00      231     0.00     0.00  BuildTris
  0.00    241.15     0.00      231     0.00     0.02  Mod_LoadAliasModel
  0.00    241.15     0.00      231     0.00     0.02  Mod_LoadAllSkins
  0.00    241.15     0.00      208     0.00     0.00  PF_VarString
  0.00    241.15     0.00      198     0.00     0.00  SV_ClipMoveToEntity
  0.00    241.15     0.00      198     0.00     0.00  SV_ClipToLinks
  0.00    241.15     0.00      198     0.00     0.00  SV_HullForEntity
  0.00    241.15     0.00      198     0.00     0.00  SV_Move
  0.00    241.15     0.00      198     0.00     0.00  SV_MoveBounds
  0.00    241.15     0.00      194     0.00     0.00  Loop_SendUnreliableMessage
  0.00    241.15     0.00      194     0.00     0.00  NET_SendUnreliableMessage
  0.00    241.15     0.00      193     0.00     0.00  W_CleanupName
  0.00    241.15     0.00      184     0.00     0.00  SwapPic
  0.00    241.15     0.00      177     0.00     0.00  Cmd_Exists
  0.00    241.15     0.00      177     0.00     0.00  Cvar_RegisterVariable
  0.00    241.15     0.00      175     0.00     0.00  Cvar_Command
  0.00    241.15     0.00      165     0.00     0.00  Key_SetBinding
  0.00    241.15     0.00      149     0.00     0.00  CL_ParseStatic
  0.00    241.15     0.00      149     0.00     0.00  R_AddEfrags
  0.00    241.15     0.00      149     0.00     0.00  R_SplitEntityOnNode
  0.00    241.15     0.00      146     0.00     0.00  Heap_Alloc
  0.00    241.15     0.00      144     0.00     0.00  Cmd_AddCommand
  0.00    241.15     0.00      144     0.00     0.00  Cvar_VariableString
  0.00    241.15     0.00      137     0.00     0.00  MHGLGetProcAddress
  0.00    241.15     0.00      137     0.00     0.00  R_ParticleExplosion
  0.00    241.15     0.00      136     0.00     0.00  CL_AllocDlightForTEnt
  0.00    241.15     0.00      136     0.00     0.00  R_SmokeSplash
  0.00    241.15     0.00      135     0.00     0.00  M_DrawTransPic
  0.00    241.15     0.00      134     0.00     0.00  SCR_CenterPrint
  0.00    241.15     0.00      123     0.00     0.00  SV_LinkEdict
  0.00    241.15     0.00      114     0.00     0.00  NUM_FOR_EDICT
  0.00    241.15     0.00      114     0.00     0.00  PF_lightstyle
  0.00    241.15     0.00      109     0.00     0.00  pr_GetEdict
  0.00    241.15     0.00      108     0.00     0.00  PF_localcmd
  0.00    241.15     0.00      107     0.00     0.00  InsertLinkBefore
  0.00    241.15     0.00      107     0.00     0.00  PF_bprint
  0.00    241.15     0.00      107     0.00     0.00  SV_BroadcastPrintf
  0.00    241.15     0.00      107     0.00     0.00  SV_UnlinkEdict
  0.00    241.15     0.00      107     0.00     0.00  pr_String
  0.00    241.15     0.00      106     0.00     0.00  Loop_CanSendMessage
  0.00    241.15     0.00      106     0.00     0.00  Loop_SendMessage
  0.00    241.15     0.00      106     0.00     0.00  NET_CanSendMessage
  0.00    241.15     0.00      106     0.00     0.00  NET_SendMessage
  0.00    241.15     0.00      106     0.00     0.00  RemoveLink
  0.00    241.15     0.00      104     0.00     0.00  Key_Bind_f
  0.00    241.15     0.00      104     0.00     0.00  Key_StringToKeynum
  0.00    241.15     0.00      104     0.00     0.00  MSG_WriteLong
  0.00    241.15     0.00      103     0.00     0.00  SV_Physics
  0.00    241.15     0.00      103     0.00     0.00  SV_Physics_Pusher
  0.00    241.15     0.00      103     0.00     0.00  SV_TouchLinks
  0.00    241.15     0.00      102     0.00     0.00  Loop_CheckNewConnections
  0.00    241.15     0.00      102     0.00     0.00  MSG_WriteByteShort
  0.00    241.15     0.00      102     0.00     0.00  NET_CheckNewConnections
  0.00    241.15     0.00      102     0.00     0.00  SV_ModelIndex
  0.00    241.15     0.00      101     0.00     0.00  Datagram_CheckNewConnections
  0.00    241.15     0.00      101     0.00     0.00  Host_ServerFrame
  0.00    241.15     0.00      101     0.00     0.00  MSG_WriteChar
  0.00    241.15     0.00      101     0.00     0.00  PF_centerprint
  0.00    241.15     0.00      101     0.00     0.00  SV_CheckForNewClients
  0.00    241.15     0.00      101     0.00     0.00  SV_CheckVelocity
  0.00    241.15     0.00      101     0.00     0.00  SV_CleanupEnts
  0.00    241.15     0.00      101     0.00     0.00  SV_ClearDatagram
  0.00    241.15     0.00      101     0.00     0.00  SV_ReadClientMessage
  0.00    241.15     0.00      101     0.00     0.00  SV_RunClients
  0.00    241.15     0.00      101     0.00     0.00  SV_SendClientMessages
  0.00    241.15     0.00      101     0.00     0.00  SV_UpdateToReliableMessages
  0.00    241.15     0.00      101     0.00     0.00  V_BonusFlash_f
  0.00    241.15     0.00      101     0.00     0.00  WINS_CheckNewConnections
  0.00    241.15     0.00       99     0.00     0.00  DrawMenuBackground
  0.00    241.15     0.00       99     0.00     0.00  PF_makevectors
  0.00    241.15     0.00       99     0.00     0.00  SV_AddGravity
  0.00    241.15     0.00       99     0.00     0.00  SV_CheckStuck
  0.00    241.15     0.00       99     0.00     0.00  SV_CheckWater
  0.00    241.15     0.00       99     0.00     0.00  SV_FlyMove
  0.00    241.15     0.00       99     0.00     0.00  SV_HullPointContents
  0.00    241.15     0.00       99     0.00     0.00  SV_PointContents
  0.00    241.15     0.00       99     0.00     0.00  SV_SetIdealPitch
  0.00    241.15     0.00       99     0.00     0.00  SV_TestEntityPosition
  0.00    241.15     0.00       99     0.00     0.00  SV_WalkMove
  0.00    241.15     0.00       99     0.00     0.00  SV_WriteClientdataToMessage
  0.00    241.15     0.00       98     0.00     0.00  SV_AirAccelerate
  0.00    241.15     0.00       98     0.00     0.00  SV_AirMove
  0.00    241.15     0.00       98     0.00     0.00  SV_ClientThink
  0.00    241.15     0.00       98     0.00     0.00  SV_DropPunchAngle
  0.00    241.15     0.00       98     0.00     0.00  SV_SendClientDatagram
  0.00    241.15     0.00       98     0.00     0.00  SV_WriteEntitiesToClient
  0.00    241.15     0.00       95     0.00     0.00  SV_ReadClientMove
  0.00    241.15     0.00       92     0.00     0.00  PR_CheckEmptyString
  0.00    241.15     0.00       88     0.00     0.00  MarkStragglePVSForLeaf
  0.00    241.15     0.00       66     0.00     0.00  Draw_ConsoleBackground
  0.00    241.15     0.00       66     0.00     0.00  PF_precache_sound
  0.00    241.15     0.00       64     0.00     0.02  GL_AllocateLightmap
  0.00    241.15     0.00       61     0.00     0.00  COM_CheckParm
  0.00    241.15     0.00       50     0.00     0.00  V_ParseDamage
  0.00    241.15     0.00       48     0.00     0.02  Mod_LoadSpriteFrame
  0.00    241.15     0.00       46     0.00     0.00  Draw_FadeScreen
  0.00    241.15     0.00       45     0.00     0.00  M_DrawPic
  0.00    241.15     0.00       45     0.00     0.00  M_Main_Draw
  0.00    241.15     0.00       40     0.00     0.00  R_RunParticleEffect
  0.00    241.15     0.00       39     0.00     0.00  Mod_CheckWorldMap
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadBSPLighting
  0.00    241.15     0.00       39     0.00     0.20  Mod_LoadBrushModel
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadClipnodes
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadEdges
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadEntities
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadFaces
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadLeafs
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadLighting
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadMarksurfaces
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadNodes
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadPlanes
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadSubmodels
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadSurfedges
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadTexinfo
  0.00    241.15     0.00       39     0.00     0.20  Mod_LoadTextures
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadVertexes
  0.00    241.15     0.00       39     0.00     0.00  Mod_MakeHull0
  0.00    241.15     0.00       39     0.00     0.00  Mod_SetParent
  0.00    241.15     0.00       35     0.00     0.02  Mod_Load3DSkinnedWidget
  0.00    241.15     0.00       34     0.00     0.00  R_TeleportSplash
  0.00    241.15     0.00       32     0.00     0.00  CL_ParseBeam
  0.00    241.15     0.00       32     0.00     0.02  Mod_Load3DWidget
  0.00    241.15     0.00       31     0.00     0.00  GL_MakeDisplayListObjects
  0.00    241.15     0.00       30     0.00     0.00  W_GetLumpName
  0.00    241.15     0.00       30     0.00     0.00  W_GetLumpinfo
  0.00    241.15     0.00       29     0.00     0.02  Draw_PicFromWad
  0.00    241.15     0.00       26     0.00     0.00  Key_KeynumToString
  0.00    241.15     0.00       26     0.00     0.00  Mod_DrawWidgetFrame
  0.00    241.15     0.00       26     0.00     0.02  PF_precache_model
  0.00    241.15     0.00       25     0.00     0.00  CL_SignonReply
  0.00    241.15     0.00       24     0.00     0.00  Mod_SetupWidgetFrame
  0.00    241.15     0.00       24     0.00     0.01  R_TranslatePlayerSkin
  0.00    241.15     0.00       23     0.00     0.00  COM_ParseToken
  0.00    241.15     0.00       23     0.00     0.00  GL_SetLiquidColour
  0.00    241.15     0.00       22     0.00     0.00  CDAudio_Stop
  0.00    241.15     0.00       21     0.00     0.00  EDICT_NUM
  0.00    241.15     0.00       21     0.00     0.00  S_ClearBuffer
  0.00    241.15     0.00       21     0.00     0.00  S_StopAllSounds
  0.00    241.15     0.00       20     0.00     0.00  Con_DrawConsole
  0.00    241.15     0.00       20     0.00     0.00  Con_DrawInput
  0.00    241.15     0.00       19     0.00     0.00  ED_FindField
  0.00    241.15     0.00       15     0.00     0.00  Mod_LoadAliasGroup
  0.00    241.15     0.00       14     0.00     0.00  pr_GetEString
  0.00    241.15     0.00       13     0.00     0.01  CL_NewTranslation
  0.00    241.15     0.00       13     0.00     0.00  Cbuf_InsertText
  0.00    241.15     0.00       13     0.00     0.00  Cmd_Alias_f
  0.00    241.15     0.00       13     0.00     0.00  Cmd_CopyString
  0.00    241.15     0.00       12     0.00     0.00  CL_Disconnect
  0.00    241.15     0.00       12     0.00     0.00  MIDAS_Stop
  0.00    241.15     0.00       12     0.00     0.07  Mod_LoadSpriteModel
  0.00    241.15     0.00       11     0.00     0.00  ED_FindFieldOffset
  0.00    241.15     0.00       11     0.00     0.00  Heap_FreeToLowMark
  0.00    241.15     0.00        9     0.00     0.00  CDAudio_Play
  0.00    241.15     0.00        9     0.00     0.00  MapKey
  0.00    241.15     0.00        8     0.00     0.00  Con_ClearNotify
  0.00    241.15     0.00        8     0.00     0.00  ED_ChkEdict
  0.00    241.15     0.00        8     0.00     0.00  ED_ParseEpair
  0.00    241.15     0.00        7     0.00     0.00  ED_Alloc
  0.00    241.15     0.00        7     0.00     0.00  ED_ClearEdict
  0.00    241.15     0.00        7     0.00     0.00  Heap_LowMark
  0.00    241.15     0.00        6     0.00     0.00  CL_ClearState
  0.00    241.15     0.00        6     0.00     2.19  CL_ParseServerInfo
  0.00    241.15     0.00        6     0.00     0.00  COM_LoadHunkFile
  0.00    241.15     0.00        6     0.00     0.00  COM_LoadPackFile
  0.00    241.15     0.00        6     0.00     0.00  Draw_AlphaPic
  0.00    241.15     0.00        6     0.00     0.20  GL_BuildLightmaps
  0.00    241.15     0.00        6     0.00     0.00  GL_TextureAging
  0.00    241.15     0.00        6     0.00     0.00  Host_ClearMemory
  0.00    241.15     0.00        6     0.00     0.00  Mod_ClearAll
  0.00    241.15     0.00        6     0.00     0.00  R_BuildTextureList
  0.00    241.15     0.00        6     0.00     0.00  R_ClearLightmaps
  0.00    241.15     0.00        6     0.00     0.00  R_ClearParticles
  0.00    241.15     0.00        6     0.00     0.00  R_FindWorldSpawnEntry
  0.00    241.15     0.00        6     0.00     0.00  R_InitColourTexture
  0.00    241.15     0.00        6     0.00     0.20  R_NewMap
  0.00    241.15     0.00        6     0.00     0.00  SCR_EndLoadingPlaque
  0.00    241.15     0.00        6     0.00     0.00  S_ClearAll
  0.00    241.15     0.00        6     0.00     0.00  WorldVolumeCarve
  0.00    241.15     0.00        5     0.00     0.00  CL_CloseDemoFile
  0.00    241.15     0.00        5     0.00     0.00  CL_PlayDemo_f
  0.00    241.15     0.00        5     0.00     0.00  CL_StopPlayback
  0.00    241.15     0.00        5     0.00     0.00  COM_DefaultExtension
  0.00    241.15     0.00        5     0.00     0.00  COM_FOpenDemoFile
  0.00    241.15     0.00        5     0.00     0.01  GL_LoadBitmapResourceTexture
  0.00    241.15     0.00        5     0.00     0.00  IN_ActivateMouse
  0.00    241.15     0.00        5     0.00     0.00  Mod_DrawWidgetBrushModel
  0.00    241.15     0.00        5     0.00     0.00  PF_Spawn
  0.00    241.15     0.00        5     0.00     0.00  R_InitSky
  0.00    241.15     0.00        4     0.00     0.00  COM_LoadPK3File
  0.00    241.15     0.00        4     0.00     0.00  CRC_Block
  0.00    241.15     0.00        4     0.00     0.00  Cmd_Exec_f
  0.00    241.15     0.00        4     0.00     0.00  ED_NewString
  0.00    241.15     0.00        4     0.00     0.00  GL_CheckExtension
  0.00    241.15     0.00        4     0.00     0.00  Host_EndGame
  0.00    241.15     0.00        4     0.00     0.00  Loop_Close
  0.00    241.15     0.00        3     0.00     0.00  CL_FixIntermission
  0.00    241.15     0.00        3     0.00     0.00  COM_LoadHeapFile
  0.00    241.15     0.00        3     0.00     0.00  ED_FindFunction
  0.00    241.15     0.00        3     0.00     0.00  ED_ParseEdict
  0.00    241.15     0.00        3     0.00     0.00  Host_ShutdownServer
  0.00    241.15     0.00        3     0.00     0.00  IN_DeactivateMouse
  0.00    241.15     0.00        3     0.00     0.00  IN_HideMouse
  0.00    241.15     0.00        3     0.00     0.00  IN_ShowMouse
  0.00    241.15     0.00        3     0.00     0.00  IN_StartupMouse
  0.00    241.15     0.00        3     0.00     0.21  M_Keydown
  0.00    241.15     0.00        3     0.00     0.00  R_SetAnisotropicFilter
  0.00    241.15     0.00        3     0.00     0.00  SZ_Alloc
  0.00    241.15     0.00        3     0.00     0.00  S_LocalSound
  0.00    241.15     0.00        3     0.00     0.00  SetMinMaxSize
  0.00    241.15     0.00        3     0.00     0.00  VID_SetPalette
  0.00    241.15     0.00        2     0.00     0.00  AppActivate
  0.00    241.15     0.00        2     0.00     0.00  COM_AddGameDirectory
  0.00    241.15     0.00        2     0.00     0.31  ClearAllStates
  0.00    241.15     0.00        2     0.00     0.00  ClearLink
  0.00    241.15     0.00        2     0.00     0.00  Cmd_Wait_f
  0.00    241.15     0.00        2     0.00     0.00  ED_Free
  0.00    241.15     0.00        2     0.00     0.00  GL_AlphaMaskTexture
  0.00    241.15     0.00        2     0.00     0.00  GL_RemakeSurfaceLightmaps
  0.00    241.15     0.00        2     0.00     0.00  IN_ClearStates
  0.00    241.15     0.00        2     0.00     0.00  IN_Shutdown
  0.00    241.15     0.00        2     0.00     0.00  IN_UpdateClipCursor
  0.00    241.15     0.00        2     0.00     0.00  Key_ClearStates
  0.00    241.15     0.00        2     0.00     0.00  Key_Unbindall_f
  0.00    241.15     0.00        2     0.00     0.00  M_Main_Key
  0.00    241.15     0.00        2     0.00     0.00  NET_Close
  0.00    241.15     0.00        2     0.00     0.00  NET_FreeQSocket
  0.00    241.15     0.00        2     0.00     0.00  NET_NewQSocket
  0.00    241.15     0.00        2     0.00     0.00  PF_Find
  0.00    241.15     0.00        2     0.00     0.00  PF_Remove
  0.00    241.15     0.00        2     0.00     0.00  PF_setsize
  0.00    241.15     0.00        2     0.00     0.00  R_Bloom_InitBackUpTexture
  0.00    241.15     0.00        2     0.00     0.00  R_Bloom_InitEffectTexture
  0.00    241.15     0.00        2     0.00     0.00  R_Bloom_InitTextures
  0.00    241.15     0.00        2     0.00     0.04  R_InitParticles
  0.00    241.15     0.00        2     0.00     0.00  SCR_BeginLoadingPlaque
  0.00    241.15     0.00        2     0.00     0.00  SNDDMA_Shutdown
  0.00    241.15     0.00        2     0.00     0.00  S_BlockSound
  0.00    241.15     0.00        2     0.00     0.00  VID_EnumFullDIB
  0.00    241.15     0.00        2     0.00     0.00  VID_UpdateWindowStatus
  0.00    241.15     0.00        2     0.00     0.00  WINS_CloseSocket
  0.00    241.15     0.00        2     0.00     0.00  WINS_Listen
  0.00    241.15     0.00        2     0.00     0.00  WINS_OpenSocket
  0.00    241.15     0.00        2     0.00     0.00  unzGetGlobalInfo
  0.00    241.15     0.00        1     0.00     0.00  CDAudio_Init
  0.00    241.15     0.00        1     0.00     0.00  CDAudio_Pause
  0.00    241.15     0.00        1     0.00     0.00  CDAudio_Resume
  0.00    241.15     0.00        1     0.00     0.00  CDAudio_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  CL_EstablishConnection
  0.00    241.15     0.00        1     0.00     0.00  CL_Init
  0.00    241.15     0.00        1     0.00     0.00  CL_InitInput
  0.00    241.15     0.00        1     0.00     0.00  CL_InitTEnts
  0.00    241.15     0.00        1     0.00     0.00  COM_CheckRegistered
  0.00    241.15     0.00        1     0.00     0.00  COM_FileLength
  0.00    241.15     0.00        1     0.00     0.00  COM_Init
  0.00    241.15     0.00        1     0.00     0.00  COM_InitArgv
  0.00    241.15     0.00        1     0.00     0.00  COM_InitFilesystem
  0.00    241.15     0.00        1     0.00     0.00  CRC_Init
  0.00    241.15     0.00        1     0.00     0.00  Cbuf_Init
  0.00    241.15     0.00        1     0.00     0.00  Chase_Init
  0.00    241.15     0.00        1     0.00     0.00  Cmd_Init
  0.00    241.15     0.00        1     0.00     0.00  Cmd_StuffCmds_f
  0.00    241.15     0.00        1     0.00     0.00  Con_Init
  0.00    241.15     0.00        1     0.00     0.00  Cvar_SetDirect
  0.00    241.15     0.00        1     0.00     0.00  Cvar_SetValueDirect
  0.00    241.15     0.00        1     0.00     0.00  Datagram_Init
  0.00    241.15     0.00        1     0.00     0.00  Datagram_Listen
  0.00    241.15     0.00        1     0.00     0.00  Datagram_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  DeinitConProc
  0.00    241.15     0.00        1     0.00     0.05  Draw_Init
  0.00    241.15     0.00        1     0.00     0.00  ED_FindEdictFieldValues
  0.00    241.15     0.00        1     0.00     0.00  ED_LoadFromFile
  0.00    241.15     0.00        1     0.00     0.00  GL_DeleteAllTextures
  0.00    241.15     0.00        1     0.00     0.00  GL_GetFunctionPointers
  0.00    241.15     0.00        1     0.00     0.00  GL_Init
  0.00    241.15     0.00        1     0.00     0.00  GL_InitRenderState
  0.00    241.15     0.00        1     0.00     0.00  GL_InitShaders
  0.00    241.15     0.00        1     0.00     0.00  GL_InitState
  0.00    241.15     0.00        1     0.00     0.00  GL_InitTextureCache
  0.00    241.15     0.00        1     0.00     0.00  GL_SetupState
  0.00    241.15     0.00        1     0.00     0.00  Host_Begin_f
  0.00    241.15     0.00        1     0.00     0.00  Host_Color_f
  0.00    241.15     0.00        1     0.00     0.00  Host_Connect_f
  0.00    241.15     0.00        1     0.00     0.00  Host_FindMaxClients
  0.00    241.15     0.00        1     0.00     1.66  Host_Init
  0.00    241.15     0.00        1     0.00     0.00  Host_InitCommands
  0.00    241.15     0.00        1     0.00     0.00  Host_InitLocal
  0.00    241.15     0.00        1     0.00     0.00  Host_InitVCR
  0.00    241.15     0.00        1     0.00     0.03  Host_Map_f
  0.00    241.15     0.00        1     0.00     0.00  Host_Name_f
  0.00    241.15     0.00        1     0.00     0.00  Host_PreSpawn_f
  0.00    241.15     0.00        1     0.00     0.62  Host_Quit_f
  0.00    241.15     0.00        1     0.00     0.00  Host_Reconnect_f
  0.00    241.15     0.00        1     0.00     0.09  Host_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  Host_Spawn_f
  0.00    241.15     0.00        1     0.00     0.00  Host_WriteConfiguration
  0.00    241.15     0.00        1     0.00     0.00  IN_Impulse
  0.00    241.15     0.00        1     0.00     0.00  IN_Init
  0.00    241.15     0.00        1     0.00     0.00  Key_Init
  0.00    241.15     0.00        1     0.00     0.00  Key_WriteBindings
  0.00    241.15     0.00        1     0.00     0.00  Loop_Connect
  0.00    241.15     0.00        1     0.00     0.00  Loop_Init
  0.00    241.15     0.00        1     0.00     0.00  Loop_Listen
  0.00    241.15     0.00        1     0.00     0.00  Loop_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  MIDAS_Init
  0.00    241.15     0.00        1     0.00     0.00  M_Init
  0.00    241.15     0.00        1     0.00     0.00  M_Menu_Main_f
  0.00    241.15     0.00        1     0.00     0.00  M_Menu_Quit_f
  0.00    241.15     0.00        1     0.00     0.00  M_ToggleMenu_f
  0.00    241.15     0.00        1     0.00     0.00  Mod_Init
  0.00    241.15     0.00        1     0.00     0.00  NET_Connect
  0.00    241.15     0.00        1     0.00     0.00  NET_Init
  0.00    241.15     0.00        1     0.00     0.00  NET_SendToAll
  0.00    241.15     0.00        1     0.00     0.00  NET_SendToAll2
  0.00    241.15     0.00        1     0.00     0.00  NET_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  PF_ftos
  0.00    241.15     0.00        1     0.00     0.00  PF_setmodel
  0.00    241.15     0.00        1     0.00     0.00  PF_setorigin
  0.00    241.15     0.00        1     0.00     0.00  PR_Init
  0.00    241.15     0.00        1     0.00     0.00  PR_LoadProgs
  0.00    241.15     0.00        1     0.00     0.00  PR_RunClear
  0.00    241.15     0.00        1     0.00     0.00  Q_randinit
  0.00    241.15     0.00        1     0.00     0.13  R_Init
  0.00    241.15     0.00        1     0.00     0.00  R_InitBloomTextures
  0.00    241.15     0.00        1     0.00     0.01  R_InitCausticTexture
  0.00    241.15     0.00        1     0.00     0.00  R_InitDSTTex
  0.00    241.15     0.00        1     0.00     0.00  R_InitDetailTexture
  0.00    241.15     0.00        1     0.00     0.00  R_InitFractalNoise
  0.00    241.15     0.00        1     0.00     0.06  R_InitHCTextures
  0.00    241.15     0.00        1     0.00     0.00  R_InitNormCubeMap
  0.00    241.15     0.00        1     0.00     0.01  R_InitParticleTexture
  0.00    241.15     0.00        1     0.00     0.03  R_InitSkySphere
  0.00    241.15     0.00        1     0.00     0.03  R_InitSurfStuff
  0.00    241.15     0.00        1     0.00     0.00  R_InitTextures
  0.00    241.15     0.00        1     0.00     0.01  R_InitXHairTexture
  0.00    241.15     0.00        1     0.00     0.05  SCR_Init
  0.00    241.15     0.00        1     0.00     0.00  SCR_SizeUp_f
  0.00    241.15     0.00        1     0.00     0.00  SNDDMA_Init
  0.00    241.15     0.00        1     0.00     0.00  SNDDMA_InitDirect
  0.00    241.15     0.00        1     0.00     0.00  SND_InitScaletable
  0.00    241.15     0.00        1     0.00     0.00  SV_ClearWorld
  0.00    241.15     0.00        1     0.00     0.00  SV_ConnectClient
  0.00    241.15     0.00        1     0.00     0.00  SV_CreateAreaNode
  0.00    241.15     0.00        1     0.00     0.00  SV_CreateBaseline
  0.00    241.15     0.00        1     0.00     0.00  SV_DropClient
  0.00    241.15     0.00        1     0.00     0.00  SV_Init
  0.00    241.15     0.00        1     0.00     0.00  SV_InitBoxHull
  0.00    241.15     0.00        1     0.00     0.00  SV_SendServerinfo
  0.00    241.15     0.00        1     0.00     0.03  SV_SpawnServer
  0.00    241.15     0.00        1     0.00     0.00  S_FreeSound
  0.00    241.15     0.00        1     0.00     0.00  S_Init
  0.00    241.15     0.00        1     0.00     0.00  S_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  S_Startup
  0.00    241.15     0.00        1     0.00     0.00  S_UnblockSound
  0.00    241.15     0.00        1     0.00     1.11  Sbar_Init
  0.00    241.15     0.00        1     0.00     0.00  Sys_Init
  0.00    241.15     0.00        1     0.00     0.00  Sys_InitDoubleTime
  0.00    241.15     0.00        1     0.00     0.31  VID_Init
  0.00    241.15     0.00        1     0.00     0.00  VID_InitDIB
  0.00    241.15     0.00        1     0.00     0.00  VID_InitFullDIB
  0.00    241.15     0.00        1     0.00     0.00  VID_Menu_Init
  0.00    241.15     0.00        1     0.00     0.00  VID_Restart
  0.00    241.15     0.00        1     0.00     0.00  VID_SetFullDIBMode
  0.00    241.15     0.00        1     0.00     0.31  VID_SetMode
  0.00    241.15     0.00        1     0.00     0.00  VID_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  VID_SyncCvars
  0.00    241.15     0.00        1     0.00     0.00  VID_Unlock
  0.00    241.15     0.00        1     0.00     0.00  V_Init
  0.00    241.15     0.00        1     0.00     0.00  WINS_GetLocalAddress
  0.00    241.15     0.00        1     0.00     0.00  WINS_Init
  0.00    241.15     0.00        1     0.00     0.00  WINS_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  WIPX_Init
  0.00    241.15     0.00        1     0.00     0.00  WIPX_OpenSocket
  0.00    241.15     0.00        1     0.00     0.00  W_FreeWadFile
  0.00    241.15     0.00        1     0.00     0.00  W_LoadWadFile
  0.00    241.15     0.00        1     0.00     0.00  bSetupPixelFormat


profiled the code to see why its slower than even tenebrae, Notice the Calls to Host_Frame and a few others yikes.
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2531
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Old school quake, well not quite but

Postby mh » Mon Mar 27, 2017 3:23 pm

Is this the one that does a glReadPixels every frame and then computes bloom on the CPU? That was another piece of crap that needs to be killed.
We had the power, we had the space, we had a sense of time and place
We knew the words, we knew the score, we knew what we were fighting for
User avatar
mh
 
Posts: 2287
Joined: Sat Jan 12, 2008 1:38 am

Re: Old school quake, well not quite but

Postby revelator » Mon Mar 27, 2017 10:59 pm

Not to my knowledge ?, i adapted the bloom code from kmquake2 cant remember if i ever used a version that relied on glReadPixels but i cant rule it out.
Its been some years since i last had a look at this code. Early versions might have used the glare code from tenebrae so in that case yes but i since moved on cause it was to freaking slow. Atm the it seems to use a lot of time inside Sys_DoubleTime not sure why it calls this function like 1000 times a frame but even stranger that it causes the engine to stall as much as it does the first 50 or so frames. After that it settles and runs fine, but definatly something i need to to look after a fix for.

I also started cutting down some fat on checking for leafs since i noticed i had quite a few superflous checks in place where they where not needed, the original code allready did a better job at that so total timewaster on my side. Doing that helped a bit but it still stalls a little.

The bloom code uses matrix operations but could have been better written, it does the job ok though (maybe a bit over the top at times) as i have it in my demonquake engine as well and im not suffering any slowdowns with that one so i guess i can rule out bloom to be the culprit here.

Just in case here is the bloom code ->

Code: Select all
/*
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.

*/
// r_bloom.c: 2D lighting post process effect


//http://www.quakesrc.org/forums/viewtopic.php?t=4340&start=0

#include "gl_state.h"
#include "glquake.h"

/*
==============================================================================

                  LIGHT BLOOMS

==============================================================================
*/

static float Diamond8x[8][8] =
{
   {0.0f, 0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f, 0.0f},
   {0.0f, 0.0f, 0.2f, 0.3f, 0.3f, 0.2f, 0.0f, 0.0f},
   {0.0f, 0.2f, 0.4f, 0.6f, 0.6f, 0.4f, 0.2f, 0.0f},
   {0.1f, 0.3f, 0.6f, 0.9f, 0.9f, 0.6f, 0.3f, 0.1f},
   {0.1f, 0.3f, 0.6f, 0.9f, 0.9f, 0.6f, 0.3f, 0.1f},
   {0.0f, 0.2f, 0.4f, 0.6f, 0.6f, 0.4f, 0.2f, 0.0f},
   {0.0f, 0.0f, 0.2f, 0.3f, 0.3f, 0.2f, 0.0f, 0.0f},
   {0.0f, 0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f, 0.0f}
};

static float Diamond6x[6][6] =
{
   {0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f},
   {0.0f, 0.3f, 0.5f, 0.5f, 0.3f, 0.0f},
   {0.1f, 0.5f, 0.9f, 0.9f, 0.5f, 0.1f},
   {0.1f, 0.5f, 0.9f, 0.9f, 0.5f, 0.1f},
   {0.0f, 0.3f, 0.5f, 0.5f, 0.3f, 0.0f},
   {0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f}
};

static float Diamond4x[4][4] =
{
   {0.3f, 0.4f, 0.4f, 0.3f},
   {0.4f, 0.9f, 0.9f, 0.4f},
   {0.4f, 0.9f, 0.9f, 0.4f},
   {0.3f, 0.4f, 0.4f, 0.3f}
};

static int      BLOOM_SIZE;

cvar_t         r_bloom = {"r_bloom", "1"};
cvar_t         r_bloom_alpha = {"r_bloom_alpha", "0.2"};
cvar_t         r_bloom_diamond_size = {"r_bloom_diamond_size", "8"};
cvar_t         r_bloom_intensity = {"r_bloom_intensity", "2"};
cvar_t         r_bloom_darken = {"r_bloom_darken", "4"};
cvar_t         r_bloom_sample_size = {"r_bloom_sample_size", "32"};
cvar_t         r_bloom_fast_sample = {"r_bloom_fast_sample", "0"};

static int      r_bloomscreentexture;
static int      r_bloomeffecttexture;
static int      r_bloombackuptexture;
static int      r_bloomdownsamplingtexture;

static int      r_screendownsamplingtexture_size;
static int      screen_texture_width, screen_texture_height;
static int      r_screenbackuptexture_width, r_screenbackuptexture_height;

//current refdef size:
static int   curView_x;
static int   curView_y;
static int   curView_width;
static int   curView_height;

//texture coordinates of screen data inside screentexture
static float screenText_tcw;
static float screenText_tch;

static int   sample_width;
static int   sample_height;

//texture coordinates of adjusted textures
static float sampleText_tcw;
static float sampleText_tch;

//this macro is in sample size workspace coordinates
#define R_Bloom_SamplePass( xpos, ypos, r, g, b, a  )            \
    glColor4f( r, g, b, a );                              \
    glBegin(GL_QUADS);                                    \
    glTexCoord2f(   0,                  sampleText_tch);      \
    glVertex2f(   xpos,                  ypos);               \
    glTexCoord2f(   0,                  0);                  \
    glVertex2f(   xpos,                  ypos+sample_height);   \
    glTexCoord2f(   sampleText_tcw,         0);                  \
    glVertex2f(   xpos+sample_width,         ypos+sample_height);   \
    glTexCoord2f(   sampleText_tcw,         sampleText_tch);      \
    glVertex2f(   xpos+sample_width,         ypos);               \
    glEnd();

#define R_Bloom_Quad( x, y, width, height, textwidth, textheight, r, g, b, a  )   \
    glColor4f( r, g, b, a );                                       \
    glBegin(GL_QUADS);                                             \
    glTexCoord2f(   0,         textheight);                           \
    glVertex2f(   x,            y);                                    \
    glTexCoord2f(   0,         0);                                    \
    glVertex2f(   x,            y+height);                              \
    glTexCoord2f(   textwidth,   0);                                    \
    glVertex2f(   x+width,      y+height);                              \
    glTexCoord2f(   textwidth,   textheight);                           \
    glVertex2f(   x+width,      y);                                    \
    glEnd();

/*
=================
R_Bloom_InitBackUpTexture
=================
*/
void R_Bloom_InitBackUpTexture(int width, int height)
{
   byte   *data;

   data = malloc(width * height * 4);

   memset(data, 0, width * height * 4);

   r_screenbackuptexture_width = width;
   r_screenbackuptexture_height = height;

   r_bloombackuptexture = GL_UploadTextureToOpenGL(data, width, height, TEX_NOCOMPRESS);

   free(data);
}

/*
=================
R_Bloom_InitEffectTexture
=================
*/
void R_Bloom_InitEffectTexture(void)
{
   byte   *data;
   float   bloomsizecheck;

   if(r_bloom_sample_size.value < 32)
   {
      Cvar_SetValue("r_bloom_sample_size", 32);
   }

   //make sure bloom size is a power of 2
   BLOOM_SIZE = (int)r_bloom_sample_size.value;
   bloomsizecheck = (float)BLOOM_SIZE;

   while(bloomsizecheck > 1.0f)
   {
      bloomsizecheck /= 2.0f;
   }

   if(bloomsizecheck != 1.0f)
   {
      BLOOM_SIZE = 32;

      while(BLOOM_SIZE < r_bloom_sample_size.value)
      {
         BLOOM_SIZE *= 2;
      }
   }

   //make sure bloom size doesn't have stupid values
   if(BLOOM_SIZE > screen_texture_width || BLOOM_SIZE > screen_texture_height)
   {
      BLOOM_SIZE = min(screen_texture_width, screen_texture_height);
   }

   if(BLOOM_SIZE != r_bloom_sample_size.value)
   {
      Cvar_SetValue("r_bloom_sample_size", BLOOM_SIZE);
   }
   data = malloc(BLOOM_SIZE * BLOOM_SIZE * 4);
   memset(data, 0, BLOOM_SIZE * BLOOM_SIZE * 4);

   r_bloomeffecttexture = GL_UploadTextureToOpenGL(data, BLOOM_SIZE, BLOOM_SIZE, TEX_NOCOMPRESS);

   free(data);
}

/*
=================
R_Bloom_InitTextures
=================
*/
void R_Bloom_InitTextures(void)
{
   byte   *data;
   int      size;

   //find closer power of 2 to screen size
   for(screen_texture_width = 1; screen_texture_width < glwidth; screen_texture_width *= 2);
   for(screen_texture_height = 1; screen_texture_height < glheight; screen_texture_height *= 2);

   //init the screen texture
   size = screen_texture_width * screen_texture_height * 4;
   data = malloc(size);
   memset(data, 255, size);

   r_bloomscreentexture = GL_UploadTextureToOpenGL(data, screen_texture_width, screen_texture_height, TEX_NOCOMPRESS);

   free(data);

   //validate bloom size and init the bloom effect texture
   R_Bloom_InitEffectTexture();

   //if screensize is more than 2x the bloom effect texture, set up for stepped downsampling
   r_bloomdownsamplingtexture = 0;
   r_screendownsamplingtexture_size = 0;

   if(glwidth > (BLOOM_SIZE * 2) && !r_bloom_fast_sample.value)
   {
      r_screendownsamplingtexture_size = (int)(BLOOM_SIZE * 2);
      data = malloc(r_screendownsamplingtexture_size * r_screendownsamplingtexture_size * 4);
      memset(data, 0, r_screendownsamplingtexture_size * r_screendownsamplingtexture_size * 4);
      r_bloomdownsamplingtexture = GL_UploadTextureToOpenGL(data, r_screendownsamplingtexture_size, r_screendownsamplingtexture_size, TEX_NOCOMPRESS);
      free(data);
   }

   //Init the screen backup texture
   if(r_screendownsamplingtexture_size)
   {
      R_Bloom_InitBackUpTexture(r_screendownsamplingtexture_size, r_screendownsamplingtexture_size);
   }
   else
   {
      R_Bloom_InitBackUpTexture(BLOOM_SIZE, BLOOM_SIZE);
   }
}

/*
=================
R_InitBloomTextures
=================
*/
void R_InitBloomTextures(void)
{
   Cvar_RegisterVariable(&r_bloom);
   Cvar_RegisterVariable(&r_bloom_alpha);
   Cvar_RegisterVariable(&r_bloom_diamond_size);
   Cvar_RegisterVariable(&r_bloom_intensity);
   Cvar_RegisterVariable(&r_bloom_darken);
   Cvar_RegisterVariable(&r_bloom_sample_size);
   Cvar_RegisterVariable(&r_bloom_fast_sample);
   BLOOM_SIZE = 0;

   if(r_bloom.value)
   {
      r_bloomscreentexture = 0;   //this came from a vid_restart, where none of the textures are valid any more.
      R_Bloom_InitTextures();
   }
}

/*
=================
R_Bloom_DrawEffect
=================
*/
void R_Bloom_DrawEffect(void)
{
   glBindTexture(GL_TEXTURE_2D, r_bloomeffecttexture);
   glEnable(GL_BLEND);
   glBlendFunc(GL_ONE, GL_ONE);
   glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
   glColor4f(r_bloom_alpha.value, r_bloom_alpha.value, r_bloom_alpha.value, 1.0f);

   glBegin(GL_QUADS);
   glTexCoord2f(0,                     sampleText_tch);
   glVertex2f(curView_x,               curView_y);
   glTexCoord2f(0,                     0);
   glVertex2f(curView_x,               curView_y + curView_height);
   glTexCoord2f(sampleText_tcw,            0);
   glVertex2f(curView_x + curView_width,   curView_y + curView_height);
   glTexCoord2f(sampleText_tcw,            sampleText_tch);
   glVertex2f(curView_x + curView_width,   curView_y);
   glEnd();

   glDisable(GL_BLEND);
}

/*
=================
R_Bloom_GeneratexDiamonds
=================
*/
void R_Bloom_GeneratexDiamonds(void)
{
   int            i, j;
   static float   intensity;

   //set up sample size workspace
   glViewport(0, 0, sample_width, sample_height);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(0, sample_width, sample_height, 0, -10, 100);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();

   //copy small scene into r_bloomeffecttexture
   glBindTexture(GL_TEXTURE_2D, r_bloomeffecttexture);
   glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height);

   //start modifying the small scene corner
   glEnable(GL_BLEND);

   //darkening passes
   if(r_bloom_darken.value)
   {
      glBlendFunc(GL_DST_COLOR, GL_ZERO);
      glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

      for(i = 0; i < r_bloom_darken.value ; i++)
      {
         R_Bloom_SamplePass(0, 0, 1.0f, 1.0f, 1.0f, 1.0f);
      }
      glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height);
   }

   //bluring passes
   glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR);

   if(r_bloom_diamond_size.value > 7 || r_bloom_diamond_size.value <= 3)
   {
      if(r_bloom_diamond_size.value != 8)
      {
         Cvar_SetValue("r_bloom_diamond_size", 8);
      }

      for(i = 0; i < r_bloom_diamond_size.value; i++)
      {
         for(j = 0; j < r_bloom_diamond_size.value; j++)
         {
            intensity = r_bloom_intensity.value * 0.3 * Diamond8x[i][j];

            if(intensity < 0.01f)
            {
               continue;
            }
            R_Bloom_SamplePass(i - 4, j - 4, intensity, intensity, intensity, 1.0);
         }
      }
   }
   else if(r_bloom_diamond_size.value > 5)
   {
      if(r_bloom_diamond_size.value != 6)
      {
         Cvar_SetValue("r_bloom_diamond_size", 6);
      }

      for(i = 0; i < r_bloom_diamond_size.value; i++)
      {
         for(j = 0; j < r_bloom_diamond_size.value; j++)
         {
            intensity = r_bloom_intensity.value * 0.5 * Diamond6x[i][j];

            if(intensity < 0.01f)
            {
               continue;
            }
            R_Bloom_SamplePass(i - 3, j - 3, intensity, intensity, intensity, 1.0);
         }
      }
   }
   else if(r_bloom_diamond_size.value > 3)
   {
      if(r_bloom_diamond_size.value != 4)
      {
         Cvar_SetValue("r_bloom_diamond_size", 4);
      }

      for(i = 0; i < r_bloom_diamond_size.value; i++)
      {
         for(j = 0; j < r_bloom_diamond_size.value; j++)
         {
            intensity = r_bloom_intensity.value * 0.8f * Diamond4x[i][j];

            if(intensity < 0.01f)
            {
               continue;
            }
            R_Bloom_SamplePass(i - 2, j - 2, intensity, intensity, intensity, 1.0);
         }
      }
   }
   glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height);

   //restore full screen workspace
   glViewport(0, 0, glwidth, glheight);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(0, glwidth, glheight, 0, -10, 100);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
}

/*
=================
R_Bloom_DownsampleView
=================
*/
void R_Bloom_DownsampleView(void)
{
   glDisable(GL_BLEND);

   //stepped downsample
   if(r_screendownsamplingtexture_size)
   {
      int      midsample_width = r_screendownsamplingtexture_size * sampleText_tcw;
      int      midsample_height = r_screendownsamplingtexture_size * sampleText_tch;

      //copy the screen and draw resized
      glBindTexture(GL_TEXTURE_2D, r_bloomscreentexture);
      glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, curView_x, glheight - (curView_y + curView_height), curView_width, curView_height);
      R_Bloom_Quad(0,  glheight - midsample_height, midsample_width, midsample_height, screenText_tcw, screenText_tch,  1.0f, 1.0f, 1.0f, 1.0f);

      //now copy into Downsampling (mid-sized) texture
      glBindTexture(GL_TEXTURE_2D, r_bloomdownsamplingtexture);
      glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, midsample_width, midsample_height);

      //now draw again in bloom size
      R_Bloom_Quad(0,  glheight - sample_height, sample_width, sample_height, sampleText_tcw, sampleText_tch, 0.5f, 0.5f, 0.5f, 1.0f);

      //now blend the big screen texture into the bloom generation space (hoping it adds some blur)
      glEnable(GL_BLEND);
      glBlendFunc(GL_ONE, GL_ONE);
      glBindTexture(GL_TEXTURE_2D, r_bloomscreentexture);
      R_Bloom_Quad(0,  glheight - sample_height, sample_width, sample_height, screenText_tcw, screenText_tch, 0.5f, 0.5f, 0.5f, 1.0f);
      glDisable(GL_BLEND);
   }
   else
   {
      //downsample simple
      glBindTexture(GL_TEXTURE_2D, r_bloomscreentexture);
      glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, curView_x, glheight - (curView_y + curView_height), curView_width, curView_height);
      R_Bloom_Quad(0, glheight - sample_height, sample_width, sample_height, screenText_tcw, screenText_tch, 1.0f, 1.0f, 1.0f, 1.0f);
   }
}

/*
=================
R_BloomBlend
=================
*/
void R_BloomBlend(void)
{
   // skip if no lightdata etc.
   if(!r_bloom.value || !r_worldentity.model || !cl.worldmodel || !cl.worldmodel->lightdata)
   {
      return;
   }

   if(!BLOOM_SIZE || screen_texture_width < glwidth || screen_texture_height < glheight)
   {
      R_Bloom_InitTextures();
   }

   if(screen_texture_width < BLOOM_SIZE || screen_texture_height < BLOOM_SIZE)
   {
      return;
   }

   //set up full screen workspace
   glViewport(0, 0, glwidth, glheight);
   glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
   glDisable(GL_DEPTH_TEST);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(0, glwidth, glheight, 0, -10, 100);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   glDisable(GL_CULL_FACE);
   glDisable(GL_BLEND);
   glActiveTexture(GL_TEXTURE0);
   glEnable(GL_TEXTURE_2D);

   //set up current sizes
   curView_x = scr_vrect.x * ((float)glwidth / vid.width);
   curView_y = scr_vrect.y * ((float)glheight / vid.height);
   curView_width = scr_vrect.width * ((float)glwidth / vid.width);
   curView_height = scr_vrect.height * ((float)glheight / vid.height);
   screenText_tcw = ((float)curView_width / (float)screen_texture_width);
   screenText_tch = ((float)curView_height / (float)screen_texture_height);

   if(scr_vrect.height > scr_vrect.width)
   {
      sampleText_tcw = ((float)scr_vrect.width / (float)scr_vrect.height);
      sampleText_tch = 1.0f;
   }
   else
   {
      sampleText_tcw = 1.0f;
      sampleText_tch = ((float)scr_vrect.height / (float)scr_vrect.width);
   }
   sample_width = BLOOM_SIZE * sampleText_tcw;
   sample_height = BLOOM_SIZE * sampleText_tch;

   //copy the screen space we'll use to work into the backup texture
   glBindTexture(GL_TEXTURE_2D, r_bloombackuptexture);
   glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, r_screenbackuptexture_width, r_screenbackuptexture_height);

   //create the bloom image
   R_Bloom_DownsampleView();
   R_Bloom_GeneratexDiamonds();

   //restore the screen-backup to the screen
   glDisable(GL_BLEND);
   glBindTexture(GL_TEXTURE_2D, r_bloombackuptexture);
   R_Bloom_Quad(0, glheight - r_screenbackuptexture_height, r_screenbackuptexture_width, r_screenbackuptexture_height, 1.0, 1.0, 1, 1, 1, 1);
   R_Bloom_DrawEffect();
   R_SetupGL();
   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
   glActiveTexture(GL_TEXTURE0);
   glEnable(GL_TEXTURE_2D);
}


Probably a better way to write this one (GLSL). Also its quite messy :/
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2531
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Old school quake, well not quite but

Postby Barnes » Tue Mar 28, 2017 10:50 am

I'm use this code more time ago and it better then tenebrae bloom. But glsl bloom better.
User avatar
Barnes
 
Posts: 222
Joined: Thu Dec 24, 2009 2:26 pm
Location: Russia, Moscow

Re: Old school quake, well not quite but

Postby revelator » Tue Mar 28, 2017 2:07 pm

For what it does no its not that bad :), shaders would be better ofc and i might do that sometime.

I might be on the track of what is causing these stalls, i noticed they happen every time realm printed something on the screen,
so im going to have a look at what is going on behind the scenes. Might be something as simple as a bad ptr somewhere in the console print code, well in that case dooh but atleast it would be fixed :lol:
Productivity is a state of mind.
User avatar
revelator
 
Posts: 2531
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Old school quake, well not quite but

Postby Spike » Tue Mar 28, 2017 4:25 pm

revelator wrote:I might be on the track of what is causing these stalls, i noticed they happen every time realm printed something on the screen


in the vanilla source (including quakespasm etc), Con_Printf redraws the screen. This ensures that the prints become visible even if the code following that print crash or infinite loop or whatever. This is a significant extra issue if you have vsync enabled.

Its trivial to just comment out the screen redraw, but do note that much of the networking code has stalls with those redraws being required to let the user know that it hasn't crashed, so a full fix isn't quite so trivial as it may first seem. Presumably you can just add in explicit redraws into the places that need them.
Spike
 
Posts: 2882
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

PreviousNext

Return to General Discussion

Who is online

Users browsing this forum: No registered users and 2 guests