Я реализую простую трассировку лучей для сфер в шейдере фрагментов, и сейчас я работаю над функцией, которая вычисляет цвет для рассеянно заштрихованной сферы. Вот код функции:Opengl ES diffuse shader не работает
vec3 shadeSphere(vec3 point, vec4 sphere, vec3 material) {
vec3 color = vec3(1.,2.,3.);
vec3 N = (point - sphere.xyz)/sphere.w;
vec3 diffuse = max(dot(Ldir, N), 0.0);
vec3 ambient = material/5;
color = ambient + Lrgb * diffuse * max(0.0, N * Ldir);
return color;
}
Я получаю ошибки на двух строках, где я использую функцию max. Я получил код для строки, в которой я присваивающую max(dot(Ldir,N),0.0)
из шпаргалки WebGL, которая использует функцию max(dot(ec_light_dir, ec_normal), 0.0);
По какой-то причине, моя реализация не работает, как я получаю сообщение об ошибке:
ERROR: 0:38: 'max' : no matching overloaded function found
Что может проблема с любой из этих максимальных функций, которые я использую?