最近有人問到寫shader需要注意哪些地方及如何優化,正好筆者也在研究這方面,這裡主要針對unity來說,其它平台或引擎也可以參考,本文主要分如下幾個方面來說:shader的選擇,屬性和狀態的設定,資料型別選擇,**編寫,舉例,除錯
unity中現在可以新建4種shader,分別是standard su***ce shader,unlit shader,image effect shader,compute shader.
cgprogram
#pragma su***ce surf ******lambert exclude_path:prepass noforwardadd
float x,y;
x=x*a; y=y
*b;
修改後:
float2 v =float2(x,y);
v = v*float2(a,b);
結果:前一種需要2次乘法,而後一種只需要1次。
- 用step替換分支
比如:修改前:
float4 a
;if(b>1)
else
修改後:
float4 a;
float tmp = step(b,1);//if
(1>=b)=>
1else
=>
0; a=tmp*0.5+(1-tmp);
結果:if else可以被step出來的0或1的乘法代替。
- 使用swizzle
如:修改前:
float4 a=float4(1,1,1,1);
a.w = 2
;a.z = 3
;
修改後:
float4 a=float4(1,1,1,1);
a.wz=float2(2,3);
Unity實驗室之選擇哪個Unity版本
unity版本公升級比較快,版本比較多,筆者寫這篇文章時官方正式版是2017.3,正在測試的版本是2018.1,筆者專案現在使用的是unity5.6.4,而且還有各種各樣的補丁版本,那麼我們在開始新專案或面對老專案該不該公升級的問題上該如何選擇呢?選擇版本時,筆者覺的應該仔細考慮以下幾點 穩定性。如...
華為實驗室
談到華為,大家都不陌生 世界500強 全球第二通訊 商,為全球140多個國家和地區的20多億人提供服務 同時也是全球ict領域的領導者。如此成就和至高無上的榮譽地位,其成功更是與實驗室無數個日夜的技術鑽研有著分不開的關係。關注過華為的朋友想必聽說過 2012實驗室 據稱,該實驗室的名字來自於任正非在...
8 10於實驗室
前幾天忙於保研的事情,沒再繼續做我的專案,結果保研恐怕要黃了,這幾天潛心考研,結果又收到了中行的實習通知,一時兩難。有時候自己寫東西太不自然,感覺寫技術文章很大一部分是為了給別人看,反而不是為了提公升自己,感覺這個心態不好,太虛榮了,現在想寫點自己的東西,輕鬆的,暢所欲言的,沒有文法和壓力的東西,記...