シェーダーは通常非常に小さなプログラムであるという事実を考慮すると、これまで見てきた最善の解決策は、今言った方法でシェーダーをコードに埋め込むことです。
これは非常に安全です。
誰かがシェーダーを取得したい場合は、GPUからダンプすることでそれを実行することを考慮してください。明らかに、はるかに複雑ですが、実行できます(リバースエンジニアリングについて話します)。
暗号化はオプションですが、シェーダーのローカルストレージのみを保護します。復号化の直後に、プログラムのメモリをダンプできます。
大事なことを言い忘れましたが、一般的にシェーダーをプリコンパイルするのは便利ではありません。また、GPUとドライバーの実装の幅広いファミリーがある場所で作業しているプラットフォームを考えるとさらに真実です。
プリコンパイルされたシェーダーに関する他の質問に戻ると、OpenGLゴールドブック(OpenGL ES 2.0プログラミングガイド)の350ページに、それを実行すべきでない理由が説明されている非常に優れた説明があります。
その理由の1つは、デバイスベンダーがバイナリシェーダーを好みの方法で自由に保存できることです。
お役に立てば幸いです。
ブロッククォート