[Swift SceneKit] SCNShadableでシェーダープログラムメモ(1)

- 2014-09-11

SceneKit は GLSL のシェーダープログラミングをサポートしていて Shader Modifier で簡易的にGLSLのスニペットを適応させる事ができます。

Appleのドキュメント

xEfteAm4io

 

以下サンプル、

Atsushi Tadokoro 氏のこちらの記事の Xcode の 'Game' プロジェクトテンプレートを書き換える方法で SceneKit を導入します。

material 宣言部分以外はだいたい Atsushi Tadokoro 氏のコードをまるっと借用しています..。

 

40行目material.shaderModifiers = [...] SCNMaterial の ShaderModifire プロパティにシェーダーのスニペットを key, value のセットの配列としてセットします。 key には Shader Modifire Entry Point Keys が用意されていて目的に応じたものを使います。今回は SCNShaderModifierEntryPointSurface で表面のライティングを縞状にしています。 これはshaderModifiersによってGLSLのスニペットをStirigでごそっと渡してしまう簡易的な方法で、

もう少し詳しく行いたい場合は SCNProgram クラスが用意されていてデリゲートによってフレーム描画毎の計算できるので 各 Uniform や Attributes のバインディングなどが必要な場合はこちらを使うようです。

そちらの方法は後ほど。