広告
広告

Eevee にシェーダノードを追加する方法

カテゴリ:blender

Blender のソースを取得してビルドする方法はBlender 2.8 ビルドメモを参照。

ノードに限らず Blender に新しい要素を追加するときは、たいてい3カ所のコードを編集する必要がある。Blender 内で使われる DNA と、UI と DNA とを関連付ける RNA と、UI を定義する Python スクリプトとだ。

凡例

ソースのパスは省略して表記する。パスに blender/source/blender/ をつけると実際のパスになる。

シェーダのコードの追加

シェーダの登録コード

nodes/shader/nodes/ にシェーダの登録コードを追加する。ほかのソースをコピーして適宜書き換えるだけで十分だ。

ソースファイルを追加したら nodes/CMakeList.txt に追加したソース名を追記する。

シェーダファイル

シェーダは gpu/shaders/ にある。gpu_shader_material.glsl にたいていのシェーダのコードがある。よほど巨大なシェーダでない限り、新しい glsl ファイルを作成するのではなく追記するほうがいいだろう。

DNA に登録

ID の追加

Blender が識別に使う ID を追加する。blenkernel/BKE_node.h に数値の重複がない #define を追加する。

初期化関数の登録

nodes/shader/nodes/ に追加したソースにシェーダの登録関数があるはずだ。その関数の宣言を nodes/NOD_shader.h に追記し、blenkernel/inter/node.c の registerShaderNodes() にその関数呼び出しを追記する。

RNA に登録

RNA は似たようなコードを大量に書く必要がある。そこで定形コードを自動生成する関数が用意されている。

nodes/NOD_static_type.h に DefNode() エントリを追加する。ここに DefNode() を追加すると、ビルド時に rna_nodetree_gen.c を生成してくれる。

UI スクリプト

UI に表示しなければノードを追加できない。blender/release/scripts/startup/nodeitems_builtins.py(これは実際のパス)の ShaderNodeCategory("SH_NEW_SHADER", "Shader"... のところに NodeItem エントリを追加する。Cycles では使えないので object_eevee_shader_nodes_poll を指定する。

関連記事

Blender 記事の目次


広告
広告