unity如何往下挖地形_Unreal Engine地形系統辨析(一)

Unreal Engine的地形系統稱之為Landscape,每個level里面可以存放多個Landscape的Actor(但不能對它們進行連續編輯,也就是說相鄰兩個landscape是不能被同一個brush修改的)。地形被均勻的切割成多個小的地塊,這些地塊名為Landscape Component,每個Component可以持有最多2x2個SubSection。而每一個SubSection是由多個quad組成的,這些quad是地形topology的最小單位。由于地形mesh的頂點信息記錄在heightmap里,也就是頂點紋理中,所以它的分辨率盡量是二的指數冪。因此quad行和列的數量肯定是一個奇數,例如31x31,63x63等,對應的頂點數量為32x32個和64x64個。

相鄰兩個Component的邊界處的頂點信息是一致的,它可以保證在渲染時不會產生crack,當然vertex shader中還有相應的stitch算法能夠消除由于鄰接的patch使用不同lod而導致的t-junction現象。根據地形的視覺誤差計算結果,每個LandscapeComponent會自動的選擇對應的lod,高等級的lod會比低一個等級的lod所對應mesh少一半的quad。所以63x63的quad,只會有6個lod(63x63,31x31,15x15,7x7,3x3,1x1),如果想增加lod的數量,只能去增加subsection的quad數量,換句說每個Component最多只能退化成2x2個quad。這對于比較大的地形來說drawcall數量就可能變得很多,因為地形culling的最小單位是Component,如果是一個subsection的quad數量為63x63,且有2x2個subsection的component,假設一個quad是1m的大小,那么一個component最多可以覆蓋126米的范圍。隨著lod的升高,mesh會越來越稀疏(即三角形數量變少),當使用最高等級的lod時,126米的區域會用4個quad來表示。當前component如果可見,最多會形成4個drawcall(如果這四個subsection的screen size差異不是很大,它會自動合并成一個drawcall)。在視錐內且不沒有被遮擋的Component一旦很多,那么相應的drawcall也會暴漲。通過調高subsection的quad的數量來減少drawcall似乎不是一個好的辦法,因為如果culling粒度太大,會降低culling的效率,導致很多不在視錐內或者被遮擋的三角形依然會被處理。而且由于不同的lod,它對應的mesh的稀疏程度不同,導致drawcall里面處理的頂點數量也不盡相同。

ue4的實現是基于金字塔狀的geometry mipmapping的平鋪結構,而unity的地形是基于quadtree的層級結構,它們各有各的優勢。首先ue4的地形塊之間數據耦合度很小(每個component擁有自己的weightmap和heightmap,這些數據不需要跨component進行讀取),它可以為每個component計算當前幀的lod值,互相比較獨立,完全能夠并行處理,只是收尾階段要獲取四個鄰居的lod值,把它們傳給shader用來做stitch。但是unity的實現需要從根部開始遍歷這顆四叉樹,如果當前的等級滿足要求就不再往下遞歸,直接把當前等級的頂點信息提取出來,應用到一個固定的17x17個頂點的topology上。這樣就保證了每個drawcall處理的頂點數量都是一樣的,只是由于鄰居的lod可能與自身的lod不同,需要選取不同的indexbuffer而已。為了減少topology的模式緩存數量,lod算法要保證相鄰兩個patch之間的lod差不能超過一,否則就會出現crack。而ue4的stitch算法似乎沒有這些顧慮,彈性也因此更大。

由于unity的地形patch是用quadtree管理的,所以為了并行化視錐culling,它需要把quadtree遍歷階段的結果先緩存起來,放入到一個線性數組中,等到后面再與其他的renderer一起處理。反觀ue4的地形,雖然每個component單獨管理一個patch比較靈活,但是drawcall的數量會相對較多,尤其是那些較為平坦的地塊,或者是距離攝像機較遠的地塊,基于quadtree的方法可能就只會使用到一個16x16quads的patch去表達,而ue4的方案如前所述,由于component覆蓋的區域面積是固定的,所以它會生成更多的drawcall,甚至要處理更多的三角形。不僅如此,由于mesh退化程度有限,遠處的mesh在光柵化后可能會出現overshading。

現代的桌面顯卡和圖形api對于drawcall和頂點處理似乎不那么敏感了,但是像素的處理由于量級太大,所以很難忽略它對性能的影響,尤其是紋理的采樣和overdraw。ue4方案利用shader的static permutation的功能,有效的降低了材質中紋理的采樣數量。不過如果unity能早日祭出virtual texture(不需要運行時混合多層的紋理)這一利器就另當別論了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533268.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533268.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533268.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jq輸出文本_如何用 Linux 命令行工具解析和格式化輸出 JSON | Linux 中國

我們將使用 Linux 上的命令行工具解析并格式化打印 JSON。它對于在 shell 腳本中處理大型 JSON 數據或在 shell 腳本中處理 JSON 數據非常有用。-- OstechnixJSON 是一種輕量級且與語言無關的數據存儲格式,易于與大多數編程語言集成,也易于人類理解 ——…

計算機組成原理單周期mips,計算機組成原理CPU單周期數據通路(MIPS)

計算機組成原理CPU單周期數據通路(MIPS)【計算機組成原理】CPU:單周期數據通路(MIPS)寄存器傳送語言RTL1)R(r)表示寄存器r的內容2)M(address)表示主存儲器地址address的內容3)傳輸方向“←”表示,從右向左傳輸4)程序計數器PC的內容直接用PC表示輸出信號改變時機1)se…

gmp計算機系統課件,EU GMP附錄11計算機系統◆問答

GMP關于計算機系統的法規Zhulikou431整理,丁香園首發EU GMP guide annexes - Supplementary requirements: Annex 11Computerised Systems1. Appropriate controls for electronic documents such as templates should be implemented. Are there any specific requ…

不規則圖形數格子的方法_【微課堂】人教版五年級數學(上)6.5不規則圖形的面積圖文精講+教學視頻+同步練習...

小學生精選資料庫,家有小學生都在關注更多資料、微課堂,請至文末人教教材同步微課堂(包括視頻微課、教材同步、圖文講解、同步練習等),可以在課堂之外幫助同學們學習。歡迎轉發給更多的同學哦~~電子課本點擊圖片,查看大圖▼▼▼▼…

計算機安全評估研究綜合,計算機網絡信息系統安全評價方法研究

摘要:該文論述了計算機網絡安全現狀,評價現狀,以及網絡信息安全評估標準,包括美國可信計算機安全評價標準(TCSEC),歐洲的安全評價標準(ITSEC),國際通用準則(CC,等同GB18336),我國計算機信息系統安全保護等級劃分準則(GB17859-1999).綜述了現在常用的幾種評價方法,包…

動態獲取某個元素的高度_codeforces 1443D,解法簡單,思維縝密的動態規劃問題...

大家好,歡迎來到codeforces專題。今天選擇的問題是1443場次的D題,這題是全場倒數第三題,截止到現在一共通過了2800余人。這題的思路不算難,但是思考過程非常有趣,這也是這一期選擇它的原因。鏈接:https://c…

顯卡的優化以提高計算機性能作用,顯卡優化,教您如何設置NVIDIA(英偉達)顯卡玩游戲性能更高...

多人玩游戲可能都只是在游戲中設置畫質選項,比如反鋸齒等;而對顯卡驅動控制面板中的設置并不關注。其實在顯卡驅動面板中設置游戲文件,可以更好的控制和提高游戲畫質、性能。那如何設置NVIDIA顯卡玩游戲性能更高?下面,…

服務器選購seo優化規則,如何選擇有利于SEO優化的空間服務器

之前我們講過域名,講過程序,今天我們來講解空間,其實空間主要影響SEO只有兩個方面,一個是速度,一個是穩定性,如果你的空間穩定性不夠,經常打不開,百度蜘蛛經常抓取不了,就…

安裝npm_Npm安裝包的版本號是如何更新的?

點擊右上方紅色按鈕關注“小鄭搞碼事”,每天都能學到知識,搞懂一個問題!大家好!我是/小鄭搞碼事/的小鄭今天和大家分享一下關于NPM安裝包的版本號是如何更新的問題。版本號?先來看一張圖上圖就是2.29.1就是安裝包Momen…

css 向左白色箭頭,帶CSS的工具提示左側的箭頭

使用正確的CSS屬性在工具提示的右邊添加箭頭。您可以嘗試運行以下代碼以在左側添加帶有箭頭的工具提示示例html>.mytooltip .mytext {visibility: hidden;width: 140px;background-color: blue;color: #fff;z-index: 1;top: -5px;left: 110%;text-align: center;border-radi…

python有理數_Python中的as_integer_ratio()用于減少給定有理數的分數

在本教程中,我們將編寫一個程序,該程序返回兩個數字,它們的比率等于給定的float值。我們有一個稱為as_integer_ratio()的方法,可以幫助實現我們的目標。讓我們看一些例子。Input:1.5Output:3 / 2Input:5.3Output:5967269506265907…

js上拉加載ajax數據,原生ajax寫的上拉加載實例

上拉加載的思路1 上拉加載是要把屏幕拉到最底部的時候觸發ajax事件請求數據2.所有要獲取屏幕的高度 文檔的高度 和滾動的高度 下面的代碼是已經做好了兼容的可以直接拿來用Javascript:alert(document.body.clientWidth); //網頁可見區域寬(body)alert(document.body.clientHeig…

b站前端大佬_知乎大佬強烈熱推的5個自學網站,看了幾個月,月薪三千漲三萬...

原標題:知乎大佬強烈熱推的5個自學網站,看了幾個月,月薪三千漲三萬現在很多踏入了社會的小伙伴們經常會覺得為什么工作能力提升不上去,主要是因為很少利用業余的時間來學習一些跟自己工作有關的專業知識來充實自己,這其…

xp系統如何開啟共享服務器,xp系統怎么關閉共享服務 xp系統共享打印機如何設置...

XP系統雖然已經出來很久了,但是仍然還有很多用戶在使用,其實不管哪個系統只要電腦可以正常使用就行。很多XP用戶在開啟共享功能之后,想關閉但是又不知道如何設置,那么下面小編就為大家分享XP系統關閉共享服務的步驟教程&#xff0…

用udp協議通訊時怎樣得知目標機是否獲得了數據包?_和相親對象聊天,你屬于UDP還是CDP?...

有人說和相親對象聊天就像ping服務器每發一條消息就像發出一條Ping命令等待對方回復從而得到響應速度結果但是難受的是這個響應速度永遠無法做到秒級少點幾分鐘多則幾十分鐘甚至幾十個小時才有響應有時候真希望對方不要響應了就能判斷此處Ping不通從此斷了念想...你是否也像這位…

三星w系列vip服務器,高端人士候機專屬特權 三星W2017一張行走的VIP卡

原標題:高端人士候機專屬特權 三星W2017一張行走的VIP卡17年春運時間為1月13日至2月21日,如今春節假期已過,億萬人開始踏上了離鄉之路追尋夢想。每年春運都給交通帶來巨大壓力,今年為期40天的春運預計全國發送旅客或超29億人次。鐵…

阿酷快捷鍵怎么使用_必須收藏!Linux用戶必須知道的常用終端快捷鍵

點擊上方[全棧開發者社區]→右上角[...]→[設為星標?]簡介:以下是一些每個 Linux 用戶必須使用的鍵盤快捷鍵。使用命令行時,這些 Linux 快捷鍵將提升你的工作效率。你知道什么把專業用戶和普通用戶分開的嗎?掌握鍵盤快捷鍵。好的&#xff01…

checkbox ajax 不選中的值,php – 無法通過ajax傳遞checkbox的值

我有從數據庫收到的表://$id $_SESSION[staff_id];$teamResult getQuarter($leader_id);$count1 0;if (mysqli_num_rows($teamResult) > 0){?>1st Quarterwhile($row mysqli_fetch_array($teamResult)){$staff_id $row[staff_id];$username $row[usern…

3dmax天光渲染設置_【扮家家云渲染效果圖】3dmax測試全局照明效果|干貨教程...

首先打開場景文件,首先按快捷鍵8,打開環境和效果控制面板。下面有一個全局照明這樣一個選項卡,有染色、級別、環境光三個參數。默認情況下染色為白色,級別為1,環境光為黑色。此時我們可以單擊渲染,查看一下…

手寫table用ajax遍歷,原生js把數據循遍歷到前端table

用前端框架去給表格賦值簡直不要太容易和簡單。但是原生js就會復雜一些了。特別是按鈕事件的那個(“ )和 (’)特別讓人腦瓜子疼。最近做了一個功能,里面用的就是原生js實現。寫在js里面的代碼:(用的ajax請求將文件保存到服務器,返回的數據遍歷…