LayaBox2D使用自定义Shader的方法

本文详细介绍了如何在Laya2D框架下自定义Shader,实现个性化滤镜和高级图形效果。从理解Laya框架运行规则,到创建自定义Value2D对象,再到修改渲染逻辑,最后实现Shader与Image的连接,提供了完整的实现步骤。

-前言-

之前也写过一篇关于Laya2D自定义Shader的博客。不过那篇博客局限性太大,是完全独立于Laya框架下独自更新的。不能通过Laya的添加层级关系,设置坐标等。所以这次Shader方案是基于Laya的运行框架下的。

-正文-

Laya框架简述

在开始说具体方案时,还是先来了解下Laya框架的运行规则。
Laya框架下分为3块:

  • 用户逻辑层,这一层逻辑是我们自己写游戏的逻辑层,基于Timer帧更新去循环跑
  • 框架逻辑层,这一层逻辑是确定每个图元的渲染方式,是否重绘等逻辑。是根据用户层所设置的各种数据所确定
  • CPU到GPU的渲染层,这一层逻辑是Laya根据框架逻辑层所设值的Sumit渲染函数依次向显卡提交渲染申请。其中每一次的调用WebGL接口为一次着色器调用请求。
//上面三层都存在于Stage.render函数
updateTimers();//用户逻辑层
//框架逻辑层
if (this.renderingEnabled) {
   
   
    for (var i: number = 0, n: number = this._scene3Ds.length; i < n; i++)//更新3D场景,必须提出来,否则在脚本中移除节点会导致BUG
        this._scene3Ds[i]._update();
    context.clear();
    super.render(context, x, y);
    Stat._StatRender.renderNotCanvas(context, x, y);
}
//渲染层
if (this.renderingEnabled) {
   
   
    Stage.clear(this._bgColor);
    context.flush();
    VectorGraphManager.instance && VectorGraphManager.getInstance().endDispose();
}

自定义Shader

在明确了Laya的框架之后,我们可以确定,我们的Shader完整流程也是需要从用户逻辑层——>框架逻辑层——>渲染层一步一步的透传的。

实现目标

我们可过下面的伪代码来感受下实现效果

//step0 创建图片对象
let shaderImage:Laya.Image = new Laya.Image(图片路径);
//step1 创建控制Image的Shader对象
let shader:Laya.Shader2X = new Laya.Shader2X(顶点着色器、片元着色器、其余参数)
//step2 连接shader与shaderImage
//关键步骤
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值