class Rubytracer::Material
Public Class Methods
new(options)
click to toggle source
# File lib/rubytracer/material.rb, line 3 def initialize(options) @d_colour = options[:diffuse_colour] @s_colour = options[:specular_colour] @shininess = options[:shininess] end
Public Instance Methods
diffuse(point, normal, scene, light)
click to toggle source
# File lib/rubytracer/material.rb, line 31 def diffuse(point, normal, scene, light) self.diffuse_colour(point, normal) * light.diffuse(normal, point, scene) end
diffuse_colour(point, normal)
click to toggle source
# File lib/rubytracer/material.rb, line 9 def diffuse_colour(point, normal) @d_colour || Colour.new(0,0,0) end
lit_colour(scene, normal, view_vector, point, n=0)
click to toggle source
# File lib/rubytracer/material.rb, line 17 def lit_colour(scene, normal, view_vector, point, n=0) reflection = Colour.new(0,0,0) #reflection += self.reflection( #reflection += self.refraction( scene.lighting.each do |light| reflection += self.diffuse(point, normal, scene, light) reflection += self.specular(point, normal, scene, view_vector, light) end return reflection end
specular(point, normal, scene, view_vector, light)
click to toggle source
# File lib/rubytracer/material.rb, line 35 def specular(point, normal, scene, view_vector, light) if @shininess self.specular_colour(point, normal) * (light.specular(normal, view_vector, point, scene) ** @shininess) else Colour.new(0,0,0) end end
specular_colour(point, normal)
click to toggle source
# File lib/rubytracer/material.rb, line 13 def specular_colour(point, normal) @s_colour || Colour.new(0,0,0) end