Subversion Repositories gelsvn

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include "metal.hpp"

using namespace CGLA;

metal::metal(const CGLA::Vec3f& c, float s, float ior, float ext)
: material(ior, ext), color_(c), shininess_(s)
{
}

void metal::sample(const ray& r, hit_info& hi) const
{
        //compute fresnel
        float cosi = dot(-r.direction, hi.shading_normal);

        if (cosi <= 0.f)
                return;

        float f = fresnel_conductor(cosi, ior_, extinction_);

        if (f < 0.f || f > 1.f)
                return;
        
        if (shininess_ < 1000.f)
        {
                hi.glossy = f * color_;
                hi.shininess = shininess_;
        }
        else
        {
                hi.reflection = f * color_;
        }

        hi.ior = ior_;
        hi.extinction = extinction_;
}

//02566 framework, Anders Wang Kristensen, awk@imm.dtu.dk, 2007

Generated by GNU Enscript 1.6.6.