/*************************************************************************

	formZ by autodessys, Inc.
	Copyright c 1994 autodessys, Inc.  All rights reserved.
	
	
	File :	formz_rmtl.h
	
	By :	David E. Kropp
	
	Created on :  		16 September 1994
	Last Updated on :  	16 September 1994
	
	Description :	
					
***************************************************************************/

#ifndef __FORMZ_RMTL_H
#define __FORMZ_RMTL_H 1

#ifdef __cplusplus
extern "C" {
#endif

/* @doc EXTERNAL MODEL */
/********************************************************************************************************

	@module 
	
	@desc 	formZ Render Materials.  This section describes the functionality offered to construct, edit,
			use, and delete render materials (surface stlyes) and their associated shaders.

	@toc	modl_rmtl

*********************************************************************************************************/


#include "fz_api.h"
#include "fz_type_api.h"
#include "fz_model_core_api.h"
#include "fz_fuim_api.h"
#include "fz_tmap_api.h"

/********************************************************************************************************

	@type	Rendering material (surface style) data type

	@desc	Rendering material (surface style) data type
			
	@avail	5.0.0.0

	@toc	modl_rmtl

*********************************************************************************************************/
typedef struct expr_surf_td 		*fz_rmtl_ptr;

/********************************************************************************************************

	@type	Shader data type

	@desc	Shader data type. Each surface style (fz_rmtl_ptr) consists of four
			shaders (color, reflection, transparency and bump). RenderZone
			render options also have background, depth effect and environment shaders.
			
	@avail	5.0.0.0

	@toc	modl_rmtl

*********************************************************************************************************/
typedef struct expr_shader_td 		*fz_shdr_ptr;

/************************************************************************

					FINAL RMTL API FUNCTIONS

*************************************************************************/

/* FORMZ SUPPLIED COLOR SHADERS */
/********************************************************************************************************

	@grpbegin	Color Shaders	

	@desc	Color Shader identifiers

	@avail	5.0.0.0

	@toc	modl_rmtl

*********************************************************************************************************/
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Plain color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_PLAIN_UUID		"\x86\x1b\xed\xe9\xbc\xe3\x42\x49\xb5\xc0\xaf\xd0\xda\xcb\xfd\xc8"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Image Map color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_TMAP_UUID		"\x2b\x52\x37\x72\xc2\x4c\x47\x02\xb0\xdf\xc9\x39\x9a\x57\x4d\xea"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Marble color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_SMARBLE_UUID		"\x3d\xbd\xea\x42\x5c\x2b\x46\xf1\xbb\x72\x23\xe0\xf6\x5c\xff\x70"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Marble color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_AMARBLE_UUID		"\x74\xf4\x3f\xd8\x97\x23\x48\x9b\xbf\xdd\x7d\x01\xcb\xce\xf4\x98"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Wood color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_WOOD_UUID		"\x32\x82\x1e\x88\xe8\xdb\x45\xe3\xb0\x72\x31\xb6\x48\x40\x9f\xbc"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Brick color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_BRICK_UUID		"\xfd\x9e\x50\xea\x96\xb1\x40\x93\xba\x8a\xa5\x40\x04\x49\x2c\xba"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Brick color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_TBRICK_UUID		"\xe9\x1c\x16\x99\xb3\x5f\x4a\x3e\xac\x16\x93\x95\x8b\x4b\x6e\xa5"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Streaks color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_STREAKS_UUID		"\xe7\xe9\xb6\xe6\x60\x95\x44\x7c\x82\xfe\x93\xbc\x90\xfd\x88\x56"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Checker color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_CUBES_UUID		"\x47\x92\x2f\x6f\x9e\xe1\x4d\x28\xb1\x4a\x2d\x66\x57\x65\xcc\x64"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Mist color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_MIST_UUID		"\x19\x2d\x85\x75\x76\x2d\x46\x92\xaa\x08\xce\x46\x8d\x51\x8b\xc3"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Polka Dots color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_SPOLKA_UUID		"\xbc\xa6\x12\x62\xfb\x88\x41\xd0\x98\x03\xf5\x11\xb6\x00\x83\xf8"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Polka Dots color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_WPOLKA_UUID		"\x11\x26\x9a\x65\xea\x4e\x46\x8e\x8b\x98\x3b\x5e\xc1\x12\x08\x31"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Checker color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_CHECKER_UUID		"\x45\x71\x32\x58\x96\xd0\x45\x50\xb8\x0a\x8c\xda\xbd\x82\xaf\xb6"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Grid color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_GRID_UUID		"\x17\xfc\xc0\x62\x83\xc7\x47\x64\x95\x53\x70\xa5\xba\x2f\xfe\xff"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Stripes color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_STRIPE_UUID		"\xe9\x34\xf2\x30\x9f\xeb\x4d\x2d\xbc\x3b\x19\x7b\x55\x4e\xc9\x1e"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Background color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_BGND_UUID		"\x54\x5c\x1f\x73\xd4\xf2\x40\xda\x9b\xc8\x7e\x62\xcb\xe2\x9f\x9d"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Accurate Wood color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_WTEXWOOD_UUID	"\x48\x98\x72\x01\x37\xb1\x41\xd6\x99\x66\x73\xbb\x43\x22\xfa\x3b"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Accurate Wood color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_STEXWOOD_UUID	"\xf7\xc3\x7c\x3f\xa3\xae\x41\x1f\x92\x50\x84\x47\x9f\xc6\xe9\x8e"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Granite color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_GRANITE_UUID		"\xd8\xdc\x65\x8c\x55\x5c\x4f\x76\xac\x1a\x95\xa0\xd1\x1b\x3d\x7f"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Roof Tiles color shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_ROOF_UUID		"\xce\x37\xe8\x64\xb9\x5c\x48\x7d\x99\x27\x4b\xe8\x10\xcd\xe6\xc1"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Surface Evaluation color shader
	@avail	5.5.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_SURFEVAL_UUID		"\x62\xe8\xce\x21\x71\x03\x44\x70\x95\x88\xc3\xa0\x88\x8c\xf9\x4c"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Paving color shader
	@avail	6.5.0.0
*********************************************************************************************************/
#define FZ_SHDR_COLOR_PAVING_UUID		"\x9d\x2c\x69\x98\x9f\xee\x11\xda\x8e\x35\x00\x03\x93\x63\x5d\xbc"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Paving bump shader
	@avail	6.5.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_PAVING_UUID		"\x9d\x2c\x6a\x94\x9f\xee\x11\xda\x8e\x35\x00\x03\x93\x63\x5d\xbc"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Shingles bump shader
	@avail	6.5.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_SHINGLES_UUID		"\x9d\x2c\x81\x72\x9f\xee\x11\xda\x8e\x35\x00\x03\x93\x63\x5d\xbc"

/********************************************************************************************************
	@grpend		color shaders
*********************************************************************************************************/

/* FORMZ SUPPLIED REFLECTION SHADERS */
/********************************************************************************************************

	@grpbegin	Reflection Shaders	

	@desc	Reflection Shader identifiers

	@avail	5.0.0.0

	@toc	modl_rmtl

*********************************************************************************************************/
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Constant reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_CONSTANT_UUID		"\x70\xa4\xff\x46\xfb\x1d\x4a\x5c\xb8\x6b\x9c\x75\xa5\x4f\xdb\xcd"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Matte reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_MATTE_UUID		"\x5d\x06\xbd\x3c\x99\x54\x43\x03\x9a\x82\x81\xd1\x85\x14\xae\x58"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Metal reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_METAL_UUID		"\x1e\x44\x84\xf7\xe2\xcf\x46\xc3\x91\x8a\x78\x41\x82\x23\xcc\xa5"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Plastic reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_PLASTIC_UUID		"\x5f\xfc\xcb\xea\xe2\xe9\x4b\x06\x8c\x97\xcc\x4b\x9f\x1a\xd9\xee"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Chrome reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_CHROME_UUID		"\x0d\xdb\x39\xf3\xfc\x53\x4b\xa8\xb7\xdb\x7e\xd0\x2d\x5f\x4e\x06"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Accurate Metal reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_CONDUCTOR_UUID	"\x4b\xc5\x52\x8a\x73\x38\x48\xb1\x80\x7f\x17\x52\x79\x4c\xe0\xdd"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Accurate Glass reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_DIELECTRIC_UUID	"\x82\x9a\x9f\x25\x77\x05\x49\x56\x92\xfb\xc0\xb5\x96\xf1\xe3\x49"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Glass reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_GLASS_UUID		"\xb2\x1f\x5a\xe6\x18\xbd\x40\x0c\x86\x61\x70\x0a\x86\xf9\x06\xa6"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Mirror reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_MIRROR_UUID		"\x07\x5e\x94\x87\x39\xa1\x4f\xf6\x90\xe6\x9a\x76\x92\x48\x41\x0a"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Environment reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_ENVIRONMENT_UUID	"\xb4\x1d\x87\x07\xd7\x5c\x4c\x72\x98\x3c\xfa\xf4\x26\xf7\x67\xc7"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Brushed reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_ANISO_UUID		"\x18\xdf\xb4\xec\x32\x3e\x4a\x8e\xa3\x52\xe9\x3b\xa6\xc8\x03\x0a"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Multilayer Paint reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_PAINT_UUID		"\xa1\xbd\x6a\x5a\xb6\xa5\x43\x91\x93\x3b\xf7\x93\xca\x82\x63\xf5"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Woven reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_WOVEN_UUID		"\xaf\xf7\x29\xe9\xa6\xc4\x44\x54\x9a\x46\x5e\x52\xaf\xb1\x06\x21"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Catcher reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_CATCHER_UUID		"\x16\x9a\xb3\x21\x84\x8c\x44\xef\xaf\xaa\x75\x0c\x2d\x16\x8b\xf1"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Generic reflection shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_REFL_GENERIC_UUID		"\x75\x51\x98\x4e\xb2\x74\x41\x61\x9a\xfe\xd4\xab\xa7\xd9\x5e\x12"
/********************************************************************************************************
	@grpend		reflection shaders
*********************************************************************************************************/

/* FORMZ SUPPLIED TRANSPARENCY SHADERS */
/********************************************************************************************************

	@grpbegin	Transparency Shaders	

	@desc	Transparency Shader identifiers

	@avail	5.0.0.0

	@toc	modl_rmtl

*********************************************************************************************************/
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the None transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_NONE_UUID		"\xc5\x66\x99\x19\x49\x4c\x47\x8d\x91\x9e\xff\x09\x32\x00\x7f\x25"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Plain transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_PLAIN_UUID	"\xd4\x8b\xb7\xe6\x7e\x68\x4a\x43\xb7\xc2\xc7\xcd\x39\xfe\xe1\xc8"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Transparency Map transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_TMAP_UUID		"\x1f\xc9\xd4\x0c\x4e\xec\x4b\xc2\x9b\x6a\x0a\xb0\x2d\xcd\x58\x75"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Eroded transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_ERODED_UUID	"\x70\x73\xac\xb6\x99\x8e\x46\xbb\xa0\xb2\x4b\xf9\xfa\x5b\x2e\xe4"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Grid transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_GRID_UUID		"\xf0\x46\x9c\x5b\xb2\x0f\x41\xe9\x9f\xc5\x4c\xad\x1c\x2c\x19\xb1"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Neon transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_NEON_UUID		"\x5c\x1d\x10\x52\xaf\xda\x4b\x0a\xa6\x61\x54\x7e\x67\xd2\x45\x7a"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Center-Edge transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_EDGE_UUID		"\x50\xfb\xbe\xd0\xd0\x54\x42\xf3\x84\x64\x57\x0b\x94\xd7\xdc\x79"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_SIMPLE_UUID	"\x5c\x86\x78\x6d\x68\x7d\x4c\xfd\xb0\xf0\x81\x00\x8e\x59\xaa\x7b"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Marble transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_SMARBLE_UUID	"\x97\xc9\x0f\x99\xb9\x3e\x43\x89\xb9\x7e\x55\xad\x0c\xd8\x1a\xa2"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Marble transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_AMARBLE_UUID	"\x2c\x7e\xd0\xd5\x5d\xe9\x45\x6a\x82\x24\x36\x63\xc0\x2f\xc5\xef"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Wood transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_WOOD_UUID		"\xc9\x1d\xd1\x1f\x2f\x28\x4a\x1b\x9a\xc8\x67\xb9\xd3\x4b\xc6\xf5"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Brick transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_BRICK_UUID	"\x8e\xe1\xf3\xd6\x03\x72\x47\xe5\xbf\x90\x29\x3f\x26\xcc\xdb\xa6"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Brick transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_TBRICK_UUID	"\x0c\xb0\x88\xdc\x4c\x17\x49\x98\x95\x4b\x07\x4f\x44\xe8\x71\x4f"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Checker transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_CUBES_UUID	"\x9e\xab\x1b\xc0\xb0\xde\x46\x60\xb3\xf7\xe9\x02\xec\x45\xe6\x2b"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Mist transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_MIST_UUID		"\xdb\x7b\xde\x85\xe3\x6c\x42\xa0\xa1\x7d\x26\x63\x50\x2f\x63\xdb"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Polka Dots transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_SPOLKA_UUID	"\x3b\x83\xde\x2d\x64\x29\x46\xf3\xaa\x8a\xaa\x92\xdb\x8f\x12\xb1"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Polka Dots transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_WPOLKA_UUID	"\xbb\x54\x6d\xb0\x54\xbe\x4a\x52\x92\xa3\xcf\xd3\x56\xf6\x01\x43"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Checker transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_CHECKER_UUID	"\x67\x3f\xdc\xad\x2a\xbd\x44\x5e\xb9\x48\x61\x23\x51\xe0\x15\x44"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Stripes transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_STRIPE_UUID	"\xef\x55\x5d\x97\xd6\x41\x49\x42\xb8\x55\xdc\xcb\x43\x4b\x6e\x4f"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Accurate Wood transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_WTEXWOOD_UUID	"\xdf\xe2\x1a\x43\x9f\x8d\x4d\xd0\x9b\x67\xd7\x5b\xe4\x62\x01\xc5"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Accurate Wood transparency shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_TRNS_STEXWOOD_UUID	"\x14\x8c\xa8\x00\x39\xd1\x4f\x73\xbf\xae\x62\xb5\x91\x4c\x14\xe5"	
/********************************************************************************************************
	@grpend		transparency shaders
*********************************************************************************************************/

/* FORMZ SUPPLIED BUMP SHADERS */
/********************************************************************************************************

	@grpbegin	Bump Shaders	

	@desc	Bump Shader identifiers

	@avail	5.0.0.0

	@toc	modl_rmtl

*********************************************************************************************************/
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the None bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_NONE_UUID		"\x2e\xb2\x0f\x3f\xe6\x32\x48\x96\x8a\x1e\x1a\xee\x18\xbd\x24\xa6"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Bump Map bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_TMAP_UUID		"\x2c\x4e\xe4\x93\xb0\x25\x44\x0a\x86\x6c\xac\x3e\x79\x37\xb9\x79"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Casting bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_CASTING_UUID	"\x5a\x61\xd0\xd7\x9d\x61\x41\xe0\x91\xeb\x07\x3e\xd5\x1e\x1a\xb4"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Rough bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_ROUGH_UUID	"\xb1\x9b\x34\x6e\x0c\xb0\x44\xcc\x9c\x78\x71\x31\x7a\x54\xd8\x3d"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Rough bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_WROUGH_UUID	"\xb1\x61\xc8\xfd\x2c\xea\x45\x48\x83\xc7\x35\xca\x94\xd9\x03\xb5"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Dimple bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_DIMPLE_UUID	"\x14\x4c\x0e\x36\x67\xa6\x43\x51\x98\x4f\xbf\xe6\x1c\x99\xe8\x52"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Knurl bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_KNURL_UUID	"\x1b\xda\xb9\x4e\xd1\x40\x4d\xc0\xac\x3a\xf7\x9c\xd5\xcc\x64\x82"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Tread Plate bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_TREAD_UUID	"\xe0\x44\x06\x22\x17\x4a\x40\x7d\x8e\x21\xc9\xca\x09\x9f\x4e\x55"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Marble bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_SMARBLE_UUID	"\xe4\xb1\x23\xc8\x01\x75\x41\xa8\xba\x4f\xa6\x14\x74\xea\x49\x45"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Marble bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_AMARBLE_UUID	"\x79\x83\x06\x82\x43\x2a\x4f\x9a\x89\x18\xb5\x93\x67\xe3\xe5\x96"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Wood bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_WOOD_UUID		"\x2e\x27\x0a\x00\x64\x62\x4d\xaf\xa9\xd1\x19\x5f\xa1\x25\xa4\xaa"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Brick bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_BRICK_UUID	"\x3d\x26\x8e\x4b\x10\xe8\x4b\xdd\xa9\x1e\x2d\x1f\x73\x3f\xbd\x7e"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Brick bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_TBRICK_UUID	"\x6f\x2c\x37\xd9\x9f\xc7\x45\xed\xa7\xfc\x9a\x08\x14\x85\xc3\xf0"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Checker bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_CUBES_UUID	"\x40\x54\x47\x89\xcd\x22\x4a\x8b\xb6\xdd\x56\x5d\x82\x9b\xa2\xd7"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Mist bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_MIST_UUID		"\x65\x3a\xba\xf4\x75\xf9\x41\xd4\xa0\xf0\xbd\x9a\xef\x40\xac\x54"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Polka Dots bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_SPOLKA_UUID	"\x21\xa4\xa2\x65\xfc\x83\x4b\x96\x87\x1f\x18\xdb\x07\x73\x70\xa5"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Polka Dots bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_WPOLKA_UUID	"\x64\xf7\x72\xf3\xf0\xea\x4a\xe6\x91\xd1\x56\x5c\x10\xca\x84\xbb"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Checker bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_CHECKER_UUID	"\x44\x89\x76\xa6\x98\xd8\x4d\x98\x84\x71\x9c\x2f\x91\x1b\x50\x6e"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Grid bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_GRID_UUID		"\xbc\x52\x55\x61\xe7\xad\x40\x3c\x93\x5c\xb0\x77\x9a\x66\x51\x1e"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Stripes bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_STRIPE_UUID	"\x03\x8e\x78\x5c\x58\xf5\x49\x1b\x86\x61\xfd\x2a\x46\x33\x9f\x6d"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Cells bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_WLEATHER_UUID	"\xf2\x39\x14\x2b\xdf\xcd\x42\xd3\x85\x48\x2a\x09\x28\xb9\xe5\xb3"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Cells bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_SLEATHER_UUID	"\x4f\xb7\x23\x41\xae\x35\x4a\x0c\xac\x1d\xde\x4c\x96\x18\xe9\xb4"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Accurate Wood bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_WTEXWOOD_UUID	"\x23\xa8\xe0\x81\x55\x06\x4e\x0c\xba\xf2\x1f\x96\x88\x81\xc6\x67"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Accurate Wood bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_STEXWOOD_UUID	"\xcb\x2c\x6b\xe1\x92\xf3\x4a\x1f\xae\x43\xd0\xc2\x39\xc5\x7e\x6c"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Roof Tiles bump shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BUMP_ROOF_UUID		"\xd7\x3f\xeb\x33\xba\x3b\x43\x1d\xba\x85\xf7\x72\x0a\x5a\x37\x8d"
/********************************************************************************************************
	@grpend		bump shaders
*********************************************************************************************************/

/* FORMZ SUPPLIED DEPTH EFFECT SHADERS */
/********************************************************************************************************

	@grpbegin	Depth Dffect (Foreground) Shaders	

	@desc	Depth Effect (Foreground) Shader identifiers

	@avail	5.0.0.0

	@toc	modl_rmtl

*********************************************************************************************************/
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the None depth effect shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_FORE_NONE_UUID		"\xbb\xb0\x73\x18\x4a\xca\x4d\xfb\x8d\x6c\x58\x35\x25\x65\x77\x67"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Fod depth effect shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_FORE_FOG_UUID		"\x92\x07\xe3\x40\x6f\xb2\x4a\x87\x84\x56\x6f\x5a\x2b\x0a\x90\x00"				/* TAH 05/23/06 */
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Depth Cue depth effect shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_FORE_DEPTHCUE_UUID	"\x25\xe4\x26\x86\x8e\x70\x48\xf3\x92\x9b\x14\xce\xe7\x4e\xd2\x28"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Snow depth effect shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_FORE_SNOW_UUID		"\x68\x35\x83\x41\x6e\xe1\x4a\x06\xa1\xa0\x69\x37\xae\xb5\x80\x4b"
/********************************************************************************************************
	@grpend		depth effect shaders
*********************************************************************************************************/

/* FORMZ SUPPLIED BACKGROUND SHADERS */
/********************************************************************************************************

	@grpbegin	Background Shaders	

	@desc	Background Shader identifiers

	@avail	5.0.0.0

	@toc	modl_rmtl

*********************************************************************************************************/
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Plain Color background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_PLAIN_UUID		"\xbb\xb0\x73\x18\x4a\xca\x4d\xfb\x8d\x6c\x58\x35\x25\x65\x77\x67"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Graduated background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_GRADUATED_UUID	"\xe6\x01\xc1\x8d\xfc\x75\x49\xd4\xbf\xb8\xa2\x6e\xb6\x51\x3e\xd8"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Sky background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_CLOUDS_UUID	    "\x25\xe4\x26\x86\x8e\x70\x48\xf3\x92\x9b\x14\xce\xe7\x4e\xd2\x28"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Background Map background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_IMAGE_UUID	    "\x68\x35\x83\x41\x6e\xe1\x4a\x06\xa1\xa0\x69\x37\xae\xb5\x80\x4b"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Brick background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_BRICK_UUID	    "\x57\xbc\x08\xf7\x72\x19\x4e\x7c\x86\x05\x37\xe9\x96\x42\xc4\xe3"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Polka Dots background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_POLKA_UUID	    "\xba\xd9\x01\xbf\xf4\x74\x4a\xef\xac\x71\x0e\xc4\x3e\xd2\xaa\xc6"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Marble background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_SMARBLE_UUID	    "\x76\x03\xa6\x27\x0d\x0e\x47\x2d\xac\x65\xb3\xb8\xf6\x2d\xd8\x43"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Brick background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_TBRICK_UUID	    "\x6b\x73\x56\x02\x50\xa3\x40\x61\x8e\xc9\x19\x31\xf6\xf8\xd3\x52"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Marble background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_AMARBLE_UUID	    "\xff\x96\x80\xda\x11\x0e\x4f\x1a\x88\x2f\x29\x88\x98\xfc\xe9\x72"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Stripes background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_STRIPE_UUID	    "\x89\x61\x76\xb3\x90\x76\x40\xa5\x83\x53\xa0\xc8\x1d\x6e\x8f\xd5"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Grid background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_GRID_UUID			"\x41\x54\xb2\xf1\xdf\x74\x45\xe7\xb4\x86\xf3\x1c\xbb\xe2\x17\x04"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Checker background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_CHECKER_UUID	    "\x14\xc4\xad\x9f\x25\x1c\x4f\x47\x9a\x86\x73\x3a\xac\xd5\xa0\xfa"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Project Color background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_PROJECT_UUID	    "\xd0\x3f\x74\xb4\x18\x24\x44\xcf\xa5\xbc\x1c\x28\x7e\x06\x1b\x18"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Alpha Channel background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_ALPHA_UUID		"\xb4\xce\x9b\xe7\xb9\x3c\x40\x19\x9f\x0d\x83\x6b\xa3\xed\x3e\x99"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Project Background background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_PROJECT_FULL_UUID	"\xdd\x7c\xed\xda\xa1\x67\x4c\x3b\xbc\x2c\x49\x54\x13\x72\x3f\x38"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Environment background shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_BACK_ENV_UUID			"\xa7\x2d\x22\x3f\x45\xc2\x40\xb0\xbc\x1d\xcc\x0d\x8b\x6f\xa1\xe9"	
/********************************************************************************************************
	@grpend		background shaders
*********************************************************************************************************/

/* FORMZ SUPPLIED ENVIRONMENT SHADERS */
/********************************************************************************************************

	@grpbegin	Environment Shaders	

	@desc	Environment Shader identifiers

	@avail	5.0.0.0

	@toc	modl_rmtl

*********************************************************************************************************/
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Plain Color environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_PLAIN_UUID		"\x97\x12\x55\x3b\x63\x74\x46\x26\x89\x76\x99\xd3\x50\x73\xba\xbb"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Graduated environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_GRADUATED_UUID	"\x92\x89\x84\xfe\x29\x0c\x40\x55\x92\x08\x84\x19\x09\x7b\xe5\x10"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Sky environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_CLOUDS_UUID	"\x2e\xf0\x7f\x4a\x7c\xec\x43\x92\x98\x73\xa0\x88\xc5\xfa\x06\x3c"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Environment Map environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_IMAGE_UUID		"\x05\x27\x50\xc8\xaf\x9b\x4a\x6a\x98\xee\x88\x99\x6d\x7d\x76\xa7"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Brick environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_BRICK_UUID		"\xdf\x47\x46\x7b\x05\x53\x49\x22\x9b\x82\x11\xf5\x1c\xb9\x41\x67"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Polka Dots environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_POLKA_UUID		"\x5a\xbb\x35\x1f\xf8\x03\x44\x6a\xa2\x3d\x2f\x4e\x8c\xa1\x1a\x84"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Marble environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_SMARBLE_UUID	"\x7b\x87\xa0\x47\x4a\x3b\x4d\xeb\xa1\x80\xb2\xc6\x3a\xec\xbf\x7b"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Brick environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_TBRICK_UUID	"\x4a\xe8\x11\x95\xf1\xa4\x49\x3b\xb5\x81\x56\xf0\x15\x16\x31\x72"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Marble environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_AMARBLE_UUID	"\xa4\x5d\x27\xe3\x51\x7d\x4f\x51\xa3\xd8\x53\x34\xea\x0f\x34\x48"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Stripes environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_STRIPE_UUID	"\x53\x28\xe4\x3f\x1e\x1d\x4a\xa6\x8d\xae\xa9\x2f\xce\x89\x29\x6a"	
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Grid environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_GRID_UUID		"\xeb\x05\x1e\x03\x62\x80\x43\x06\xb9\x61\xa2\xd8\xb5\x49\x8c\x22"
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Checker environment shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_ENV_CHECKER_UUID	"\xa9\xa5\x1f\xce\xf8\x5f\x45\x46\x96\x83\xbe\x30\x2c\xe3\x68\x43"	
/********************************************************************************************************
	@grpend		environment shaders
*********************************************************************************************************/

/* FORMZ SUPPLIED REFLECTION MAP SHADERS */
/********************************************************************************************************

	@grpbegin	Reflection Map Shaders	

	@desc	Reflection Map Shader identifiers

	@avail	5.0.0.0

	@toc	modl_rmtl

*********************************************************************************************************/
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the None reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_NONE_UUID		FZ_SHDR_TRNS_NONE_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Brick reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_BRICK_UUID	FZ_SHDR_TRNS_BRICK_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Brick reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_TBRICK_UUID	FZ_SHDR_TRNS_TBRICK_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Checker reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_CHECKER_UUID	FZ_SHDR_TRNS_CHECKER_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Grid reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_GRID_UUID		FZ_SHDR_TRNS_GRID_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Polka Dots reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_WPOLKA_UUID	FZ_SHDR_TRNS_WPOLKA_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Stripes reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_STRIPE_UUID	FZ_SHDR_TRNS_STRIPE_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Accurate Wood reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_WTEXWOOD_UUID	FZ_SHDR_TRNS_WTEXWOOD_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Checker reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_CUBES_UUID	FZ_SHDR_TRNS_CUBES_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Marble reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_SMARBLE_UUID	FZ_SHDR_TRNS_SMARBLE_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Textured Marble reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_AMARBLE_UUID	FZ_SHDR_TRNS_AMARBLE_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Mist reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_MIST_UUID		FZ_SHDR_TRNS_MIST_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Polka Dots reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_SPOLKA_UUID	FZ_SHDR_TRNS_SPOLKA_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Solid Accurate Wood reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_STEXWOOD_UUID	FZ_SHDR_TRNS_STEXWOOD_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Simple Wood reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_WOOD_UUID		FZ_SHDR_TRNS_WOOD_UUID
/********************************************************************************************************
	@gdef		
	@desc	Unique identifier for the Ambient, Diffuse, Specular etc. Map reflection map shader
	@avail	5.0.0.0
*********************************************************************************************************/
#define FZ_SHDR_RMAP_TMAP_UUID		FZ_SHDR_TRNS_TMAP_UUID
/********************************************************************************************************
	@grpend		reflection map shaders
*********************************************************************************************************/

/********************************************************************************************************

	@enum	Material delete type.

	@desc	Indicates how to delete a surface style. 
			This enum is used in the function fz_rmtl_delete.

	@avail	5.0.0.0

 	@see	fz_rmtl_delete,<auto>

	@toc	modl_rmtl

*********************************************************************************************************/
typedef enum fz_rmtl_repl_opt_enum
{	FZ_RMTL_DELETE_REPLACE_CURRENT = 0,		/*	@emem	Replaces the deleted surface style with the current surface style in the windex. 
														If the deleted surface style is also the current surface style a new surface style will 
														be chosen first */
	FZ_RMTL_DELETE_REPLACE_GIVEN,				/*	@emem	Replaces the deleted surface style with the given surface style */
	FZ_RMTL_DELETE_REPLACE_ASK,				/*	@emem	Brings up a picker dialog which lets the user 
														choose which surface style will be substituted */
	
	RMTL_DELETE_REPLACE_MAX
} fz_rmtl_repl_opt_enum;

/********************************************************************************************************

	@enum	Parameter identifiers for a surface style.

	@desc	Parameter identifiers for a surface style. 
			Used for the "which" argument of fz_rmtl_get_parm and fz_rmtl_set_parm.
			
	@avail	5.0.0.0
			
 	@see	fz_rmtl_get_parm,fz_rmtl_set_parm,<auto>

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl
	
	@toc	modl_rmtl

*********************************************************************************************************/
typedef enum fz_rmtl_parm_enum
{
	FZ_RMTL_PARM_NAME = 0,					/*	@emem 		surface style name. The name cannot be longer than 32 characters.
										  		@ptype		char* 		*/
										  		
	FZ_RMTL_PARM_COL_SHADER,					/*	@emem 		color shader of a surface style
										  		@ptype		fz_shdr_ptr 	
										  		@rd_only				*/
										  		
	FZ_RMTL_PARM_REF_SHADER,					/*	@emem 		reflection shader of a surface style
										  		@ptype		fz_shdr_ptr 	
										  		@rd_only				*/
										  		
	FZ_RMTL_PARM_TRN_SHADER,					/*	@emem 		transparency shader of a surface style
										  		@ptype		fz_shdr_ptr 	
										  		@rd_only				*/
										  		
	FZ_RMTL_PARM_BMP_SHADER,					/*	@emem 		bump shader of a surface style
										  		@ptype		fz_shdr_ptr 	
										  		@rd_only				*/
										  		
	FZ_RMTL_PARM_SHADER_AA_ON,				/*	@emem 		Shader antialiasing on (TRUE) or off (FALSE).
												@ptype		fzrt_boolean 	*/
										  		
	FZ_RMTL_PARM_SHADER_AA_COL_ON,			/*	@emem 		Apply shader antialiasing for the color shader of a surface style
												@ptype		fzrt_boolean 	*/
										  		
	FZ_RMTL_PARM_SHADER_AA_COL_QUAL,			/*	@emem 		shader antialiasing quality for the color shader of a surface style 
										  		@ptype		fz_rmtl_parm_shdraa_qual_enum */
										  		
	FZ_RMTL_PARM_SHADER_AA_COL_SPACE,			/*	@emem 		which space to use for shader antialiasing the color shader of a surface style
										  		@ptype		fz_rmtl_parm_shdraa_space_enum */
										  		
	FZ_RMTL_PARM_SHADER_AA_REF_ON,			/*	@emem 		Apply shader antialiasing for the reflection shader of a surface style
												@ptype		fzrt_boolean 	*/
										  		
	FZ_RMTL_PARM_SHADER_AA_REF_QUAL,			/*	@emem 		shader antialiasing quality for the reflection shader of a surface style
										  		@ptype		fz_rmtl_parm_shdraa_qual_enum */
										  		
	FZ_RMTL_PARM_SHADER_AA_REF_SPACE,			/*	@emem 		which space to use for shader antialiasing the reflection shader of a surface style
										  		@ptype		fz_rmtl_parm_shdraa_space_enum */
										  		
	FZ_RMTL_PARM_SHADER_AA_BMP_ON,			/*	@emem 		Apply shader antialiasing for the bump shader of a surface style
												@ptype		fzrt_boolean 	*/
										  		
	FZ_RMTL_PARM_SHADER_AA_BMP_QUAL,			/*	@emem 		shader antialiasing quality for the bump shader of a surface style
										  		@ptype		fz_rmtl_parm_shdraa_qual_enum */
										  		
	FZ_RMTL_PARM_SHADER_AA_BMP_SPACE,			/*	@emem 		which space to use for shader antialiasing the bump shader of a surface style
										  		@ptype		fz_rmtl_parm_shdraa_space_enum */
										  		
	FZ_RMTL_PARM_SIMPLE_BY_AVERGE_OBSOLETE,	/*	@emem 		Average simple color and transparency from RenderZone parameters of a surface style 
															Obsolete: This functionality is no longer available. It has been automated. Simple 
															surface style representation now has its own parameters and api's.
												@ptype		fzrt_boolean 	*/
										  		
	FZ_RMTL_PARM_SIMPLE_COLOR_OBSOLETE,		/*	@emem 		Explicitly set simple surface style color
															Obsolete: This functionality is no longer available. It has been automated. Simple 
															surface style representation now has its own parameters and api's.
										  		@ptype		rgb */
										  		
	FZ_RMTL_PARM_SIMPLE_TRANS_OBSOLETE,		/*	@emem 		Explicitly set simple surface style transparency
															Obsolete: This functionality is no longer available. It has been automated. Simple
															surface style representation now has its own parameters and api's.
												@ptype		double
												@rimin_imax 0.0 | 1.0 */
	FZ_RMTL_PARM_SREP_UUID,					/*	@emem 		set teh active srep for the materail.
												@ptype		uuid
											*/

	RMTL_PARAM_MAX
	
} fz_rmtl_parm_enum;

/********************************************************************************************************

	@enum

	@desc	Indicates the quality of the shader antialiasing. 
			This enum is used in the parameters FZ_RMTL_PARM_SHADER_AA_COL_QUAL, 
			FZ_RMTL_PARM_SHADER_AA_REF_QUAL and FZ_RMTL_PARM_SHADER_AA_BMP_QUAL 
			in the functions fz_rmtl_get_parm and fz_rmtl_set_parm.

	@avail	5.0.0.0

 	@see	fz_rmtl_get_parm,fz_rmtl_set_parm

	@toc	modl_rmtl

*********************************************************************************************************/
typedef enum fz_rmtl_parm_shdraa_qual_enum
{
	FZ_RMTL_SHADER_AA_QUAL_LOW = 0,			/*	@emem low shader antialiasing quality */
	FZ_RMTL_SHADER_AA_QUAL_MEDIUM,				/*	@emem medium shader antialiasing quality */
	FZ_RMTL_SHADER_AA_QUAL_HIGH,				/*	@emem high shader antialiasing quality */
	
	RMTL_SHADER_AA_QUAL_MAX
} fz_rmtl_parm_shdraa_qual_enum;

/********************************************************************************************************

	@enum

	@desc	Identifier for the space in which shader antialiasing occurs.
			This enum is used in the parameter FZ_RMTL_PARM_SHADER_AA_COL_SPACE, 
			FZ_RMTL_PARM_SHADER_AA_REF_SPACE and FZ_RMTL_PARM_SHADER_AA_BMP_SPACE 
			in the functions fz_rmtl_get_parm and fz_rmtl_set_parm.

	@avail	5.0.0.0

 	@see	fz_rmtl_get_parm,fz_rmtl_set_parm

	@toc	modl_rmtl

*********************************************************************************************************/
typedef enum fz_rmtl_parm_shdraa_space_enum
{
	FZ_RMTL_SHADER_AA_SPACE_SCREEN = 0,		/*	@emem shader antialiasing occurs in screen space */
	FZ_RMTL_SHADER_AA_SPACE_WORLD,				/*	@emem shader antialiasing occurs in world space */
	FZ_RMTL_SHADER_AA_SPACE_TEXTURE,			/*	@emem shader antialiasing occurs in texture space */
	
	RMTL_SHADER_AA_SPACE_MAX
} fz_rmtl_parm_shdraa_space_enum;

/********************************************************************************************************

	@enum	Texture map type.

	@desc	Indicates what sampling type the texture map uses. 
			This enum is used in the function fz_shdr_get_parm 
			when the parameter identifier is texture type.

	@avail	5.0.0.0

 	@see	fz_shdr_get_parm

	@toc	modl_rmtl

*********************************************************************************************************/
typedef enum fz_shdr_tmap_type_enum
{
	FZ_SHDR_TMAP_TYPE_MIPMAP = 0,				/*	@emem texture map sampling is MIPMAP */
	FZ_SHDR_TMAP_TYPE_SUMTABLE,				/*	@emem texture map sampling is summation table */
	
	SHDR_TMAP_TYPE_MAX
} fz_shdr_tmap_type_enum;

/********************************************************************************************************

	@enum

	@desc	Indicates the fit options for background maps. 
			This enum is used in the function fz_shdr_get_parm 
			when the parameter identifier is fit option and the texture map 
			is a background map.

	@avail	5.0.0.0

 	@see	fz_shdr_get_parm

	@toc	modl_rmtl

*********************************************************************************************************/
typedef enum fz_shdr_bgmap_size_enum
{
	FZ_SHDR_BGMAP_FIT_WINDOW = 0,				/*	@emem fit background image to the window			*/
	FZ_SHDR_BGMAP_KEEP_SIZE,					/*	@emem keep original size of the background image	*/
	FZ_SHDR_BGMAP_SCALE,						/*	@emem scale background image by a given factor		*/
	
	SHDR_BGMAP_MAX
} fz_shdr_bgmap_size_enum;


/************************************************************************

	@fsfunc_t	Gets the number of surface styles in a windex

	@desc		Gets the number of surface styles in a windex.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_num_rmtl_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fzrt_int				*num_rmtl		/* @parm <out> | number of surface styles	*/
	);

/************************************************************************

	@fsfunc_t	Gets the surface style pointer from the surface style tag

	@desc		Gets the surface style pointer from the surface style tag.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_tag_to_ptr_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_tag_td			*tag,		/* @parm <in> | surface style tag	*/
	fz_rmtl_ptr			*rmtl		/* @parm <out> | surface style		*/
	);

/************************************************************************

	@fsfunc_t	Gets the surface style pointer from the logical 
				(numbered) position of a surface style in the project

	@desc		Gets the surface style pointer from the logical 
				(numbered) position of a surface style in the project. 
				The position passed in must be 0 based.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_pos_to_ptr_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fzrt_int				pos,		/* @parm <in> | logical position of surface style	*/
	fz_rmtl_ptr			*rmtl		/* @parm <out> | surface style						*/
	);

/************************************************************************

	@fsfunc_t	Gets the surface style tag from the surface style pointer

	@desc		Gets the surface style tag from the surface style pointer.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_ptr_to_tag_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,		/* @parm <in> | surface style		*/
	fz_tag_td			*tag		/* @parm <out> | surface style tag	*/
	);

/************************************************************************

	@fsfunc_t	Gets the logical (numbered) position of the surface style 
				in the project from the surface style pointer

	@desc		Gets the logical (numbered) position of the surface style 
				in the project from the surface style pointer. 
				The position values are 0 based.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_ptr_to_pos_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,		/* @parm <in> | surface style						*/
	fzrt_int				*pos		/* @parm <out> | logical position of surface style	*/
	);

/************************************************************************

	@fsfunc_t	Given a surface style pointer, get the next 
				surface style pointer in the windex

	@desc		Given a surface style pointer, get the next 
				surface style pointer in the windex. 
				If rmtl_in is passed as NULL, the first item in the 
				windex is returned.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_next_rmtl_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl_in,		/* @parm <in> | surface style		*/
	fz_rmtl_ptr			*rmtl_next		/* @parm <out> | next surface style	*/
	);

/************************************************************************

	@fsfunc_t	Given a surface style pointer, get the previous 
				surface style pointer in the windex

	@desc		Given a surface style pointer, get the previous 
				surface style pointer in the windex. 
				If rmtl_in is passed as NULL, the last item in the 
				windex is returned.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_prev_rmtl_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl_in,		/* @parm <in> | surface style			*/
	fz_rmtl_ptr			*rmtl_prev		/* @parm <in> | previous surface style	*/
	);

/************************************************************************

	@fsfunc_t	Creates a new surface style in the given windex

	@desc		Creates a new surface style in the given windex.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_create_new_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			*rmtl		/* @parm <in_out> | surface style		*/
	);

/************************************************************************

	@fsfunc_t	Creates a duplicate surface style from a given surface style

	@desc		Creates a duplicate surface style from a given surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_duplicate_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl_in,		/* @parm <in> | source surface style			*/
	fz_rmtl_ptr			*rmtl_dupl		/* @parm <in_out> | new surface style		*/
	);

/************************************************************************

	@fsfunc_t	Deletes a surface style

	@desc		Deletes a surface style. 
				If the surface style to be deleted is referenced from another entity, 
				the repl_option parameter decides what will be done. 
				Note : the surface style cannot be deleted if it is the only surface style in the windex.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_delete_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,			/* @parm <in> | surface style				*/
	fz_rmtl_repl_opt_enum	repl_option,	/* @parm <in> | replacement options			*/
	fz_rmtl_ptr			rmtl_repl		/* @parm <in> | replacement surface style	*/
	);

/************************************************************************

	@fsfunc_t	Removes unused surface styles from the windex

	@desc		Removes unused surface styles from the windex. 
				At least one item remains in the windex, 
				even if it is not used.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_purge_func) (	
	fzrt_int				windex		/* @parm <in> | project	window index		*/
	);

/************************************************************************

	@fsfunc_t	Gets the currently active surface style in a windex

	@desc		Gets the currently active surface style in a windex.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_current_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			*rmtl		/* @parm <out> | surface style		*/
	);

/************************************************************************

	@fsfunc_t	Sets the currently active surface style in a windex

	@desc		Sets the currently active surface style in a windex.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_set_current_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl		/* @parm <in> | surface style		*/
	);

/************************************************************************

	@fsfunc_t	Finds a surface style that has a plain color 
				shader with a given rgb value

	@desc		Finds a surface style that has a plain color 
				shader with a given rgb value. 
				If none is found, rmtl_match is returned as NULL.<nl>
				Note: this routine only considers surface styles with 
				the plain color shader when running the RenderZone or RadioZity 
				version. 
				In the formZ build all surface styles are checked.<nl>
				Colors are considered equal if the rgb components 
				are within 1/1000th of each other.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_find_by_rgb_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rgb_float_td		*rgb,			/* @parm <in> | color to match		*/
	fz_rmtl_ptr			*rmtl_match		/* @parm <out> | surface style		*/
	);

/************************************************************************

	@fsfunc_t	Create the preview image of a surface style

	@desc		Create the preview image of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_gen_preview_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl		/* @parm <in> | surface style		*/
	);

/************************************************************************

	@fsfunc_t	Gets the average color of a surface style

	@desc		Gets the average color of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_avg_color_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,		/* @parm <in> | surface style	*/
	fz_rgb_float_td		*color		/* @parm <out> | color			*/
	);

/************************************************************************

	@fsfunc_t	Gets the average transparency of a surface style

	@desc		Gets the average transparency of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_avg_trans_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,		/* @parm <in> | surface style			*/
	double				*trans		/* @parm <out> | average transparency	*/
	);

/************************************************************************

	@fsfunc_t	Gets the ambient reflection factor of a surface style

	@desc		Gets the ambient reflection factor of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_ambient_factor_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,			/* @parm <in> | surface style		*/
	double				*ambient		/* @parm <in> | ambient reflection	*/
	);

/************************************************************************

	@fsfunc_t	Gets the diffuse reflection factor of a surface style

	@desc		Gets the diffuse reflection factor of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_diffuse_factor_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,			/* @parm <in> | surface style				*/
	double				*diffuse		/* @parm <out> | diffuse reflection factor	*/
	);

/************************************************************************

	@fsfunc_t	Gets the specular reflection factor of a surface style

	@desc		Gets the specular reflection factor of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_specular_factor_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,			/* @parm <in> | surface style				*/
	double				*specular		/* @parm <out> | specular reflection factor	*/
	);

/************************************************************************

	@fsfunc_t	Gets the specular reflection exponent of a surface style

	@desc		Gets the specular reflection exponent of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_specular_expo_func) (	
	fzrt_int				windex,				/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,				/* @parm <in> | surface style					*/
	double				*specular_expo		/* @parm <out> | specular reflection exponent	*/
	);

/************************************************************************

	@fsfunc_t	Gets the specular color reflection parameter of a surface style

	@desc		Gets the specular color reflection parameter of a surface style

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_specular_color_func) (	
	fzrt_int				windex,				/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,				/* @parm <in> | surface style				*/
	fz_rgb_float_td		*specular_color		/* @parm <out> | specular color reflection	*/
	);

/************************************************************************

	@fsfunc_t	Gets the Specular reflection Final Gather flag of a surface style

	@desc		Gets the Specular reflection Final Gather flag of a surface style.

	@return		Error codes

	@avail		6.5.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_specular_fg_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,			/* @parm <in> | surface style				*/
	fzrt_boolean		*calc_fg		/* @parm <out> | whether or not to calculate specular with Final Gather	*/
	);

/************************************************************************

	@fsfunc_t	Sets the Specular reflection Final Gather flag of a surface style

	@desc		Sets the Specular reflection Final Gather flag of a surface style.

	@return		Error codes

	@avail		6.5.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_set_specular_fg_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,			/* @parm <in> | surface style				*/
	fzrt_boolean		calc_fg			/* @parm <in> | whether or not to calculate specular with Final Gather	*/
	);

/************************************************************************

	@fsfunc_t	

	@desc		Check whether a surface style is in use. Surface style may be used by :
					Objects
					Faces
					Lights (Area lights)
					Layers (Override attribtue)
					Decals (RenderZone)
				If any of these entities in a project reference the given surface style
				TRUE is returned.

	@return		Error codes

	@avail		6.5.7.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_is_used_func) (	
		fzrt_int				windex,		/* @parm <in> | project window index */
		fz_rmtl_ptr			rmtl_ptr,   /* @parm <in> | surface style				*/
		fzrt_boolean		*in_use		/* @parm <out> | TRUE if in use, FALSE otherwise	*/
	);

/************************************************************************

	@fsfunc_t	Gets the mirror reflection factor of a surface style

	@desc		Gets the mirror reflection factor of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_mirror_factor_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,		/* @parm <in> | surface style				*/
	double				*mirror		/* @parm <out> | mirror reflection factor	*/
	);

/************************************************************************

	@fsfunc_t	Gets the transmission factor of a surface style

	@desc		Gets the transmission factor 
				(i.e. glass-like transmission) of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_transmission_factor_func) (	
	fzrt_int				windex,				/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,				/* @parm <in> | surface style			*/
	double				*transmission		/* @parm <out> | transmission factor	*/
	);

/************************************************************************

	@fsfunc_t	Gets the index of refraction reflection parameter of a surface style

	@desc		Gets the index of refraction reflection parameter of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_refraction_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,			/* @parm <in> | surface style			*/
	double				*refraction		/* @parm <out> | index of refraction	*/
	);

/************************************************************************

	@fsfunc_t	Gets the glow reflection factor of a surface style

	@desc		Gets the glow reflection factor of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_glow_factor_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,		/* @parm <in> | surface style				*/
	double				*glow		/* @parm <out> | glow reflection factor		*/
	);

/************************************************************************

	@fsfunc_t	Gets a parameter of a surface style

	@desc		Gets a parameter of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl
	
*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_parm_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,		/* @parm <in> | surface style			*/
	fz_rmtl_parm_enum		which,		/* @parm <in> | parameter identifier	*/
	fz_type_td			*data		/* @parm <out> | parameter data			*/
	);

/************************************************************************

	@fsfunc_t	Sets a parameter of a surface style

	@desc		Sets a parameter of a surface style.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_set_parm_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,		/* @parm <in> | surface style			*/
	fz_rmtl_parm_enum		which,		/* @parm <in> | parameter identifier	*/
	fz_type_td			*data		/* @parm <in> | parameter data			*/
	);

/************************************************************************

	@fsfunc_t	Gets a parameter of a render shader

	@desc		Gets a parameter of a render shader. 
				The parameter is identified by parm_id and is enumerated for each shader.
				<nl>
				For reflection shaders the parameters are in the same order as in the 
				respective dialog, except that the reflection maps are listed at the end. 
				For example for the MATTE shader, the parameters are :
				ambient factor, diffuse factor, glow factor, ambient map, diffuse map, glow map.
				<nl>
				For texture map based shaders the parameters are as follows :
				<nl>
				Color map :<nl>
					 0 scale<nl>
					 1 texture map<nl>
					 2 texture type		(FZ_SHDR_TMAP_TYPE_MIPMAP, FZ_SHDR_TMAP_TYPE_SUMTABLE)<nl>
					 3 smoothness<nl>
					 4 horizontal infinite on/off<nl>
					 5 horizontal # of repetitions<nl>
					 6 horizontal centering<nl>
					 7 vertical infinite on/off<nl>
					 8 vertical # of repetitions<nl>
					 9 vertical centering<nl>
					10 repeat color at edges on/off<nl>
					11 color beyond image edges<nl>
				<nl>
				Transparency map :<nl>
					 0 scale<nl>
					 1 texture map<nl>
					 2 texture type		(FZ_SHDR_TMAP_TYPE_MIPMAP, FZ_SHDR_TMAP_TYPE_SUMTABLE)<nl>
					 3 smoothness<nl>
					 4 horizontal infinite on/off<nl>
					 5 horizontal # of repetitions<nl>
					 6 horizontal centering<nl>
					 7 vertical infinite on/off<nl>
					 8 vertical # of repetitions<nl>
					 9 vertical centering<nl>
					10 repeat color at edges on/off<nl>
					11 color beyond image edges<nl>
					12 alpha channel on/off<nl>
					13 invert alpha channel on/off<nl>
					14 black as mask on/off<nl>
				<nl>
				Bump map :<nl>
					 0 scale<nl>
					 1 texture map<nl>
					 2 texture type		(FZ_SHDR_TMAP_TYPE_MIPMAP, FZ_SHDR_TMAP_TYPE_SUMTABLE)<nl>
					 3 smoothness<nl>
					 4 horizontal infinite on/off<nl>
					 5 horizontal # of repetitions<nl>
					 6 horizontal centering<nl>
					 7 vertical infinite on/off<nl>
					 8 vertical # of repetitions<nl>
					 9 vertical centering<nl>
					10 repeat bumps at edges on/off<nl>
					11 bump amplitude<nl>
					12 alpha channel on/off<nl>
				<nl>
				Background map :<nl>
					 0 scale<nl>
					 1 texture map<nl>
					 2 fit option	(FZ_SHDR_BGMAP_FIT_WINDOW, FZ_SHDR_BGMAP_KEEP_SIZE, FZ_SHDR_BGMAP_SCALE)<nl>
					 3 maintain proportions on/off<nl>
				<nl>
				Spherical environment map :<nl>
					 0 scale<nl>
					 1 texture map<nl>
					 2 rotation around world z<nl>
					 3 horizontal start<nl>
					 4 horizontal end<nl>
					 5 vertical top<nl>
					 6 vertical bottom<nl>
				<nl>
				Ambient, diffuse, specular, mirror, transmission, glow maps<nl>
					 0 scale<nl>
					 1 texture map<nl>
					 2 texture type		(FZ_SHDR_TMAP_TYPE_MIPMAP, FZ_SHDR_TMAP_TYPE_SUMTABLE)<nl>
					 3 smoothness<nl>
					 4 horizontal infinite on/off<nl>
					 5 horizontal # of repetitions<nl>
					 6 horizontal centering<nl>
					 7 vertical infinite on/off<nl>
					 8 vertical # of repetitions<nl>
					 9 vertical centering<nl>
					10 repeat color at edges on/off<nl>
					11 color beyond image edges<nl>
					12 alpha channel on/off<nl>
					13 invert alpha channel on/off<nl>

				
				To match the value of the Roughness parameter of a reflection shader 
				to what the dialog interface does, you need to azpply the square root to the 
				value retrieved by fz_shdr_ptr_get_parm. For example, if the dialog shows 10% (i.e. 0.1) you
				will get 0.01 from fz_shdr_ptr_get_parm. Applying the square root will give you 0.1.
				The reason for this is, that the dialog applies an exponential
				scaling of the value entered by the user.


	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_shdr_ptr_get_parm_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_shdr_ptr			shdr,		/* @parm <in> | shader					*/
	fzrt_int				parm_id,	/* @parm <in> | parameter identifier	*/
	fz_type_td			*data		/* @parm <out> | parameter data			*/
	);

/************************************************************************

	@fsfunc_t	Gets the data type of a parameter of a render shader

	@desc		Gets the data type of a parameter of a render shader. 
				The parameter is identified by parm_id and is enumerated 
				for each shader.<nl>
				Possible types are :<nl>
				<nl>
					FZ_TYPE_INT<nl>
					FZ_TYPE_FLOAT<nl>
					FZ_TYPE_XYZ_FLOAT<nl>
					FZ_TYPE_RGB_FLOAT<nl>
					FZ_TYPE_BOOL<nl>
					FZ_TYPE_PTR<nl>
				<nl>
				If the shader is a reflection shader, the last parameters 
				are always the reflection maps. 
				For example, the MATTE shader has three reflection maps :
				ambient, diffuse and glow.<nl>
				Those are the last three parameters and are of type FZ_TYPE_PTR. 
				This pointer references another fz_shdr_ptr, 
				which is the reflection map shader.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_shdr_ptr_get_parm_type_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_shdr_ptr			shdr,			/* @parm <in> | shader					*/
	fzrt_int				parm_id,		/* @parm <in> | parameter identifier	*/
	fzrt_int				*data_type		/* @parm <out> | parameter data			
												@rflag	fz_type_enum		*/
	);

/************************************************************************

	@fsfunc_t	Gets the number of parameters in a shader

	@desc		Gets the number of parameters in a shader. 
				The number of parameters is the same as the parameters 
				shown in the respective dialogs.<nl>
				For reflection shaders, each reflection map counts as one parameter.<nl>
				For texture map based shaders, the # of parameters is :<nl>
				Color map : 12<nl>
				Transparency map : 15<nl>
				Bump map : 13<nl>
				Background map : 4<nl>
				Environment map : 7<nl>
				Ambient, diffuse, specular, mirror, transmission, glow map : 14<nl>
				<nl>
				A detail list of the parameters for texture map based shaders is given with 
				the description of the function fz_shdr_ptr_get_parm.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_shdr_ptr_get_num_parm_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_shdr_ptr			shdr,			/* @parm <in> | shader					*/
	fzrt_int				*num_param		/* @parm <out> | number of parameters	*/
	);

/************************************************************************

	@fsfunc_t	Sets a parameter of a render shader

	@desc		Sets a parameter of a render shader. 
				The parameter is identified by parm_id and is 
				enumerated for each shader.<nl>
				<nl>
				See the description of the function fz_shdr_ptr_get_parm 
				for details about the shaders parameters.<nl>
				<nl>
				Note : the tmap pointer of texture map based shaders and the 
				reflection map pointer of reflection shader can only be retrieved 
				with fz_shdr_ptr_get_parm but not set with fz_shdr_ptr_set_parm.
				
				To match the value of the Roughness parameter of a reflection shader 
				to what the dialog interface does, you need to square the value passed
				in. For example, if the dialog shows 10% (i.e. 0.1) and you want
				to set it to the same value you need to pass in 0.1 * 0.1 (= 0.01).
				The reason for this is, that the dialog applies an exponential
				scaling of the value entered by the user.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_shdr_ptr_set_parm_func) (	
	fzrt_int				windex,		/* @parm <in> | project window index */
	fz_shdr_ptr			shdr,		/* @parm <in> | shader						*/
	fzrt_int				parm_id,	/* @parm <in> | parameter identifier		*/
	fz_type_td			*data		/* @parm <in> | parameter data				*/
	);

/************************************************************************

	@fsfunc_t	Sets a type of a render shader

	@desc		Sets a type of a render shader. 
				The shader type is identified by the uuid parameter. 
				The shader parameters are initialized to the system defaults.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_shdr_ptr_set_shdr_type_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_shdr_ptr			shdr,			/* @parm <in> | shader		*/
	fzrt_UUID_td		shdr_uuid		/* @parm <in> | shader type	*/
	);

/************************************************************************

	@fsfunc_t	Gets a type of a render shader

	@desc		Gets a type of a render shader. 
				The shader type is identified by the uuid parameter.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_shdr_ptr_get_shdr_type_func) (	
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_shdr_ptr			shdr,			/* @parm <in> | shader		*/
	fzrt_UUID_td		shdr_uuid		/* @parm <out> | shader type	*/
	);

/************************************************************************

	@fsfunc_t	Sets the parameters of a surface style from generic parameters

	@desc		Sets the parameters of a surface style from generic parameters. 
				This function is intended to facilitate the creation of a surface style 
				during import of foreign file formats. Based on the values of the
				function arguments, formZ will choose the most appropriate shader.
				For example, if the refl, specular and trans arguemnts are all 0.0, the
				matte reflection shader is used. If specular is greater than 0.0,
				plastic is used. If refl is greater than 0.0, mirror is used etc.
				
				When setting the color and the rgb col parameter is not NULL, 
				the surface style will be set to a plain color shader. 
				If col is NULL and col_fname (texture map file name) is not NULL, 
				the surface style will be set to the color map shader. 
				If the col_path parameter (texture map path) is NULL, 
				the path will be set to the default texture map path (application directory). 
				
				Likewise for transparency and bump maps.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_attr_rmtl.fsl
	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_set_generic_parm_func)(				
	fzrt_int				windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr			rmtl,			/* @parm <in> | surface style					*/

	fz_rgb_float_td	 	*col,			/* @parm <in_opt> | color						*/
	char		 		*col_fname,		/* @parm <in_opt> | color map file name			*/
	fzrt_floc_ptr		col_floc,		/* @parm <in_opt> | color map file locator		*/

	double			 	ambient,		/* @parm <in> | ambient reflection
										   @rimin 0.0									*/
	double				diffuse,		/* @parm <in> | diffuse reflection
										   @rimin 0.0									*/
	double		 		specular,		/* @parm <in> | specular reflection
										   @rimin 0.0									*/
	double		 		spec_expo,		/* @parm <in> | specular exponent
										   @rmin 0.0									*/
	double				refl,			/* @parm <in> | reflectivity
										   @rimin 0.0									*/
	double				trans,			/* @parm <in> | transmission
										   @rimin 0.0									*/
	double		 		refr,			/* @parm <in> | refraction
										   @rimin 0.0									*/
	fz_rgb_float_td		*spec_col,		/* @parm <in_opt> | specular color				*/

	char				*trn_fname,		/* @parm <in_opt> | transparency map file name	*/
	fzrt_floc_ptr		trn_floc,		/* @parm <in_opt> | transparency map file locator	*/

	char				*bmp_fname,		/* @parm <in_opt> | Bump map file name			*/
	fzrt_floc_ptr		bmp_floc,	    /* @parm <in_opt> | Bump map file locator		*/
	double				bmp_amp			/* @parm <in_opt> | Bump amplitude				*/
	);								

/************************************************************************

	@fsfunc_t	

	@desc		Sorts the entries in the surface styles palette list in alphabetical order. 
				Upper case characters precede the lower case.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_sort_func) (	
	fzrt_int				windex			/* @parm <in> | project window index */
	);

	
/********************************************************************************************************

	@enum

	@desc	Identifies the map shaders of a reflection shader 
			This enum is used in the function fz_rmtl_get_refl_map_shader
			to identifiy which reflection map shader to retrieve. 

	@avail	5.5.0.0

 	@see	fz_shdr_get_parm

	@toc	modl_rmtl

*********************************************************************************************************/
typedef enum fz_shdr_refl_map_enum
{
	FZ_SHDR_REFL_MAP_AMBIENT = 0,				/*	@emem Identifier for the ambient map shader of a reflection shader */
	FZ_SHDR_REFL_MAP_DIFFUSE,					/*	@emem Identifier for the diffuse map shader of a reflection shader */
	FZ_SHDR_REFL_MAP_SPECULAR,					/*	@emem Identifier for the specular map shader of a reflection shader */
	FZ_SHDR_REFL_MAP_MIRROR,					/*	@emem Identifier for the mirror map shader of a reflection shader */
	FZ_SHDR_REFL_MAP_TRANSMISSION,				/*	@emem Identifier for the transmission map shader of a reflection shader */
	FZ_SHDR_REFL_MAP_GLOW,						/*	@emem Identifier for the glow map shader of a reflection shader */
	
	FZ_SHDR_REFL_MAP_MAX
} fz_shdr_refl_map_enum;

/************************************************************************

	@fsfunc_t	

	@desc		Gets the map shader of a surface style. For example, the ambient
				map shader of a surface style can be retrieved with this
				function. If the reflection shader of the given surface style does not use the
				requested reflection map, the map_shader argument is returned as NULL.
				For example, if this function would be used to retrieve the transmission
				map of a surface style that uses the Matte reflection shader, map_shdr would be returned as NULL.
				This function is intended to be used to retrieve the map shaders instead of 
				fz_shdr_ptr_get_parm.

	@return		Error codes

	@avail		5.5.0.0

	@see		

	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_refl_map_shader_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr				rmtl_ptr,		/* @parm <in> | the surface style from which to get the map shader */
	fz_shdr_refl_map_enum	which_map,		/* @parm <in> | the identifier for the particular map shader */
	fz_shdr_ptr				*map_shdr		/* @parm <out> | the requested map shader, or NULL if the reflection shader does not use the requested map */
	);


/********************************************************************************************************

	@enum

	@desc	Identifies the bits of the flags argument to the function
			fz_shdr_ptr_get_info. The bits contain information about a
			shader, such as whether a shader is wrapped or whether it is
			based on an image map.

	@avail	5.5.0.0

 	@see	

	@toc	modl_rmtl

*********************************************************************************************************/
typedef enum fz_shdr_info_flags_enum
{	
	/* SHADER ATTRIBUTES */
	FZ_SHDR_INFO_HAS_TXR = 0,		/*	@emem If set, the shader has a 2d or 3d texture (pattern). Note, that this simply
											  indicates, that the shader creates some kind of pattern as opposed to creating
											  a uniform color (or transparency or bumps). It does not indicate that the
											  shader uses a texture map. This is done by FZ_SHDR_INFO_IS_TMAP_BASED. */
	FZ_SHDR_INFO_HAS_RNDM,			/*	@emem If set, the shader uses random noise. */
	
	FZ_SHDR_INFO_HAS_SCALE,			/*	@emem If set, the shader has the standard scale parameter. That is, the pattern is scalable. */
	FZ_SHDR_INFO_HAS_ASAMPLE,		/*	@emem If set, the shader has the standard area sampling parameter. */

	/* REFLECTION SHADER PARAMETERS */
	FZ_SHDR_INFO_HAS_RAYTRACE,		/*	@emem If set, the shader is a reflection shader and uses raytracing to compute aspects of the shading, 
											  such a mirror or transmission effects. */
	FZ_SHDR_INFO_HAS_AMBT,			/*	@emem If set, the shader is a reflection shader and uses the standard ambient reflection parameter */
	FZ_SHDR_INFO_HAS_DIFF,			/*	@emem If set, the shader is a reflection shader and uses the standard diffuse reflection parameter */
	FZ_SHDR_INFO_HAS_SPEC,			/*	@emem If set, the shader is a reflection shader and uses the standard specular reflection parameter */
	FZ_SHDR_INFO_HAS_MIRR,			/*	@emem If set, the shader is a reflection shader and uses the standard mirror reflection parameter */
	FZ_SHDR_INFO_HAS_TRNS,			/*	@emem If set, the shader is a reflection shader and uses the standard transmission reflection parameter */
	FZ_SHDR_INFO_HAS_GLOW,			/*	@emem If set, the shader is a reflection shader and uses the standard glow reflection parameter */
	FZ_SHDR_INFO_HAS_SPEC_COL,		/*	@emem If set, the shader is a reflection shader and uses the standard specular color reflection parameter */
	
	/* SHADER CLASSIFICATION */
	FZ_SHDR_INFO_IS_DEFAULT,		/*	@emem If set, the shader is the default shader in its class.	*/
	FZ_SHDR_INFO_IS_SOLID,			/*	@emem If set, the shader is a solid shader. 					*/
	FZ_SHDR_INFO_IS_WRAPPED,		/*	@emem If set, the shader is a wrapped shader. 					*/
	FZ_SHDR_INFO_IS_PLAIN_COL,		/*	@emem If set, the shader uses a plain color. */
	FZ_SHDR_INFO_IS_TMAP_BASED,		/*	@emem If set, the shader is based on a texture map.				*/
	FZ_SHDR_INFO_IS_SCRIPT,			/*	@emem If set, the shader is defined by a script. */
	FZ_SHDR_INFO_IS_PLUGIN,			/*	@emem If set, the shader is defined by a plugin. */


	FZ_SHDR_INFO_FLAGS_MAX
} fz_shdr_info_flags_enum;

/************************************************************************

	@fsfunc_t	

	@desc		Retrieves useful information about a shader. The information is
				returned as bits in the flags parameter. The bits are defined in
				the fz_shdr_info_flags_enum. For example, to check whether a shader
				is a wrapped shader this function can be called like this : <nl>
																			<nl>
				fz_shdr_ptr_get_info(windex,shdr_ptr,&flags); 				<nl>
				is_wrapped = FZ_CHKBIT(flags,FZ_SHDR_INFO_IS_WRAPPED);		<nl>

	@return		Error codes

	@avail		5.5.0.0

	@see		

	@exfile		<scdir>/Utilities | util_rmtl.fsl

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_shdr_ptr_get_info_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_shdr_ptr				shdr_ptr,		/* @parm <in> | the shader for which to get the information */
	fzrt_int					*flags			/* @parm <out> | the flags that contain the bit encoded information. See fz_shdr_info_flags_enum for the definition of the bits. */
	);

/************************************************************************

	@fsfunc_t	

	@desc		Renders a color shader into a texture map of a given size. The texture
				map can be returned in a memory buffer of bytes or can be written
				to an image file. To return the texture map in memory, the bytes parameter
				must be passed as non NULL and the bytes storage
				must be allocated by calling code to res * res * 3 bytes. Pixel color
				is stored as unsigned char r g b components.  i.e. 255, 255, 255 is
				white, 0, 0, 0 is black. Pixels are stored in row major order with the top
				left pixel of the texture in the first three bytes.
				To write the texture map to file, the floc parameter must be passed
				as non NULL and must contain a valid file name and file directory.
				The format reference id parameter, ffmt_id, must identify a file
				format that is capable of writing a bitmap image.

	@return		Error codes

	@avail		6.0.0.0

	@see		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_col_shdr_rndr_txr_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr				rmtl_ptr,		/* @parm <in> | the surface style from which to render the color shader */
	fzrt_int					res,			/* @parm <in> | The (horizontal and vertical) resolution of the square texture. */
	fzrt_int					num_tiles,		/* @parm <in> | The number of (horizontal and vertical) tiles with which the pattern is rendered into the texture.
															For example, num_tiles == 3 generates 3 x 3 = 9 tiles of the pattern. */
	unsigned char			*bytes,			/* @parm <in_opt> | byte storage for the texture. IMPORTANT : it is the calling code's responsibility
															 	to allcoate at least res * res * 3 bytes. */
	
	fzrt_floc_ptr			floc,			/* @parm <in_opt> | texture map file locator		*/
	fz_ffmt_ref_td			ffmt_id			/* @parm <in_opt> | The file format reference id.	*/
	);

/************************************************************************

	@fsfunc_t	

	@desc		Renders a transparency shader into a texture map of a given size. The texture
				map can be returned in a memory buffer of bytes or can be written
				to an image file. To return the texture map in memory, the bytes parameter
				must be passed as non NULL and the bytes storage
				must be allocated by calling code to res * res bytes. Pixel transparency
				is stored as unsigned char .  i.e. 255 is
				opaque (white), 0 is transparent (black). Pixels are stored in row major order with the top
				left pixel of the texture in the first three bytes.
				To write the texture map to file, the floc parameter must be passed
				as non NULL and must contain a valid file name and file directory.
				The format reference id parameter, ffmt_id, must identify a file
				format that is capable of writing a bitmap image.

	@return		Error codes

	@avail		6.0.0.0

	@see		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_trn_shdr_rndr_txr_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr				rmtl_ptr,		/* @parm <in> | the surface style from which to render the transparency shader */
	fzrt_int					res,			/* @parm <in> | The (horizontal and vertical) resolution of the square texture. */
	fzrt_int					num_tiles,		/* @parm <in> | The number of (horizontal and vertical) tiles with which the pattern is rendered into the texture.
															For example, num_tiles == 3 generates 3 x 3 = 9 tiles of the pattern. */
	unsigned char			*bytes,			/* @parm <in_opt> | byte storage for the texture. IMPORTANT : it is the calling code's responsibility
															 	to allcoate at least res * res bytes. */
	
	fzrt_floc_ptr			floc,			/* @parm <in_opt> | texture map file locator		*/
	fz_ffmt_ref_td			ffmt_id			/* @parm <in_opt> | The file format reference id.	*/
	
	);

/************************************************************************

	@fsfunc_t	

	@desc		Renders a bump shader into a texture map of a given size. The texture
				map can be returned in a memory buffer of bytes or can be written
				to an image file. To return the texture map in memory, the bytes parameter
				must be passed as non NULL and the bytes storage
				must be allocated by calling code to res * res bytes. Pixel displacement
				is stored as an unsigned char.  i.e. from 255 (white) to 0 (black). 
				Pixels are stored in row major order with the top
				left pixel of the texture in the first three bytes.
				To write the texture map to file, the floc parameter must be passed
				as non NULL and must contain a valid file name and file directory.
				The format reference id parameter, ffmt_id, must identify a file
				format that is capable of writing a bitmap image.

	@return		Error codes

	@avail		6.0.0.0

	@see		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_bmp_shdr_rndr_txr_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr				rmtl_ptr,		/* @parm <in> | the surface style from which to render the bump shader */
	fzrt_int					res,			/* @parm <in> | The (horizontal and vertical) resolution of the square texture. */
	fzrt_int					num_tiles,		/* @parm <in> | The number of (horizontal and vertical) tiles with which the pattern is rendered into the texture.
															For example, num_tiles == 3 generates 3 x 3 = 9 tiles of the pattern. */
	unsigned char			*bytes,			/* @parm <in_opt> | byte storage for the texture. IMPORTANT : it is the calling code's responsibility
															 	to allcoate at least res * res bytes. */
	
	fzrt_floc_ptr			floc,			/* @parm <in_opt> | texture map file locator		*/
	fz_ffmt_ref_td			ffmt_id			/* @parm <in_opt> | The file format reference id.	*/
	
	);
	
/************************************************************************

	@fsfunc_t	

	@desc		Renders a bump shader into a texture map of a given size. Unlike fz_rmtl_get_bmp_shdr_rndr_txr,
				the texture is not returned as a gray scale height map, but as a color coded map,
				where the x,y and z direction of the normal direction of the bumps are
				encoded as r, g and b colors ( r = (x + 1) / 2, g = (y + 1)/2, b = (z + 1) /2 ). This
				creates a texture map commonly known as a normal map.
				The texture map can be returned in a memory buffer of bytes or can be written
				to an image file. To return the texture map in memory, the bytes parameter
				must be passed as non NULL and the bytes storage
				must be allocated by calling code to res * res * 3 bytes. Pixel color
				is stored as unsigned char r g b components.  i.e. 255, 255, 255 is
				white, 0, 0, 0 is black. Pixels are stored in row major order with the top
				left pixel of the texture in the first three bytes.
				To write the texture map to file, the floc parameter must be passed
				as non NULL and must contain a valid file name and file directory.
				The format reference id parameter, ffmt_id, must identify a file
				format that is capable of writing a bitmap image.

	@return		Error codes

	@avail		6.1.0.0

	@see		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_bmp_norm_shdr_rndr_txr_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr				rmtl_ptr,		/* @parm <in> | the surface style from which to render the bump shader */
	fzrt_int					res,			/* @parm <in> | The (horizontal and vertical) resolution of the square texture. */
	fzrt_int					num_tiles,		/* @parm <in> | The number of (horizontal and vertical) tiles with which the pattern is rendered into the texture.
															For example, num_tiles == 3 generates 3 x 3 = 9 tiles of the pattern. */
	unsigned char			*bytes,			/* @parm <in_opt> | byte storage for the texture. IMPORTANT : it is the calling code's responsibility
															 	to allcoate at least res * res * 3 bytes. */
	
	fzrt_floc_ptr			floc,			/* @parm <in_opt> | texture map file locator		*/
	fz_ffmt_ref_td			ffmt_id			/* @parm <in_opt> | The file format reference id.	*/
	
	);
	
	

/************************************************************************

	@fsfunc_t	

	@desc		Renders a reflection map shader into a texture map of a given size. The texture
				map can be returned in a memory buffer of bytes or can be written
				to an image file. To return the texture map in memory, the bytes parameter
				must be passed as non NULL and the bytes storage
				must be allocated by calling code to res * res bytes. Pixel intensity
				is stored as an unsigned char.  i.e. from 255 (white) to 0 (black).
				Pixels are stored in row major order with the top
				left pixel of the texture in the first three bytes.
				To write the texture map to file, the floc parameter must be passed
				as non NULL and must contain a valid file name and file directory.
				The format reference id parameter, ffmt_id, must identify a file
				format that is capable of writing a bitmap image.

				The reflection map is identified by the refl_map argument as follows :<nl>
					0 : ambient map<nl>
					1 : diffuse map<nl>
					2 : specular map<nl>
					3 : mirror map<nl>
					4 : transmission map<nl>
					5 : glow map<nl>nl>

				Note, that only those reflection maps actually are rendered, that are present in
				the given reflection shader of the surface style. For example, rendering the
				mirror map in a matte shader will produce a sold white texture, since the
				matte shader does not have a mirror factor.

	@return		Error codes

	@avail		6.0.0.0

	@see		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_reflmap_shdr_rndr_txr_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr				rmtl_ptr,		/* @parm <in> | the surface style from which to render the reflection map shader */
	fzrt_int					refl_map,		/* @parm <in> | which reflection map to render */
	fzrt_int					res,			/* @parm <in> | The (horizontal and vertical) resolution of the square texture. */
	fzrt_int					num_tiles,		/* @parm <in> | The number of (horizontal and vertical) tiles with which the pattern is rendered into the texture.
															For example, num_tiles == 3 generates 3 x 3 = 9 tiles of the pattern. */
	unsigned char			*bytes,			/* @parm <in_opt> | byte storage for the texture. IMPORTANT : it is the calling code's responsibility
															 	to allcoate at least res * res bytes. */
	
	fzrt_floc_ptr			floc,			/* @parm <in_opt> | texture map file locator		*/
	fz_ffmt_ref_td			ffmt_id			/* @parm <in_opt> | The file format reference id.	*/
	
	);

/************************************************************************

	@fsfunc_t	

	@desc		Renders the color shaders of all faces of an object into a single
				texture. The object is unfolded and then rendered from a top view.
				The uv coordinates of each topological point (segment's start point)
				are returned in the optional uv_coords array. If passed in as non NULL,
				the array must be allocated to the number of items which is equal to the number of
				facetted segments of the object.
				
				The texture map can be returned in a memory buffer of bytes or can be written
				to an image file. To return the texture map in memory, the bytes parameter
				must be passed as non NULL and the bytes storage
				must be allocated by calling code to res * res * 3 bytes if do_alpha is FALSE or
				res * res * 4 bytes if do_alpha is TRUE. Pixel color
				is stored as unsigned char r g b components.  i.e. 255, 255, 255 is
				white, 0, 0, 0 is black. Pixels are stored in row major order with the top
				left pixel of the texture in the first three bytes.
				To write the texture map to file, the floc parameter must be passed
				as non NULL and must contain a valid file name and file directory.
				The format reference id parameter, ffmt_id, must identify a file
				format that is capable of writing a bitmap image.
				
				The rendered texture for each face does actually not show the shape of the
				face but coveres the entire bounding rectangle of the face. This is done to avoid
				color bleeding artifacts when using MIP mapping and summation table sampling
				techniques. In order to capture the shape of the face in the texture, the do_alpha
				argument needs to be set to TRUE. When this is done, the shape of the face
				is rendered into the aplha channel of the texture, where a pixel covered by the
				face is on (255) and a true background pixels is off (0).
				
				Note, that the texture contains all effects of the color shaders properly. This 
				includes decals, solid texture and random patterns.

	@return		Error codes

	@avail		6.0.0.0

	@see		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_obj_col_rndr_txr_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_objt_ptr				objt,			/* @parm <in> | the object, whose color shaders to render into the texture map */
	fzrt_int					res,			/* @parm <in> | The (horizontal and vertical) resolution of the square texture. */
	unsigned char			*bytes,			/* @parm <in_opt> | byte storage for the texture. IMPORTANT : it is the calling code's responsibility
															 	to allcoate at least res * res * 3 bytes. */
	fzrt_floc_ptr			floc,			/* @parm <in_opt> | texture map file locator		*/
	fz_ffmt_ref_td			ffmt_id,		/* @parm <in_opt> | The file format reference id.	*/
	fzrt_boolean			do_alpha,		/* @parm <in> | If set to TRUE, the outline of the rendered faces is included in the aplha channel of the texture. */
	fz_xy_td				*uv_coords		/* @parm <out_opt> | storage for the uv coordinates, which place each topological point (segment start point) 
																 of the object at the proper position in the texture. */
	
	);

/************************************************************************

	@fsfunc_t	

	@desc		Renders the transparency shaders of all faces of an object into a single
				texture. The object is unfolded and then rendered from a top view.
				The uv coordinates of each topological point (segment's start point)
				are returned in the optional uv_coords array. If passed in as non NULL,
				the array must be allocated to the number of items which is equal to the number of
				facetted segments of the object.
				
				The texture map can be returned in a memory buffer of bytes or can be written
				to an image file. To return the texture map in memory, the bytes parameter
				must be passed as non NULL and the bytes storage
				must be allocated by calling code to res * res bytes if do_alpha is FALSE or
				res * res * 2 bytes if do_alpha is TRUE. Pixel transparency
				is stored as an unsigned char.  i.e. 255 is opaque (white), 0 is transparent (black). 
				Pixels are stored in row major order with the top
				left pixel of the texture in the first three bytes.
				To write the texture map to file, the floc parameter must be passed
				as non NULL and must contain a valid file name and file directory.
				The format reference id parameter, ffmt_id, must identify a file
				format that is capable of writing a bitmap image.
								
				The rendered texture for each face does actually not show the shape of the
				face but coveres the entire bounding rectangle of the face. This is done to avoid
				color bleeding artifacts when using MIP mapping and summation table sampling
				techniques. In order to capture the shape of the face in the texture, the do_alpha
				argument needs to be set to TRUE. When this is done, the shape of the face
				is rendered into the aplha channel of the texture, where a pixel covered by the
				face is on (255) and a true background pixels is off (0).
				
				Note, that the texture contains all effects of the transparency shaders properly. This 
				includes decals, solid texture and random patterns.

	@return		Error codes

	@avail		6.0.0.0

	@see		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_obj_trn_rndr_txr_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_objt_ptr				objt,			/* @parm <in> | the object, whose transparency shaders to render into the texture map */
	fzrt_int					res,			/* @parm <in> | The (horizontal and vertical) resolution of the square texture. */
	unsigned char			*bytes,			/* @parm <in_opt> | byte storage for the texture. IMPORTANT : it is the calling code's responsibility
															 	to allcoate at least res * res bytes. */
	fzrt_floc_ptr			floc,			/* @parm <in_opt> | texture map file locator		*/
	fz_ffmt_ref_td			ffmt_id,		/* @parm <in_opt> | The file format reference id.	*/
	fzrt_boolean			do_alpha,		/* @parm <in> | If set to TRUE, the outline of the rendered faces is included in the aplha channel of the texture. */
	fz_xy_td				*uv_coords		/* @parm <in_opt> | storage for the uv coordinates, which place each topological point (segment start point) 
																 of the object at the proper position in the texture. */
	
	);


/************************************************************************

	@fsfunc_t	

	@desc		Renders the bump shaders of all faces of an object into a single
				texture. The object is unfolded and then rendered from a top view.
				The uv coordinates of each topological point (segment's start point)
				are returned in the optional uv_coords array. If passed in as non NULL,
				the array must be allocated to the number of items which is equal to the number of
				facetted segments of the object.
				
				The texture map can be returned in a memory buffer of bytes or can be written
				to an image file. To return the texture map in memory, the bytes parameter
				must be passed as non NULL and the bytes storage
				must be allocated by calling code to res * res bytes if do_alpha is FALSE or
				res * res * 2 bytes if do_alpha is TRUE.  Pixel displacement
				is stored as an unsigned char.  i.e. from 255 (white) to 0 (black). 
				Pixels are stored in row major order with the top
				left pixel of the texture in the first three bytes.
				To write the texture map to file, the floc parameter must be passed
				as non NULL and must contain a valid file name and file directory.
				The format reference id parameter, ffmt_id, must identify a file
				format that is capable of writing a bitmap image.
								
				The rendered texture for each face does actually not show the shape of the
				face but coveres the entire bounding rectangle of the face. This is done to avoid
				color bleeding artifacts when using MIP mapping and summation table sampling
				techniques. In order to capture the shape of the face in the texture, the do_alpha
				argument needs to be set to TRUE. When this is done, the shape of the face
				is rendered into the aplha channel of the texture, where a pixel covered by the
				face is on (255) and a true background pixels is off (0).
				
				Note, that the texture contains all effects of the bump shaders properly. This 
				includes decals, solid texture and random patterns.

	@return		Error codes

	@avail		6.0.0.0

	@see		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_obj_bmp_rndr_txr_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_objt_ptr				objt,			/* @parm <in> | the object, whose bump shaders to render into the texture map */
	fzrt_int					res,			/* @parm <in> | The (horizontal and vertical) resolution of the square texture. */
	unsigned char			*bytes,			/* @parm <in_opt> | byte storage for the texture. IMPORTANT : it is the calling code's responsibility
															 	to allcoate at least res * res bytes. */
	fzrt_floc_ptr			floc,			/* @parm <in_opt> | texture map file locator		*/
	fz_ffmt_ref_td			ffmt_id,		/* @parm <in_opt> | The file format reference id.	*/
	fzrt_boolean			do_alpha,		/* @parm <in> | If set to TRUE, the outline of the rendered faces is included in the aplha channel of the texture. */
	fz_xy_td				*uv_coords		/* @parm <in_opt> | storage for the uv coordinates, which place each topological point (segment start point) 
																 of the object at the proper position in the texture. */
	
	);

/************************************************************************

	@fsfunc_t	

	@desc		Renders the reflection map shaders of all faces of an object into a single
				texture. The object is unfolded and then rendered from a top view.
				The uv coordinates of each topological point (segment's start point)
				are returned in the optional uv_coords array. If passed in as non NULL,
				the array must be allocated to the number of items which is equal to the number of
				facetted segments of the object.
				
				The texture map can be returned in a memory buffer of bytes or can be written
				to an image file. To return the texture map in memory, the bytes parameter
				must be passed as non NULL and the bytes storage
				must be allocated by calling code to res * res bytes if do_alpha is FALSE or
				res * res * 2 bytes if do_alpha is TRUE.  Pixel intensity
				is stored as an unsigned char.  i.e. from 255 (white) to 0 (black). 
				Pixels are stored in row major order with the top
				left pixel of the texture in the first three bytes.
				To write the texture map to file, the floc parameter must be passed
				as non NULL and must contain a valid file name and file directory.
				The format reference id parameter, ffmt_id, must identify a file
				format that is capable of writing a bitmap image.
								
				The rendered texture for each face does actually not show the shape of the
				face but coveres the entire bounding rectangle of the face. This is done to avoid
				color bleeding artifacts when using MIP mapping and summation table sampling
				techniques. In order to capture the shape of the face in the texture, the do_alpha
				argument needs to be set to TRUE. When this is done, the shape of the face
				is rendered into the aplha channel of the texture, where a pixel covered by the
				face is on (255) and a true background pixels is off (0).
				
				Note, that the texture contains all effects of the reflection map shaders properly. This 
				includes decals, solid texture and random patterns.
				
				The reflection map is identified by the refl_map argument as follows :<nl>
					0 : ambient map<nl>
					1 : diffuse map<nl>
					2 : specular map<nl>
					3 : mirror map<nl>
					4 : transmission map<nl>
					5 : glow map<nl>nl>

				Note, that only those reflection maps actually are rendered, that are present in
				the given reflection shader of the surface style. For example, rendering the
				mirror map in a matte shader will produce a sold white texture, since the
				matte shader does not have a mirror factor.

	@return		Error codes

	@avail		6.0.0.0

	@see		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_obj_reflmap_rndr_txr_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_objt_ptr				objt,			/* @parm <in> | the object, whose reflection map shaders to render into the texture map */
	fzrt_int					refl_map,		/* @parm <in> | which reflection map to render */
	fzrt_int					res,			/* @parm <in> | The (horizontal and vertical) resolution of the square texture. */
	unsigned char			*bytes,			/* @parm <in_opt> | byte storage for the texture. IMPORTANT : it is the calling code's responsibility
															 	to allcoate at least res * res bytes. */
	fzrt_floc_ptr			floc,			/* @parm <in_opt> | texture map file locator		*/
	fz_ffmt_ref_td			ffmt_id,		/* @parm <in_opt> | The file format reference id.	*/
	fzrt_boolean			do_alpha,		/* @parm <in> | If set to TRUE, the outline of the rendered faces is included in the aplha channel of the texture. */
	fz_xy_td				*uv_coords		/* @parm <in_opt> | storage for the uv coordinates, which place each topological point (segment start point) 
																 of the object at the proper position in the texture. */
	
	);

/************************************************************************

	@fsfunc_t	

	@desc		Renders the final shaded appreance of all faces of an object into a single
				texture. The object is unfolded and then rendered from a top view.
				The uv coordinates of each topological point (segment's start point)
				are returned in the optional uv_coords array. If passed in as non NULL,
				the array must be allocated to the number of items which is equal to the number of
				facetted segments of the object.
				
				The texture map can be returned in a memory buffer of bytes or can be written
				to an image file. To return the texture map in memory, the bytes parameter
				must be passed as non NULL and the bytes storage
				must be allocated by calling code to res * res * 3 bytes if do_alpha is FALSE or
				res * res * 4 bytes if do_alpha is TRUE.  Pixel color
				is stored as unsigned char r g b components.  i.e. 255, 255, 255 is
				white, 0, 0, 0 is black. Pixels are stored in row major order with the top
				left pixel of the texture in the first three bytes.
				To write the texture map to file, the floc parameter must be passed
				as non NULL and must contain a valid file name and file directory.
				The format reference id parameter, ffmt_id, must identify a file
				format that is capable of writing a bitmap image.
								
				The rendered texture for each face does actually not show the shape of the
				face but coveres the entire bounding rectangle of the face. This is done to avoid
				color bleeding artifacts when using MIP mapping and summation table sampling
				techniques. In order to capture the shape of the face in the texture, the do_alpha
				argument needs to be set to TRUE. When this is done, the shape of the face
				is rendered into the aplha channel of the texture, where a pixel covered by the
				face is on (255) and a true background pixels is off (0).
				
				Note, that the texture contains all effects of the shaded face. This 
				includes decals, solid textures, random patterns, shadows, transparencies ... .
				However there are certain limitations. Any shading effect that is
				view dependent, such as specular highlights or mirrored reflections
				will not be accurate.
			
	@return		Error codes

	@avail		6.0.0.0

	@see		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_obj_shaded_rndr_txr_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_objt_ptr				objt,			/* @parm <in> | the object, whose faces to render into the texture map */
	fzrt_int					res,			/* @parm <in> | The (horizontal and vertical) resolution of the square texture. */
	unsigned char			*bytes,			/* @parm <in_opt> | byte storage for the texture. IMPORTANT : it is the calling code's responsibility
															 	to allcoate at least res * res * 3 bytes. */
	fzrt_floc_ptr			floc,			/* @parm <in_opt> | texture map file locator		*/
	fz_ffmt_ref_td			ffmt_id,		/* @parm <in_opt> | The file format reference id.	*/
	fzrt_boolean			do_alpha,		/* @parm <in> | If set to TRUE, the outline of the rendered faces is included in the aplha channel of the texture. */
	fz_xy_td				*uv_coords		/* @parm <in_opt> | storage for the uv coordinates, which place each topological point (segment start point) 
																 of the object at the proper position in the texture. */
	
	);

/************************************************************************

	@fsfunc_t	

	@desc		Draws a rendered preview of the surface style into the preview
				window in the Surface Style Parameters dialog. This api function
				in intended to be only called from the fz_srep_cbak_data_iface_pview
				callback function of a Surface Style Representation plugin.
				The num_scanlines argument indicates how many scanlines to draw.
				If -1 is passed for this argument, the whole image buffer is shown.
				The image buffer must be an array of RGB pixel colors. Its size must be
				FZ_SREP_PVIEW_SIZE * FZ_SREP_PVIEW_SIZE * 3 bytes and pixels are
				ordered as RGB values, where 255,255,255 indicates white and 0,0,0 is
				black. The buffer passed to the fz_srep_cbak_data_iface_pview can be used
				to store the image and pass it to fz_rmtl_iface_pview_update.
			
	@return		Error codes

	@avail		6.0.0.2

	@see		fz_srep_cbak_data_iface_pview,fz_rmtl_iface_pview_interrupt

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_iface_pview_update_func) (
	fz_fuim_tmpl_ptr		fuim_tmpl,		/* @parm <in> | pointer to fuim template. */
	unsigned char			*image_buffer,	/* @parm <in> | the image to draw. */
	fzrt_int					num_scanlines	/* @parm <in> | how many scalines of the image to draw, or -1 to draw the whole image */
	);

/************************************************************************

	@fsfunc_t	

	@desc		This function is intended to be only called from the fz_srep_cbak_data_iface_pview
				callback function of a Surface Style Representation plugin.
				It returns TRUE, if during the generation fo the preview, an 
				event occurred, that requires that the preview rendering is
				interrupted and FALSE if the preview rendering can continue.
				
				The fz_srep_cbak_data_iface_pview function should call fz_rmtl_iface_pview_interrupt
				frequently. If it returns TRUE, the preview rendering needs to be
				interrupted and the preview function must return FALSE for the complete
				argument. For example, the user may have selected an dialog item while
				the rendering is executing. In order to do this, the rendering needs to stop,
				controll needs to be returned to the dialog driver, which will handle the
				user's click. If the user changed a setting, the preview function will
				be called again with TRUE for the dirty argument, meaning ,that a new
				image needs to be started. If the user did not make any changes, the
				preview function will be called with FALSE for the dirty argument. The preview
				function may then continue the rendering, where it was previously interrupted.
				If a preview rendering is completed, the complete argument must be 
				returned as TRUE. Again, it is important, that interrupting is handled properly and in
				a responsive manner to allow the user to interact with the dialog while the
				rendering is proceeding.
			
	@return		Error codes

	@avail		6.0.0.2

	@see		fz_srep_cbak_data_iface_pview,fz_rmtl_iface_pview_update

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_iface_pview_interrupt_func) (
	fz_fuim_tmpl_ptr		fuim_tmpl,			/* @parm <in> | pointer to fuim template. */
	fzrt_boolean			*interrupt			/* @parm <out> | TRUE, if there was an event that requires that the 
																 preview rendering needs to be interrupted. FALSE othrwise. */
	);


/************************************************************************

	@fsfunc_t	
	
	@desc		This function is intended to be only called from the fuim template
				code of a Surface Style Representation plugin.
		
				It forces the preview in the Surface Style Parameters dialog to be 
				re-rendered, if a parameter of the surface style representation has
				changed. Ususally this mechanism is automated. However, certain
				custom items and button hits in the template created by the
				surface style representation may not trigger this automated
				re-render. In this case, calling this api function will do the job.
				Note, that the re-render does not occur in this function. It simply
				marks the preview as dirty. In the next dialog refresh event cycle,
				the surface style parameters are compared to the previously stored
				parameters, and if one has changed. the preview is re-rendered.
				An example for the use of this function would be in the action 
				FZ_FUIM_ACTN_HIT in the item function associated with a button
				which, when hit, changes a parameter of the surface style.
	
	@expl		
				short my_srep_item_button_func(fz_fuim_tmpl_ptr fuim_tmpl, fzrt_int action, short item_id, void *func_data, fz_fuim_type_td *rv_data)
				{
					short	rv = FALSE;
					
					switch (action)
					{
						case FZ_FUIM_ACTN_HIT :
							
							...	// some code that changes a surface style parameter
							
							// FORCE THE REFRESH OF THE PREVIEW
							fz_rmtl_iface_pview_refresh(fuim_tmpl);
							rv = TRUE;
						break;
					
					}
					return(rv);
				}	
	
	@return		Error codes.
			
	@avail		6.1.0.0

	@see		

	@exfile		

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td	 (FZRT_SPEC *fz_rmtl_iface_pview_refresh_func)(
	fz_fuim_tmpl_ptr		fuim_tmpl			/* @parm <in> | pointer to fuim template. */
	);

/************************************************************************

	@fsfunc_t	

	@desc		This function allows a plugin to retrieve the data associated with
				a surface style representation. It is most useful for a plugin renderer
				that has implemented its own surface style representation plugin
				and needs to get to its surface style data when executing the
				rendering. The srep_uuid argument identifies the surface style
				representation. If it is passed as NULL, the srep_indx argument
				is used. For speed purpose, the srep_indx is faster, as it is a run time
				index, where as the srep_uuid required searching. The srep_indx can be
				retrieved from the uuid of a surface style representation by the api 
				call fz_rmtl_get_srep_index.
			
	@return		Error codes

	@avail		6.0.0.2

	@see		fz_rmtl_get_srep_index

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_srep_data_func) (
	fzrt_int					windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr				rmtl_ptr,		/* @parm <in> | the surface style from which to get the data */
	fzrt_UUID_td			srep_uuid, 		/* @parm <in_opt> | the uuid which identifies the surface style representation. 
																If passed as NULL, srep_indx is used. */
	fzrt_int					srep_indx, 		/* @parm <in_opt> | the run time index which identifies the surface style representation. 
																If srep_uuid is passed as NULL, this argument is used and must be a valid index. */
	void					**srep_data 	/* @parm <out> | a pointer to the surface style data */
	);

/************************************************************************

	@fsfunc_t	

	@desc		Given the uuid of a surface style representation, get its run time index.
				The run time index allows for faster access of the data of the
				surface style when using the api fz_rmtl_get_srep_data. Note, that
				this index is guaranteed to be valid only for a single run time session
				of formZ. That is, this index should not be saved to a file and used
				in a subsequent session.
			
	@return		Error codes

	@avail		6.0.0.2

	@see		fz_rmtl_get_srep_index

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_srep_index_func) (
	fzrt_UUID_td			srep_uuid, 		/* @parm <in> | the uuid of the surface style representation. */
	fzrt_int					*srep_indx		/* @parm <out> | the run time index of the surface style representation. */
	);

/************************************************************************

	@fsfunc_t	
	
	@desc		Gets the surface style (fz_rmtl_ptr) to which a given shader belongs.
				The shader may be a color, reflection, transparency or bump shader.
				Reflection map and environment shaders of a surface style are not
				considererd. If the shader is not part of a surface style, NULL is
				return for rmtl_ptr and an error code is returne dby the function.
				
	@return		Error codes.
			
	@avail		6.0.0.2

	@see		

	@exfile		

	@toc		modl_rmtl
											
*************************************************************************/
typedef fzrt_error_td	 (FZRT_SPEC *fz_shdr_ptr_rmtl_from_shdr_ptr_func)(
	fzrt_int			windex,					/* @parm	<in> | project window index 									*/
	fz_shdr_ptr		shdr_ptr,				/* @parm	<in> | the shader for which to get the surface style 			*/
	fz_rmtl_ptr		*rmtl_ptr				/* @parm	<out> | the surface style, which contains the given shader		*/
	);


/********************************************************************************************************

	@enum	
	
	@desc	Bit encoded flags for the texture map flags arguments in the fz_srep_cbak_get_generic_parm api function.
			
	@avail	7.0.0.0
	
	@see	<auto>

	@toc	srep_cbak

*********************************************************************************************************/
typedef enum fz_srep_tmap_flags_enum
{
	FZ_SREP_TMAP_ALPHA = 0,			/*  @emem	The texture map uses the alpha channel. This applies to transparency and bump maps only. 
												The image file must have alpha values (i.e. rgba) for this flag to be used. */
	FZ_SREP_TMAP_ALPHA_INVERT		/*  @emem	If the texture map uses the alpha channel, the alpha values are inverted (i.e
												black becomes white and vice versa). */
} fz_srep_tmap_flags_enum;

/********************************************************************************************************

	@enum	
	
	@desc	Pattern type in the fz_srep_cbak_get_generic_parm api function.
			
	@avail	7.0.0.0
	
	@see	<auto>

	@toc	srep_cbak

*********************************************************************************************************/
typedef enum fz_srep_pattern_type_enum
{
	FZ_SREP_PATTERN_TYPE_PLAIN = 0,	/*  @emem	The pattern consists of a plain color, simple transparency. That is, the pattern is uniform. */
	FZ_SREP_PATTERN_TYPE_MAP,		/*  @emem	The pattern is based on a file based texture map. 	*/
	FZ_SREP_PATTERN_TYPE_PROCEDURAL,/*  @emem	The pattern is derived from a procedural algorithm. */
	FZ_SREP_PATTERN_TYPE_NONE		/*  @emem	There is no pattern. i.e. no transparency, no bumps */
} fz_srep_pattern_type_enum;

/********************************************************************************************************

	@enum	
	
	@desc	Reflection type in the fz_srep_cbak_get_generic_parm api function.
			
	@avail	7.0.0.0
	
	@see	<auto>

	@toc	srep_cbak

*********************************************************************************************************/
typedef enum fz_srep_shading_type_enum
{
	FZ_SREP_REFLECTION_TYPE_CONSTANT = 0,	/*  @emem	The surface style representation uses no shading. That is
														the surface color is not affected by any light and shows
														the original color as defined by the color parameters. 		*/
	FZ_SREP_REFLECTION_TYPE_SHADED			/*  @emem	The surface style representation uses shading. The generic shading
														parameters are defined via their respective arguments. */
} fz_srep_shading_type_enum;


/********************************************************************************************************

	@enum	
	
	@desc	Bits used for the parm_mask parameter of fz_srep_cbak_get_generic_parm_func. For each
			generic parameter that this callback actually sets, the respective bit must be set in
			the parm_mask argument. THis is important, so that the calling code knows which parameters
			were actually filled in, and which simply don't apply for the srep.
			
	@avail	7.0.0.0
	
	@see	<auto>

	@toc	srep_cbak

*********************************************************************************************************/
typedef enum fz_srep_parm_generic_enum
{
	FZ_SREP_PARM_GENERIC_COL_WHICH = 0,
	FZ_SREP_PARM_GENERIC_COL_PLAIN,
	FZ_SREP_PARM_GENERIC_COL_TMAP,
	FZ_SREP_PARM_GENERIC_COL_TMAP_FLAGS,
	FZ_SREP_PARM_GENERIC_COL_TMAP_SCALE,
	
	FZ_SREP_PARM_GENERIC_REF_WHICH,
	FZ_SREP_PARM_GENERIC_REF_AMBIENT,
	FZ_SREP_PARM_GENERIC_REF_DIFFUSE,
	FZ_SREP_PARM_GENERIC_REF_SPECULAR,
	FZ_SREP_PARM_GENERIC_REF_SPEC_EXPO,
	FZ_SREP_PARM_GENERIC_REF_SPEC_COL,
	FZ_SREP_PARM_GENERIC_REF_MIRROR,
	FZ_SREP_PARM_GENERIC_REF_TRANSMISSION,
	FZ_SREP_PARM_GENERIC_REF_REFR,
	FZ_SREP_PARM_GENERIC_REF_GLOW,

	FZ_SREP_PARM_GENERIC_TRN_WHICH,
	FZ_SREP_PARM_GENERIC_TRN_FACTOR,
	FZ_SREP_PARM_GENERIC_TRN_TMAP,
	FZ_SREP_PARM_GENERIC_TRN_TMAP_FLAGS,
	FZ_SREP_PARM_GENERIC_TRN_TMAP_SCALE,

	FZ_SREP_PARM_GENERIC_BMP_WHICH,
	FZ_SREP_PARM_GENERIC_BMP_TMAP,
	FZ_SREP_PARM_GENERIC_BMP_AMPLITUDE,
	FZ_SREP_PARM_GENERIC_BMP_TMAP_FLAGS,
	FZ_SREP_PARM_GENERIC_BMP_TMAP_SCALE

} fz_srep_parm_generic_enum;

/************************************************************************

	@fsfunc_t	

	@desc		Gets the generic rendering parameters from the simple
				surface style representation. Note, the the simple
				srep is always guaranteed to be present and a plugin can
				rely on these parameters to be avialable all the time.
				
				A plugin may call this function with NULL for any output parameter
				except parm_mask, so that only specific parameters can be acquired.
				
				Note, that some parameter are currently unsupported. They may
				be in the future.

	@return		Error codes

	@avail		7.0.0.0

	@see		


	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_get_simple_parms_func) (	
	fzrt_int				windex,				/* @parm <in> | project window index 										*/	
	fz_rmtl_ptr			matl_ptr,			/* @parm <in> | the surface style, for which to get the simple parameters	*/
	
	fz_srep_pattern_type_enum	*col_which,	/* @parm <out_opt> | The color pattern type. FZ_SREP_PATTERN_TYPE_PLAIN or FZ_SREP_PATTERN_TYPE_MAP */
	float				*col,				/* @parm <out_opt> | The simple color, if col_which == FZ_SREP_PATTERN_TYPE_PLAIN */
	fz_tmap_embd_ptr	col_tmap,			/* @parm <out_opt> | The color map, if col_which == FZ_SREP_PATTERN_TYPE_MAP */
	fzrt_int				*col_tmap_flags,	/* @parm <out_opt> | Bit encoded color map options (always 0 for now) */
	float				*col_txr_scale,		/* @parm <out_opt> | Color texture scale (always 1.0 for now) */
	
	fz_srep_shading_type_enum	*refl_which,/* @parm <out_opt> | The reflection type type. FZ_SREP_REFLECTION_TYPE_CONSTANT or FZ_SREP_REFLECTION_TYPE_SHADED */
	float		 		*ambient,			/* @parm <out_opt> | The ambient reflection factor */
	float				*diffuse,			/* @parm <out_opt> | The diffuse reflection factor */
	float		 		*specular,			/* @parm <out_opt> | The specular reflection factor */
	float		 		*spec_expo,			/* @parm <out_opt> | The specular reflection exponent */
	float		 		*spec_col,			/* @parm <out_opt> | The specular reflection color */
	float				*mirr,				/* @parm <out_opt> | The mirror factor (always 0.0 for now) */
	float		 		*trans_misson,		/* @parm <out_opt> | The transmission (glass like) factor (always 0.0 for now) */
	float		 		*refr,				/* @parm <out_opt> | The index of refraction (always 1.0 for now) */
	float		 		*glow,				/* @parm <out_opt> | The glow factor (always 0.0 for now) */
	
	fz_srep_pattern_type_enum	*transp_which,	/* @parm <out_opt> | The transparency pattern type. FZ_SREP_PATTERN_TYPE_PLAIN, FZ_SREP_PATTERN_TYPE_MAP or FZ_SREP_PATTERN_TYPE_NONE */
	float		 		*transp,			/* @parm <out_opt> | The simple transparency, if transp_which == FZ_SREP_PATTERN_TYPE_PLAIN */
	fz_tmap_embd_ptr	transp_tmap,		/* @parm <out_opt> | The transparency map, if transp_which == FZ_SREP_PATTERN_TYPE_MAP */
	fzrt_int				*transp_tmap_flags,	/* @parm <out_opt> | Bit encoded transparency map options (see fz_srep_tmap_flags_enum for bits) */
	float				*trn_txr_scale,		/* @parm <out_opt> | Transparency texture scale (always 1.0 for now) */
	
	fz_srep_pattern_type_enum	*bmp_which,	/* @parm <out_opt> | The bump pattern type. Always FZ_SREP_PATTERN_TYPE_NONE for now */
	fz_tmap_embd_ptr	bmp_tmap,			/* @parm <out_opt> | The bump map, (unused, since bmp_which is always FZ_SREP_PATTERN_TYPE_NONE) */
	float				*bmp_amp,			/* @parm <out_opt> | The bump map amplitide, (unused, since bmp_which is always FZ_SREP_PATTERN_TYPE_NONE) */
	fzrt_int				*bmp_tmap_flags,	/* @parm <out_opt> | Bit encoded bump map options, (unused, since bmp_which is always FZ_SREP_PATTERN_TYPE_NONE) */
	float				*bmp_txr_scale,		/* @parm <out_opt> | The bump map scale, (unused, since bmp_which is always FZ_SREP_PATTERN_TYPE_NONE) */
	fzrt_int				*parm_mask			/* @parm <out> | Bit mask, that indicates which parameters were actually set (see fz_srep_parm_generic_enum for bits). */
	);

/************************************************************************

	@fsfunc_t	

	@desc		Sets the generic rendering parameters from the simple
				surface style representation. Note, the the simple
				srep is always guaranteed to be present and a plugin can
				rely on these parameters to be avialable all the time.
				
				A plugin may call this function with NULL for any parameter input arument
				so that only specific parameters can be set
				
				Note, that some parameter are currently unsupported. They may
				be in the future.

	@return		Error codes

	@avail		7.0.0.0

	@see		


	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_set_simple_parms_func) (	
	fzrt_int				windex,				/* @parm <in> | project window index 										*/	
	fz_rmtl_ptr			matl_ptr,			/* @parm <in> | the surface style, for which to set the simple parameters	*/
	
	fz_srep_pattern_type_enum	*col_which,	/* @parm <in_opt> | The color pattern type. FZ_SREP_PATTERN_TYPE_PLAIN or FZ_SREP_PATTERN_TYPE_MAP */
	float				*col,				/* @parm <in_opt> | The simple color, if col_which == FZ_SREP_PATTERN_TYPE_PLAIN */
	fz_tmap_embd_ptr	col_tmap,			/* @parm <in_opt> | The color map, if col_which == FZ_SREP_PATTERN_TYPE_MAP */
	fzrt_int				*col_tmap_flags,	/* @parm <in_opt> | Bit encoded color map options (unused for now) */
	float				*col_txr_scale,		/* @parm <in_opt> | Color texture scale (unused for now) */
	
	fz_srep_shading_type_enum	*refl_which,/* @parm <in_opt> | The reflection type type. FZ_SREP_REFLECTION_TYPE_CONSTANT or FZ_SREP_REFLECTION_TYPE_SHADED */
	float		 		*ambient,			/* @parm <in_opt> | The ambient reflection factor */
	float				*diffuse,			/* @parm <in_opt> | The diffuse reflection factor */
	float		 		*specular,			/* @parm <in_opt> | The specular reflection factor */
	float		 		*spec_expo,			/* @parm <in_opt> | The specular reflection exponent */
	float		 		*spec_col,			/* @parm <in_opt> | The specular reflection color */
	float				*mirr,				/* @parm <in_opt> | The mirror factor  (unused for now) */
	float		 		*trans_misson,		/* @parm <in_opt> | The transmission (glass like) factor (unused for now) */
	float		 		*refr,				/* @parm <in_opt> | The index of refraction  (unused for now) */
	float		 		*glow,				/* @parm <in_opt> | The glow factor  (unused for now) */
	
	fz_srep_pattern_type_enum	*transp_which,	/* @parm <in_opt> | The transparency pattern type. FZ_SREP_PATTERN_TYPE_PLAIN, FZ_SREP_PATTERN_TYPE_MAP or FZ_SREP_PATTERN_TYPE_NONE */
	float		 		*transp,			/* @parm <in_opt> | The simple transparency, if transp_which == FZ_SREP_PATTERN_TYPE_PLAIN */
	fz_tmap_embd_ptr	transp_tmap,		/* @parm <in_opt> | The transparency map, if transp_which == FZ_SREP_PATTERN_TYPE_MAP */
	fzrt_int				*transp_tmap_flags,	/* @parm <in_opt> | Bit encoded transparency map options (see fz_srep_tmap_flags_enum for bits) */
	float				*trn_txr_scale,		/* @parm <in_opt> | Transparency texture scale  (unused for now) */
	
	fz_srep_pattern_type_enum	*bmp_which,	/* @parm <in_opt> | The bump pattern type.  (unused for now) */
	fz_tmap_embd_ptr	bmp_tmap,			/* @parm <in_opt> | The bump map,  (unused for now) */
	float				*bmp_amp,			/* @parm <in_opt> | The bump map amplitide,  (unused for now) */
	fzrt_int				*bmp_tmap_flags,	/* @parm <in_opt> | Bit encoded bump map options,  (unused for now) */
	float				*bmp_txr_scale		/* @parm <in_opt> | The bump map scale,  (unused for now) */
	);

/************************************************************************

	@fsfunc_t

	@desc		Sync the srep s of a materail.

	@return		Error codes

	@avail		9.1.0.0

	@see

	@toc		modl_rmtl

*************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_rmtl_sync_srep_func) (
	fzrt_int		windex,			/* @parm <in> | project window index */
	fz_rmtl_ptr		rmtl,			/* @parm <in> | surface style		*/
	fzrt_UUID_td	src_srep,		/* @parm <in> | uuid of source srep (or NULL to use current)		*/
	fzrt_UUID_td	*dst_list,		/* @parm <in> | list of uuid of destination sreps (or NULL to apply to all)		*/
	fzrt_int		n_dst_list		/* @parm <in> | number of destination sreps (0 to apply to all)		*/
	);

/************************************************************************

	@fset	fz_rmtl_fset

	@desc	formZ Rendering Materials Function Set

	@avail	5.0.0.0

	@toc	modl_rmtl

*************************************************************************/

/* UUID : {ae290d43-7e6c-4519-9d68-d9aa1b2156ad} *//* Reference : 1941 */
/********************************************************************************************************

	@fsdef	formZ Rendering Materials function set UUID.
	
*********************************************************************************************************/
#define FZ_RMTL_FSET_TYPE		"\xae\x29\x0d\x43\x7e\x6c\x45\x19\x9d\x68\xd9\xaa\x1b\x21\x56\xad"	
/********************************************************************************************************

	@fsdef	formZ Rendering Materials function set name.
	
*********************************************************************************************************/
#define FZ_RMTL_FSET_NAME		"formZ Rendering Materials Functions"
/********************************************************************************************************

	@fsdef	formZ Rendering Materials function set version.
	
*********************************************************************************************************/
#define FZ_RMTL_FSET_VERSION	FZPL_VERS_MAKE(9,1,0,0)


typedef struct fz_rmtl_fset
{
	fzpl_fset_prvt_data_td				prvt_data;

	
/************************************************************************

					FINAL RMTL API FUNCTIONS

*************************************************************************/

	fz_rmtl_get_num_rmtl_func					fz_rmtl_get_num_rmtl;				/* @fsfunc */
	fz_rmtl_tag_to_ptr_func						fz_rmtl_tag_to_ptr;					/* @fsfunc */
	fz_rmtl_ptr_to_tag_func						fz_rmtl_ptr_to_tag;					/* @fsfunc */
	fz_rmtl_pos_to_ptr_func						fz_rmtl_pos_to_ptr;					/* @fsfunc */
	fz_rmtl_ptr_to_pos_func						fz_rmtl_ptr_to_pos;					/* @fsfunc */
	fz_rmtl_get_next_rmtl_func					fz_rmtl_get_next_rmtl;				/* @fsfunc */
	fz_rmtl_get_prev_rmtl_func					fz_rmtl_get_prev_rmtl;				/* @fsfunc */
	fz_rmtl_create_new_func						fz_rmtl_create_new;					/* @fsfunc */
	fz_rmtl_duplicate_func						fz_rmtl_duplicate;					/* @fsfunc */
	fz_rmtl_delete_func							fz_rmtl_delete;						/* @fsfunc */
	fz_rmtl_purge_func							fz_rmtl_purge;						/* @fsfunc */
	fz_rmtl_get_current_func					fz_rmtl_get_current;				/* @fsfunc */
	fz_rmtl_set_current_func					fz_rmtl_set_current;				/* @fsfunc */
	fz_rmtl_find_by_rgb_func					fz_rmtl_find_by_rgb;				/* @fsfunc */
	fz_rmtl_gen_preview_func					fz_rmtl_gen_preview;				/* @fsfunc */
	fz_rmtl_get_avg_color_func					fz_rmtl_get_avg_color;				/* @fsfunc */
	fz_rmtl_get_avg_trans_func					fz_rmtl_get_avg_trans;				/* @fsfunc */
	fz_rmtl_get_ambient_factor_func				fz_rmtl_get_ambient_factor;			/* @fsfunc */
	fz_rmtl_get_diffuse_factor_func				fz_rmtl_get_diffuse_factor;			/* @fsfunc */
	fz_rmtl_get_specular_factor_func			fz_rmtl_get_specular_factor;		/* @fsfunc */
	fz_rmtl_get_specular_expo_func				fz_rmtl_get_specular_expo;			/* @fsfunc */
	fz_rmtl_get_specular_color_func				fz_rmtl_get_specular_color;			/* @fsfunc */
	fz_rmtl_get_mirror_factor_func				fz_rmtl_get_mirror_factor;			/* @fsfunc */
	fz_rmtl_get_transmission_factor_func		fz_rmtl_get_transmission_factor;	/* @fsfunc */
	fz_rmtl_get_refraction_func					fz_rmtl_get_refraction;				/* @fsfunc */
	fz_rmtl_get_glow_factor_func				fz_rmtl_get_glow_factor;			/* @fsfunc */
	fz_rmtl_get_parm_func						fz_rmtl_get_parm;					/* @fsfunc */
	fz_rmtl_set_parm_func						fz_rmtl_set_parm;					/* @fsfunc */
	fz_shdr_ptr_get_parm_func					fz_shdr_ptr_get_parm;				/* @fsfunc */
	fz_shdr_ptr_get_parm_type_func				fz_shdr_ptr_get_parm_type;			/* @fsfunc */
	fz_shdr_ptr_get_num_parm_func				fz_shdr_ptr_get_num_parm;			/* @fsfunc */
	fz_shdr_ptr_set_parm_func					fz_shdr_ptr_set_parm;				/* @fsfunc */
	fz_shdr_ptr_set_shdr_type_func				fz_shdr_ptr_set_shdr_type;			/* @fsfunc */
	fz_rmtl_set_generic_parm_func				fz_rmtl_set_generic_parm;			/* @fsfunc */
	fz_shdr_ptr_get_shdr_type_func				fz_shdr_ptr_get_shdr_type;			/* @fsfunc */
	fz_rmtl_sort_func							fz_rmtl_sort;						/* @fsfunc */
	
	/************************************************************************************
	 *																					*
	 *		DO NOT MAKE ANY CHANGES TO THE ABOVE FUNCTIONS!!!							*
	 *		DO NOT ADD ANY FUNCTION ABOVE THIS LINE!!!									*
	 *		@comm  End of version 5.0.0.0 functions.									*
	 *																					*
	 ************************************************************************************/
	 
	 fz_rmtl_get_refl_map_shader_func			fz_rmtl_get_refl_map_shader;		/* @fsfunc */
	 fz_shdr_ptr_get_info_func					fz_shdr_ptr_get_info;				/* @fsfunc */
	 
	/************************************************************************************
	 *																					*
	 *		DO NOT MAKE ANY CHANGES TO THE ABOVE FUNCTIONS!!!							*
	 *		DO NOT ADD ANY FUNCTION ABOVE THIS LINE!!!									*
	 *		@comm  End of version 5.5.0.0 functions.									*
	 *																					*
	 ************************************************************************************/

	 fz_rmtl_get_col_shdr_rndr_txr_func			fz_rmtl_get_col_shdr_rndr_txr;		/* @fsfunc */	
	 fz_rmtl_get_trn_shdr_rndr_txr_func			fz_rmtl_get_trn_shdr_rndr_txr;		/* @fsfunc */	
	 fz_rmtl_get_bmp_shdr_rndr_txr_func			fz_rmtl_get_bmp_shdr_rndr_txr;		/* @fsfunc */	
	 fz_rmtl_get_reflmap_shdr_rndr_txr_func		fz_rmtl_get_reflmap_shdr_rndr_txr;	/* @fsfunc */
	 fz_rmtl_get_obj_col_rndr_txr_func			fz_rmtl_get_obj_col_rndr_txr;		/* @fsfunc */
	 fz_rmtl_get_obj_trn_rndr_txr_func			fz_rmtl_get_obj_trn_rndr_txr;		/* @fsfunc */
	 fz_rmtl_get_obj_bmp_rndr_txr_func			fz_rmtl_get_obj_bmp_rndr_txr;		/* @fsfunc */
	 fz_rmtl_get_obj_reflmap_rndr_txr_func		fz_rmtl_get_obj_reflmap_rndr_txr;	/* @fsfunc */
	 fz_rmtl_get_obj_shaded_rndr_txr_func		fz_rmtl_get_obj_shaded_rndr_txr;	/* @fsfunc */
	 
	 fz_rmtl_iface_pview_update_func			fz_rmtl_iface_pview_update;			/* @fsfunc */
	 fz_rmtl_iface_pview_interrupt_func			fz_rmtl_iface_pview_interrupt;		/* @fsfunc */
	 fz_rmtl_get_srep_data_func					fz_rmtl_get_srep_data;				/* @fsfunc */
	 fz_rmtl_get_srep_index_func				fz_rmtl_get_srep_index;				/* @fsfunc */
	 
	 
	 fz_shdr_ptr_rmtl_from_shdr_ptr_func		fz_shdr_ptr_rmtl_from_shdr_ptr;		/* @fsfunc */			
	 
	/************************************************************************************
	 *																					*
	 *		DO NOT MAKE ANY CHANGES TO THE ABOVE FUNCTIONS!!!							*
	 *		DO NOT ADD ANY FUNCTION ABOVE THIS LINE!!!									*
	 *		@comm  End of version 6.0.0.0 functions.									*
	 *																					*
	 ************************************************************************************/
	 
	 fz_rmtl_iface_pview_refresh_func			fz_rmtl_iface_pview_refresh;			/* @fsfunc */
	 fz_rmtl_get_bmp_norm_shdr_rndr_txr_func	fz_rmtl_get_bmp_norm_shdr_rndr_txr;		/* @fsfunc */
	 
	fz_rmtl_get_specular_fg_func				fz_rmtl_get_specular_fg;			/* @fsfunc */
	fz_rmtl_set_specular_fg_func				fz_rmtl_set_specular_fg;			/* @fsfunc */


	/************************************************************************************
	 *																					*
	 *		6.5.7 functions																*
	 *																					*
	 ************************************************************************************/
	fz_rmtl_is_used_func						fz_rmtl_is_used;					/* @fsfunc */
	
	fz_rmtl_get_simple_parms_func				fz_rmtl_get_simple_parms;			/* @fsfunc */
	fz_rmtl_set_simple_parms_func				fz_rmtl_set_simple_parms;			/* @fsfunc */

	/************************************************************************************
	 *																					*
	 *		9.1 functions																*
	 *																					*
	 ************************************************************************************/
	fz_rmtl_sync_srep_func						fz_rmtl_sync_srep;					/* @fsfunc */
	
}  fz_rmtl_fset;

#ifdef __cplusplus
}
#endif

#endif /*__FORMZ_RMTL_H */

