蓝紫™
DDZEB 完全自主知识产权图形图像开发平台
开放源码 免费使用 在线运行
像素着色器(Pixel Shader),纯 JS 渲染。
文件语言大小版本开发者最后更新
lands/pixels productionJavaScript3.4KBv1.0.0YB2024-10-16查看
lands/pixels source codeJavaScript9.6KBv1.0.0YB2024-10-16查看

Pixel Shader,一种比较简单的画布,我们在一个像素阵列上进行计算和操作。这种计算模型很简单,同时也很方便。我们经常使用 pixels 进行图像分析和处理,比如 Histogram Equalization。

pixels 里的颜色均是 rgb255,颜色可以使用 json 格式,比如 {r:100, g:200, b:120, a:255},也可以使用数组,比如:[100, 200, 120]。缺省情况下,alpha 默认为 255,其它缺少的分量默认为 0。如果是灰度颜色,可以只使用一个数值,比如 39,会被当作 {r:39, g:39, b:39} 对待。

粒子系统
pixels 引擎示例:粒子系统
一、初始化
const canvas = Lan.pixels(1800, 1200, {alpha:false});

或者在第三方集成的时候:

const {pixels} = await import("https://ddzeb.com/lands/pixels");
await pixels(canvas, {alpha:false});

初始化的时候可以提供一个可选参数 options 进行额外配置:

在初始化完成后,canvas 就被绑定了 pixels 渲染相关的接口,接口调用都将通过 canvas 本身进行。

二、接口方法

以下是 pixels 提供的 API 集合:

• image()

返回图像数据(ImageData)。

• copy([dest])

将当前图像数据(ImageData)拷贝到 dest 并返回新的图像数据对象,dest 参数可选。使用该方法可以实现 双缓冲架构

• get(x, y)

获得某个点的像素值(颜色):{r, g, b, a},超出图片范围时返回 undefined

• set(color[, x, y])

设置颜色,不刷新画布。指定 x 以及 y 即对某个特定点进行操作。

• add(color[, x, y])

执行颜色加操作,不刷新画布。指定 x 以及 y 即对某个特定点进行操作。

• mix(color[, x, y])

alpha 分量混合颜色,不刷新画布。指定 x 以及 y 即对某个特定点进行操作。当 color.alpha = 255 的时候相当于 set 操作,当 color.alpha = 0 时不会对当前图像数据产生任何影响。

• draw(shader, options = {})

渲染整个画布,shader = (x, y) => color,逐像素应用 shader 进行渲染。options 包括:

• renderer(shader, options = {})

返回渲染器,按照指定方向逐列或者逐行渐进渲染。通常我们会将返回的渲染器传入 Lan.loop 进行循环渲染。其中,options 可配置项如下:

• refresh([data])

如果 data 有效,设置图像数据,然后刷新显示。data 可以是 Image 或者 ImageData 类型,且宽高与画布宽高一致。