BSZ Pixelbuster Help
The Pixelbuster language reference, as a node
BSZ Pixelbuster Help is a documentation node: it's the full reference manual for the Pixelbuster programming language, displayed inside ComfyUI so you don't have to tab out to read it. It has no outputs and does nothing - it's the cheat sheet you keep on the canvas while you learn to write filters for the Pixelbuster and Latentbuster nodes.
Why it exists
The Pixelbuster language is small but has real syntax to remember: target operation source lines, color space switches, variables, comparisons, and jumps. The author could have left this on the README and called it a day - instead they wired the actual help text, pulled from the native library at load time, into a node whose whole job is showing it to you. When you're elbow-deep in writing a per-pixel filter, that's genuinely more useful than a browser tab.
What you get
A single help input (optional) whose default value is the entire language reference:
- the line grammar -
{target} {operation} {source},{space},if … {comparison} … {line},:{label},jmp/goto,swap. - every target and source - channel letters (
r g b a,c1…c4), variables (v1…v9,e1…e9), constants,pi,rand, and the geometry sources (col,row,width,height,xnorm,ynorm). - every operation - arithmetic,
pow, and the long list of functions (abs, sin, cos, sqrt, log, floor, …), plusinvert("a invert b == a = b - a"). - comparisons, jump rules (99-jump limit per pixel), and the notes -
#comments,\line continuations,;as a line break, and howe1…e9become external slider values.
How to use it
Add it to your graph, click into the help field, and read - or copy a snippet straight into the code field of a BSZ Pixelbuster or BSZ Latentbuster node. That's the intended flow: the help node is a reference, not a processor.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Beinsezii/bsz-cui-extras
restart, or install via ComfyUI Manager. Pure Python; the help text is pulled from the same prebuilt native library the Pixelbuster nodes use, so if those nodes load, this one's content is already there.
Notes
The one thing to remember: this node has no outputs - it's a pure reference. People drop it into a workflow expecting it to pass anything along and it does nothing, by design. And if you're the kind of person who learns by reading source, the same reference lives at the top of the pixelbuster repo's src/lib.rs. Both sources agree, because they're the same string.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| helpopt | STRING | Valid lines: * {target} {operation} {source} * {space} * if {source} {comparison} {source} {line} * :{label} * jmp {label} or goto {label} * swap {target} {target} Quick Example: r ** 2 g / b lch h sqrt h Target: Where to write the operation result to. * Channel (channel letters like 'r' 'g' 'b' 'a', or c1 ... c4), * Variable (v1, v2...v9) or (e1, e2...9) Source: Where to source operation data from * any valid Target * any constant numeric value, eg '3.14' * 'pi' * 'e' * 'rand' - random val between 0.0 -> 1.0 * 'col' - pixel X * 'row' - pixel Y * 'width' - width of image * 'height' - height of image * 'xnorm' - pixel X on scale of 0.0 -> 1.0 * 'ynorm' - pixel Y on scale of 0.0 -> 1.0 Operation: Operations that take 2 values will source from target and source in order Eg: 'r log 2' translates to 'r = r.log(2)' * '+=' or '+' or 'add' => Add * '-=' or '-' or 'sub' => Sub * '*=' or '*' or 'mul' => Mul * '/=' or '/' or 'div' => Div * '%=' or '%' or 'mod' => Mod * '**' or '^' or 'pow' => Pow * '=' or 'set' => Set * abs acos acosh asin asinh atan atan2 atanh cbrt ceil copysign cos cosh * degrees diveuclid exp exp2 expm1 floor fract hypot ln ln1p log log10 log2 * max min radians recip remeuclid round signum sin sinh sqrt tan tanh trunc * invert - a invert b == a = b - a Comparison: * '==' or 'eq' * '!=' or '!' or 'neq' * '>' or 'gt' * '<' or 'lt' * '>=' or 'gteq' * '<=' or 'lteq' Notes: Lines beginning with '#' are ignored Lines ending with '\' are continued to next ';' counts as a linebreak anywhere in code There's a hard limit of 99 jumps per pixel as it can't detect loops v1 through v9 start at 0.0 every pixel e1 through e9 are 'external variables' that can be assigned starting values Useful for creating things like UI control sliders | — |
Outputs (0)
No outputs