cocos2d-js Shader 柳樹枝效果

var TreeShader_fsh =

"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

#ifdef GL_ES? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

? ? precision mediump float;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

#endif? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

\n\

varying vec2 v_texCoord;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

uniform sampler2D u_texture;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

uniform float u_time;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

\n\

// 1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

const float speed = 2.0;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

const float bendFactor = 0.05;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

void main()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

{? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

? ? // 獲得高度,texCoord從下到上為0到1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

? ? float height = v_texCoord.y;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

? ? // 獲得偏移量碗脊,一個冪函數(shù),值愈大,導(dǎo)數(shù)越大,偏移量愈大? ? ? ? ? ? ? ? ? ? ? ? \n\

? ? float offset = pow(height, 2.5);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

? ? // 偏移量隨時間變化表锻,并乘以幅度吹菱,設(shè)置頻率? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

? ? offset *= (sin(u_time * speed) * bendFactor);? ? ? ? ? ? ? ? ? ? ? ? \n\

? ? // 使x坐標(biāo)偏移,fract取區(qū)間值(0匾灶,1)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n\

? ? gl_FragColor = texture2D(CC_Texture0, fract(vec2(v_texCoord.x + offset, v_texCoord.y))); \n\

}";

? ? var shader = this.shader = new cc.GLProgram()

? ? shader.initWithString(cc.SHADER_POSITION_TEXTURE_A8COLOR_VERT, TreeShader_fsh)

? ? shader.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR)// 對應(yīng)vs里面的頂點(diǎn)坐標(biāo)

? ? shader.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION)// 對應(yīng)vs里面的頂點(diǎn)顏色

? ? shader.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS)// 對應(yīng)vs里面的頂點(diǎn)紋理坐標(biāo)

? ? shader.link()

? ? shader.updateUniforms()

? ? var shader = this.shader = new cc.GLProgram()

? ? shader.initWithVertexShaderByteArray(DEFAULT_VERTEX_SHADER, SEPIA_FRAGMENT_SHADER)

? ? shader.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR)//對應(yīng)vs里面的頂點(diǎn)坐標(biāo)

? ? shader.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION)//對應(yīng)vs里面的頂點(diǎn)顏色

? ? shader.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS)//對應(yīng)vs里面的頂點(diǎn)紋理坐標(biāo)

? ? shader.link()

? ? shader.updateUniforms()

shader.use()//沒有這個會抖動一下

? ? shader.setUniformsForBuiltins()

? ? var m_nTimeUniformLocation = shader.getUniformLocationForName('u_time')

? ? gl.useProgram(shader.getProgram())

//sprs1為柳條的精靈數(shù)組

? ? sprs1.forEach(function(item){

? ? item.shaderProgram = shader

? ? ? item.t = 0

? ? ? item.scheduleUpdate()

? ? ? item.update = function(dt) {

? ? ? ? item.t += dt

? ? ? ? shader.use()

? ? ? ? shader.setUniformsForBuiltins()

? ? ? ? m_nTimeUniformLocation = shader.getUniformLocationForName('u_time')

? ? ? ? gl.uniform1f(m_nTimeUniformLocation, item.t) // 這個函數(shù)由于jsb實(shí)現(xiàn)有問題,在手機(jī)側(cè)實(shí)際只能傳遞整數(shù)租漂,需要注意阶女。html5是正常的。

? ? ? }

? ? })

參考?https://www.cnblogs.com/kenkofox/p/4084684.html?

http://gad.qq.com/article/detail/43839(發(fā)現(xiàn)問題: szGrassShadervsh報錯)

https://blog.csdn.net/themagickeyjianan/article/details/72717137(發(fā)現(xiàn)問題:圖片背景透明部分變黑)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哩治,一起剝皮案震驚了整個濱河市秃踩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌业筏,老刑警劉巖憔杨,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蒜胖,居然都是意外死亡消别,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門台谢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寻狂,“玉大人,你說我怎么就攤上這事对碌【J” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵朽们,是天一觀的道長怀读。 經(jīng)常有香客問我,道長骑脱,這世上最難降的妖魔是什么菜枷? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮叁丧,結(jié)果婚禮上啤誊,老公的妹妹穿的比我還像新娘岳瞭。我一直安慰自己,他們只是感情好蚊锹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布瞳筏。 她就那樣靜靜地躺著,像睡著了一般牡昆。 火紅的嫁衣襯著肌膚如雪姚炕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天丢烘,我揣著相機(jī)與錄音柱宦,去河邊找鬼。 笑死播瞳,一個胖子當(dāng)著我的面吹牛掸刊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赢乓,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼忧侧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了牌芋?” 一聲冷哼從身側(cè)響起苍柏,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姜贡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棺棵,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡楼咳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了烛恤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片母怜。...
    茶點(diǎn)故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缚柏,靈堂內(nèi)的尸體忽然破棺而出苹熏,到底是詐尸還是另有隱情,我是刑警寧澤币喧,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布轨域,位于F島的核電站,受9級特大地震影響杀餐,放射性物質(zhì)發(fā)生泄漏干发。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一史翘、第九天 我趴在偏房一處隱蔽的房頂上張望枉长。 院中可真熱鬧冀续,春花似錦、人聲如沸必峰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吼蚁。三九已至凭需,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桂敛,已是汗流浹背功炮。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留术唬,地道東北人薪伏。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像粗仓,于是被迫代替她去往敵國和親嫁怀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評論 2 359