Combining BSDF 1


こんにちは、篠島です。H16ではPBR系ノードでLayerインプットを取れるようになり、簡単にシェーディングの要素を合成することができますが、まず最初に Layer とは何かを説明します。

 

今回のサンプルファイルです。
RenderingEngine.zip

Layer Pack ノードを見るとわかりますが、Layer とは F、Of、Ce などの複数のインプットをまとめて一つのデータとしたものです。このようにシェーダーの要素を一塊にすることでネットワークがスパゲティのようなワイヤだらけになるのを防げます。ちなみに、FはBSDF、Ofが透明度、Ceが発光、Pは位置、Nは法線です。

 

Layer と言っていますが、データとしては構造体になっていて、他にも色んな種類の構造体がParameter VOPで確認できます。構造体とはC言語で使われているデータの型ですが、詳しく知りたい方はGoogleで検索してみたください。簡単に言うと構造体とは複数の変数をまとめて一つの変数にしたものです。そして構造体を英語で Struct といいます。

 

 

なんでこんな複雑な事をするのかと言うと、レンダリングエンジンによって使われるシェーダーの変数が異なるからです。基本的にPhisycally Based Rendering では F (BSDF)を使って計算します。 BSDFとは何かというと、光の反射する方向の分布を表した物で、入射光に対しどのくらいの割合でどの方向に反射するのかを求める関数です。Micropolygon と Ray Tracing だと F は全く使われず Cf(Color) に繋がれた色が使われます。

 

サンプルファイルを用意したので、レンダリングエンジンを変えてみて試してみてください。PBR(Phisycally Based Rendering) と Non-PBR でのレンダリングの違いを分かりやすくするためにシェーダーに異なる色を割り当てました。