Context(s) | displace fog surface |
int sample_light(int lightid, vector pos, vector sam, float time, vector &pos, vector &clr, float &scale, ...)
lightid
ライトを識別するための整数。getlightsを使えば、現在シェーディングされているサーフェスに影響を与えているライトのIDのリストを取得することができます。
pos
サンプリングされるライトのサーフェスポイント。エリア光源は、そのポジションから立体角でサンプルを分布しようとします。つまり、そのポジションに近いライトジオメトリほど、より多くのサンプルを受け取ります。
sam
nextsampleで生成されるような乱数のベクトル。現在では、sam
の最初の2つのコンポーネントのみが使われます。sam
の異なる値が、光源のジオメトリ上に異なるランダムな位置になります。
time
シェーディングされる時間。
この関数は以下の引数の値を変更します:
pos
光源上のサンプリングされるポジション。
clr
lightシェーダで設定したライトのカラー。
scale
ライトの平均的な半球状の強さ(エリアライト用)。
Returns
ライトが影響を与えているコンポーネントバウンスのタイプを意味するコンポーネントビットマスク。
Tip
sample_lightを使ってライトのカラーを生成していれば(例えば、illuminanceループで生成されるCl
値を再生成していれば)、clr
をscale
に正規化する必要があります:
clr *= scale / luminance(clr);
See also | |
light |
|
pbr |
|
sampling |