1
Fork 0

Remove unnessecary conversions between float and double in cast_scene

This commit is contained in:
Joshua Goins 2024-09-25 10:59:30 +02:00
parent a0353edd89
commit ad3cba9f78
2 changed files with 6 additions and 6 deletions

View file

@ -75,7 +75,7 @@ struct Scene {
Scene() : gen(rd()), dis(0.0, 1.0) {} Scene() : gen(rd()), dis(0.0, 1.0) {}
float distribution() { double distribution() {
return dis(gen); return dis(gen);
} }
@ -83,7 +83,7 @@ struct Scene {
auto o = std::make_unique<Object>(); auto o = std::make_unique<Object>();
std::string err; std::string err;
if (!tinyobj::LoadObj(&o->attrib, &o->shapes, &o->materials, &err, path.data())) if (!tinyobj::LoadObj(&o->attrib, &o->shapes, &o->materials, &err, path.data())) [[unlikely]]
std::println("Could not load obj: {}", err); std::println("Could not load obj: {}", err);
return *objects.emplace_back(std::move(o)); return *objects.emplace_back(std::move(o));

View file

@ -216,9 +216,9 @@ std::optional<SceneResult> cast_scene(const Ray ray, Scene& scene, const bool us
// and naive monte carlo without PDF // and naive monte carlo without PDF
if (num_indirect_samples > 0) { if (num_indirect_samples > 0) {
for (int i = 0; i < num_indirect_samples; i++) { for (int i = 0; i < num_indirect_samples; i++) {
const float theta = scene.distribution() * std::numbers::pi; const double theta = scene.distribution() * std::numbers::pi;
const float cos_theta = cos(theta); const double cos_theta = cos(theta);
const float sin_theta = sin(theta); const double sin_theta = sin(theta);
const auto [rotX, rotY] = orthogonal_system(hit->normal); const auto [rotX, rotY] = orthogonal_system(hit->normal);
@ -229,7 +229,7 @@ std::optional<SceneResult> cast_scene(const Ray ray, Scene& scene, const bool us
glm::dot({rotX.z, rotY.z, hit->normal.z}, sampled_dir)}; glm::dot({rotX.z, rotY.z, hit->normal.z}, sampled_dir)};
if (const auto indirect_result = cast_scene(Ray(ray.origin, rotated_dir), scene, use_bvh, depth + 1)) if (const auto indirect_result = cast_scene(Ray(ray.origin, rotated_dir), scene, use_bvh, depth + 1))
result.indirect += indirect_result->combined * cos_theta; result.indirect += indirect_result->combined * static_cast<float>(cos_theta);
} }
result.indirect /= num_indirect_samples; result.indirect /= num_indirect_samples;