http://blackpixel.com/blog/494/xcode-using-includes-in-opengl-shaders/ [現在404]に基づくカスタムソリューションがあります。基本的には、 m4ツールを使用してファイルを前処理できると言われています。
GLSLソースファイルには、再利用したいフラグメントを含めるだけです。
include(Utils.glsl)
include(Colors.glsl)
...
void main (void) {
...
}
Xcodeで、すべての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%わかりません。