溶解!shader 入門實戰之噪聲紋理!附完整項目!
效果
原理
什麼是噪聲紋理?
噪聲紋理的特性是不可預測性的隨機。
個人理解噪聲紋理就是一張圖片,每個像素點顏色值(rgba
)是按照一定的隨機性分佈的。
怎麼生成噪聲紋理?
- 工具生成
- 代碼生成
- 網上下載(這裏用的噪聲紋理是網上下載的)
- 其他
怎麼實現消融?
根據噪聲紋理的顏色值和消融閾值(noiseThreshold
)判斷,當達到閾值時,丟棄(discard
)該片元像素。
vec4 noise = vec4(1, 1, 1, 1);
CCTexture(textureNoise, v_uv0*3.0, noise);
if(noise.r < noiseThreshold){
discard;
}
加點內描邊
還可以混點顏色,對閾值附近的像素點加一些顏色,就能實現燃燒效果啦。
float t = 1.0 - smoothstep(0.0, colorWidth, noise.r - noiseThreshold);
vec3 burnColor = lerp(burnColorInner.rgb, burnColorOut.rgb, t);
o.rgb = lerp(o.rgb, burnColor.rgb, t*step(0.0001, noiseThreshold ));
其他
shader
入門資料可以參考這篇文章。
項目代碼在 2.4.x
目錄下的 demo04
。
小結
噪聲紋理
noise
! 消融效果dissolve
!shader
!
以上爲白玉無冰使用 Cocos Creator v2.4
實現 "噪聲紋理之消融效果(dissolve)"
的技術分享。歡迎分享給身邊的朋友!
天下事有難易乎?爲之,則難者亦易矣;不爲,則易者亦難矣。人之爲學有難易乎?學之,則難者亦易矣;不學,則易者亦難矣。