0.glsl中語句以'分;號'結尾 否則會編譯錯誤!
1.glsl中整數與浮點數運算會導致編譯錯誤
vec2 p = -1 + 2 * v_texCoord; //錯誤
vec2 p = -1.0 + 2.0 * v_texCoord; //正確
2.glsl中沒有使用過的變量會在編譯階段被丟棄
假如聲明了一個
uniform float time;
若time並沒有使用,編譯階段會把這個變量去掉
因此若程序中再去找time變量會找不到
glProgram_state.setUniformFloat("time", this.time);
//cocos2d: warning: Uniform not found: time
3.安卓手機gpu計算遇到大浮點數精度明顯降低
如time傳入之后,當time大於100.0時各種計算明顯精度不粗
導致紋理采樣卡頓
一般傳入shader中的數字最好是小數
4.gl_FragCoord理解
https://blog.csdn.net/jinghouxiang/article/details/50751125
5.精度
在部分安卓手機(小米)上
因為浮點數精度不加會產生異常顯示問題
比如計算距離distance/三角函數運算等等
可以把mediump改為highp
#ifdef GL_ES
//在小米等機型mediump會導致精度不足!顯示異常
//precision mediump float;
precision highp float;
#endif
水波紋shader相關參考
http://forum.cocos.com/t/shader-creator-cocos2dx/49505
http://gad.qq.com/article/detail/20518
http://www.cocoachina.com/bbs/read.php?tid=1693873
https://blog.csdn.net/wuyangzu01/article/details/50503676
https://www.shadertoy.com/view/MsBSz1
https://blog.csdn.net/chenxizhibi/article/details/51291930
https://blog.csdn.net/yuanhong2910/article/details/18766385
https://blog.csdn.net/tkokof1/article/details/40819225
https://blog.csdn.net/tkokof1/article/details/41946337
水波特效思路
1.獲取點擊位置,在fsh中獲取每個像素與點擊位置的距離
2.根據這個距離處理采樣偏移或者構建法線,形成環形波面效果
3.推進波面移動,控制波面衰減
4.多重波面重疊效果