(a)はいくつかの光のライトマップ団結と関連する問題を焼きます

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/wangjiangrong/article/details/100096586

なぜなら、一般的なシーンの、ゲームのシーン内のオブジェクトのほとんどは(静的)静止している、これらのオブジェクトは、リアルタイムの照明を使用している場合、そのようなオブジェクトの影として大きなパフォーマンスのオーバーヘッドになります。ゲームが実行されている場合、多くのケースでは、シーン内のオブジェクトのほとんどの位置は変更されませんので、しかし、対応するシャドウは変更されません。それは変更されないシーンの効果を示すために、光環境を(例えば、昼と夜のない切り替えは行われません)は変更されません。したがって、このような状況のために、我々は消費性能を保存し、効果的な(焼く)事前に焼き(ライトマップ)技術をライトマップを使用します。

注:記事の名前の一部のフィールドは、ユニティの異なるバージョンでは異なる場合があり、我々はすべての拡大〜

まず、我々はテスト結果を容易にするため、(図示のように)簡単なシーンを設定します。シーン内のシーンのオブジェクトは、白色光がある、などの静的、動的オブジェクト人々カプセル本体をチェックします。スカイボックスの影響を防ぐために、我々はすべての黒(ウィンドウ - > Rendering->照明設定)に設定された環境光の照明を設定します。

 

ユニティGI(グローバルイルミネーショングローバルイルミネーション)、二種類のリアルタイムGI焼成GI(照明が図のように提供される)があります。我々は、シーン内のオブジェクトをチェックすると、静的オブジェクトがメッシュレンダラに対応する時間を見つけるだろうしている自動的にライトマップの設定を構成します、(照明の設定が自動生成、または手動でそれを焼くにチェック)

RealtimeGIは、次の選択が(自動的に生成されたチェックした場合ベーキングが更新され、良好な光を設定するに従って場合にのみ、BakedGIは、対応する焼きライトマップが生成されます照明シーンの選択に応じてリアルタイムに更新され、対応するリアルタイムライトマップを生成します。各光または静的オブジェクトを変更し、再焼成されます)

ユニティ光源照明モード(モードライトアセンブリプロパティ)、3、リアルタイム、混合して焼きがあります。異なる状況下GIは、光源の異なるモードは、異なる結果を生成する、と我々は、上記のテストシナリオで試験した焼成混合光源を追加することができます。

リアルタイムGIと焼きGIチェックされていない(無静的オブジェクトのライトマップ)

リアルタイム リアルタイムレンダリング:静的オブジェクトおよび動的オブジェクトが計算され、ソース
ミックス このモードは選択できません
焼きました このモードは選択できません

 

ただ、(静的オブジェクトは、リアルタイムのライトマップを持っている)リアルタイムGIをチェック

リアルタイム

ベーキング:静的オブジェクトのリアルタイム光源を算出し、ライトマップは、受信間接光を

リアルタイムレンダリング:静的および動的なオブジェクトが計算され、ソース

ミックス このモードは選択できません
焼きました このモードは選択できません

私たちは、シーンとライトのケースが同じであることがわかり、リアルタイムGIをチェックし、いくつかの小さな正方形は、静的オブジェクトは一番下に、いくつかの白い影があるだろう、前よりも白くなって表面化。我々は、2つのそれぞれの左下が平面面を示し6つの正方形面の大面積の一部を占め、画像の左上の部分で見つけることができ、得られたリアルタイムライトマップ(詳細をダブルクリック)を観察しました。これらの白い部分のリアルタイム情報は、間接光の小さなブロックは、小さな箱の面に屈折面からの屈折光は、小さなボックスはまた、平面上に屈折される平面に近いソース、形成された間接光( GI屈折はバウンスの最も重要な部分)です黒ライトマップに離れる小さな正方形領域からではなく、間接光を受光します。リアルタイムレンダリング時間は、それが白く現象を作成し、リアルタイムの情報と光源情報ライトマップ計算されます。

ただ、(静的オブジェクトがライトマップを焼いている)焼きGIをチェック

リアルタイム

烘焙时:静态物体的baked lightmap不会计算该光源

实时渲染时:静态和动态物体都会计算该光源

Mixed

烘焙时:静态物体的baked lightmap会计算接受到该光源的间接光信息

实时渲染时:静态和动态物体都会计算该光源

注:不同的Lighting Mode设置会有不同的效果,文章的后面详细描述(当前为默认的shadowmask模式)

Baked

烘焙时:静态物体的baked lightmap会计算接受到该光源的直接光和间接光信息

实时渲染时:静态和动态物体都不会计算该光源

baked:

我们可以在场景中新增一个光源Baked,颜色选为红色,Mode选为baked,烘焙好后的效果图与光照贴图如下:

可以发现,动态物体(胶囊体)不受红光影响,lightmap为baked光源的红色,实时渲染的时候计算了realtime的白色光源。此时运行Unity,再修改baked光源颜色,或删除该光源都不会对场景产生影响。

但是此时你会发现场景中静态物体会产生两个阴影,一个realtime的实时阴影,一个baked的烘焙好的阴影,这肯定不是我们要的效果。若隐藏了realtime光源,则动态物体不会产生阴影,这显然也是不对的,游戏中不可能场景中的房子有阴影但是行走的人却没有。那如何使静态物体只有烘焙的阴影,但是动态物体有实时的阴影呢,这就需要下面的混合光源Mixed的帮助了。

mixed:

在bakedGI下,若场景只有realtime光源,则不会有lightmap,动态物体和静态物体的阴影都需要实时计算。若只有baked光源,则静态物体会烘焙好阴影,但是动态物体却不受该光源的影响,无法产生阴影。若你想把静态物体烘焙成lightmap,同时同一个光源又对动态物体产生影响,可以形成动态阴影,那就需要mixed光源的帮助了。

我们隐藏场景中的其他光源,新建一个光源,颜色选为绿色,Mode选为mixed,烘焙好后的效果图与光照贴图如下:

此时运行unity,移动胶囊体,阴影会随着跟着移动。隐藏小方块阴影并不会跟着消失,因为是事先烘焙好的。修改mixed光源的方向的话,动态物体的阴影和光照效果都会随之改变,静态物体的光照效果会改变但是阴影不会。

 

Realtime GI 和 Baked GI 都勾选(静态物体有 realtime lightmap和baked lightmap)

Realtime

烘焙时:静态物体的realtime lightmap会计算接受到该光源的间接光信息,baked lightmap不会计算该光源

实时渲染时:静态和动态物体都会计算该光源

Mixed

烘焙时:静态物体的realtime lightmap不会计算该光源信息,baked lightmap会计算接受到该光源的间接光信息

实时渲染时:静态和动态物体都会计算该光源

Baked

烘焙时:静态物体的realtime lightmap不会计算该光源信息,baked lightmap会计算接受到该光源的直接光和间接光信息

实时渲染时:静态和动态物体都不会计算该光源

若Lighting设置中Environment Lighting的Ambient Mode选择Realtime,运行时改变环境光的属性静态物体和动态物体的光照效果都会发生改变(静态物体的Realtime lightmap改变),而选择Baked,则会把环境光也烘培起来,运行时改变环境光,并不会改变静态物体的光照效果 。

 

搞清楚GI和光源的关系后,我们接下来看看Lighting设置中Mixed Lighting的Lighting Mode的三个设置。首先我们只勾选Baked GI,然后场景中只留之前绿色的mixed光源。

baked Indirect

只烘培静态物体的受到的间接光照,直接光以及阴影进行实时计算。运行时改变灯光,直接光照和阴影就会变,但间接光不变(如果间接光弱,视觉影响不大)。只减少间接光照的实时计算,适合对光照要求较高的场景,内存消耗小,当然性能的消耗也大。 

运行后的效果如下,动态与静态物体的阴影随着mixed光源实时计算,静态物体烘焙的间接光效果不变。

shadowmask

除了烘焙静态物体受到的光照,同时也会把静态物体受直接光照产生的阴影烘培到ShadowMask中,动态物体不受影响。运行时改变灯光,只有静态物体的间接光照和阴影不变。内存中多了一份Shadowmask,减少了静态物体阴影的计算,占用性能小了一点。

注意:开启Shadowmask需要在QualitySettings设置Shadowmask Mode为Shadowmask。

subtractive

烘焙静态物体受到的直接光和间接光的信息(包含阴影,如同baked光源)。运行时改变光照,静态物体直接光、间接光、阴影不受影响,性能消耗最小。 

おすすめ

転載: blog.csdn.net/wangjiangrong/article/details/100096586