小人是ab的,鬼火是ad的
仔細看還會發現有兩層,所以它是兩個pass的shader
之前講過一下subshader有什麼用
乙個shader裡可能有好幾個subshader,這些subshader可能是不同lod級別的回退
乙個遊戲可能比較複雜,要針對很多機型去做適配,乙個shader寫乙個內容經常是不夠的
會根據中低配寫不同shader的內容,subshader可以學lod進行高中低配
subshader往下有個pass,可以寫好幾個pass,渲染完這一遍,再渲另外一遍其他的內容
取樣這個圖,原本uv是0-1,我們要把它縮放成每乙個小格仔的火,然後隔一段時間跳到下乙個格仔
shader首先是屬性
根據行和列我們進行編號
並且uv的重複如果選成repeat,那麼可以繼續往下拓展
properties
_opacity (
"透明度"
,range(0
,1))
=0.5
_sequence (
"序列幀"
,2d)
="gray"
_rowcount (
"行數"
,int)=
1 _colcount (
"列數"
,int)=
1 _speed (
"速度"
,range
(0.0
,15.0))=1}
第乙個pass,小人的ab
subshader
pass
blend one oneminussrcalpha // 修改混合方式one/srcalpha oneminussrcalpha
cgprogram
#pragma vertex vert
#pragma fragment frag
#include
"unitycg.cginc"
#pragma multi_compile_fwdbase_fullshadows
#pragma target 3.0
// 輸入引數
uniform sampler2d _maintex;
uniform half _opacity;
// 輸入結構
struct vertexinput
;// 輸出結構
struct vertexoutput
;// 輸入結構》頂點shader>>>輸出結構
vertexoutput vert (vertexinput v)
// 輸出結構》畫素
half4 frag
(vertexoutput i)
: color
endcg
}
第二個pass,給序列幀
floor向下取整,idv相當於商,idu相當於餘數
pass
blend one one // 混合方式
cgprogram
#pragma vertex vert
#pragma fragment frag
#include
"unitycg.cginc"
#pragma multi_compile_fwdbase_fullshadows
#pragma target 3.0
// 輸入引數
uniform sampler2d _sequence; uniform float4 _sequence_st;
uniform half _opacity;
uniform half _rowcount;
uniform half _colcount;
uniform half _speed;
// 輸入結構
struct vertexinput
;// 輸出結構
struct vertexoutput
;// 輸入結構》頂點shader>>>輸出結構
vertexoutput vert (vertexinput v)
// 輸出結構》畫素
half4 frag
(vertexoutput i)
: color
endcg
}
從ab開始,基本引數沒改,多了個顏色
properties
[hdr] _color (
"混合顏色"
, color)=(
1.0,
1.0,
1.0,
1.0)
_opacity (
"透明度"
,range(0
,1))
=0.5
}subshader
pass
blend one oneminussrcalpha // 修改混合方式
cgprogram
#pragma vertex vert
#pragma fragment frag
#include
"unitycg.cginc"
#pragma multi_compile_fwdbase_fullshadows
#pragma target 3.0
// 輸入引數
uniform sampler2d _maintex;
uniform half _opacity;
uniform half3 _color;
// 輸入結構
struct vertexinput
;// 輸出結構
struct vertexoutput
;
shader部分
淡入淡出的部分是用了頂點色
// 輸入結構》頂點shader>>>輸出結構
vertexoutput vert (vertexinput v)
// 直角座標轉極座標方法
float2 recttopolar
(float2 uv, float2 centeruv)
// 輸出結構》畫素
half4 frag
(vertexoutput i)
: color
深度學習入門 個人學習筆記(一)
跟其他語言一樣,表示乘法,表示除法,表示加法,表示減法,在python中還有 表示平方。在python3.x中整數除以整數結果是小數。1 2 1 4 5 20 7 5 1.4 python 2.x中為1 3 2 9python中有六種標準資料型別 number 數字 string 字串 list 列...
繼承的本質的個人學習筆記
對繼承的本質的一些理解,看了些文章和部落格,總結成自己的文字加深一下理解,可能表達和理解的不是很透徹,請帶著批判的眼光閱讀 先附上大神們的文章 new建立物件時,遞迴查詢父類,分配記憶體,最先建立的應該是object。物件是在執行時建立的,方法是在編譯時建立,物件欄位和方法的建立和呼叫遵循執行就近原...
NodeJS的一些個人學習筆記
前一段時間對nodejs產生了濃厚的興趣,刻苦研究一段時間之後頗有所得,不過中間工作比較忙,有一陣子放著沒看了,這兩天做畢設 求職面試又要用到,回頭翻翻發現好多東西又忘了。今天趕緊補一補,簡單做個筆記 1.require方法的實質是呼叫load方法,load方法載入 編譯 快取module 2.事件...