X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=libs%2Flib3ds%2Fmaterial.h;fp=libs%2Flib3ds%2Fmaterial.h;h=352bda1d9389e5e0a2181a0885c437f515cc21f0;hb=6c322d339ec9c5063c8f47117633b46e2a8eafd0;hp=0000000000000000000000000000000000000000;hpb=787ad7856f5074db4fe805b15bfca61553895de1;p=summerhack diff --git a/libs/lib3ds/material.h b/libs/lib3ds/material.h new file mode 100644 index 0000000..352bda1 --- /dev/null +++ b/libs/lib3ds/material.h @@ -0,0 +1,170 @@ +/* -*- c -*- */ +#ifndef INCLUDED_LIB3DS_MATERIAL_H +#define INCLUDED_LIB3DS_MATERIAL_H +/* + * 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: material.h,v 1.15 2004/12/31 16:17:15 reed Exp $ + */ + +#ifndef INCLUDED_LIB3DS_TYPES_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * \ingroup material + */ +typedef enum _Lib3dsTextureMapFlags { + LIB3DS_DECALE =0x0001, + LIB3DS_MIRROR =0x0002, + LIB3DS_NEGATE =0x0004, + LIB3DS_NO_TILE =0x0008, + LIB3DS_SUMMED_AREA =0x0010, + LIB3DS_ALPHA_SOURCE =0x0020, + LIB3DS_TINT =0x0040, + LIB3DS_IGNORE_ALPHA =0x0080, + LIB3DS_RGB_TINT =0x0100 +} Lib3dsTextureMapFlags; + +/*! + * Mateial texture map + * \ingroup material + */ +typedef struct _Lib3dsTextureMap { + Lib3dsUserData user; + char name[64]; + Lib3dsDword flags; + Lib3dsFloat percent; + Lib3dsFloat blur; + Lib3dsFloat scale[2]; + Lib3dsFloat offset[2]; + Lib3dsFloat rotation; + Lib3dsRgb tint_1; + Lib3dsRgb tint_2; + Lib3dsRgb tint_r; + Lib3dsRgb tint_g; + Lib3dsRgb tint_b; +} Lib3dsTextureMap; + +/*! + * \ingroup material + */ +typedef enum _Lib3dsAutoReflMapFlags { + LIB3DS_USE_REFL_MAP =0x0001, + LIB3DS_READ_FIRST_FRAME_ONLY =0x0004, + LIB3DS_FLAT_MIRROR =0x0008 +} Lib3dsAutoReflectionMapFlags; + +/*! + * \ingroup material + */ +typedef enum _Lib3dsAutoReflMapAntiAliasLevel { + LIB3DS_ANTI_ALIAS_NONE =0, + LIB3DS_ANTI_ALIAS_LOW =1, + LIB3DS_ANTI_ALIAS_MEDIUM =2, + LIB3DS_ANTI_ALIAS_HIGH =3 +} Lib3dsAutoReflMapAntiAliasLevel; + +/*! + * Auto reflection map settings + * \ingroup material + */ +typedef struct _Lib3dsAutoReflMap { + Lib3dsDword flags; + Lib3dsIntd level; + Lib3dsIntd size; + Lib3dsIntd frame_step; +} Lib3dsAutoReflMap; + +/*! + * \ingroup material + */ +typedef enum _Lib3dsMaterialShading { + LIB3DS_WIRE_FRAME =0, + LIB3DS_FLAT =1, + LIB3DS_GOURAUD =2, + LIB3DS_PHONG =3, + LIB3DS_METAL =4 +} Lib3dsMaterialShading; + +/*! + * Material + * \ingroup material + */ +struct _Lib3dsMaterial { + Lib3dsUserData user; /*! Arbitrary user data */ + Lib3dsMaterial *next; + char name[64]; /*! Material name */ + Lib3dsRgba ambient; /*! Material ambient reflectivity */ + Lib3dsRgba diffuse; /*! Material diffuse reflectivity */ + Lib3dsRgba specular; /*! Material specular reflectivity */ + Lib3dsFloat shininess; /*! Material specular exponent */ + Lib3dsFloat shin_strength; + Lib3dsBool use_blur; + Lib3dsFloat blur; + Lib3dsFloat transparency; + Lib3dsFloat falloff; + Lib3dsBool additive; + Lib3dsFloat self_ilpct; + Lib3dsBool use_falloff; + Lib3dsBool self_illum; + Lib3dsIntw shading; + Lib3dsBool soften; + Lib3dsBool face_map; + Lib3dsBool two_sided; /*! Material visible from back */ + Lib3dsBool map_decal; + Lib3dsBool use_wire; + Lib3dsBool use_wire_abs; + Lib3dsFloat wire_size; + Lib3dsTextureMap texture1_map; + Lib3dsTextureMap texture1_mask; + Lib3dsTextureMap texture2_map; + Lib3dsTextureMap texture2_mask; + Lib3dsTextureMap opacity_map; + Lib3dsTextureMap opacity_mask; + Lib3dsTextureMap bump_map; + Lib3dsTextureMap bump_mask; + Lib3dsTextureMap specular_map; + Lib3dsTextureMap specular_mask; + Lib3dsTextureMap shininess_map; + Lib3dsTextureMap shininess_mask; + Lib3dsTextureMap self_illum_map; + Lib3dsTextureMap self_illum_mask; + Lib3dsTextureMap reflection_map; + Lib3dsTextureMap reflection_mask; + Lib3dsAutoReflMap autorefl_map; +}; + +extern LIB3DSAPI Lib3dsMaterial* lib3ds_material_new(); +extern LIB3DSAPI void lib3ds_material_free(Lib3dsMaterial *material); +extern LIB3DSAPI void lib3ds_material_dump(Lib3dsMaterial *material); +extern LIB3DSAPI Lib3dsBool lib3ds_material_read(Lib3dsMaterial *material, Lib3dsIo *io); +extern LIB3DSAPI Lib3dsBool lib3ds_material_write(Lib3dsMaterial *material, Lib3dsIo *io); + +#ifdef __cplusplus +} +#endif +#endif + + +