Chapter 6: Antialiasing
This commit is contained in:
33
code/target_list.h
Normal file
33
code/target_list.h
Normal file
@@ -0,0 +1,33 @@
|
||||
#ifndef TARGETLIST_H
|
||||
#define TARGETLIST_H
|
||||
|
||||
#include "target.h"
|
||||
|
||||
class target_list: public target
|
||||
{
|
||||
public:
|
||||
target_list() {}
|
||||
target_list(target **l, int n) { list = l; list_size = n; }
|
||||
virtual bool hit(const ray &r, float t_min, float t_max, hit_record &rec) const;
|
||||
target **list;
|
||||
int list_size;
|
||||
};
|
||||
|
||||
bool target_list::hit(const ray &r, float t_min, float t_max, hit_record &rec) const
|
||||
{
|
||||
hit_record temp_rec;
|
||||
bool hit_anything = false;
|
||||
double closest_so_far = t_max;
|
||||
for (int i = 0; i < list_size; i++)
|
||||
{
|
||||
if (list[i]->hit(r, t_min, closest_so_far, temp_rec))
|
||||
{
|
||||
hit_anything = true;
|
||||
closest_so_far = temp_rec.t;
|
||||
rec = temp_rec;
|
||||
}
|
||||
}
|
||||
return hit_anything;
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user