ray traversing in 3D ray casting algorithm

Viewed 212

I am working on volumetric raycasting and I am having a hard time finding the way to calculate the step size so that every step, the ray would step to a new voxel in my fragment shader GLSL.

I have a 3D box of dimension which doesn't have equal dimension on all side (x,y,z) and I already have that value and I also have a vec3 ray direction.

I need to know the step size for the ray or normalized ray to traverse from the starting and end of the hitting point in the cube.

From the axis-aligned box intersection, I know the tmin and tmax.

I know the code of AABI is irrelevant but I am adding this for any reference if needed.

vec2 boxIntersection(vec3 ray_direction2, float origin[3]){
  
  float boxmin[3] = float[3](0.0, 0.0, 0.0);
  float boxmax[3] = float[3](1.0, 1.0, 1.0);
  vec3 invdir = 1.0/ray_direction2;

  float inv_raydirection[3] = float[3](invdir.x, invdir.y, invdir.z);
  for(int i=0; i<3; i++ ){
    float t1 = (boxmin[i]-origin[i])*inv_raydirection[i];
    float t2 = (boxmax[i]-origin[i])*inv_raydirection[i];

    tmin = min(tmin, min(t1, t2));
    tmax = max(tmax, max(t1, t2));

    if(tmax>max(tmin,0.0)){
      return vec2(tmin, tmax);
    }
    else{
      discard;
    }
  }

0 Answers
Related