Проблемы реализации приближения Шлика

Поэтому я работаю над созданием преломляющих стеклянных сфер для трассирующего луча, который я строю, и пытаюсь реализовать приближение Шлика для преломления Френеля в соответствии с предложением другого пользователя на этом сайте, чтобы мой стакан выглядел более реалистично. Однако после его реализации мое стекло выглядит довольно тусклым. По внешнему виду почти нет никакой разницы, за исключением того, что есть зеркальное отражение, но похоже, что я искусственно объединил зеркальную сферу с преломляющей. Хотелось бы, чтобы в переполнении стека был простой способ загрузки изображений, чтобы я мог показать вам, что я имею в виду.

Я разместил свой код ниже, чтобы показать вам часть, в которой я реализую приближение Шлика. После вычисления приближения я делаю два рекурсивных вызова трассировки лучей сцены: один для отраженного луча и один для преломленного луча.

    if (hit->mat->IsRefractive())
    {    

        temp.Refract(hit, total2);
        total2++;

        float Ro = powf(((1.8-1.0)/(1.8+1.0)),2.0f); //Refractive index is 1.8
        STVector3 V = myray.GetD()/myray.GetD().Length(); //Normalized view vector
        STVector3 L = AllLights[0]->GetDirection(hit->point); // Light vector
        L = L/L.Length(); //Normalize light vector
        STVector3 H = (V+L);
        H = H/H.Length();
        float costheta = STVector3::Dot(H, V);
        float F = Ro + (1.0f - Ro)*powf((1.0f-costheta), 5);
        STColor3f Krf = STColor3f(F, F, F);
        STColor3f Kr2 = STColor3f(1.0-F, 1.0-F, 1.0-F);
        Ray temp2(myray.GetE(), myray.GetEnd());
        temp2.Reflect(hit);
        result += Krf*RayTrace(temp2, total, total2);
        result += Kr2*RayTrace(temp, total, total2);
    }

0 ответов

Вот в чем проблема: float costheta = STVector3::Dot(H, V); Чтобы определить количество света, который повторно выходит из стекла, используя приближение Шлика, вам нужно использовать угол преломления, а не угол падения. Когда свет попадает в стекло, используйте угол падения.

Другие вопросы по тегам