Когда применять затенение по фонгу в объемных данных? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть объемный набор данных, который я могу визуализировать (это было частью домашней работы). Я уже реализовал приведение лучей с использованием композиции «спереди к спине» и хочу интегрировать затенение фонгом.Для вычисления градиента я использую метод разности вперед.

Я знаю, что могу оценить градиент координаты текстуры вокселя с помощью метода разности вперед.

Мой вопрос будет, так как phong-Затенение возвращает цвет, а прямое и обратное вещание также возвращает цвет. Когда я применяю затенение к цвету функции луча?После того, как я определил свой новый цвет для определенного луча или во время вычисления цвета от попадания луча?Может быть, этот кусок кода помогает понять мою проблему.Я добавил комментарии о том, где, как мне кажется, мне следует реализовать затенение по Фонгу.

void main(){
     if (raycast(t0,t1)) {

        float t = t0;
        for(float t =t0; t<t1;t+=stepsize){
              vec3 p = ray_o + ray_d * t;
              vec3 coord = worldToVolumeCoord(p, min_box, max_box);      
              float s = texture(tex_vol, coord).r;
              vec4 color = texture(tex_tf, s);
              if(color.a > 0){
                  // Front to back , when to apply shading?????
                  C = C + (1-A) * color.a * vec3(color);
                  A = A + (1-A) * color.a;
              }
             // vec3 Gradient = getGradient(tex_vol, coord, stepsize)
             // But how to apply Phong Shading?
        }
        // Apply phong here?
    }
}
...