AVasK

ex_hex

Nov 30th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.95 KB | None | 0 0
  1. for (float len = 0; len < glm::length(segment); len+= voxel_size) {
  2.                  auto point = toVec3(ray.org) +  step * len;
  3.                  //std::cout << point.x << " " << point.y << " " << point.z << ":point\n";
  4.                  int x = (point.x - bounds.lower_x) / voxel_size;
  5.                  int y = (point.y - bounds.lower_y) / voxel_size;
  6.                  int z = (point.z - bounds.lower_z) / voxel_size;
  7.                  
  8.                  //std::cout << x << "x, " << y << "y, " << z << "z\n";
  9.                  //if (x>=0 && x<Qx && y>=0 && y<Qy && z>=0 && z<Qz) {
  10.                  if ((z*Qy+y)*Qx+x < size && (z*Qy+y)*Qx+x >= 0) {
  11.                      //radiance += (voxels[(z*Qy+y)*Qx+x]);
  12.                      radiance = voxels[(z*Qy+y)*Qx+x];
  13.                      auto voxel_color = converter(radiance);
  14.                      db += 10.0f * std::log(radiance);
  15.                      
  16.                      //std::cout << "rad_1 : "<< radiance;
  17.                  }
  18.                  /*
  19.                  if (x >= Qx + 10 || y >= Qy + 10 || z >= Qz + 10) {
  20.                      //std::cout << "Jailbreak!\n";
  21.                      break;
  22.                  }
  23.                   */
  24.              }
  25.             }
  26.              // Voxel part ends.
  27.        
  28.             if (ray.geomID != RTC_INVALID_GEOMETRY_ID) {
  29.                 glm::vec3 norm(ray.Ng[0], ray.Ng[1], ray.Ng[2]);
  30.                 norm = glm::normalize(norm);
  31.                 norm = -norm;
  32.                
  33.                 auto intensity = -glm::dot(norm, light);
  34.                 intensity = glm::clamp(intensity, 0.0f, 1.0f);
  35.                
  36.                 color += white * (worldLight + intensity) / (worldLight + 1.0f);
  37.                
  38.                 if (ray.geomID == 0 || ray.geomID == 1) {
  39.                     color = red * (worldLight + intensity) / (worldLight + 1.0f);
  40.                 }
  41.                
  42.                 if (ray.geomID == 2 || ray.geomID == 0) {
  43.                     //color += glm::vec3(white.x/40, white.y/4, white.z/40);
  44.                     ray = continue_ray(ray);
  45.                    
  46.                     rtcIntersect(main_scene, ray);
  47.                    
  48.                     if (ray.geomID != RTC_INVALID_GEOMETRY_ID) {
  49.                         glm::vec3 norm(ray.Ng[0], ray.Ng[1], ray.Ng[2]);
  50.                         norm = glm::normalize(norm);
  51.                         norm = -norm;
  52.                        
  53.                         intensity = -glm::dot(norm, light);
  54.                         intensity = glm::clamp(intensity, 0.0f, 1.0f);
  55.                         color += white * (worldLight + intensity) / (worldLight + 1.0f);
  56.                         //color.b = (radiance);
  57.                         //std::cout << "ri: " << radiance << '\n';
  58.                         //color = glm::clamp(color, glm::vec3(0,0,0), glm::vec3(255,255,255));
  59.                     }
  60.                     else {
  61.                         color.x += 0;
  62.                         color.y += 0;
  63.                         color.z += 0;
  64.                     }
  65.                 }
  66.                 //out << 255 << " " << 255 << " " << 255 << "\n";
  67.                 glm::vec3 vox_color(1,0,1);
  68.                 vox_color *= radiance;
  69.                 //std::cout << "rad: " << radiance << '\n';
  70.                 vox_color = glm::clamp(vox_color, glm::vec3(0,0,0), glm::vec3(255,255,255));
  71.                
  72.                
  73.                
  74.                 auto alpha = 0.5f;
  75.                 color = alpha * vox_color + (1.0f - alpha) * color;
  76.                 color = glm::clamp(color, glm::vec3(0,0,0), glm::vec3(255,255,255));
  77.                 //color = db * vox_color; // DELETE;
  78.                 //color = vox_color;
  79.                 out << (int)color.x << " " << (int)color.y << " " << (int)color.z << "\n";
  80.                 //std::cout << color.x << " " << color.y << " " << color.z << " ";
  81.                
  82.             }
  83.             else { out << 0 << " " << 0 << " " << 0 << "\n";
  84.             }
  85.         }
Advertisement
Add Comment
Please, Sign In to add comment