Unity3D-InstantOC遮挡剔除
InstantOC(插件)
- 渲染管線
? ? ? ? ? ? ? ?繪制調用(Draw Call):每次引擎準備數據并通知GPU的過程,即每幀調用顯卡渲染物體的次數。即下圖中的Batches。
???????? ???
? ? ? ? ? ?3.到顯卡GPU這,主要做如下處理:
? ? ? ? ? ? ? 頂點處理:從CPU接收模型(網格模型)頂點數據,然后做坐標轉換。
? ? ? ? ? ? ? 圖元裝配:組裝面,即繪制三角面;
? ? ? ? ? ? ? 光柵化:計算面上的像素,為著色提供合理的插值參數;
? ? ? ? ? ? ?像素處理:像素著色,寫入緩存;
? ? ? ? ? ? ?幀緩存與深度緩存Z-buffer:存儲像素的深度信息,像素離攝像機的距離,進的替代遠的像素;? ? ? ? ? ??
?
- Occlusion Culling(遮擋剔除)
? ? ? ??
? ? ? ?攝像機視野:
? ? ? ??
? ? ? ??
? ? ? ?對上述場景做遮擋剔除,步驟如下:
? ? ? ? ?
? ? ? 2. 將InstantOC中的如下圖中的文件拖拽到攝像機上
? ? ? ? ?
? ? ? 在屬性面板中出現該文件的設置屬性,如下
? ? ? ??
?
? ? ? ?3.設置Layer mask和TAGs分別為IOC_Layer和IOC_Tag
? ? ? ? ? ?1)Layer mask:參與遮擋剔除的對象層;
? ? ? ? ? ?2)TAGs:為指定的標簽對象自動添加IOClod腳本對象;
? ? ? ? ? 3)Sample(采樣):
? ? ? ? ? ? ? ? 原理:在攝像機視野范圍內,隨機放出射線,若打到物體上,則該物體需要渲染,若打不到,則取消該物體的Mesh Renderer前的勾(不渲染);
? ? ? ? ? ? ? ? 采樣:發出的射線的數量,通常設置在150-500之間;
? ? ? ? ? ?4) Rays Fov:射線視野,應大于攝像機視野Field of View。
? ? ? ? ? ?5)View Distance:視圖距離,射線長度,參照影響攝像機Clipping Planes-Far數值。
? ? ? ? ? ?6)Hide Delay:延遲隱藏,當物體被剔除時延遲的幀數,建議50-100之間。即發射射線的次數,若每次某物體都不可見,則剔除。
? ? ? ? ? ?7)PreCull Check:檢查采集信息,建議勾選,提高剔除效率;
? ? ? ? ? ?8)Realtime Shadows:實時陰影,如果場景需要實時陰影,確保剔除物體顯示正常的陰影(該功能不穩定)。
? ? ?4. 為將需要做遮擋剔除的物體添加盒狀碰撞器,而不是使用物體的實際的面來做射線碰撞。而是使用盒狀的6個面。
? ? ? ??
? ? ? ??遮擋剔除使用情況:在場景中,物體比較密集,遮擋的物體較多時,可以使用遮擋剔除,否則會真加CPU的負擔。
? ? ?5.運行效果(中間被遮擋的不渲染,不可見):
? ? ? ??
? ? ? ?移動一下前面的物體,后面的又出現了,如下:
? ? ? ??
? ? ? ? 前后Draw Call對比:可知Batches減少了(30à24),降低了顯卡的負擔。
? ? ? ??
?
- LOD(多細節層次Levels of Detail)
? ? ? ? ??
? ? ? ? ? 主要的意思是:一個物體有三個不同精細程度的模型,在0-20距離內,使用精細高的模型,在20-40距離內使用中等精細模型,在40距離以外,使用低精細模型。主要影響下圖中的面數和頂點數。
? ? ? ? ? ?
? ? ? ? ? 1)添加一個物體作為父對象,有三種不同精細程度的模型作為子對象,并命名為Lod_0,Lod_1,Lod_2(命名必需為這個)。
? ? ? ? ? ?
? ? ? ? ? ?2)攝像機添加IOCCam,模型父對象添加盒狀碰撞器
? ? ? ? ? ? 3)改變攝像機的位置,可以看到Mesh Renderer前的勾會改變,有勾的會渲染。
附:
本文章學習至bilibili-沒有文明的文明-史上最全Unity3D教程
總結
以上是生活随笔為你收集整理的Unity3D-InstantOC遮挡剔除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT高级编程之基本函数用法
- 下一篇: 【计算机网络复习 数据链路层】3.5.2