原创 (二)unity中的渲染優化技術——————(減少draw call數目 方法一:動態批處理)

批處理的實現原理就是爲了減少每一幀需要的draw call數目。爲了把一個對象渲染到屏幕上,CPU需要檢查哪些光源影響了該物體,綁定shader並設置它的參數,再把渲染命令發送給GPU。當場景中包含了大量對象時,這些操作就會非常耗時。一個

原创 (四)unity中的渲染優化技術——————(遊戲物體、UI、模型的優化,以及移動平臺的一些優化)

一、渲染優化的元素 和渲染優化相關的東西很多,大致可分爲網格、着色器材質、光照和陰影。相關的優化技術有相機視椎體剔除、遮擋剔除、基於層的分類剔除與合併繪製調用。LOD降級分爲着色器的LOD降級和LodGroup降級。在所有這些方面地形是比

原创 (二)unity中的渲染優化技術——————(減少需要處理的頂點和片元數目)

一、減少需要處理的頂點數目 頂點數目同樣有可能成爲GPU的性能瓶頸,下面給出3個常用的頂點優化策略。 1.1優化幾何體 建模時儘可能減少模型中三角面片的數目,一些對於模型沒有影響、或是肉眼非常難察覺到區別的頂點都要儘可能去掉。美術人員往往

原创 (二十二)unity Shader——————非真實感渲染:下篇(素描風格的渲染)

另一個非常流行的非真實感渲染是素描風格的渲染。有篇著名的論文中提到過,使用了提前生成的素描紋理來實現實時的素描風格渲染,這些紋理組成了一個色調藝術映射,這些紋理筆觸逐漸增多,用於模擬不同光照下的漫反射結果,從上到下對應了每張紋理的多級漸遠

原创 (二)unity中的渲染優化技術——————(減少draw call數目 方法二:靜態批處理、共享材質、批處理的選擇)

一、靜態批處理 相比於動態批處理來說,靜態批處理適用於任何大小的幾何模型。它的實現原理是,只在運行開始階段,把需要進行靜態批處理的模型合併到一個新的網格結構中,這意味着這些模型不可以在運行時刻被移動。但由於它只需要進行一次合併操作,因此比

原创 (一)unity中的渲染優化技術——————(影響性能的因素、unity中的渲染分析工具)

這個專欄我們會闡述一些unity中常見的優化技術,這些技術基本都是和渲染相關的,例如使用批處理、LOD(Level of Detail)技術等。 遊戲優化不僅是程序員的工作,更需要美工人員在遊戲的美術上進行一定的權衡,例如避免使用全屏的屏

原创 (二十七)unity shader之——————基本的渲染概念

一、逐頂點計算和逐像素計算 1.1逐頂點計算 在vertex函數中進行的計算就叫逐頂點計算,該計算量只和模型的頂點數量或面的數量有關,而和其他因素(如模型在屏幕上的大小)無關。在unity的表面着色器中,逐像素的計算髮生在vertex:v

原创 (三)unity中的渲染優化技術——————(節省帶寬、減少計算複雜度)

一、節省帶寬 大量使用未經壓縮的紋理以及使用過大的分辨率都會造成由於寬帶而引發的性能瓶頸。 1.1減少紋理大小 使用圖集可以幫助我們減少draw call數目,而這些紋理的大小同樣是一個需要考慮的問題,所有紋理的長寬比最好是正方形,而且長

原创 Unity移動端性能優化(轉)

在知乎上看到一篇不錯的性能優化文章,進行了比較系統的概括,下面分享一下,原文地址: https://zhuanlan.zhihu.com/p/26030252 1.渲染 利用reflect probe代替反射、折射,儘量不用RTT、Gra

原创 (五)unity自帶的着色器源碼剖析之——————前向渲染和延遲渲染

一、前向渲染概述 傳統的渲染方式下所做的光照計算流程稱爲前向渲染。這是一種十分直接的方式,在頂點着色器中對所有待渲染對象的頂點進行一系列的變換,這些變換通常是將頂點的法線和位置變換到裁剪空間。如果採用逐片元光照的方式,在渲染每一幀時,每個

原创 (四)unity shader在實際項目中出現的問題————安卓機型角色眼鏡閃爍的問題(Z-Fighting)

最近發佈跑安卓平臺遊戲的時候,發現我們部分功能界面出現的角色模型,眼鏡會一直閃爍,有時候全身都感覺在閃,經常調查,發現這種畫面閃爍大多數情況下是z-fighting引起的。   解決方案: 1.由於我們項目的角色模型有眨眼這個功能,所以會

原创 (一)unity自帶的着色器源碼剖析之——————UnityShaderVariables.cginc文件

unityShaderVariables.cginc文件中包含大量的工具宏和函數,如變換操作用的矩陣、與攝像機相關的函數、與光照和陰影相關的函數,以及與霧效果相關的函數等。下面依次分析這些工具函數和宏。   一、進行變換操作用的矩陣 1.

原创 (十九)unity shader之——————基於物理的渲染技術(PBS):中篇(Unity 5中的Standard Shader的實現和使用)

一、unity 5中的standard shader 在unity5中新創建一個模型或是新創建一個材質時,默認使用的着色器都是一個名爲standard 的着色器。這個standard shader使用的就是之前所講的基於物理的渲染。 un

原创 (九)unity自帶的着色器源碼剖析之——————UnityShadowLibrary.cginc文件分析(實時陰影和烘焙陰影、陰影淡化、陰影滲漏處理、PCF陰影過濾解決實時陰影鋸齒)

一、陰影與全局照明系統的關係 Unity3D引擎可以根據宏SHADOWS_SCREEN和LIGHTMAP_ON是否啓用決定是否在全局照明系統下對陰影進行混合處理。如果這兩個宏同時啓用,則HANDLE_SHADOWS_BLENDING_IN

原创 (四)unity自帶的着色器源碼剖析之——————Unity3D 多例化技術(GUI Instancing)

一、多例化技術概述 假設需要繪製有很多模型的場景,而大部分模型使用的是同一個模型,即使用同一組頂點數據在渲染時會給它們指定不同的世界座標,繪製在不同位置上。比如草,可能由幾個三角形構成,渲染一株草沒有渲染壓力,但是成千上萬株就會調用相應次