Unity光照模式的總結

歡迎參與討論,轉載請註明出處。

前言

近日在琢磨Demo應該選擇怎樣的光照模式,遂做了個試驗:對比在同一場合下,各種模式的情況。故以此文記錄之(版本爲2019.2、平臺爲Standalone、渲染管線爲Builtin)。

環境光

環境光(Ambient)嚴格來說並不是一種光照,它只是單純的爲所有顯示元素上色罷了。可以理解爲2D遊戲便是有個(255, 255, 255)環境光。可於**(Window → Rendering → Lighting Settings)**下的Environment Lighting進行設置。
在這裏插入圖片描述
  環境光是無論如何都需要的,一般用於決定畫面的底色。下圖便是用了白色的效果:
在這裏插入圖片描述
  看到上圖便能理解我說的「環境光嚴格來說並不是一種光照」,畢竟連影子都沒有,整個畫面顯得很單薄。但事實上在早期、以及現在一些不依賴光影的遊戲是有這種做法的。它們一般會採用類似2D遊戲的做法,在素材層面解決各種顯示效果問題。對於不依賴光影、強調美術的絕對控制的遊戲,使用純環境光是個方案。
  順帶一提,在Environment Lighting設置下的Gradient與Skybox模式有着不一樣的效果,屬於更高級的環境光實現。

實時光

實時光(Realtime)顧名思義,就是每時每刻都在進行的光照。在Light組件的Mode屬性設置爲Realtime即是。實時光的優缺點很明顯,如下:

  • 優點
    • 遊戲時可隨時改變光照的狀態,即刻產生反應
    • 隨取隨用,無需烘焙
    • 光照效果最好
  • 缺點
    • 在正向渲染(Forward Rendering)下,畫面同時出現多個光照時,開銷較大
    • 爲了節能,某些設備、設置下,光照的數量有限

實時光一般就是開箱即用到的光照,效果如下:
在這裏插入圖片描述
  可以看得出,各項消耗指標都比純環境光要高,而該場景只有三項光照(平行光1個、聚光燈2個)。故一般遊戲都不會如此奢侈,會採用各種手段來達到相同的效果。
  而以上卻還不是效果的極致,還差個全局光照(Global Illumination)呢。剛纔所見的光照只是「直接的光照」罷了,它只會考慮到照到了誰便處理誰,沒有從全局的角度去考慮。在開啓全局光照後,除了直接光照之外,還會產生物件之間相互反射的間接光照。效果如下:
在這裏插入圖片描述
  從畫面效果來看變得更爲深邃了,牆壁與地板都有了反射後的光漬,而各項指標實際上與局部並無不同(疑似)。使用它的前提是要在上文的Lighting Settings下開啓Realtime Global Illumination,並且爲靜態物件做好Static標記。具體實現細節請自行查閱官方文檔,在此不表。
  當然,這並不代表全局光照優於局部光照,就比如有些遊戲的畫面風格並不喜歡那些全局光照帶來的光漬。還是要看想要怎樣的美術效果。

烘焙光

烘焙光(Baked)可謂實時光的反面:根據光照信息預先渲染成貼圖,最後蓋到場景上。這個「根據光照信息預先渲染成貼圖」的過程,是爲烘焙。而烘焙的類型、算法、設置有着多樣化的選擇,直接影響烘焙的時長、效果、貼圖大小與數量。也因烘焙的特性,只適用於靜態物件(標記爲Static的對象)。優缺點如下:

  • 優點
    • 部分渲染元素(取決於烘焙類型)沒有實時運行的開銷
    • 屬於全局光照,擁有間接光
  • 缺點
    • 光照屬性不能運行時修改
    • 動態物件不受影響
    • 烘焙耗時

烘焙類型主要分三種,效果如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UprkUb4c-1578835009044)(https://musoucrow.github.io/images/light_guide/4.png)]
Subtractive: 全烘焙
在這裏插入圖片描述
Shadowmask: 烘焙陰影與間接光
在這裏插入圖片描述
Backed Indirect: 只烘焙間接光

可以看到效果是一個比一個好,但性能卻是一個比一個耗。並且可以看出,由於烘焙設置的問題,效果是不如實時光的。而通過設置達到最優的話,烘焙時長則又是個問題了,魚和熊掌不可兼得啊(砸錢便能我全都要)。
  對於Subtractive,只需把Light組件的Mode屬性設置爲Baked即可。對於其餘兩種,實際上是一種實時光+烘焙光的混合方案,則需設置爲Mixed。由於動態對象不受烘焙光影響的特性,Subtractive下的膠囊仔直接跟純環境光時一個樣了。解決方案有很多種,如採用Mixed方案(靜態物件烘焙光、動態物件實時光)、Light Probes等。
  順帶一提,關於Shadowmask,在陰影設置中可調爲Distance Shadowmask。如此將取決於陰影距離的設置,在陰影距離內的陰影,將採用實時陰影,距離之外的則是烘焙陰影。也算是一種提升品質的方式吧。
  烘焙光在業界的應用相當廣泛,其中Subtractive式烘焙在早期遊戲與現代手遊可謂家常便飯,妥善使用Light Probes也能達到不俗的效果。

後記

以上只是本人粗略的實驗與記錄,實際上光照的內容浩如煙海,遠非本篇所能涵蓋。在光照方面本人也只能算是初學者,有所不對還請海涵,並歡迎指教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章