「環境光」の版間の差分

ページの作成:「'''環境光'''(英語:Ambient Light, Environment Light)とは、シーン全体を照らすライトのことである。 == 概要 == 環境光は「照ら…」
 
 
(同じ利用者による、間の1版が非表示)
7行目: 7行目:


このため[[平行光源]]と環境光は「ふたつでひとつ」として扱われることが多い。たとえば[[MonoGame]]のBasicEffectも[[平行光源]]と環境光のセットとなっている。同様に[[Unity]]も初期状態のライトが「Directional Light(平行光源)」という名称であるが、これにも環境光が一緒に内蔵されている。
このため[[平行光源]]と環境光は「ふたつでひとつ」として扱われることが多い。たとえば[[MonoGame]]のBasicEffectも[[平行光源]]と環境光のセットとなっている。同様に[[Unity]]も初期状態のライトが「Directional Light(平行光源)」という名称であるが、これにも環境光が一緒に内蔵されている。
== 主なアルゴリズム ==
環境光の実装は非常に簡単なものが多い。
だいたいこれ。
* [[定数バッファ]]で環境光の「色」と「明るさ」を送り込んで、
* [[ピクセルシェーダー]]で単純に全[[ピクセル]]に加算する。
<source lang="cg">
float  AmbientStrength;
float3 AmbientColor;
struct VSOutput {
    float4 Position: SV_POSITION;
    float4 Color  : COLOR0;
};
float4 PSFunc(VSOutput input) : SV_TARGET
{
    // 強さと色を掛けて
    float3 ambient = AmbientStrength * AmbientColor;
   
    // 頂点色と掛ける(テクスチャを使う場合はサンプリング色と掛ける)
    float3 result = input.Color * ambient;
    return float4(result,1);
}
</source>
もう少し上を目指す場合は[[アンビエントオクルージョン]]という手法を使う。途端に複雑になるぞ。


==関連項目==
==関連項目==