Нет инструмента для проверки шейдера. Даже если бы это было так, это было бы бесполезно для вас, потому что, что хорошего в шейдере, который является «допустимым», если он не работает на желаемом оборудовании? Вы можете быть правы, сколько хотите, но если ваше оборудование отвергает это, даже если вы технически правы, ваш шейдер все равно не будет работать.
Если шейдер определенной версии компилируется на одной цели (назовите ее A), а не на другой (назовите ее B), это может быть связано с одной из следующих проблем:
- Цель A неправильно реализует GLSL. Это позволило вам скомпилировать то, что не разрешено в спецификации. Более совместимая цель B (или, по крайней мере, иначе несовместимая) отклоняет ваш шейдер, потому что ваш шейдер не соответствует спецификации.
- Цель B не соответствует спецификации. Вы кормите его законным шейдером, а он отвергает его.
- Цель B не поддерживает версию GLSL, которую использует ваш шейдер (это маловероятно), за исключением случаев, когда:
- Цель B использует спецификацию ядра OpenGL версии 3.2 или выше. Шейдеры GLSL 1.20 не могут быть запущены в реализациях ядра 3.2 OpenGL.
# 1 чаще случается, если вы разрабатываете исключительно на оборудовании NVIDIA. NVIDIA играет быстро и свободно со спецификацией OpenGL. Они возьмут несколько вольностей тут и там, сгладив некоторые неприятные вещи, о которых говорится в спецификации. Это облегчает работу разработчиков, но также помогает поставщикам использовать оборудование NVIDIA, если шейдеры не работают с конкурентами;)
# 3 практически отсутствует, за отмеченным исключением. Вы связались с шейдером Photoshop, поэтому я понял, что вы не контролируете создание и управление контекстом OpenGL. Несмотря на это, я сильно сомневаюсь, что Photoshop будет использовать основной контекст; у них слишком много шейдеров, которые нуждаются в обратной совместимости.
Лучший способ справиться с этим - это протестировать оборудование AMD и NVIDIA (и Intel, если вам нужно там работать). Вам может не потребоваться тестирование на всех возможных комбинациях систем, но выберите карту Radeon HD и GeForce 200 или выше. Они даже не должны быть высокого класса.