Skip to content

Commit b18a8c5

Browse files
authored
Merge pull request #44 from PixiEditor/august-status
August status blog post
2 parents 8127995 + 8d546ff commit b18a8c5

13 files changed

Lines changed: 156 additions & 7 deletions

File tree

440 KB
Binary file not shown.
1.45 MB
Binary file not shown.
1.19 MB
Binary file not shown.

shell.nix

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
with import <nixpkgs> {};
2+
3+
stdenv.mkDerivation {
4+
name = "yarn";
5+
buildInputs = [
6+
yarn
7+
];
8+
}
138 KB
Loading
95.7 KB
Loading
47.7 KB
Loading
177 KB
Loading
55.7 KB
Loading

src/content/blog/august-status.mdx

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
---
2+
title: PixiEditor 2.0 August 2025 Status
3+
authors: [ flabbet ]
4+
tags: [ status, pixieditor2.0 ]
5+
date: 2025-08-23
6+
description: "Roadmap update, 2.0 release summary and app status."
7+
cover: "./assets/august-status/cover.png"
8+
---
9+
10+
import { Image } from 'astro:assets';
11+
import ditherClose from 'assets/august-status/dither-close.png';
12+
import ditherBrush from 'assets/august-status/dither-brush.png';
13+
import mushyBrush from 'assets/august-status/mushy-brush.png';
14+
import vecGraph from 'assets/august-status/vec-brush.png';
15+
16+
We launched PixiEditor 2.0 almost a month ago. After receiving a ton of constructive feedback, we're making exciting changes to the roadmap.
17+
18+
## Node-based Brush Engine
19+
20+
I must admit, "Painting" toolset without a Brush Engine feels... a little incomplete. That's why we're going to fix it as soon as possible. Instead of 2026, we plan to release a **Node-based Brush Engine**
21+
by the end of 2025.
22+
23+
We wouldn't be ourselves if we released just a brush engine. I can say with confidence, it's going to be one of the most advanced brush engines on the market.
24+
We are taking inspiration from this approach https://www.youtube.com/watch?v=O03oK2I4FZI, and we'll utilize our [Node Graph](/docs/usage/node-graph/getting-started-with-node-graph/) for that.
25+
26+
But talk is cheap. I wouldn't make this blog post with empty promises. Here's our work-in-progress Brush Engine in action.
27+
28+
### Vector Shape Brush
29+
30+
Let's start with simple stuff, a basic vector brush.
31+
32+
<video src='/videos/august-status/brush.webm' loop autoplay mute controls playsinline/>
33+
34+
and the graph:
35+
36+
<Image src={vecGraph} alt="Close look at the brush effect" />
37+
38+
Nothing fancy, just a vector layer plugged into a brush shape with rotation applied.
39+
40+
### Raster, pressure-based brush.
41+
42+
Obligatory texture brush
43+
44+
<video src='/videos/august-status/mushy.webm' loop autoplay mute controls playsinline/>
45+
46+
Graph:
47+
48+
<Image src={mushyBrush} alt="Brush graph" />
49+
50+
Pressure-based, scaled image as a brush.
51+
52+
### Procedural dithering + palette indexing brush
53+
54+
Time to step up the game.
55+
56+
Here is an example of a brush that automatically dithers and applies color-indexing to the image on which it is drawn.
57+
58+
<video src='/videos/august-status/dither-brush.webm' loop autoplay mute controls playsinline/>
59+
60+
Let's take a closer look at the effect of this brush:
61+
62+
<Image src={ditherClose} alt="Close look at the brush effect" />
63+
64+
And now, a node graph of this brush:
65+
66+
<Image src={ditherBrush} alt="Brush graph" />
67+
68+
As you can see, we can plug anything into the Brush Output, the same way as it works with other Node Graph-related stuff. I used a Shader for this one [based on this blog post](https://tympanus.net/codrops/2025/06/04/building-a-real-time-dithering-shader/).
69+
70+
Naturally, anything that `Brush Output` exposes can be procedurally generated, such as the shape or fill of the Brush.
71+
72+
### The goal
73+
74+
The whole system is still very early in development (like, actually 10 hours of development time lol), but the prototype is already extremely powerful. Our goals for the Brush Engine are:
75+
76+
- Full stylus/drawing tablet support (pressure, twist, rotation, etc)
77+
- Ability to create basic brushes (drawing textures)
78+
- Ability to define vector shapes of the brushes
79+
- Full support for other PixiEditor Nodes - custom shaders, filters, matrices, etc.
80+
- Full readback of layers/textures (brushes should be able to sample your layers and react according to them)
81+
- Entity Brushes - Brushes that can evaluate over time, like drying ink, falling sand, fireworks?
82+
- Animated Brushes
83+
84+
## What about Extensions and Extension Store?
85+
86+
We unfortunately had to move this to 2026. It's not realistic to squeeze this alongside Brush Engine. We might get the Extensions API in a minimal state working, but I really want to take time to develop it
87+
properly, with all security and feature considerations in mind. Realistically, Extension Store requires full-time employees who can moderate and support the whole extension marketplace. I'm not even mentioning infrastructure maintenance.
88+
89+
## Vector Toolset improvements
90+
91+
For version 2.1, we also want to polish and improve the vector toolset. Creating vectors from scratch requires a lot of patience at the moment (sorry about that!). I want to acknowledge that we are working on this!
92+
93+
## Performance
94+
95+
I don't think the day when I can say "It can't be more optimized" will ever come, so it's more of a formality to say that I'm working on optimizations for various setups.
96+
97+
App like PixiEditor is especially tricky to optimize, as it allows for so many custom scenarios with Node Graph. However, here are a few cases that I managed to improve so far:
98+
99+
- Animation rendering (an issue where the app was so laggy that you couldn't stop the animation)
100+
- Better preview rendering. At the moment PixiEditor has to execute the Node Graph multiple times if anything changes, one time for each viewport and one time for document preview. Additionally, I decreased
101+
the number of times that non-essential previews are rerendered (such as layers, cels, and this tiny 16x16 preview in the document tab)
102+
- For the heaviest graphs, I added an option to fully disable preview rendering. The difference can be huge.
103+
104+
The ideal system would only execute the graph once to render all previews, although it's not a trivial thing to do, hopefully one day!
105+
106+
## Hardware issues
107+
108+
There were quite a few reports of PixiEditor not working on some hardware. Since the release, I've added an OpenGL render api for compatibility, and it has helped in many cases.
109+
I must admit, these kind of issues are the hardest to fix. Replicating the issue is sometimes close to impossible without actual hardware that experiences the issue.
110+
111+
The best way to actually find some clues about what could be causing it, is to report hardware specifications along with additional information such as:
112+
113+
- Render Api used in PixiEditor (Vulkan/OpenGL)
114+
- GPU drivers version
115+
- Error message (Shown in CLI on Linux or Event Viewer on Windows)
116+
- For Linux, Desktop Environment.
117+
118+
This is the only way we can spot patterns and narrow down the issue cause (CPU, GPU Drivers, etc.)
119+
120+
I would like to thank everyone who reports all kinds of issues and provides details. You're the true heroes here.
121+
122+
## In summary
123+
124+
Brush engine is coming, vector toolset is about to get better, so will performance.
125+
126+
Of course, version 2.1 will be much more than that. We've already added new nodes, options, and fixed tons of bugs.
127+
128+
If you would like to support our work, consider purchasing [Founder's Pack](https://pixieditor.net/download), contributing to the source code, reporting issues or/and testing development versions.
129+
130+
Thank you to everyone who has already done so. We couldn't continue this project without all of you.
131+
132+
Also, thanks to Sebasthem for letting us use skull artwork for the cover of this blog post! (btw it won Art of the Week 11.08 - 17.08) <br/>
133+
Sebasthem's [Instagram](https://www.instagram.com/p/DNm5RyyODL0/?igsh=MWg0NjM4Z21kdGNoMA==)

0 commit comments

Comments
 (0)