Context(s) | shading |
int getsamplestore(string channel, vector P, int &value)
int getsamplestore(string channel, vector P, float &value)
int getsamplestore(string channel, vector P, vector &value)
int getsamplestore(string channel, vector P, vector4 &value)
指定したポイントにおける名前付きチャンネルの値を走査します。 成功すればゼロ以外の値を返しvalueを設定します。データが設定できなければ0を返します。
このサンプルの記憶は、メモリ内のポイントクラウドと考えることができ、ポイントにおけるシェーディングデータが格納されます。 これにより、内部のExport/Importのシステムとは違い、シェーダ境界にわたってデータにアクセスすることができます。 シェーディングパイプラインのレイアウトが原因でExport変数の使用に対応していない処理ができるので、 例えば、サーフェスシェーダに渡すデータをLensシェーダに格納することができます。
格納されたサンプルは、同じレンダータイル内でのみアクセス可能であることに注意してください。
Examples ¶
cvex displacedlens( // 入力 float x = 0; float y = 0; float Time = 0; float dofx = 0; float dofy = 0; float aspect = 1; float displaceScale = 1.0; float displaceGain = 0.1; // 出力 export vector P = 0; export vector I = 0; ) { P = {x, y, 0}; I = {1, 0, 0}; vector displace = noise(P * displaceScale) * displaceGain; I += displace; // 視点'P'でのディスプレイスメントを記憶します。 int status = setsamplestore("displacedlens_d", P, displace); } surface mysurface() { // 視点'Eye'でのディスプレイスメントを取得します。 vector displace = 0; int status = getsamplestore("displacedlens_d", Eye, displace); //... }
See also | |
properties | |
shading |
|