Cocos Shader入门学习案例:实现物体消融效果
创作时间:
作者:
@小白创作中心
Cocos Shader入门学习案例:实现物体消融效果
引用
CSDN
1.
https://m.blog.csdn.net/weixin_52985165/article/details/137857476
本文将介绍如何使用Cocos引擎实现物体的消融效果。通过在Shader中添加噪声图属性,修改片段着色器代码,并使用脚本控制节点的消融过程,可以实现物体逐渐消失的视觉效果。
Shader配置
在CCEffect中添加以下属性:
properties:
dissolveMap: { value: white, editor: { tooltip: '噪音图'} }
dissolveThreshold: { value: 0.3, editor: { tooltip: '溶解阈值'} }
edgeColor: { value: [1, 1, 1, 1] ,editor: { type: color, tooltip: '边缘颜色'}}
edgeWidth: { value: 0.05, editor: { tooltip: '边缘宽度'} }
片段着色器修改
声明部分
#if USE_TEXTURE
uniform sampler2D dissolveMap; // 噪音图
#endif
uniform Dissolve { // 消融相关
vec4 edgeColor;
float edgeWidth;
float dissolveThreshold;
};
入口函数
void main () {
vec4 o = vec4(1, 1, 1, 1);
#if USE_TEXTURE
vec4 dissolveValue = texture2D(dissolveMap, v_uv0);
if (dissolveValue.r < dissolveThreshold) { // 溶解
discard;
}
o = texture2D(texture, v_uv0);
#endif
o *= v_color;
if (dissolveValue.r < dissolveThreshold + edgeWidth && o.a > 0.0) { // 边缘
float edge = smoothstep(dissolveThreshold - edgeWidth, dissolveThreshold + edgeWidth, dissolveValue.r);
vec4 finalColor = mix(o, edgeColor, edge);
o = finalColor;
}
gl_FragColor = o.rgba;
}
脚本控制
使用以下脚本控制节点的消融过程:
const {ccclass, property} = cc._decorator;
@ccclass
export default class DissolveEffect extends cc.Component {
@property
dissolveInterval: number = 0.01;
@property
dissolveStep: number = 0.01;
start () {
const material = this.getComponent(cc.Sprite).getMaterial(0);
material.setProperty('dissolveThreshold', 0);
this.schedule(()=>{
let dissolveThreshold = material.getProperty('dissolveThreshold', 0);
dissolveThreshold += this.dissolveStep;
material.setProperty('dissolveThreshold', dissolveThreshold);
// console.log(dissolveThreshold);
}, this.dissolveInterval, 1/this.dissolveStep);
}
}
最终效果
热门推荐
上海学区房概念遭“狙击”,知名老破小房价一夜降60万
多重人格是什么?带你了解分离性身份识别障碍
甘蔗的营养与健康作用(从多方面解读甘蔗的神奇之处)
佛学教你如何看清并应对负面情绪
无证驾驶后果严重吗
示波器安全使用原则与规范
苏州本地人常去的21家小餐馆,老苏州的人间烟火,老百姓的日常
债权通App下架事件:P2P借贷平台风险警示录
解密血液透析:时间参数的再认识
《小小的我》:“看见”过后,共迎春光
月光骑士:月光下的守护者MoonKnight
对开发人员来说,有哪些帮助游戏开发的最佳软件
警惕,离焦眼镜不能盲目配!这些不注意会坑了孩子
PID控制原理与算法详解:以无人机高度控制为例
布骨医学科普:腓肠肌拉伤
NBA前瞻:黄蜂vs篮网,伤病困扰下谁能笑到最后?
奶茶中的“植脂末”到底是什么?营养师教你健康喝奶茶
医生解答:每两天喝两次奶茶是否健康?
GPT大模型在医疗领域的革命性应用:从临床决策到个性化医疗
周末去哪儿——方村:感受乡村田野间的醉人春色! | 春游江淮
冰不导电?《哪吒2》里面的物理知识你注意到了吗?
彩礼的法律规定多少
离婚权利保障是什么
葡萄树怎么剪枝?
合法自建别墅的步骤和注意事项
周至县文物古迹介绍
隐形战线的中华英雄:金无怠
从采购出发,迈向可持续发展!五步打造环保采购体系
重磅发布!2025中国企业可持续发展十大趋势
膝超伸的原因及康复训练思路