Context(s) | shading |
int setsamplestore(string channel, vector P, int value)
int setsamplestore(string channel, vector P, float value)
int setsamplestore(string channel, vector P, vector value)
int setsamplestore(string channel, vector P, vector4 value)
指定したポイントにおける名前付きチャンネルの値を保存します。 成功すればゼロ以外の値を返し、データが設定できなければ0を返します。
このサンプルの記憶は、メモリ内のポイントクラウドと考えることができ、ポイントにおけるシェーディングデータが格納されます。 これにより、内部のExport/Importのシステムとは違い、シェーダ境界にわたってデータにアクセスすることができます。 シェーディングパイプラインのレイアウトが原因でExport変数の使用に対応していない処理ができるので、 例えば、サーフェスシェーダに渡すデータをLensシェーダに格納することができます。
格納されたサンプルは、同じレンダータイル内でのみアクセス可能であることに注意してください。
Examples ¶
cvex displacedlens( // Inputs 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; // Outputs 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 |
|