Проверьте что шейдер действительно применяется как ожидается.
1. Если задать FragColor в константный цвет меняется ли картинка?
2. Если менять константы ...Strenght в шейдере меняется ли картинка?
Для отладки шейдеров полезно отображать значения промежуточных переменных как цвет точки. Для этого их нужно отмасштабировать их значения в отрезок 0..1 который задает компоненты цвета. Так по цвету картинки можно будет понять что за значение у вас получилось.
Ну и стоит начинать с чего-то простого. specular компоненту точно можно для начала убрать.