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.

  • insomniac_lemon@kbin.socialOP
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    10 months ago

    e.g. eog can do it, although it won’t preserve size of the image

    Yeah, that is the case. But it wouldn’t be an issue if it could properly zoom-to-fit. I also do not like the CSD (for my current setup with a very minimal custom XFWM window theme at least).

    Geeqie has poor zoom too but not zoom resetting, but it updates the image too slowly for my liking (and there doesn’t appear to be a setting, maybe it’s a performance thing) with watch set to 0.1.

    Feh has even worse scaling (the window size is set to the image size), but change a few (non-persistent) settings and it works and updates quickly. Though I don’t want this for my image viewer. I guess I could use it just for this, though.


    On a side note, a similar-sort of idea I’ve had to this is using a game controller (I have a Steam controller) for its analog controls to use alongside a mouse (or cheap drawing tablet/monitor) to get more drawing functionality*.

    It seems like something possible with evdev or maybe xinput particularly with a remapping tool probably, but I tried it with SC-controller (a while ago) and it didn’t seem to work.

    *= For instance pressure (or flow) on trigger, rotation on trackpad, angle on gyro, and then extra buttons on that side can be used for other shortcuts.

    • e0qdk@kbin.social
      link
      fedilink
      arrow-up
      1
      ·
      10 months ago

      I was just thinking about the image resizing thing again when I saw your message notice pop up. Another option for preview is a web browser. A minimal HTML page with some JS to refresh the image would avoid the image resize on reload problem, and gives you some other interesting capabilities. Python ships with a kind of meh (slow and quirky), but probably sufficient HTTP server (python3 -m http.server) if you’d prefer to load the preview on a different computer on your LAN entirely (e.g. cellphone / tablet / … ) for example.

      A simple HTML file for this would be something like:

      <!DOCTYPE html>
      <html>
        <head>
          <style>
            html, body {
              background-color: #000000;
            }
          </style>
          <script>
            function reload()
            {
                let img = document.getElementById("preview");
                let url = new URL(img.src);
                url.searchParams.set("t", Date.now());    // cache breaker; force reload
                img.src = url.href;
            }
      
            function start()
            {
                setInterval(reload, 500);
            }
          </script>
        </head>
        <body onload="start()">
          <img id="preview" src="output.png">
        </body>
      </html>
      
      

      Regarding input from a gamepad – I’ve had some similar ideas before but haven’t really had much success using a gamepad artistically outside some limited things where I either wrote the entire program or was able to feed data into programs that accepted input over the network (e.g. via HTTP and which I wrote a custom adapter for). It’s been a long time since I’ve tried anything in that space though, and it might be possible to do something interesting by trying to make the system see the combination of a gamepad stick as relative mouse motion and trigger as pen pressure. I’m not quite sure how to go about doing that, but I’ll let you know if I find a way to do it.