#android #shader #opengles
Имеется ландшафт который я хочу осветить. Собственно везде освещение нормальное, а ближе к центру огромное белое пятно! Я пока не пойму из за чего это пятно, и как это исправить. Нужна помощь. Мне нужно понять из за чего это белое пятно выходит, и понять как его исправить? Вот скриншет со смартфона samsung galaxy S4 Теперь покажу как на эмуляторе andy Теперь покажу как распологаются нормали Вот код фрагментного шейдера: precision mediump float; varying vec3 vPosition; uniform sampler2D uTexture; uniform sampler2D uTexture2; uniform vec3 u_camera; varying vec2 vTexcoord; varying vec3 v_normal; float getLight(vec3 lightPos,vec3 camPos,vec3 vertexPos, vec3 normal, float ambient, float k_diffuse, float k_specular) { vec3 n_normal=normalize(normal); vec3 lightvector = normalize(lightPos - vertexPos); vec3 lookvector = normalize(camPos - vertexPos); float diffuse = k_diffuse * max(dot(n_normal, lightvector), 0.0); vec3 reflectvector = reflect(-lightvector, n_normal); float specular = k_specular * pow( max(dot(lookvector,reflectvector),0.0), 60.0 ); return ambient+diffuse+specular; } void main() { vec3 lightPos = vec3(60.0,100.0,-415.0); float light = getLight(lightPos,u_camera,vPosition,v_normal, 0.5, 0.9, 0.3); vec4 pixsel; vec3 pos = normalize(vPosition); if (pos.y > 0.01) pixsel = texture2D(uTexture2,vTexcoord); else pixsel = texture2D(uTexture,vTexcoord); gl_FragColor = light * pixsel; }
Ответы
Ответ 1
Проблема решена, на самом деле не верно передавались координаты камеры.
Комментариев нет:
Отправить комментарий