refactor RayTracer class

This commit is contained in:
Shuo Feng 2024-02-01 18:43:10 -05:00
parent baea2db514
commit 90e0cfb632
Signed by: sfeng
GPG key ID: 1E83AE6CD1C037B1
2 changed files with 18 additions and 24 deletions

View file

@ -1,33 +1,24 @@
#include "RayTracer.h" #include "RayTracer.h"
#include "../external/simpleppm.h" #include "../external/simpleppm.h"
#include "Scene.h"
#include <iostream> #include <iostream>
#include <string>
#include <vector> #include <vector>
RayTracer::RayTracer(nlohmann::json scene) : scene(scene) {} RayTracer::RayTracer(nlohmann::json json)
: json(json), scene(Scene(json["output"])) {}
void RayTracer::render() {
int width = scene.getWidth();
int height = scene.getHeight();
std::vector<double> buffer(3 * width * height);
save_ppm(scene.getName(), buffer, width, height);
}
void RayTracer::run() { void RayTracer::run() {
std::string filename; std::cout << scene.getName() << std::endl
int sizeX = -1, sizeY = -1; << scene.getWidth() << " " << scene.getHeight() << std::endl;
for (auto itr = scene["output"].begin(); itr != scene["output"].end();
++itr) {
if (itr->contains("filename")) { render();
filename = (*itr)["filename"].get<std::string>();
std::cout << filename << std::endl;
}
if (itr->contains("size")) {
sizeX = (*itr)["size"].begin()->get<int>();
sizeY = ((*itr)["size"].begin() + 1)->get<int>();
std::cout << sizeX << " " << sizeY << std::endl;
}
}
std::vector<double> buffer(3 * sizeX * sizeY);
save_ppm(filename, buffer, sizeX, sizeY);
} }

View file

@ -2,14 +2,17 @@
#define RAY_TRACER_H_ #define RAY_TRACER_H_
#include "../external/json.hpp" #include "../external/json.hpp"
#include "Scene.h"
class RayTracer { class RayTracer {
public: public:
RayTracer(nlohmann::json); RayTracer(nlohmann::json);
void render();
void run(); void run();
private: private:
nlohmann::json scene; Scene scene;
nlohmann::json json;
}; };
#endif // !RAY_TRACER_H_ #endif // !RAY_TRACER_H_