123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- // 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;
- }
|