int bouncemask(string labels)
labels
ラベルまたはスペース区切りのラベルのリスト。
Returns
ラベルのどれかに合致したビットマスク。
Mantraは、“diffuse”, “reflect”, “refract”, “volume”, “sss”などのシェーディングコンポーネント ラベル を使って、色々なタイプの光線にタグを付けます。 カスタムBSDFには、既存のラベルの他にも独自のラベルを指定することもできます(詳細は、cvex_bsdfを参照)。
一部のVEX関数は、 コンポーネントのビットマスク を受け取ったり、返したりします。このビットマスクには、整数ビットによって、それらのラベルを複数組み合わせたビット値を指定することができます。
ラベルと関連付けられたビット値を取得するには、bouncemaskを使用します。例えば、bouncemask("diffuse")
。
複数のラベルに合致したマスクを取得するには、スペース区切りのリストを使用します:
reflect_or_refract = bouncemask("reflect refract")
すべてのラベルに合致するビットマスクを構築するには、bouncemask("all")
を使用します。どのラベルにも合致させないようにするには、0
を使用します。
ビットマスクを戻り値として取得すれば、&
を使用することで、そのビットマスクがどのラベルに合致するのかどうかをチェックすることができます。例:
mask = getbounces(mybsdf) if (mask & bouncemask("reflect")) { ... }
(基本的なbouncemask()
の使い方の別の方法として、#import "pbr.h"
を使用する方法があります。これは、PBR_DIFFUSE_MASK
, PBR_REFLECT_MASK
, PBR_REFRACT_MASK
, PBR_VOLUME_MASK
, PBR_SSS_MASK
さらにPBR_ALL_MASK
,PBR_NO_MASK
の定数を扱います。|
を使用することで、これらの定数を組み合わせることができます。例えば、reflect_or_refract = PBR_REFLECT_MASK | PBR_REFRACT_MASK
。)
See also | |
bsdf |
|
labels | |
pbr |
|