http://blackpixel.com/blog/494/xcode-using-includes-in-opengl-shaders/ [404]に基づいたカスタムソリューションがあります。基本的には、m4ツールを使用してファイルを前処理することができます。 「コピーバンドルリソース」に、すべてのglsl
のファイルを追加し、Xcodeで
include(Utils.glsl)
include(Colors.glsl)
...
void main (void) {
...
}
:GLSLソースファイルで
はちょうどあなたが再利用したい所望の断片が含まれます。
は、このシェルスクリプトを「スクリプトの実行」フェーズを追加します。
#!/bin/sh
cd ${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}
find . -name "*.fsh" | while read file; do
echo Preprocess $file
m4 "$file" > "$file.tmp"
mv "$file.tmp" "$file"
done
exit 0
スクリプトは、シェーダが.fsh
拡張子を前提としています。シェーダの拡張機能に合わせて変更するのは簡単です。
警告:あなたのシェーダはほとんどの人に簡単にアクセスできます。あなたはそれを開発のために使用し、それらを解放する前に文字列に変換することができます(あなたがそれを暗号化しなければ本当の保護ではありません...)。
また、シェーダ間の共有があまりないと、多くの未使用コードが発生します。私はシェイダーのコンパイラはそれを世話するだろうと思うが、私はいくつかのパフォーマンスのペナルティがあるかどうか100%ではない。