Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- for (float len = 0; len < glm::length(segment); len+= voxel_size) {
- auto point = toVec3(ray.org) + step * len;
- //std::cout << point.x << " " << point.y << " " << point.z << ":point\n";
- int x = (point.x - bounds.lower_x) / voxel_size;
- int y = (point.y - bounds.lower_y) / voxel_size;
- int z = (point.z - bounds.lower_z) / voxel_size;
- //std::cout << x << "x, " << y << "y, " << z << "z\n";
- //if (x>=0 && x<Qx && y>=0 && y<Qy && z>=0 && z<Qz) {
- if ((z*Qy+y)*Qx+x < size && (z*Qy+y)*Qx+x >= 0) {
- //radiance += (voxels[(z*Qy+y)*Qx+x]);
- radiance = voxels[(z*Qy+y)*Qx+x];
- auto voxel_color = converter(radiance);
- db += 10.0f * std::log(radiance);
- //std::cout << "rad_1 : "<< radiance;
- }
- /*
- if (x >= Qx + 10 || y >= Qy + 10 || z >= Qz + 10) {
- //std::cout << "Jailbreak!\n";
- break;
- }
- */
- }
- }
- // Voxel part ends.
- if (ray.geomID != RTC_INVALID_GEOMETRY_ID) {
- glm::vec3 norm(ray.Ng[0], ray.Ng[1], ray.Ng[2]);
- norm = glm::normalize(norm);
- norm = -norm;
- auto intensity = -glm::dot(norm, light);
- intensity = glm::clamp(intensity, 0.0f, 1.0f);
- color += white * (worldLight + intensity) / (worldLight + 1.0f);
- if (ray.geomID == 0 || ray.geomID == 1) {
- color = red * (worldLight + intensity) / (worldLight + 1.0f);
- }
- if (ray.geomID == 2 || ray.geomID == 0) {
- //color += glm::vec3(white.x/40, white.y/4, white.z/40);
- ray = continue_ray(ray);
- rtcIntersect(main_scene, ray);
- if (ray.geomID != RTC_INVALID_GEOMETRY_ID) {
- glm::vec3 norm(ray.Ng[0], ray.Ng[1], ray.Ng[2]);
- norm = glm::normalize(norm);
- norm = -norm;
- intensity = -glm::dot(norm, light);
- intensity = glm::clamp(intensity, 0.0f, 1.0f);
- color += white * (worldLight + intensity) / (worldLight + 1.0f);
- //color.b = (radiance);
- //std::cout << "ri: " << radiance << '\n';
- //color = glm::clamp(color, glm::vec3(0,0,0), glm::vec3(255,255,255));
- }
- else {
- color.x += 0;
- color.y += 0;
- color.z += 0;
- }
- }
- //out << 255 << " " << 255 << " " << 255 << "\n";
- glm::vec3 vox_color(1,0,1);
- vox_color *= radiance;
- //std::cout << "rad: " << radiance << '\n';
- vox_color = glm::clamp(vox_color, glm::vec3(0,0,0), glm::vec3(255,255,255));
- auto alpha = 0.5f;
- color = alpha * vox_color + (1.0f - alpha) * color;
- color = glm::clamp(color, glm::vec3(0,0,0), glm::vec3(255,255,255));
- //color = db * vox_color; // DELETE;
- //color = vox_color;
- out << (int)color.x << " " << (int)color.y << " " << (int)color.z << "\n";
- //std::cout << color.x << " " << color.y << " " << color.z << " ";
- }
- else { out << 0 << " " << 0 << " " << 0 << "\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment