Cocos Creator 2.1 shader / 材質(zhì) 使用示例

這里制作了一個按鈕流光特效

流光特效.gif
  • 主要構(gòu)成是在原圖片上面蔬浙,混合了一層中間實尸诽,兩邊虛的白色充當(dāng)光效观谦,然后移動

制作流程

  • 首先創(chuàng)建流光特效需要使用到的材質(zhì)球和特效


    材質(zhì)球
  • 將材質(zhì)球的 effect 選擇為自己新創(chuàng)建的


    effect
  • 修改 effect 里面的代碼实撒,制作特效

    • 我這里貼出了 核心代碼
    • %% vs 是頂點 shader 模塊
    • %% fs 是面 shader 模塊疫剃,我們因為要做流光效果钉疫,所以這里需要修改的就是這里面的代碼
      • v_uv0 是當(dāng)前要渲染的點,
      • color 是當(dāng)前要渲染點的 texture 的 rgba
      • gl_FragColor 是你告訴系統(tǒng)最終渲染顏色
      • 核心就是去用系統(tǒng)給你的點的 rgba 和點的位置巢价, 去計算得出你需要的效果的 rgba
void main () {
  vec4 color = v_color;

  #if USE_TEXTURE
    color *= texture2D(texture, v_uv0);
    #if _USE_ETC1_TEXTURE
      color.a *= texture2D(texture, v_uv0 + vec2(0, 0.5)).r;
    #endif
    float y1 = -1.0 * tan_value * (v_uv0.x - start_x);
    float y2 = -1.0 * tan_value * (v_uv0.x - start_x - light_width);



    if (v_uv0.y > y1 && v_uv0.y < y2) {
      //計算現(xiàn)在的點到中心線的距離
      float dis = v_uv0.y * -1.0 / tan_value + (light_width / 2.0) + start_x - v_uv0.x;
      if (dis < 0.0) {
        dis = dis * -1.0;
      }

      //距離所占比例
      // * 1.0 后變?yōu)橥该鞫? 所以本身就是透明度
      float sc = dis / (light_width / 2.0);
  
      //計算光的透明度  營造光暈效果
      // 中間不透明   兩邊透明
      //用 sin 來達(dá)成先快后慢的變化效果
      float lightA = (1.0 - sin(sc * 3.1415926536 / 2.0)) * light_strength;

      float newr = color.r * (1.0 - lightA) + 255.0 * lightA;
      float newg = color.g * (1.0 - lightA) + 255.0 * lightA;
      float newb = color.b * (1.0 - lightA) + 255.0 * lightA;      
      float newa = color.a * (1.0 - lightA) + 1.0 * lightA;


      color = vec4(newr, newg, newb, newa);
    }
  #endif


  gl_FragColor = color;
}

流光特效

  • 我這里主要的思想是牲阁,首先計算出光效的兩條邊線,在兩條線之間的區(qū)域就是我們要調(diào)整顏色的區(qū)域壤躲。
  • 調(diào)整顏色的算法根據(jù)你的需要去調(diào)整
    • 這里有混合顏色算法的示例

    • 我首先是做了一條白色的光城菊,

    • 但是實際光線應(yīng)該是中間明兩邊弱的,所以我又計算了一條中心線碉克,計算點到中心線的距離凌唬,根據(jù)距離去調(diào)整光線強(qiáng)弱。

    • 實際做出來的效果顯得中間區(qū)域很亮漏麦,光線變?nèi)醯乃俣人俣蕊@得很慢客税,所以要做一條先快速變化后慢速變化的曲線,然后我想到了三角函數(shù)撕贞,然后用 sin 函數(shù)去控制變化曲線


      image.png
    • 最終就是整體的流光效果更耻。

小結(jié)

  • 我這里只是給出一個思維示例,不代表你們做效果的時候完全按這個方法去做捏膨,只是提供一個分析問題和解決問題的思路秧均,希望看完能對你有所啟發(fā)。
  • 另外号涯,我個人是 iOS 開發(fā)者熬北,對 cocos 不是特別精通,如果大家有什么好的建議诚隙,十分歡迎大家留言探討讶隐。
  • 最后代碼已經(jīng)上傳GitHub,有幫忙到你的不要忘記點start哦久又!
  • Demo
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巫延,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子地消,更是在濱河造成了極大的恐慌炉峰,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脉执,死亡現(xiàn)場離奇詭異疼阔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門婆廊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迅细,“玉大人,你說我怎么就攤上這事淘邻∫鸬洌” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵宾舅,是天一觀的道長统阿。 經(jīng)常有香客問我,道長筹我,這世上最難降的妖魔是什么扶平? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮蔬蕊,結(jié)果婚禮上蜻直,老公的妹妹穿的比我還像新娘。我一直安慰自己袁串,他們只是感情好概而,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著囱修,像睡著了一般赎瑰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上破镰,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天餐曼,我揣著相機(jī)與錄音,去河邊找鬼鲜漩。 笑死源譬,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的孕似。 我是一名探鬼主播踩娘,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼喉祭!你這毒婦竟也來了养渴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤泛烙,失蹤者是張志新(化名)和其女友劉穎理卑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔽氨,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡藐唠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年帆疟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宇立。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡踪宠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出泄伪,到底是詐尸還是另有隱情,我是刑警寧澤匿级,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布蟋滴,位于F島的核電站,受9級特大地震影響痘绎,放射性物質(zhì)發(fā)生泄漏津函。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一孤页、第九天 我趴在偏房一處隱蔽的房頂上張望尔苦。 院中可真熱鬧,春花似錦行施、人聲如沸允坚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稠项。三九已至,卻和暖如春鲜结,著一層夾襖步出監(jiān)牢的瞬間展运,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工精刷, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留拗胜,地道東北人。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓怒允,卻偏偏與公主長得像埂软,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纫事,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容