#ifndef MPROTONBXDF_H__
#define MPROTONBXDF_H__

enum
{
	PROTON_BXDF_MATERIAL_MATERIALPROPERTIES											= 1000,
	
	// BSDF types to choose from.
	PROTON_BXDF_MATERIAL_BSDF_MODE															= 2000,
		PROTON_BXDF_MATERIAL_BSDF_MODE_LAMBERT										= 0,
		PROTON_BXDF_MATERIAL_BSDF_MODE_DIELECTRIC									= 1,
		PROTON_BXDF_MATERIAL_BSDF_MODE_CONDUCTORBRDF							= 2,
		PROTON_BXDF_MATERIAL_BSDF_MODE_MICROFACETCONDUCTORBRDF		= 3,
		PROTON_BXDF_MATERIAL_BSDF_MODE_MICROFACETBSDF							= 4,
		PROTON_BXDF_MATERIAL_BSDF_MODE_THINCOATBSDF								= 5,
		PROTON_BXDF_MATERIAL_BSDF_MODE_SSS												= 6,

	// BSDF types to choose from for PROTON_BXDF_MATERIAL_BSDF_MODE_THINCOATBSDF.
	PROTON_BXDF_MATERIAL_BSDF_EXTRA															= 2050,

	// Conductor types to choose from
	PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES										= 2100,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_NONE							= 0,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_ALUMINIUM				= 1,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_BERYLLIUM				= 2,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_CHROMIUM					= 3,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_COPPER 					= 4,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_COPPEROXIDE			= 5,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_GOLD							= 6,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_IRIDIUM					= 7,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_IRON							= 8,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_LITHIUM					= 9,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_MAGNESIUM_OXIDE	= 10,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_MERCURY					= 11,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_NICKEL						= 12,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_NIOBIUM					= 13,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_POTASSIUM				= 14,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_RHODIUM					= 15,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_SELENIUM					= 16,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_SILICON_CARBIDE	= 17,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_SILVER						= 18,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_SODIUM						= 19,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_TANTALUM					= 20,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_TELLURIUM				= 21,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_TIN_TELLURIDE		= 22,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_TITANIUM_NITRIDE	= 23,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_TUNGSTEN					= 24,
		PROTON_BXDF_MATERIAL_CONDUCTORBRDF_TYPES_VANADIUM					= 25,

	// Microfacet models.
	PROTON_BXDF_MATERIAL_BSDF_MICROFACETBSDF_TYPE								= 2200,
		PROTON_BXDF_MATERIAL_BSDF_TYPE_BECKMANN										= 0,
		PROTON_BXDF_MATERIAL_BSDF_TYPE_GGX												= 1,
		PROTON_BXDF_MATERIAL_BSDF_TYPE_PHONG											= 2,
		
	PROTON_BXDF_MATERIAL_COLOR																	= 2700,
	PROTON_BXDF_MATERIAL_TEXTURE																= 2701,

	// BSDF parameters and Microfacet parameters.
	PROTON_BXDF_MATERIAL_BSDF_ROUGHNESS													= 3000,
	PROTON_BXDF_MATERIAL_BSDF_IOR																= 3001,
	PROTON_BXDF_MATERIAL_BSDF_ISANISOTROPIC											= 3002,
	PROTON_BXDF_MATERIAL_BSDF_ANISOTROPY												= 3003,
	PROTON_BXDF_MATERIAL_BSDF_ANISOTROPICORIENTATION						= 3004,

	// BSSRDF SSS parameters.
	PROTON_BXDF_MATERIAL_SSS_REFLECTANCE												= 4000,
	PROTON_BXDF_MATERIAL_SSS_REFLECTANCE_TEXTURE								= 4001,
	PROTON_BXDF_MATERIAL_SSS_MEANFREEPATH												= 4002,
	PROTON_BXDF_MATERIAL_SSS_MEANFREEPATH_TEXTURE								= 4003,
	PROTON_BXDF_MATERIAL_SSS_MEANFREEPATHMULTIPLIER							= 4004,
	PROTON_BXDF_MATERIAL_SSS_DIFFUSE														= 4005,
	PROTON_BXDF_MATERIAL_SSS_ROUGHNESS													= 4006,
	PROTON_BXDF_MATERIAL_SSS_ROUGHNESS_TEXTURE									= 4007,
	PROTON_BXDF_MATERIAL_SSS_IOR																= 4008,
	PROTON_BXDF_MATERIAL_SSS_ANISOTROPY													= 4009,
	PROTON_BXDF_MATERIAL_SSS_FRESNELWEIGHT											= 4010,
	PROTON_BXDF_MATERIAL_SSS_DWIVEDISAMPLING										= 4011,
};

#endif // MPROTONBXDF_H__
