// -*- C++ -*-
#ifndef RIMEDIA_H
#define RIMEDIA_H
/* Copyright 1999 
 * Tue Apr 27 14:50:21 1999  Brian Smits  (bes@phoenix.cs.utah.edu)
 * 
 * RiMedia.H
 * 
 *	
 * 
 * $Id: RiMedia.H,v 1.1 1999/10/01 18:39:35 bes Exp $ 
 * 
 */
#ifndef RICOMMON_H
#include <RiCommon.H>
#endif

#ifndef RIVECTOR3_H
#include <RiVector3.H>
#endif

#ifndef RISPECTRUM_H
#include <RiSpectrum.H>
#endif


/***************************************************************
CLASS
    RiMedia
     Base class for various media.  Default implementation is vaccum.

DESCRIPTION
     <Detailed description with any warnings>

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

class RiMedia {
  public:
				// GROUP: Constructors and assignment
				//// Destructor
    virtual ~RiMedia() {}
				// GROUP: Members
				////  determines the effect of the medium/media on the amount of light
				//    that makes it to receiver 
    virtual RiSpectrum GetMediaEffects(const RiVector3 &origin, const RiVector3 distPnt,
				       RiSpectrum &distantRad) const;
				////
    virtual RiReal     GetIndexOfRefraction() const;
				////
    static RiMedia    *GetVacuum();
				////
    static RiMedia    *GetWater();
				////
    static RiMedia    *GetGlass(const RiSpectrum &atn);
};


#endif /* RIMEDIA_H */

