
Show HN: Write generative fine art in Rust - roxven
https://paytonturnage.gitbook.io/valora/
======
roxven
This is a library and CLI for Rust to write generative fine art for print.

I wrote this because writing generative art for print has unique problems that
I found myself solving over and over again in standard graphics packages.

For example, a general purpose graphics library should probably compile
shaders ahead of time, since compiling them at runtime is slow. When writing
art, I want to see them update as I change them so I can brainstorm.

Source code is here:
[https://github.com/turnage/valora](https://github.com/turnage/valora)

Features

* Repeatable works at arbitrary resolutions without changing the work

* Type-checked color space management with [https://docs.rs/palette](https://docs.rs/palette)

* Managed rngs for repeatable works and controlled rng trees

* Support for using a different, custom GLSL shader for each vector path

* GLSL live coding with "#include" support

* An ergonomic derive-based GLSL uniforms interface

* Animation support for brainstorming and cumulative pieces

Here is a shader written with this:
[https://www.instagram.com/p/Bh4iIbwgjom/](https://www.instagram.com/p/Bh4iIbwgjom/)

Here is a vector work written with this:
[https://www.instagram.com/p/B6wN_sSHtYp/](https://www.instagram.com/p/B6wN_sSHtYp/)

~~~
Ciantic
What do you mean with GLSL live coding? Because you need to recompile after
all.

I've been wondering where are the non-destructive painting programs, which
does not rasterize organic brushes or strokes.

Your attempt could work as a base to build one if it can work realtime
sufficiently fast.

~~~
roxven
If you have a valora work running and change the GLSL on disk, it will
recompile and update in the next frame without your having to relaunch or any
inconvenience like that.

------
alexmorley
I've been using nannou [1] for these types of projects in rust and really
loved it. Could they be interoperable?

1\. [https://github.com/nannou-org/nannou](https://github.com/nannou-
org/nannou)

------
bennyg
This is extremely interesting. I just finished a weekend project exploring the
very very basics of generating art/music using JS and canvas (shameless plug
[https://webauthnart.com](https://webauthnart.com)). The screenshot on the
Valora README is fantastic and makes me want to dive even deeper into this
subject.

I'm probably more intrigued by a lot of the writing on your site and links to
more generative art resources, as Rust isn't something I've spent really any
time looking at.

------
zeotroph
The good old xscreensaver has quite a few which I really want(ed) as high
quality prints, e.g. "Substrate[1]". I never got around to making it render
into a file, and the screens were too far from 4K back then to make screen
grabbing useful. Plus I was too afraid to bug jwz himself :).

1: Crystalline lines grow on a computational substrate. A simple perpendicular
growth rule creates intricate city-like structures.

[https://duckduckgo.com/?q=xscreensaver+substrate&iax=images&...](https://duckduckgo.com/?q=xscreensaver+substrate&iax=images&ia=images)

~~~
mkj
You could ask the original artist/author? "In July 2005, Jared co-founded
Etsy, an online marketplace to buy and sell handmade goods"

[http://complexification.net/gallery/machines/substrate/](http://complexification.net/gallery/machines/substrate/)

[http://complexification.net/programmer.html](http://complexification.net/programmer.html)

~~~
zeotroph
Interesting, thanks for finding that time capsule. With java applets! Maybe
Jared will find the time to snail-mail me a hand quilted version of Substrate
;)

------
chrisallick
[https://nannou.cc/](https://nannou.cc/)

------
Mizza
This looks quite clean and intuitive, but all projects like this need an
extensive to showcase capabilities and get people enthused!

------
gameswithgo
You could use this to make some interesting genetic algorithm art projects
ala:
[https://github.com/jackmott/evolution](https://github.com/jackmott/evolution)
(which is more low level and drawing pixels directly with various random
operations and algorithms)

------
MattRix
Would be nice if the page included more examples of what this is capable of.

------
hoistbypetard
Working through the tutorial in the linked post, this initially seems like
"nodebox, but less powerful and in rust".

I assume that's not the case at all. Are you familiar with nodebox, and can
you explain why someone who uses it might want to switch to this?

------
CUViper
There was a presentation of generative art at RustConf 2019:
[https://youtube.com/watch?v=Ho3xr4b60Zg](https://youtube.com/watch?v=Ho3xr4b60Zg)

------
sam46
In the same vein:
[https://github.com/sam46/FuncMorph](https://github.com/sam46/FuncMorph)

------
kingkawn
In this context what is “fine art”

------
abductee_hg
...or just join the demoscene :)

------
david_m
I may get downvoted for this, but why are there so many posts ending with "in
Rust"? Surely the content should be interesting enough to stand on it's own,
no matter the language

~~~
101404
Then again, why shouldn't it be ending with "in Rust" (or "in Nim" or "in Go",
etc)?

After all, HN has a focus on technology and programming. So it seems somewhat
natural that readers here will be interested in the technology and programming
language of a project.

