Unity 實時陰影新方案

2021-09-24 20:12:07 字數 1377 閱讀 7609

大家都知道,實時光產生陰影的效能開銷很大,為了在移動端有更好的效能表現,所以在網上參考了一些方案,總結了乙個陰影shader去解決實時光效能開銷過大的問題。

1.陰影shader,產生陰影的物體需要使用這個shader

shader "custom/playershadow"

_shadowinvlen ("shadowinvlen", float) = 1.0

_power("power", range(0,2)) = 1.7

_alpha("alpha",range(0,1)) = 1.0

} subshader

lod 100

pass

; struct v2f

;sampler2d _maintex;

float4 _maintex_st;

fixed _power;

fixed4 frag (v2f i) : sv_target

endcg

} pass

cgprogram

#pragma vertex vert

#pragma fragment frag

float4 _shadowplane; //渲染的地面

float4 _shadowprojdir; //渲染的光源點,這裡只是記錄點的位置,用於計算陰影的投影

float4 _worldpos;

float _shadowinvlen; //陰影的長度

float4 _shadowfadeparams; //陰影漸變的引數

float _alpha;

;struct v2f

;float4 frag(v2f i) : sv_target

endcg

} }}

2.控制指令碼,通過獲取場景中的所有運用了陰影shader的材質。需要給定乙個光源位置(空物體即可,不需要light)

using system.collections;

using system.collections.generic;

using unityengine;

using qarth;

using system;

namespace gamewish.game

private void onmeshchange(int key, object param)

private void refreshrender()}}

for (int i = 0; i < skinrenderlist.length; i++)}}

}void update()

private void updateshader()}}

}

iOS 熱更新方案

由於蘋果在2017年3月左右更新了開發者協議,禁止需要線上審核的應用進行熱更新,所以請大家慎用 企業版不需要提交審核當然是可以使用的 一 jspatch 熱更新時,從伺服器拉去js指令碼。理論上可以修改和新建所有的模組,但是不建議這樣做。建議 用來做緊急的小需求和 修復嚴重的線上bug。二 lua指...

Hive增量更新方案

hive增量更新方案 方案一 總結出來業界可行方案 1 hive原始表提前規劃好以時間分割槽,初始化裝載源庫記錄為base table 最新資料 2 每個相關表都會有乙個timestamp列,對每一行操作做了修改,都會重置這列timestamp為當前時間戳 3 新增資料通過sqoop 支援當天抽取 ...

Unity官方發布熱更新方案效能對照

孫廣東 2016.3.11 unity 應用的ios 熱更新unity technologieschina agenda 什麼是熱更新 為何要熱更新 怎樣在ios 上對unity 應用進行熱更新 支援unity ios 熱更新的各種 lua 外掛程式的對照 什麼是熱更新 廣義定義 無需關閉serve...