blob: 4f73dd127d29175a80b8ce320ad1752a10216f3e (
plain) (
tree)
|
|
/******************************************************************/
/* This file is part of the homework assignments for CSCI-427/527 */
/* at The College of William & Mary and authored by Pieter Peers. */
/* No part of this file, whether altered or in original form, can */
/* be distributed or used outside the context of CSCI-427/527 */
/* without consent of either the College of William & Mary or */
/* Pieter Peers. */
/******************************************************************/
#ifndef _DIFFUSEBRDF_H_
#define _DIFFUSEBRDF_H_
#include "brdf_base.h"
class diffuseBrdf : public brdf_base {
public:
//////////////////
// Constructors //
//////////////////
diffuseBrdf(const color& albedo);
diffuseBrdf(const diffuseBrdf& src);
///////////////
// Operators //
///////////////
diffuseBrdf& operator=(const diffuseBrdf& src);
/////////////
// Methods //
/////////////
virtual color shade(const vec3d& in, const vec3d& out) const final override;
virtual color reflectance(const vec3d& in, const vec3d& out) const final override;
virtual brdfSample sample(const vec3d& in, float r1, float r2) const final override;
virtual bool isSpecular(void) const final override;
virtual bool isDiffuse(void) const final override;
virtual float reflectivity(void) const final override;
/////////////
// Friends //
/////////////
friend void swap(diffuseBrdf& a, diffuseBrdf& b) { a._swap(b); }
friend std::ostream& operator<<(std::ostream& s, const diffuseBrdf& b)
{
b._print(s);
return s;
}
private:
/////////////////////
// Private Methods //
/////////////////////
void _assign(const diffuseBrdf& src);
void _swap(diffuseBrdf& src);
virtual void _print(std::ostream& s) const override;
//////////////////
// Data Members //
//////////////////
color _albedo;
};
#endif /* _DIFFUSEBRDF_H_ */
|