Реализация Phong кажется темной и не работает. трассировка лучей

Ниже мой метод реализации phong, где я рисую сферу. Его параметры — это сфера vec3 normal (это моя точка доступа vec3 — vec3phereOrigin) и положение камеры vec3 (0,0, -5).

Используя коуты, я обнаружил, что скалярное произведение в моем зеркальном вычислении возвращает ~ -4.9xxx, поэтому 0 всегда выигрывает в функции max, в которой он содержится, а также делает остаток строки избыточным, потому что это 0. Что-то не так с Этот метод?

Также это выглядит очень темно, я увеличиваю интенсивность света до (5,5,5) для более красивой сферы.

vec3 implementPhong(vec3 normal, vec3 camera){
vec3 lightSource1(0,0,-1);
vec3 nLightSource1 = normalize(lightSource1);
float zero = 0;

//Material properties brass
vec3 ambient(0.329412, 0.223529, 0.027451);
vec3 diffuse_albedo = vec3(0.780392, 0.568627, 0.113725);
vec3 specular_albedo = vec3(0.992157,0.941176,0.807843);
float specular_power = 27.8974;
vec3 light_intensity = vec3(1,1,1);

vec3 realLight = light_intensity * nLightSource1;

vec3 reflection = reflect(-realLight, normal);

vec3 diffuse = std::max<float>(dot(normal, realLight), zero) * diffuse_albedo;

vec3 specular = pow(std::max<float>(dot(reflection, camera), zero), specular_power) * specular_albedo;

vec3 color = ambient + diffuse + specular;
return color;
}

Текущее изображение: http://imgur.com/U1ihxS0 Фонг только покушался на переднюю сферу атм.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]