mirror of
https://github.com/id-Software/Quake-Tools.git
synced 2026-03-20 08:59:49 +01:00
The source release of the qutils.
This commit is contained in:
146
qutils/LIGHT/LIGHT.C
Normal file
146
qutils/LIGHT/LIGHT.C
Normal file
@@ -0,0 +1,146 @@
|
||||
// lighting.c
|
||||
|
||||
#include "light.h"
|
||||
|
||||
/*
|
||||
|
||||
NOTES
|
||||
-----
|
||||
|
||||
*/
|
||||
|
||||
float scaledist = 1.0;
|
||||
float scalecos = 0.5;
|
||||
float rangescale = 0.5;
|
||||
|
||||
byte *filebase, *file_p, *file_end;
|
||||
|
||||
dmodel_t *bspmodel;
|
||||
int bspfileface; // next surface to dispatch
|
||||
|
||||
vec3_t bsp_origin;
|
||||
|
||||
qboolean extrasamples;
|
||||
|
||||
float minlights[MAX_MAP_FACES];
|
||||
|
||||
|
||||
byte *GetFileSpace (int size)
|
||||
{
|
||||
byte *buf;
|
||||
|
||||
LOCK;
|
||||
file_p = (byte *)(((long)file_p + 3)&~3);
|
||||
buf = file_p;
|
||||
file_p += size;
|
||||
UNLOCK;
|
||||
if (file_p > file_end)
|
||||
Error ("GetFileSpace: overrun");
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
void LightThread (void *junk)
|
||||
{
|
||||
int i;
|
||||
|
||||
while (1)
|
||||
{
|
||||
LOCK;
|
||||
i = bspfileface++;
|
||||
UNLOCK;
|
||||
if (i >= numfaces)
|
||||
return;
|
||||
|
||||
LightFace (i);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
=============
|
||||
LightWorld
|
||||
=============
|
||||
*/
|
||||
void LightWorld (void)
|
||||
{
|
||||
filebase = file_p = dlightdata;
|
||||
file_end = filebase + MAX_MAP_LIGHTING;
|
||||
|
||||
RunThreadsOn (LightThread);
|
||||
|
||||
lightdatasize = file_p - filebase;
|
||||
|
||||
printf ("lightdatasize: %i\n", lightdatasize);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
========
|
||||
main
|
||||
|
||||
light modelfile
|
||||
========
|
||||
*/
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
double start, end;
|
||||
char source[1024];
|
||||
|
||||
printf ("----- LightFaces ----\n");
|
||||
|
||||
for (i=1 ; i<argc ; i++)
|
||||
{
|
||||
if (!strcmp(argv[i],"-threads"))
|
||||
{
|
||||
numthreads = atoi (argv[i+1]);
|
||||
i++;
|
||||
}
|
||||
else if (!strcmp(argv[i],"-extra"))
|
||||
{
|
||||
extrasamples = true;
|
||||
printf ("extra sampling enabled\n");
|
||||
}
|
||||
else if (!strcmp(argv[i],"-dist"))
|
||||
{
|
||||
scaledist = atof (argv[i+1]);
|
||||
i++;
|
||||
}
|
||||
else if (!strcmp(argv[i],"-range"))
|
||||
{
|
||||
rangescale = atof (argv[i+1]);
|
||||
i++;
|
||||
}
|
||||
else if (argv[i][0] == '-')
|
||||
Error ("Unknown option \"%s\"", argv[i]);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
if (i != argc - 1)
|
||||
Error ("usage: light [-threads num] [-extra] bspfile");
|
||||
|
||||
InitThreads ();
|
||||
|
||||
start = I_FloatTime ();
|
||||
|
||||
strcpy (source, argv[i]);
|
||||
StripExtension (source);
|
||||
DefaultExtension (source, ".bsp");
|
||||
|
||||
LoadBSPFile (source);
|
||||
LoadEntities ();
|
||||
|
||||
MakeTnodes (&dmodels[0]);
|
||||
|
||||
LightWorld ();
|
||||
|
||||
WriteEntitiesToString ();
|
||||
WriteBSPFile (source);
|
||||
|
||||
end = I_FloatTime ();
|
||||
printf ("%5.1f seconds elapsed\n", end-start);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user