Subversion Repositories gelsvn

Rev

Rev 349 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
353 awk 1
#include "metal.h"
346 awk 2
 
3
using namespace CGLA;
4
 
5
metal::metal(const CGLA::Vec3f& c, float s, float ior, float ext)
6
: material(ior, ext), color_(c), shininess_(s)
7
{
8
}
9
 
10
void metal::sample(const ray& r, hit_info& hi) const
11
{
349 awk 12
    //compute fresnel
13
    float cosi = dot(-r.direction, hi.shading_normal);
346 awk 14
 
349 awk 15
    if (cosi <= 0.f)
16
        return;
346 awk 17
 
349 awk 18
    float f = fresnel_conductor(cosi, ior_, extinction_);
346 awk 19
 
349 awk 20
    if (f < 0.f || f > 1.f)
21
        return;
346 awk 22
 
349 awk 23
    if (shininess_ < 1000.f)
24
    {
25
        hi.glossy = f * color_;
26
        hi.shininess = shininess_;
27
    }
28
    else
29
    {
30
        hi.reflection = f * color_;
31
    }
32
 
33
    hi.ior = ior_;
34
    hi.extinction = extinction_;
346 awk 35
}
36
 
37
//02566 framework, Anders Wang Kristensen, awk@imm.dtu.dk, 2007