// -*- C++ -*-
#ifndef RICOUPLED_H
#define RICOUPLED_H

#ifndef RICOMMON_H
#include <RiCommon.H>
#endif

#ifndef RIMATERIAL_H
#include <RiMaterial.H>
#endif

#ifndef RITEXTURE_H
#include <RiTexture.H>
#endif


/***************************************************************
CLASS
    RiCoupled
     Coupled matte/specular RiMaterial

DESCRIPTION
     Takes the normal-incidence reflectance of surface and uses Schlick
     approximation to Fresnel behavior.  Subsurface is symmetric
     about normal and is constructed to be near Lambertian while
     preserving reciprocity and energy conservation.

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

class RiCoupled : public RiMaterial {
  public:
				// GROUP: Constructors and assignment
				//// Constructor
    RiCoupled(const RiScalarTextureProxy normalSpecularR,
	      const RiSpectrumTextureProxy &normalMatte);
				// GROUP: Members
				////
    virtual RiMaterialSamplePointer  GetSample(RiMaterialRegion &);
  private:
				//// matte reflectance
    RiScalarTextureProxy R0;
				//// specular and matte reflectances
    RiSpectrumTextureProxy Rm; 
};

#endif /* RICOUPLED_H */

