creator sharder 教程(二)

场景:DissolveEffect(溶解)

阅读笔记:add by the3sStudio,如果错误欢迎指教。

致谢:
    感谢大掌教 提供demo,大掌教公开 QQ群号: 704391772

--基础准备
    这篇很多三角函数的运用,自行百度
    vec4 src_color = texture2D(CC_Texture0, v_texCoord).rgba;

    CC_Texture0 是一个采样器,在load shader的时候,引擎会预先把这些uniform变量给加载进来,本处就是 你在场景里面看到的那背景图。

--基础结束 

流光篇  
    fluxay_frag
    总的说,他是渲染每一帧的时候,去改变当前纹理坐标那些触发条件的 纹素
    tan 是一个周期函数,所以你会每隔一段时间就会看到
    现在理解:    if( v_texCoord[0] < (start - offset * v_texCoord[1]) &&  v_texCoord[0] > (start - offset * v_texCoord[1] - width))
    float start = tan(time/1.414);  //流光的起始x坐标,首先这是一个 负无穷到正无穷的值,他有一段可视区间(0,1),
    float offset = 0.0;      //偏移值 (调整该值改变流光的倾斜程度,调整成0 ,那就能理解上面那个条件了,每一帧会计算所有顶点,把满足要求的顶点进行着色)
    还不能理解就带几个参数进去算,然后打点看下这些点是怎么分布的

    fluxay_frag_s 这个我没有很好的理解,可以互相学习
        重点:
        float distance = abs(v_texCoord[0]+v_texCoord[1]-tan(time))/1.414;  //每一帧 同意顶点计算的值都不一样,一帧之内各个不同顶点的值也不一样,那distance是什么呢? 
        float alpha = sample[3]*texColor[3];  //保持原来的 a 值不变

        //要么取 0 要么取 大于 0 ,0 不可见,大于0可见
        同样的,当你把 width 改成 1,这个时候,distance 其实就可以变成  1- distance。
        那么 distance 其实就是 计算 当前 时间周期是否在 (0,1)之内,那这样说不是 只需要用 v_texCoord[0] - tan(time)就可以了吗。
        去掉 v_texCoord[1] 试试看,是一个竖直的线 ?结果和原先的有区别.....
        这个时候 提一个函数 f(x) = ax + b,可以想见了吗,如果去掉 a,那就是一条平行于 y轴的直线。如果有一个斜率,那就是斜线了。这个地方 v_texCoord[1] 其实就是斜率。
        有点难理解,思索下,可能有更好的方式,欢迎指教
        distance = 1.0-(1.0/width)*distance;  
        distance = max(distance, 0.0);
        接下来就很好理解了           

波光特效
    我理解不了,求指教。                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值