Oh thanks for sharing this! I love asesprite, procreate, pico8 and had this idea for programmable brushes bonking around my head for years now. Recently took some time between projects to put it together.
MOSS is a drawing toy where each brush is a tiny script that knows about every pixel on the canvas. You define how it paints with noise, randomness, patterns, stroke speed, pressure, and every touch executes the code.
So you can have a brush that scatters pixels like a real spray can or one that stamps shapes that mutate as you drag. Or perspective lines that actually converge. Or a fill bucket with smart gap awareness (I called it "Fill of my Dreams" and added to the brush list).
Happy to share brush code in the comments or explore ideas together. There's a (?) in the bottom right toolbar with API docs, and a prompt copy at the bottom if you wanted to work with the API through an agent.
I love how fun this is. It has so much personality. Definitely can see the pico8 and aseprite inspiration.
I think what could be really interesting is some procedural generation brushes... Like a brush that generates a random city-scape as you draw it. That sounds so exciting..
I wrote a program that has programmable brushes about ten years ago, it's a bit different from moss in that it has a physics simulation underneath rather than a sort of shader, but I've always thought this kind of approach has a lot of potential.
It feels _amazing_ to draw a bird in a single stroke!
This was very interesting to read! My choice of drawing program now is Rebelle, which does have a "swarm" brush (they call them bristle brushes, designed to emulate real paintbrushes) and together with its physical simulation where paint applied on the canvas has a thickness instead of opacity, the results can look absolutely stunning. Have given me the itch to also experiment with simulation-based drawing programs.
This feels lovely! The fact that it reacts to the pressure on my Wacom tablet puts it above many desktop tools and streets ahead of most stuff on the web. Fantastic work.
Hi, I love the pixelated look and feel so much and hadn't seen runtime programmable brushes before.
Can you share some interesting brush codes that are not already there in the app?
Moss looks much more general and powerful, but Decker has a similar mechanism for custom brush behavior; here's an interactive tutorial with a variety of examples, for comparison: http://beyondloom.com/decker/brushes.html
Is there a way to share brushes in the app/a brush sharing gallery? For sharing, I can see the "weekly" section from the homepage, which looks to be a weekly art prompt and everyone's go at it, which is really fun! But for the more artistically challenged (myself), it'd probably want to share a brush on it's own haha
I'm slowly easing into wider sharing, but you're really keying in on a dynamic I was hoping to grow within the community, of brush artists and pixel artists collaborating or sharing toys. For right now I'm storing my own brushes as little .txt files.
One feature that is quietly implemented, though - any png you save from MOSS also encodes its brushes. So if you share that png with someone else (or online somewhere!) it can be imported into MOSS with those same brushes and palette. I stole this concept from PICO8, which cleverly encodes all of the game data into a png file.
I noticed with the Aquarelle brush on iOS, if you swipe fast, you can clearly see the polling rate of the touch events on the canvas. The line looks smooth so I guess you already have an interpolation algorithm going, but this brush darkens as the dwell time is longer so I’m not sure if it’s doubling the points that are reported or what but it looks very bandy/patchy.
Thanks for catching that, went and updated some parts of the engine for touch handling there. It's a bit better, although had to find a bit of compromise. Appreciate it!
This is so much fun, and some an awesome idea. Playing around with it gives me that same feeling as playing with MSPaint as a kid, exploring different brushes and seeing how they interact.
I wonder if someone more creative than me would be able to push this to do things it was not designed to do. I recently found a video where someone exploited some properties of certain transcript file formats to be able to make a primitive simple drawing app with Youtube's video player's closed captions.[0]
Since a brush's code can see the state of the canvas and draw on it, perhaps there can be a brush that does the opposite here, and instead renders a simple "video" when you hold down the mouse? Or even a simple game, like Tic-Tac-Toe.
I understand that obviously isn't the purpose of the brush programs, but I think it is an interesting challenge, just for fun.
[0] The video I am thinking of is by a channel named Firama, but they did not explain how they accomplished it. Another channel, SWEet, made their own attempt, which wasn't as full-featured as the original, but they did document how they did it.
I have tried just now and it didn't work at all. I can select brushes and colors, but nothing gets applied on that white canvas! Using chrome on Macos.
heyitsgarrett | a day ago
MOSS is a drawing toy where each brush is a tiny script that knows about every pixel on the canvas. You define how it paints with noise, randomness, patterns, stroke speed, pressure, and every touch executes the code.
So you can have a brush that scatters pixels like a real spray can or one that stamps shapes that mutate as you drag. Or perspective lines that actually converge. Or a fill bucket with smart gap awareness (I called it "Fill of my Dreams" and added to the brush list).
Happy to share brush code in the comments or explore ideas together. There's a (?) in the bottom right toolbar with API docs, and a prompt copy at the bottom if you wanted to work with the API through an agent.
Lambdanaut | a day ago
I think what could be really interesting is some procedural generation brushes... Like a brush that generates a random city-scape as you draw it. That sounds so exciting..
Maybe using wave function collapse:
> https://nathanmcoleman.com/projects/wavecollapse/
azeirah | a day ago
It feels _amazing_ to draw a bird in a single stroke!
Maybe this can give you some inspiration!
https://laura.fm/generative-art/wind/wind.html
vunderba | a day ago
nextaccountic | 20 hours ago
frisia | 9 hours ago
squokko | a day ago
tomgp | 13 hours ago
[OP] smusamashah | 9 hours ago
mpalmer | a day ago
RodgerTheGreat | a day ago
od0 | a day ago
Klonoar | a day ago
Could you add support for holding `Shift` to keep your line straight while painting, ala MSPaint?
heyitsgarrett | a day ago
olivia-banks | a day ago
adammarples | a day ago
jammaloo | a day ago
heyitsgarrett | a day ago
boothby | a day ago
graypegg | a day ago
Is there a way to share brushes in the app/a brush sharing gallery? For sharing, I can see the "weekly" section from the homepage, which looks to be a weekly art prompt and everyone's go at it, which is really fun! But for the more artistically challenged (myself), it'd probably want to share a brush on it's own haha
heyitsgarrett | 21 hours ago
One feature that is quietly implemented, though - any png you save from MOSS also encodes its brushes. So if you share that png with someone else (or online somewhere!) it can be imported into MOSS with those same brushes and palette. I stole this concept from PICO8, which cleverly encodes all of the game data into a png file.
juliushuijnk | a day ago
https://medium.com/@JuliusHuijnk/experiment-in-evolving-the-...
lukevp | 23 hours ago
I noticed with the Aquarelle brush on iOS, if you swipe fast, you can clearly see the polling rate of the touch events on the canvas. The line looks smooth so I guess you already have an interpolation algorithm going, but this brush darkens as the dwell time is longer so I’m not sure if it’s doubling the points that are reported or what but it looks very bandy/patchy.
heyitsgarrett | 21 hours ago
sen | 23 hours ago
b1temy | 19 hours ago
I wonder if someone more creative than me would be able to push this to do things it was not designed to do. I recently found a video where someone exploited some properties of certain transcript file formats to be able to make a primitive simple drawing app with Youtube's video player's closed captions.[0]
Since a brush's code can see the state of the canvas and draw on it, perhaps there can be a brush that does the opposite here, and instead renders a simple "video" when you hold down the mouse? Or even a simple game, like Tic-Tac-Toe.
I understand that obviously isn't the purpose of the brush programs, but I think it is an interesting challenge, just for fun.
[0] The video I am thinking of is by a channel named Firama, but they did not explain how they accomplished it. Another channel, SWEet, made their own attempt, which wasn't as full-featured as the original, but they did document how they did it.
qubidt | 7 hours ago
cc-d | 18 hours ago
really love the site design, great job man
jpereira | 18 hours ago
- timelapses of things being drawn
- a list of brushes used in a drawing
To get even wilder, what if you could record brush strokes and then retroactively change the brush code and replay them?
flexagoon | 12 hours ago
Latitude7973 | 10 hours ago
dnpls | 9 hours ago
BloodOverdrive | 8 hours ago