regl blend 颜色混合

原文链接: regl blend 颜色混合

上一篇: regl batch 批量绘制三角形

下一篇: regl depth 深度缓冲

https://en.wikipedia.org/wiki/Blend_modes

http://www.jiazhengblog.com/blog/2017/01/04/2989/

混合有很多种, 每种合成方式对应一种两个颜色的合成算法

up-47dc6f5728cdf3c1ebceccf76712b9aa2ec.png

import createRegl from "regl";
export default (canvas: HTMLCanvasElement) => {
  const regl = createRegl({ canvas });
  regl.clear({
    color: [0, 0, 0, 1],
    depth: 1,
  });
  const draw = regl({
    blend: {
      enable: true,
      func: {
        src: 1,
        dst: 1,
      },
      equation: "add",
    },
    // blend: {
    //   enable: true,
    //   func: {
    //     src: "src alpha",
    //     dst: "one minus src alpha",
    //   },
    // },
    // 只需要关掉mask好像就行了, 但是这种最好还是两个都干掉吧
    depth: { enable: true, mask: false },
    // depth: { enable: false, mask: false },
    frag: `
    precision mediump float;
    varying vec4 color;
    void main() {
      gl_FragColor = color;
    }`,

    vert: `
    precision mediump float;
    attribute vec2 position;
    attribute vec4 inColor;
     varying vec4 color;
    void main() {
      color=inColor;
      gl_Position = vec4(position, 0, 1);
    }`,

    attributes: {
      position: [
        [0, 1],
        [-1, -1],
        [1, -1],
        [0, -1],
        [-1, 1],
        [1, 1],
      ].map((i) => i.map((j) => j / 2)),
      inColor: [
        [1, 0, 0, 0.5],
        [1, 0, 0, 0.5],
        [1, 0, 0, 0.5],
        [0, 0, 1, 0.5],
        [0, 0, 1, 0.5],
        [0, 0, 1, 0.5],
      ],
    },
    elements: [
      [0, 1, 2],
      [3, 4, 5],
    ],
  });
  draw();
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值