1. 程式人生 > >聊聊Unity2018的LWRP和混合光照

聊聊Unity2018的LWRP和混合光照

0x00 前言

在這篇文章中,我們選擇了過去幾周Unity官方社群交流群以及UUG社群群中比較有代表性的幾個問題,總結在這裡和大家進行分享。主要涵蓋了** Scripting、Assetsbundle、Tilemap、Graphic、UGUI、Asset、Profiler 、App、 Shader、 Timeline、Lighting**等領域,其中會著重介紹一下LWRP和混合光照相關的話題。

同時,也歡迎大家加入我們這個討論乾貨的官方技術群,交流看法分享經驗。
Unity官方社群交流群:629212643

0x01 Scripting

Q:Unity2018.2新建一個專案,然後新建一個指令碼,開啟就提示這個,unity都沒有生成sln檔案,難道要設定哪兒?
2F40BAC6D11DE0D5610A43D5402B5FFB.png

A:首先檢視一下在Unity2018中建立新專案時使用的是Visual Studio 2017嗎?Unity2018不再支援Visual Studio 2015。 為了解決這個問題,請下載最新版本的Visual Studio 2017。此外,還可以使用Visual Studio Code,這是一個更快,更輕,適合Unity的指令碼編輯器。

0x02 Assetsbundle

Q:請問你們有遇到過從SVN上更新下來的同一個工程,不同的電腦打出來的AssetBundle大部分檔案的MD5和Unity自己的HASH值都不一樣的情況嗎?
A:有漏上傳meta檔案嗎?我們專案試過一次,有同事漏了上傳.meta檔案,然後其他同事更新下來時,由於沒有他的meta檔案,所以unity自動在本地生成,使得不同人從svn更新下來的生成了各自的meta檔案,然後一比對md5就空了。meta檔案是unity記錄GUID的,不一樣的話,在AssetBundle那裡計算MD5好像會有問題。(廣州-木頭蛇杖

0x03 Tilemap

Q:tilemap 在繪製的時候,在場景中,一塊tile 沒法填充完整一個場景中的單位塊。請問是怎麼回事?
E10511BC94C5BAFA248E576E599A6B01.jpg

A1:是我切的尺寸,一塊 是 64 * 64。sprite 的設定 pixels oer unit 我設定的100,設定成 64 就好了。螢幕快照 2018-08-12 下午2.46.30.png
(成都—mid)
A2:除了檢查Sprite的Pixels Per Unit屬性之外,還可以檢視一下TileMap元件的Scale屬性是否為1,這裡的設定也有可能會導致tile和場景中單位塊不匹配。螢幕快照 2018-08-12 下午2.48.06.png

0x04 Graphic

Q:@慕容小匹夫 這個反射怎麼改它的範圍,它們對不上。多謝。
0493DD5F3397B22D6A46614905E62B34.jpg

A:這是由於不正確的取樣造成的問題。如果你使用的是reflect probe,那麼針對室內或小範圍內的場景反射要勾選上box projection。這是因為對應於同一個Reflection Probe,不同位置的物體應該具有不同的反射效果。一般的Cubemap比較適合於模擬室外大場景物體的反射,室內小範圍如果用cubemap可能會錯亂。勾選box projection可以用來修正這種錯誤。

0x05 UGUI

Q:ugui字型在編輯器中正常顯示,但是打包pc執行就無法顯示,有沒有人遇到過這種情況的?編輯器無論從resources載入,還是從AssetBundle載入都是正常的,用什麼字型也都是正常的,但是打包pc後怎麼都無法顯示。70A4F77BC434BD0EF34D6B05D12CC1F1.png

A:缺少unity內建的UI部分的shader,我下載瞭然後包含到Graphics裡面就可以了。(北京-兔子2號)

0x06 Asset

Q:求助,打包的時候瘋狂的輸出這個,也看不出來是哪個檔案。
5FF8D3C255F139310F50283B05B4E406.png

A:看上去有點像PVRTexTool的報錯。Unity會呼叫PVRTexTool 的命令列工具壓縮貼圖,因此我們可以將報錯檔案的範圍縮小到貼圖資源。
首先可以排查一下是否有pvrtc格式的壓縮紋理,你也可以看看你們的etc2_x的紋理格式,對工程中的紋理做一個排除法。
相關bug的討論可以檢視imgtec社群中相關的主題:
https://forums.imgtec.com/t/pvrtextoolcli-bug-encoding-etc2-rgb-a1-etc2-rgb-a1-ubn-srgb/2365

0x07 Profiler

Q:在windows上檢視Unity的profiler,其中這項“total system memory usage ”一直無限增長 正常嗎?
image.png

A:看上去不正常。這個值是利用了windows 上的PROCESS_MEMORY_COUNTERS_EX來獲取的。你可以看一看你專案中Reserved Total這些有沒有持續增長。如果都在漲的話,就優化一下吧。

0x08 App

Q1:我現在想做一個載入的視窗,載入完了再顯示遊戲內容。不過希望載入的視窗沒有邊框(沒有關閉最小化之類的)。現在呼叫Win32 API去設定,總是會看到先有一個有邊框的,然後迅速到沒邊框的。就是有個跳轉的過程,看的不爽。
A:可以呼叫SetWindowLong。程式碼如下:
EC50EB11D30DA6F05EF7D2444B68F4A8.png
如果還有跳轉的話,可以考慮在程式啟動引數加popupwindow。(北京-兔子2號)

Q2:ECC8F2256A92294FDDC24A77E3F7772A.jpg
A:這個問題通常是由外掛導致的。可以在專案中檢查一下是否有重複的jar,如果有重複的則刪除掉。 如果不想一個一個查詢,也可以考慮刪除專案的“plugins”資料夾,然後重新匯入所有外掛。

0x09 Shader

Q:Shader中使用“UsePass”引用同一個Shader的另外一個SubShader的Pass會導致崩潰,這個是Bug還是就是不能這麼寫的?我使用的版本是2017.4.6f1。例如這樣:
螢幕快照 2018-08-10 下午4.40.10.png

A:UsePass主要是用來實現不同的shader中的程式碼複用的,檢視文件的話也可以看到相關的描述:

Some of the shaders could reuse existing passes from other shaders, reducing code duplication

所以不要用UsePass引用同一個Shader中的Pass。

0xA Timeline

Q:想請教各位老師們一個關於timeline的問題,timeline中調的位置為什麼執行後播放會發生偏移呢?
87E1A3BD8204E7405791575D9A00B21A.png
8F6CDF66FBEB4FB011A6E5EC783AEBA2.png

A:你的模型上的Animator元件有Controller嗎?你可以把把Animator上的Controller去掉,完全由Timeline控制動作。因為在執行階段它的動畫是增量影響上層的,在編輯階段又是覆蓋上層資料的。所以可能會不一樣。

0xB Lighting

Q:這是預設管線的light probe,可以看到動態物體進入陰影範圍變暗了。
4828DF83-2D02-4D3C-A5C2-9CE3481B72DE.gif
這是的LWRP的效果,烘焙後light prob陰影不會對動態物體產生任何影響
20F2494B-77DF-477E-A119-E9CA2677DD85.gif
烘焙模式是 Mix subtractive,燈光一個mixed模式的Directional light,請教一下,是否lwrp的subtractive烘焙模式 會使light probe忽略陰影的影響?
A:這個不是lightprobe的原因,而是目前lwrp對mixed light的支援還不完善。對mixed light更多的支援還在開發中。在lwrp管線下,如果不使用mixed,只使用bake燈光, light probe可以正確的作用於動態物體的。
BDF45290-563B-423C-BDAC-7C2C131EB20C.png
上圖是傳統渲染流水線和LWRP在光照模式這項功能上的對比。
完整的對比,可以參考這份文件:
Pipeline Feature Comparison:https://docs.google.com/document/d/1MgoycUhS9xQKXxbTy1yHt7OCByI10rds3TyRBCSlFmg/edit

0xC 後記

好了,以上就是想和大家分享的幾個在群裡討論的小問題。
再次,歡迎大家加入我們這個討論乾貨的官方技術群,交流分享呀。
Unity官方社群交流群:629212643

相關推薦

聊聊Unity2018的LWRP混合光照

0x00 前言 在這篇文章中,我們選擇了過去幾周Unity官方社群交流群以及UUG社群群中比較有代表性的幾個問題,總結在這裡和大家進行分享。主要涵蓋了** Scripting、Assetsbundle、Tilemap、Graphic、UGUI、Asset、Profiler 、App、 Shader、 Time

從一個shader剖析unity混合光照pbr

從unity5.6自帶的程式碼來看。 standard shader綜論 下面是standard.shader的面板 shader結構圖: 兩個subShader subShader的區別,先看兩個pass的區別: 然

聊聊HTTPSSSL/TLS協議

常用 電信 hellip 以及 設有 可擴展 地址 玩意兒 winrar 要說清楚 HTTPS 協議的實現原理,至少需要如下幾個背景知識。 大致了解幾個基本術語(HTTPS、SSL、TLS)的含義 大致了解 HTTP 和 TCP 的關系(尤其是“短連接&

簡單聊聊SOA微服務

利用 java res content 視野 分布式數據庫 而不是 frame 分庫分表 轉自:https://juejin.im/post/592f87feb123db0064e5ef7c (2017-06) 簡單聊聊SOA和微服務 架構設計中的樸素主義

weex 項目開發(五)自定義 過濾函數 混合 及 自定義 Header 組件

定義 blog weex top ber slice ear notice earch 1.自定義 過濾函數 src / filters / index.js /** * 自定義 過濾函數 */ export function host (url) { if (

聊聊FlumeLogstash的那些事兒

改名 並不是 目前 關註 bfc 直接 硬盤 總結 get 轉載:http://blog.csdn.net/jek123456/article/details/65658790 在某個Logstash的場景下,我產生了為什麽不能用Flume代替Logstash的疑問

Spring之導入混合配置

很多 方式 另一個 註解 lan .com 以及 自動 裝配   在典型的Spring應用中,我們可能會同時使用自動化和顯式配置。即便你更喜歡通過JavaConfig實現顯式配置,但有的時候XML卻是最佳的方案。幸好在Spring中,這些配置方案都不是互斥的。你盡可以將Ja

elasticsearch 支持中英文搜索混合搜索

acc emc data str asi all 修改 tty struct 環境: ubuntu16.04 安裝: elasticsearch 5.22 1. 第一步,安裝java apt-get install default-jre apt-get install d

opencv之光照補償去除光照

本部落格借用了不少其他部落格,相當於知識整理 一、光照補償 1.直方圖均衡化 #include "stdafx.h" #include<opencv2/opencv.hpp> #include<iostream> using namespac

康士伯選中Leclanché為快速發展的電動混合動力船舶業提供儲能解決方案

瑞士伊韋爾東和挪威孔斯貝格--(美國商業資訊)--全球領先的海事技術公司康士伯海事(Kongsberg Maritime)已選擇國際領先的儲能解決方案公司之一Leclanché,作為其電池合作伙伴和定製船舶儲能解決方案供應商。此次合作將推進康士伯的新一代混合動力解決方案,該解決方案將利用尖端的自

objdump tcpdump 混合程式設計

一、objdump 同樣適用於arm-linux-objdump 1、用objdump檢視程式碼的程式碼段和資料段等 參考地址:https://www.cnblogs.com/jrglinux/p/6942476.html 2、用objdump反彙編 參考地址:https:/

spring學習總結——裝配Bean學習四(匯入混合配置)

情景:在典型的Spring應用中,我們可能會同時使用自動化和顯式配置(JavaConfig)或者XML配置,幸好在Spring中,這些配置方案都不是互斥的。你儘可以將JavaConfig的元件掃描和自動裝配和/或XML配置混合在一起。   關於混合配置,第一件需要了解的事情就是在自動裝配時,它並不在意要裝配

雲端計算的“雲”,除了公有云、私有云混合雲,雲端計算還有這些細分領域

雲端計算的“雲”,源於繪製網際網路圖表時的一個習慣——將其畫成一朵雲。最受認同的關於雲端計算含義的解釋是,在一個商業供應者的資料中心上通過網際網路遠端執行工作負載——也就是所謂的“公有云”模式。AWS、Azure、谷歌雲等平臺都是這一雲端計算概念的例證。 但是,雲端計算還有一個更精確的解釋:資料中心資源的虛

Mob開發者沙龍 接著聊聊SDKApp的那點事兒

  數字網路化的時代,手機,已成為社會生活的剛需,而App應用則為世界開啟新的大門,增添無數奇妙的色彩,改變人們的生活方式。如今,各種App應用層出不窮,使用者增長和流量變現的手段隨著網際網路的不斷髮展,在如此激烈的形態下,如何成為獨角獸?9月1日,Mob將結合SDK的產品,在開

聊聊炒股交易有什麼不同?

各位投資朋友大家好,歡迎收聽《搶財貓股票課堂》,我是你們的老朋友波哥。 今天我們聊聊炒股和交易有什麼不同,我們經常聽到炒股這個詞,股民經常說自己炒股就是在買賣股票賺取差價,那麼伴隨著股價的波動就是追漲殺跌; 交易這個詞很少有人會和炒股關聯起來,它給人感覺很正式,很專業

原生APP混合APP、web APP有什麼區別?

1.原生APP 原生APP是什麼?原生APP就是利用Android、iOS平臺官方的開發語言、開發類庫、工具進行開發。比如安卓的java語言,iOS的object-c 語言。在應用效能上和互動體驗上應該是最好的。 優點: 1、可訪問手機所有功能、可實現功能最齊全; 2

聊聊MVC模組化以及MVVM元件化

原文連結 小寒的部落格,帶你理解更深的世界 面向物件,模組化和MVC 面向物件是指把寫程式對映到現實生活,從而一來邏輯性更強,更容易寫好程式碼,二來程式碼很貼切,通俗易懂,更被人理解,三來更加容易拓展和管理程式碼。 我們的程式碼設計應該有很多人,事物和場景,人是管理員,事物是資料庫,場景就是業務。 &

WebRTC原生開發混合開發優缺點分析對比

WebRTC的出現,讓企業快速開發出一個支援全平臺的音視訊程式成為可能。在WebRTC之前,企業想要開發出一個全平臺的音視訊程式,難度,工作量非常大。使用WebRTC後,音視訊程式中一些通用的模組比如

聊聊mapvector的迭代器失效問題(某公司招聘筆試試題)

        當刪除一個STL容器(比如map, vector)中的某個元素時, 會引起迭代器失效, 所以, 我們務必提高警惕。  某次筆試, 我遇到這樣一個題目: 刪除map<int, int>中value為5的倍數的元素。 該題看起來很自然很簡單, 實則有

繼續聊聊MVVM元件化

MVVM已經是更多前端的標配 上次說到MVVM,MVVM其實是MVC的變種,它讓把C分配給了V和VM,然後就出現了元件和store,這樣寫可以讓檢視更好的互動,讓資料更好的服務。而MVVM的創始人John Gossman也說了 實現MVVM的開銷對於簡單的UI操作是“過度的”。他說,