“No Man’s Sky” Displayed on the Amiga 1000
bytecellar.com
bytecellar.com
Anyway, the HAM converter used sounded interesting (ham_convert [1]), it does various optimization/search passes to try to generate good HAM.
There's similar code in gimpilbm, the ILBM plugin for the GIMP [2], but not quite as advanced. Perhaps something worth looking at and adding. Disclosure: I happen to be the maintainer of gimpilbm.
1: http://mrsebe.bplaced.net/blog/wordpress/?page_id=374 2: https://github.com/unwind/gimpilbm
I'm being nostalgic - and super preferential to the things that I enjoy - but nascent and emerging technology for me seems to have always generated the most exciting art. The demoscene from the early days of the PC, the ANSI/artzine scene from the early days of BBSes and telecommunication, the personal home pages from the early days of the web.
I'm going back and forth about whether or not I see the same art in today's emerging tech. I think I see where the tech is going and I'm excited by it, but I don't think I see the art as much. Happy to be convinced otherwise!
Promoted: there are now more apps out there than ever before, and more app developers, and more app artists. And they're doing interesting and cool things - most of the top 10 games of the last few years have been artistically appealing pieces, which draw you in with a screenshot and keep you engaged with mechanics.
Hindered: I really, really don't want to see a certain color palette being used to burn itself into my retina and shock me into clicking the icon, among hundreds of others, that stands out the most. I can't see another candy-coating, or amber/cyan highlight, again. But, yet .. still they come. Endless streams of cutesy dreck.
That said, I still think the most interesting game/developer art is coming from the indie gaming/open-source world. There's something about, for example, the benign rag doll look and feel of a game like "Human, Fall Flat" that draws me and the kids back into it. It feels like the good ol' days of gaming, and its something I'm sure has an Amiga heritage, somehow. I don't know if there were really opportunities made for the average mobile App Store to entertain such titles ..
https://www.youtube.com/watch?v=iGpU3DicbLQ
I was a bit involved in the Norwegian Amiga scene then back in Norway. Nothing major, but very formative - and those were good times.
"The Mac team had a complicated set of motivations, but the most unique ingredient was a strong dose of artistic values. First and foremost, Steve Jobs thought of himself as an artist, and he encouraged the design team to think of ourselves that way, too. The goal was never to beat the competition, or to make a lot of money; it was to do the greatest thing possible, or even a little greater. Steve often reinforced the artistic theme; for example, he took the entire team on a field trip in the spring of 1982 to the Louis Comfort Tiffany museum, because Tiffany was an artist who learned how to mass produce his work."
Source: https://www.folklore.org/StoryView.py?project=Macintosh&stor...
I think of the things that makes this stuff work is that they have constraints and hold themselves to be creative within those constraints. Contrast that to the processing power an average developer has today and it seems nearly unbounded. That's one of the things I am nostalgic about games and demos from yesteryear.
If they actually ran the no man sky engine on the amiga, even if it was 1 frame per hour, /that/ would actually be impressive.
"No Man's Sky" viewed through the lens of old technology.
Now go enjoy the beauty.
This 'lens of old technology' as you call it made the dreams of many come true, without 4k or anything. The beauty is in your mind, not in the amount of pixels that reach your corneas.
https://en.wikipedia.org/wiki/VistaPro
I spent ages playing with this piece of software. Trivial by todays standards perhaps, but a window into what was possible.
I converted the images with imagemagick and it really achieves a retro SF look, e.g. https://bhaak.net/nms/3_output.png, https://bhaak.net/nms/9_output.png
Although I think this images might be a bit better than how they would be shown on an original Amiga. I don't see any of the typical HAM6 artefacts one would expect.
Ie. it just displays a slideshow of screenshots on the Amiga 1000, which might as well have been vacation photos.
Ars Technica's History of the Amiga - https://arstechnica.com/gadgets/2007/07/a-history-of-the-ami...
"The Future Was Here" - http://amiga.filfre.net
That's what the Amiga was like in the 80's.
On the fat iMac I use, doing some video conversions in the background makes it impossible to play TF2 at the same time.
https://en.wikipedia.org/wiki/Defender_of_the_Crown
Also, I saw this article pop up yesterday that takes a look at "The Amiga Concsiousness." It may help, here.
Of course, these features became increasingly irrelevant as CPUs got cheaper and faster and could perform the graphics duties of the Aliga adequately in software, and the it didn't keep up. Particularly devastating IMO is that the Amiga uses a bit-plane model for graphics. Essentially, this means that graphics screen is composed of several single-bit per pixel planes that are interleaved to index a palette. This is great for memory consumptions because if you don't need 4 bit graphics for a particular screen, you can use two or three planes. It's awful when it comes to render raycasting columns because it makes each pixel in a comumn based renderer take several writes and reads. So a popular opinion is that Doom killed the Amiga. IMO it was just the final nail in the coffin.
I got myself an Amiga 1200 with an accelerator rather late, trading it for a Pentium PC when those went out of fashion, just out of interest. It's a great machine and I still sometimes use it for games, basic internet duties like IRC and... Doom!
This is similar with HAM8 but in order to be able to use more of the 24-bit color space the instructions are 8-bit wide with six bits of data, and you can only modify the six most significant bits of a color channel and directly use a 64-color palette instead.
Then there's the problem of selecting a useful base palette, if you want consistently decent results regardless of the input. That's maybe the kind of optimization problem that OpenCL can be applied to.
So I don't mean to say unsuitable as in impossible, just in the sense that it's exactly the kind of problem that the shader model wasn't designed to solve.
I'm not very interested in the worst case, I think a HAM image with width * height modify ops is very unlikely. I might even be surprised if such a HAM image has even ever existed, outside of perhaps a contrived programmer's example.
The average case for a direct HAM implementation would probably be more like hundreds of frames, or a couple of seconds, not tens of thousands.
If a modified HAM is on the table, the worst and average cases could be improved considerably. I modified Floyd-Steinberg (which is worst case) so that it runs in more like 10-20 frames, by making it radially symmetric and limiting the propagation distance, which results in negligible differences but vastly improved run times.
The palette optimization is also possible in a fragment shader, not quite as easily as OpenCL, but possible.
If the question were about transcoding a video stream in real time, that will be harder to do real time. If the optimized palette is fixed, it will be easier. Either way, I wouldn't rule it out. But I would agree it's "hacking" in the sense of abusing things they weren't designed for.
Sure, but maybe not as far off in some real world cases. Say, black-but-not-perfectly black letter box bars where the nuances could result in long sequences of small alterations to the base black color. This becomes less likely with an optimized palette, and of course you could set a hard limit to length of modify sequences in conversion, though that would have to compromise the quality of conversion.
> The average case for a direct HAM implementation would probably be more like hundreds of frames, or a couple of seconds, not tens of thousands.
Then the problem, with respect to the original question, is the definition of real-time. For the purpose of a game like No Man's Sky for example I'd think hundreds or even tens of frames would be unacceptable.
Don't get me wrong, I love technology applied to the "wrong problem" and see that as an end in itself sometimes :). I'm just considering the feasibility of accurate HAM in realtime using shaders, and am really enjoying the discussion on what compromises have to be made for it to perform adequately in a shader. But with respect to the original question I can't quite bring myself to say "yes"
Yeah, true. But there are two factors here that still meet a reasonable definition of real-time, which is >= 30fps in my book. First, a predictable number of frames of latency still allows 30fps throughput. Second, this encoding can be done in multi-pass batches in a single frame. The dependency of one sweep of modify ops doesn't need to wait for a full frame to do the next sweep. This is very common on ShaderToy where people build dependent buffer chains. It's perfectly reasonable (outside ShaderToy) to do 10 sweeps in a one frame cycle. I don't know what the limit would be on a standard GPU these days, it might be much higher. Consider that shaders on ShaderToy are routinely doing several hundred tap texture samples per pixel, and/or several hundred Ray marching iterations per pixel. The amount of work the GPU can do now in real time is incredible.
You can combine the inter-frame sweeps with cross-frame passes, and you only lose latency but not throughput. There's a likely chance you can also unroll once or twice for a single pass. If you unrolled once, and had 10 passes inter-frame, and had a 10 frame latency, you could in theory get a modify radius of 200 pixels, while maintaining 30fps throughput with 10 frames of latency, assuming I haven't taxed out the GPU at this point.
So, you're right, it would be silly & hard to do this, but I still think HAM encoding could probably be done in real time, with perhaps some compromises or quality limitations to keep the encoding predictable, or at least have a known reasonable upper bound.
Very awesome at 2D, though.
Commodore was in a (brief) position to destroy Apple and ridicule IBM, but the execs preferred to "Toys-R-Us"-it and take the bonuses.
I could see Amigas and Ataris everywhere, back in Portugal, while Archimedes were only known to me thanks to Computer Shopper UK edition, Alternative Platforms sections.