GLSL-шейдеры - это чистые текстовые файлы (или текстовые фрагменты, как вы хотите на них смотреть).Нет никакого способа (кроме цифровой подписи ваших шейдеров и отказа от запуска, если подпись не совпадает), чтобы предотвратить тривиальное изменение ваших шейдеров в текстовом редакторе.(Конечно, вы можете сделать их нечитаемыми, кодируя их с помощью rot13-кодирования или помещая их все в файл .zip и переименовывая файл .zip во что-то другое, это не помешает кому-то определиться с тем, чтобы найти ваши шейдеры, ноэто, вероятно, будет сдерживать 90% средних пользователей.)
Но опять же, если люди делают редактируют ваши шейдеры и это приводит к неопределенному поведению ... неудача для них.Вы знаете, есть определенная фракция людей, которые чувствуют необходимость редактировать все, что читается и редактируется человеком.Хорошо, это их проблема, если они сломают свою установку.Вы не можете предотвратить глупость людей.
В последних версиях OpenGL есть бинарное расширение шейдера, но оно не предназначено для использования таким образом, чтобы решить вашу проблему.Он просто предназначен в качестве механизма кэширования для ускорения времени компиляции / компоновки при последующих запусках.Он не подходит для распространения «двоичных файлов шейдеров».