原创 gpu動畫實現方式

一般我們要做動畫有好幾種實現方式 第一種是骨骼動畫: 直接用animator或animation控制帶蒙皮的角色來控制骨骼。 骨骼動畫的原理: 首先你需要有一個模型,2D或者3D的,這些模型是由頂點組成的,2d模型的頂點就是一個個四邊形的

原创 lwrp渲染頻率優化

如果沒有東西刷新我們可以儘量複用以前的渲染效果會比較好。因爲如果還要繼續走一遍管線流程,會做裁剪以及渲染。 類似的比如在主界面,然後也沒特效,那麼這個勾朑可以降低攝像機計算的頻率,從而減少不必要的渲染時機。 所以我改了lwrp的Light

原创 大量貼圖採樣限制下的渲染處理方法

因爲項目中有換裝系統,換裝系統中有大量的可替換的臉部數據,比如眉毛,睫毛,腮紅,眼影,口紅等,需要十多個貼圖通道。所以我們的shader中需要有十多張貼圖通道 跑再android機器上時,一切都正常顯示。但跑再iphone8時,就會發現材

原创 透明渲染方式下的渲染順序問題

  項目中的角色的眉毛處是可以替換的,所以美術會把角色的模型處做上睫毛的頂點。 這樣是爲了方便表現睫毛的形狀。然後用替換睫毛貼圖到角色身上來做成睫毛的更換,並且睫毛在沒內容的地方做透明處理就能顯示處正常的睫毛。 但是如果我們直接替換睫

原创 lwrp下自寫shader在pc端崩潰的原因及解決辦法

解決辦法: 在lwrp下的shader,要傳遞的參數需要用 CBUFFER_START(UnityPerMaterial) CBUFFER_END 包起來。 類似這樣: CBUFFER_START(UnityPerMaterial) un

原创 固定視角的特效優化方式(2)屏幕空間特效顯示限制

固定視角的遊戲有個特點就是攝像機的角度是一致的,不會有變化。 但因爲我們的某款遊戲在遊戲過程中會有大量的粒子特效出現,overdraw會非常高,drawcall數量同樣也會很高。 這樣的話在手機上會由於帶寬問題而產生消耗過大的問題。如

原创 mipmap相關處理

mipmap如果開啓之後圖片變模糊了,關閉mipmap就清晰了 很大可能是因爲質量設置裏面的圖片質量不是full res。所以圖片模糊了。只要改變爲fullres就好   開啓mipmap: 無論遠處或近處都會變得模糊,但是就是沒有了鋸

原创 fgui裏的scrollpanel優化

滾動條裏的滑動效果一般都是有__touchBegin,__touchMove,__touchEnd。 然後一般都是兩個位置座標來計算滑動的速度快慢以及拖尾速度的。   但是fgui這裏計算的話用的是Vector2 pt = _owner.

原创 幾何着色器在不增加drawcall的前提下完成假陰影

項目之前想要做一個假陰影,一般有幾種做法: 第一種是直接把角色的頂點的世界座標的y座標映射到地面高度的位置,用另一個pass渲染他,讓他的顏色可以控制就好。這樣能產生一個頂部燈光的效果,但是角色有多少部件就會有多多少個drawcall。二

原创 shader浮點數超過限制範圍導致身體顯示黑線

在魅族m822q等手機上發現,角色身上的模型會出現黑線 仔細觀察發現是高光部分有問題 然後進入shader中,通過不斷的調試(隱藏代碼的方式。。。)發現在一句代碼中出現問題 half3 diffuseTCP2 = (diffColor

原创 lwrp下shadowmap理解

需要在投射陰影的物體上加一個shadowCaster的pass。 頂點着色器中GetShadowPositionHClip轉換陰影到投影座標 片元着色器中採樣MainTex然根據alpha值和color混合到shadowmap中 在接

原创 陰影漸變效果

我們的策劃想要讓原本的假陰影做一個漸變的效果並且想要讓邊緣模糊。原本的效果時這樣的 可以看到陰影就是一個黑影並且邊緣有很多鋸齒。 首先來分析兩個事情,一個是鋸齒,一個時漸變陰影。 一:陰影鋸齒 陰影的鋸齒主要是因爲像素不足導致的,這個情

原创 固定視角的特效優化方式(1)

我們有個遊戲需要在特定的角度下進行。但遊戲的特效非常的多和複雜,例如其中一些小道具的dc就達到6個。 其中一個優化方法當然是從源頭優化,就是美術製作時就減少,但這樣有幾個問題,第一是美術可能需要重新做,時間上不可控。第二就是減少也很難,而

原创 2d短草叢踩踏及idle效果

一般我們用短草叢被角色經過或平常的飄動效果都是用3d實現的,3d實現起來就比較簡單,就是對模型上的頂點做與角色距離的相反方向偏移就好了,平常的飄動效果一般是用sin做弧度變化或者甚至就直接uv的來回移動就好。 我們是3渲2的畫面俯四十五度

原创 unity 圖文混排方案

在我們工作中,可能經常有這樣的需求,就是需要圖文混排,因爲這個對於原生或web都是比較容易的事情。但是我們用unity的話,首先unity最開始只想做純遊戲側的引擎,一開始甚至還沒有一個商業化的ui工具,後面才結合了ngui成爲ugui,