16 #endif //tells VCC not to generate min/max macros
22 #define snprintf _snprintf
32 using namespace VSFileSystem;
111 float vert = Normal.j;
125 Normal.j = -Normal.j;
126 Normal.k = -Normal.k;
127 const float CubeSize =
lmwido2;
129 r[0] = CubeSize/Normal.k;
131 r[2] = CubeSize/Normal.i;
133 r[4] = CubeSize/Normal.j;
135 r[0] = r[1] = CubeSize*1000;
137 r[2] = r[3] = CubeSize*1000;
139 r[4] = r[5] = CubeSize*1000;
146 for (
int i = 0;
i < 6;
i++)
147 if (r[
i] >= CubeSize) {
185 using namespace VSFileSystem;
193 unsigned char *data = tex.ReadImage( &
f,
texTransform,
true );
194 int bpp = tex.Depth();
195 int format = tex.Format();
197 unsigned char *
buffer = NULL;
201 unsigned char *tmpbuffer = data+2;
208 case::VSImage::_DXT1:
222 unsigned long stride = 4*
sizeof (
unsigned char);
223 unsigned char **row_pointers = (
unsigned char**) malloc(
sizeof (
unsigned char*)*tex.sizeY );
224 for (
unsigned int i = 0;
i < tex.sizeY; ++
i)
225 row_pointers[
i] = &data[
i*stride*tex.sizeX];
231 free( row_pointers );
249 ii = (
i*tex.sizeY)/lmwid;
251 jj = (
j*tex.sizeX)/lmwid;
252 scdata[
i][
j][0] = data[(ii*tex.sizeX+jj)*bpp];
253 scdata[
i][
j][1] = data[(ii*tex.sizeX+jj)*bpp+1];
254 scdata[
i][
j][2] = data[(ii*tex.sizeX+jj)*bpp+2];
272 size_t len=strlen(InputName)+strlen(add)+strlen(suffix)+1;
274 strcpy(tmp,InputName);
281 strncpy(tmp,temp.c_str(),
size);
296 char *tmp = (
char*) malloc( tmpsize );
297 const char *suffix =
".image";
324 suffix ), Data[5].D ) ) )
334 float sleft, sright, tdown, tup;
335 for (
int t = 0; t <
lmwid; t++)
336 for (
int s = 0; s <
lmwid; s++) {
342 if ( (
int) floor( Tex[t][s].s ) > lmwid-1 )
343 Tex[t][s].s = lmwid-1;
344 if ( (
int) floor( Tex[t][s].t ) > lmwid-1 )
345 Tex[t][s].t = lmwid-1;
346 if ( (
int) floor( Tex[t][s].t ) < 0 )
348 if ( (
int) floor( Tex[t][s].s ) < 0 )
350 r = Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t )][(
int) floor( Tex[t][s].s )][0];
351 g = Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t )][(
int) floor( Tex[t][s].s )][1];
352 b = Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t )][(
int) floor( Tex[t][s].s )][2];
353 if ( (
int) floor( Tex[t][s].s ) < lmwid-1 ) {
355 r += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t )][(
int) floor( Tex[t][s].s+1 )][0];
356 g += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t )][(
int) floor( Tex[t][s].s+1 )][1];
357 b += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t )][(
int) floor( Tex[t][s].s+1 )][2];
359 if ( (
int) floor( Tex[t][s].t ) < lmwid-1 ) {
361 r += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t+1 )][(
int) floor( Tex[t][s].s )][0];
362 g += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t+1 )][(
int) floor( Tex[t][s].s )][1];
363 b += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t+1 )][(
int) floor( Tex[t][s].s )][2];
365 if ( (
int) floor( Tex[t][s].t ) > 0 ) {
367 r += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t-1 )][(
int) floor( Tex[t][s].s )][0];
368 g += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t-1 )][(
int) floor( Tex[t][s].s )][1];
369 b += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t-1 )][(
int) floor( Tex[t][s].s )][2];
371 if ( (
int) floor( Tex[t][s].s ) > 0 ) {
373 r += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t )][(
int) floor( Tex[t][s].s-1 )][0];
374 g += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t )][(
int) floor( Tex[t][s].s-1 )][1];
375 b += Data[Tex[t][s].TexMap].
D[(
int) floor( Tex[t][s].t )][(
int) floor( Tex[t][s].s-1 )][2];
381 unsigned int rr = (
unsigned int) r;
382 unsigned int gg = (
unsigned int) g;
383 unsigned int bb = (
unsigned int) b;
389 if (rr > 255) rr = 255;
390 if (gg > 255) gg = 255;
391 if (bb > 255) bb = 255;
392 Col[
bytepp*( lmwid*(lmwid-1-t)+(lmwid-1-s) )] = rr;
393 Col[
bytepp*( lmwid*(lmwid-1-t)+(lmwid-1-s) )+1] = gg;
394 Col[
bytepp*( lmwid*(lmwid-1-t)+(lmwid-1-s) )+2] = bb;
409 unsigned char *LightMap = (
unsigned char*) malloc(
lmwid*
lmwid*4 );
411 for (t = 0; t <
lmwid; t++) {
413 float to256 = t/(104.*lmwid/256)-1.23;
414 for (
int s = 0; s <
lmwid; s++) {
416 float so256 = s/(104.*lmwid/256)-1.23;
417 Normal.k = 2*(1-so256*so256-to256*to256);
418 float double_one_more_normal = 2*(Normal.k+1);
419 if (double_one_more_normal >= 0) {
420 Normal.i = so256*
sqrt( 2*(Normal.k+1) );
421 Normal.j = to256*
sqrt( 2*(Normal.k+1) );
423 Normal.i = Normal.j = 0.0;
425 float sz =
sqrt( Normal.k*Normal.k+Normal.j*Normal.j+Normal.i*Normal.i );
429 TexMap( TexCoord[t][s], Normal );
433 Spherize( TexCoord, gluSphereCoord, LightMap );
464 int size =
sizeof (char)*strlen( inpt )+40;
465 char *tmp = (
char*) malloc( size );
472 memset( tmp, 0, size );
484 InputName = (
char*) malloc(
sizeof (
char)*(s.length()+2) );
488 InputName = (
char*) malloc(
sizeof (
char)*(strlen( inpt )+2) );
495 "input name %s, output name %s\nAffine %f Mult %f Pow %f\n",
506 #if USEDEPRECATEDENVMAPGENT