/******************************************************************/ /* 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. */ /******************************************************************/ #include "raycasting.h" ///////////// // Methods // ///////////// image raycasting::render(const scene& s) const { image result(s.getCamera().width(), s.getCamera().height()); // for every pixel for(image::size_type y=0; y < result.height(); y++) for(image::size_type x=0; x < result.width(); x++) { // generate view ray ray r = s.getCamera()(x,y); // intersect scene intersectionPoint ip = s.intersect(r); // shade pixel if(ip.isHit()) { // for each light source for(unsigned int l=0; l < s.numberOfLightsources(); l++) { // connect to light source lightSample ls = s.getLightsource(l).intensityAt(ip.position()); // shade result(x,y) += ip.shade(ls); } } else result(x,y) = color(0.0f, 0.0f, 0.0f); } // Done. return result; }