文件 | 语言 | 大小 | 版本 | 开发者 | 最后更新 | |
lands/pixels production | JavaScript | 3.4KB | v1.0.0 | YB | 2024-10-16 | 查看 |
lands/pixels source code | JavaScript | 9.6KB | v1.0.0 | YB | 2024-10-16 | 查看 |
const canvas = await Lan.pixels(900, 600, {options...}); // canvas width, height and rendering options
const canvas = await Lan.pixels(900, {options...}); // auto set canvas height with aspect ratio 3/2
const canvas = await Lan.pixels({options...}); // canvas dimensions default to 900 x 600
因为 pixels 是蓝紫的核心渲染引擎之一,可以直接通过全局变量 Lan 进行访问,请参考向导程序:三维点云渲染。
import {pixels} from "https://ddzeb.com/lands/pixels";
await pixels(canvas, {alpha:false});
canvas.render();
const {pixels} = await import("https://ddzeb.com/lands/pixels");
await pixels(canvas, {alpha:false});
canvas.render();
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} 对待。
const canvas = Lan.pixels(1800, 1200, {alpha:false});
或者在第三方集成的时候:
const {pixels} = await import("https://ddzeb.com/lands/pixels");
await pixels(canvas, {alpha:false});
初始化的时候可以提供一个可选参数 options 进行额外配置:
bool
,缺省为 false,表示画布背景不透明。在初始化完成后,canvas 就被绑定了 pixels 渲染相关的接口,接口调用都将通过 canvas 本身进行。
以下是 pixels 提供的 API 集合:
返回图像数据(ImageData)。
将当前图像数据(ImageData)拷贝到 dest
并返回新的图像数据对象,dest
参数可选。使用该方法可以实现 双缓冲架构。
获得某个点的像素值(颜色):{r, g, b, a}
,超出图片范围时返回 undefined
。
设置颜色,不刷新画布。指定 x
以及 y
即对某个特定点进行操作。
执行颜色加操作,不刷新画布。指定 x
以及 y
即对某个特定点进行操作。
按 alpha
分量混合颜色,不刷新画布。指定 x
以及 y
即对某个特定点进行操作。当 color.alpha = 255
的时候相当于 set
操作,当 color.alpha = 0
时不会对当前图像数据产生任何影响。
渲染整个画布,shader = (x, y) => color
,逐像素应用 shader
进行渲染。options 包括:
bool
,是否刷新画布,缺省为 false;string
,坐标系统,缺省为画布像素坐标,可设置:UV11、UVx2、UVy2 等值。返回渲染器,按照指定方向逐列或者逐行渐进渲染。通常我们会将返回的渲染器传入 Lan.loop 进行循环渲染。其中,options
可配置项如下:
string
,渲染方向,可选值有:x+
、y+
、x-
、y-
;int
,一次性渲染时间(毫秒),缺省 16
;int
,画布刷新时间(毫秒),缺省 1000
毫秒刷新一次;boolean
,结束一轮渲染后是否倒回去继续。string
,坐标系统,缺省为画布像素坐标,可设置:UV11、UVx2、UVy2 等值。如果 data
有效,设置图像数据,然后刷新显示。data
可以是 Image 或者 ImageData 类型,且宽高与画布宽高一致。