X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2F3dengfx%2Flibs%2Flib3ds%2Fshadow.c;fp=src%2F3dengfx%2Flibs%2Flib3ds%2Fshadow.c;h=a38f13c0671a1c057aff05ed722427267f2f31a7;hb=6e23259dbabaeb1711a2a5ca25b9cb421f693759;hp=0000000000000000000000000000000000000000;hpb=fe068fa879814784c45e0cb2e65dac489e8f5594;p=summerhack diff --git a/src/3dengfx/libs/lib3ds/shadow.c b/src/3dengfx/libs/lib3ds/shadow.c new file mode 100644 index 0000000..a38f13c --- /dev/null +++ b/src/3dengfx/libs/lib3ds/shadow.c @@ -0,0 +1,160 @@ +/* + * The 3D Studio File Format Library + * Copyright (C) 1996-2001 by J.E. Hoffmann + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: shadow.c,v 1.8 2001/07/07 19:05:30 jeh Exp $ + */ +#define LIB3DS_EXPORT +#include +#include +#include +#include + + +/*! + * \defgroup shadow Shadow Map Settings + * + * \author J.E. Hoffmann + */ + + +/*! + * \ingroup shadow + */ +Lib3dsBool +lib3ds_shadow_read(Lib3dsShadow *shadow, Lib3dsIo *io) +{ + Lib3dsChunk c; + + if (!lib3ds_chunk_read(&c, io)) { + return(LIB3DS_FALSE); + } + + switch (c.chunk) { + case LIB3DS_SHADOW_MAP_SIZE: + { + shadow->map_size=lib3ds_io_read_intw(io); + } + break; + case LIB3DS_LO_SHADOW_BIAS: + { + shadow->lo_bias=lib3ds_io_read_float(io); + } + break; + case LIB3DS_HI_SHADOW_BIAS: + { + shadow->hi_bias=lib3ds_io_read_float(io); + } + break; + case LIB3DS_SHADOW_SAMPLES: + { + shadow->samples=lib3ds_io_read_intw(io); + } + break; + case LIB3DS_SHADOW_RANGE: + { + shadow->range=lib3ds_io_read_intd(io); + } + break; + case LIB3DS_SHADOW_FILTER: + { + shadow->filter=lib3ds_io_read_float(io); + } + break; + case LIB3DS_RAY_BIAS: + { + shadow->ray_bias=lib3ds_io_read_float(io); + } + break; + } + + return(LIB3DS_TRUE); +} + + +/*! + * \ingroup shadow + */ +Lib3dsBool +lib3ds_shadow_write(Lib3dsShadow *shadow, Lib3dsIo *io) +{ + if (fabs(shadow->lo_bias)>LIB3DS_EPSILON) { /*---- LIB3DS_LO_SHADOW_BIAS ----*/ + Lib3dsChunk c; + c.chunk=LIB3DS_LO_SHADOW_BIAS; + c.size=10; + lib3ds_chunk_write(&c,io); + lib3ds_io_write_float(io, shadow->lo_bias); + } + + if (fabs(shadow->hi_bias)>LIB3DS_EPSILON) { /*---- LIB3DS_HI_SHADOW_BIAS ----*/ + Lib3dsChunk c; + c.chunk=LIB3DS_HI_SHADOW_BIAS; + c.size=10; + lib3ds_chunk_write(&c,io); + lib3ds_io_write_float(io, shadow->hi_bias); + } + + if (shadow->map_size) { /*---- LIB3DS_SHADOW_MAP_SIZE ----*/ + Lib3dsChunk c; + c.chunk=LIB3DS_SHADOW_MAP_SIZE; + c.size=8; + lib3ds_chunk_write(&c,io); + lib3ds_io_write_intw(io, shadow->map_size); + } + + if (shadow->samples) { /*---- LIB3DS_SHADOW_SAMPLES ----*/ + Lib3dsChunk c; + c.chunk=LIB3DS_SHADOW_SAMPLES; + c.size=8; + lib3ds_chunk_write(&c,io); + lib3ds_io_write_intw(io, shadow->samples); + } + + if (shadow->range) { /*---- LIB3DS_SHADOW_RANGE ----*/ + Lib3dsChunk c; + c.chunk=LIB3DS_SHADOW_RANGE; + c.size=10; + lib3ds_chunk_write(&c,io); + lib3ds_io_write_intd(io, shadow->range); + } + + if (fabs(shadow->filter)>LIB3DS_EPSILON) { /*---- LIB3DS_SHADOW_FILTER ----*/ + Lib3dsChunk c; + c.chunk=LIB3DS_SHADOW_FILTER; + c.size=10; + lib3ds_chunk_write(&c,io); + lib3ds_io_write_float(io, shadow->filter); + } + if (fabs(shadow->ray_bias)>LIB3DS_EPSILON) { /*---- LIB3DS_RAY_BIAS ----*/ + Lib3dsChunk c; + c.chunk=LIB3DS_RAY_BIAS; + c.size=10; + lib3ds_chunk_write(&c,io); + lib3ds_io_write_float(io, shadow->ray_bias); + } + return(LIB3DS_TRUE); +} + + +/*! + +\typedef Lib3dsShadow + \ingroup shadow + \sa _Lib3dsShadow + +*/