/******************************************************************************
 * Copyright 1986-2002 by mental images GmbH & Co.KG, Fasanenstr. 81, D-10623
 * Berlin, Germany. All rights reserved.
 ******************************************************************************
 * Author:	thomas
 * Created:	15.01.98
 * Module:	shaders/globillum
 * Purpose:	prototypes for global illumination using photon map
 *
 * Exports:
 *
 * History:
 *
 * Description:
 *****************************************************************************/

struct dielectric_material {
	miColor		col;		/* absorption coefficients */
	miScalar	ior;		/* index of refraction */
	miColor		col_out;	/* outside absorption coef. for i/f */
	miScalar	ior_out;	/* outside ior for interface */
	miBoolean	ignore_normals;	/* ignore normals? */
	miScalar	pcoef;		/* phong coef. for nice highlights */
	int		i_lights;	/* the lights to be sampled */
	int		n_lights;	/* the lights to be sampled */
	miTag		lights[1];	/* ... */
};

struct material_coef {
	miColor		absorp;		/* absorption coefficients */
	miScalar	ior;		/* index of refraction */
	miColor		absorp_out;	/* outside absorption coef. for i/f */
	miScalar	ior_out;	/* outside ior for interface */
	miScalar	pcoef;		/* phong coef. for nice highlights */
	miCBoolean	ignore_normals;	/* ignore normals? */
	miCBoolean	is_interface;	/* simulate interface */
	int		russian_level;
};

DLLEXPORT miBoolean dielectric_material_init	    (miState *,
				struct dielectric_material *, miBoolean *);
DLLEXPORT miBoolean dielectric_material_exit	    (miState *,
				struct dielectric_material *);
DLLEXPORT int	    dielectric_material_photon_version(void);
DLLEXPORT miBoolean dielectric_material_photon	    (miColor *, miState *,
				struct dielectric_material *);
DLLEXPORT miBoolean dielectric_material_photon_init (miState *,
				struct dielectric_material *, miBoolean *);
DLLEXPORT miBoolean dielectric_material_photon_exit (miState *,
				struct dielectric_material *);
DLLEXPORT int	    dielectric_material_version	    (void);
DLLEXPORT miBoolean dielectric_material		    (miColor *, miState *,
				struct dielectric_material *);
