So the basic idea here is using a low-resolution texture that is designed specifically to be upscaled (anything but the first 3) to a simpler smooth aesthetic. Pixel blob/triangle/hexagon etc in with a 32x-or-lower texture (which is all that is downloaded), crisp shape(s) out. Also probably things like lineart for faces (or other similarly composed pieces), generally less colors hopefully preventing ambiguous details.
Batch conversion / post-processing / basic filter (to preview) are all options, but a live shader in an editor would be more useful. Even better for multiple outputs to see results for different shaders and make designs with their quirks in mind to make specific looks (esp. if multiple shaders can be used), or even just an option to tinker with (say if other pixel-art programs are better).
For an editor, I'd want to use Krita (a G'MIC filter would be fine but the ones I tried weren't great**) or maybe a web editor. GIMP would be fine too.
For a medium I probably want to use Raylib, Godot 3.X (with this aesthetic at least), or maybe even Krita animations? Basic 2D/3D, tile maps (per-layer filtering?), bump maps or other PBR/shader inputs, texture warping, using sprites in 3D, animation etc all seem interesting.
SDF (Signed Distance Field/Function) textures are a similar endpoint (and I would consider using Inkscape for that).
For some backstory, I don't really want the pixel art look (especially because I'm not so good at it) nor do I have the skill for a painted look. I'd rather have resolution-independent* art, but upscaled could allow using raster art's tools/features for better support and easier tools/creation/aesthetic etc. particularly for learning/practice while still allowing for higher resolutions than tested for.
I could probably just go for untextured 3D with vertex colors, but I kinda don't want the extra complexity or needing to use Blender. Though both 2D polygons and 3D meshes could be used alongside upscaled textures.
*= Like THE EYE, but there are issues like it needing not-yet-released-PR which may not perform well if used to create an entire scene, plus AA support not being everywhere even for basic polygons, or language bindings being unavailable for some languages in 4.X (ones that work in 3.X).
**= Upscale [Scale2x] works somewhat (16x with x 8 scale factor to get a 128x texture), though the preview appears broken and you must manually resize your canvas before running it. I suspect this is because it is an older filter.
Meta note: No tags used because the relevant ones I could think of all relate to content, particularly pixel art which this doesn't really relate to aside from specific intention and maybe some techniques.
The Wikipedia article for hqx points out that an implementation exists as a filter in ffmepg.
You can run a command line conversion of e.g. a PNG -> PNG using hqx upscaling like:
ffmpeg -i input.png -filter_complex hqx=4 output.pngThe
=4is for 4x upscaling. The implementation in my version of ffmpeg supports 2x, 3x, and 4x upscaling.As a quick and dirty way to get semi-live preview, you can do the conversion with
makeand usewatch maketo try to rebuild the conversion periodically. (You can use the-nflag to increase the retry rate if the default is too long to wait.)makewill exit quickly if the file hasn't changed. Save the image in your editor and keep an image viewer that supports auto-reload on change open to see "live" preview of the output. (e.g.eogcan do it, although it won't preserve size of the image -- at least not in the copy I have, anyway; mine's a bit old though.)Sample Makefile:
Note the
-yoption to tell ffmpeg to overwrite the file; otherwise it will stop to ask you if you want to overwrite the file every time you save, and in case you're not familiar with Makefiles, you need a real tab (not spaces) on the line with the command to run.ffmpeg also appears to support xbr (with =n option as well) and super2xsai if you want to experiment with those too.
I'm not sure if this will actually do what you want artistically, but the existing implementations in ffmpeg makes it easy to experiment with.
save