I Made the WEIRDEST ASCII Renderer...ever.
Вставка
- Опубліковано 11 вер 2024
- What becomes possible when you make an ascii renderer were the characters can move around?
ASCII rendering techniques come in a variety of flavors and have many different creative uses. Beyond Logos, and stylized headers, Entire games like Dwarf fortress and more recently Stone Story were rendered completely in ASCII characters. ASCII art has been incorporated into hollywood movies like the matrix. And you can actually watch StarWars Episode 4, on the command line entirely in ascii art.
I had started making a tutorial on how to write an ascii shader when an idea occurred to me. Could we have ASCII ART where the characters could move around?
If we could….what would that allow for?
The material id idea is pretty clever, it reminds me of some indie games where the devs usually go nuts with their ideas because they are not trying to please an existing audience.
I'm glad you appreciate that idea! Yeah this would definitely be a project to do before anyone knows me haha or under a separate brand
Except the audience that looks for new and fresh experiences I guess
I thought at first that this defeats the purpose of ASCII rendering (since it's made deliberately to be limited and easier to draw), but I'm now convinced this is an entirely new thing. I don't think it belongs as "traditional ASCII art" but it could be an interesting art style for a game with a techie/nerd (in the best senses of those words) audience, especially given the material thing. This really inspires me, imagine what a 3D roguelike with these material properties would look like.
Yeah I can see how this would be a new thing. Maybe an ascii-art-adjacent rendering style then. I'm really glad to here it's inspiring to you especially the materials because I wasn't actually sure what people would think. For a 3D roguelike I definitely see the potential!
@@Yusef28maybe call it glyph rendering? Because it's rendering things as symbols flying around
@@Yusef28maybe call it rune-based rendering? It reminds me of the effects in a lot of media's magic systems of representing magic as runes flying around in shapes
noita's falling everything engine but made for 3D
No falling everything engine's main point is not rendering. It's main point is to handle physics well. Not to render in a certain style. @@solteris4684
We should show this to @Acerola🤩
Sure, Acerola can add edges to it👌
@@Yusef28 edges being still would be a neat effect I think
I saw the title and assumed it was one of his videos, NGL lol
@@Nedddo Damn, that would be cool, especially if not only were edges effectively static, but if they acted as a boundary to the motion of the other characters.
Suddenly, every object is a container filled with, and surrounded by swirling fluids lol
@@Nevir202I don't think this would be easy to do/possible because how far would you have to check to ensure that characters don't cross a boundary
I can see this working well with some sort of a strange fantasy magic experimentation game.
You are a blind wizard given the chance to see again after a freak accident, but you cannot remember how you did it. Research to re-create your magic and uncover the unknowns. You have a castle full of puzzles, recipes, and ingredients at your disposal.
Oh good call I can see that too. This sort of effect lends itself well to magical and mystical themes.
Good idea, man!
This would look great as an overlay for spells where the ascii character textures are wizardy-looking glyphs. Kind of like a particle system, but in a way that naturally reacts to the brightness of individual parts of the spell effect because it’s a shader
@@Yusef28 Ya, especially if you used a custom font to replace all the standard ASCII characters with something mystic looking. Even katakana of Norse runes would get you most of the way there.
Cool! We need a bad apple version.
That's a good idea I'm just not sure I can right now
The amount of applications this has all starting from "what if Ascii but move?" is wicked cool! Super inspiring!
Thanks that's great to hear!
One thing I'd love to see tried with this, is to have one video encoded to the ASCII shader, but then have a separate video encoded to the motion, so the orginal video is being distorted in the shape of the second video.
This is a very interesting idea!
OOOOH the depth of field was such a great idea.
Thanks, I'm glad the idea came through well despite the compression!
the depth of field effect using character motion was so damn cool!!
Thanks I'm glad you can appreciate it!
This is great. Since you have some characters growing and shrinking, I imagine if you combined it with the ID effect you could have the name of the object repeated over the whole area of the object, with simply the size of each character (or maybe a specific variation of each character) to accurately represent the luminance. So a wall would just be a repeating texture of the word "wall", and characters would be grown or shrunk to represent luminance.
I can see the video title now: “Making a WordWorld shader”
Yup this is a really cool idea!
In terms of games, this would look really look for an enemy, especially if you make the ascii characters move when they got shot or hit
finally a programming youtuber who doesn't mess around
Glad to hear it!
My first thought is that you could use the "wiggle" aspect to display multiple views at once.
Like, you could look at person who has a hidden weapon and the "wiggle" gives you the outline.
I might not be understanding the hidden weapon mechanic you're talking about. You mean in general it will show an outline only which means you "can't see it"? Or do you mean if you can see if when it's hidden it will look like that?
I think it would be cool if the characters always sampled the original image directly below themselves. Then you could maybe get some of the detail back, that you lost by downscaling the image, since the moving characters can reveal the higher resolution data when moving between pixels.
That's actually a great idea. So if a character moves from one cell to neighbor it could easily sample the texture there and maybe morph into that one. Yeah that should help with detail you're right!
Interesting twist on ascii shaders. But for ascii purists what would realy look like actual ascii art would be choosing characters that matches the shape of what you want to represent, not just the luminosity.
My first thought was "but that doesn't work on a raster character terminal" and then I realized that was 30 years ago.
This is very impressive tbh, would gi crazy as an album cover
I’d be very interested in seeing a game developed with/around the techniques and applications you’ve thought of - and the (probably) many more you would think of along the way.
The shockwave visualization struck me as especially interesting.
Well I'd love to see a game based on this. I have nothing planned yet but maybe at some point. I'm glad to hear someone is diggng the shockwave!
i think this is a really cool concept with a lot of potential, gonna be alot of fun to see where it goes from here
5:12 I like this. It’s inherently gonna make far objects, which inherently already suffer in ASCII due to small size, further obscured, but that is NOT to say it’s bad. This would be a wonderful effect in like an “unclear water” setting or maybe a “foggy” setting where far objects are SUPPOSED to be obscured a bit
I think the best uses of this effect was definitely the material id, or the depth of field effects. I think these were so impactful because it made certain details stand out from their surroundings which really help with visually parsing the scene after losing such detail in the ASCII rendering process.
You might be able to expand this by either adding color by layering colored ascii characters which sample the luminance in their respective color channels. Or maybe drop the ascii entirely to look at this as a particle effect, which might make the effects you came up with clearer and let them stand on their own
Good suggestions, and glad to hear you think it helps with visual parsing!
This is pleasing all my neurons trained on cyberpunk memes.
Oh Excellent!
6:51 this effect is so sick. it reminds me of pixel sprite indie games that incorporate modern post processing filters like bloom and screen distortions. i would love to see this implemented and used in a game engine, great work dude!
my favourite thing is the shockwave effect, it really looks like some sorta of already existing game, i love it!
I love that all these things popped into your brain after a new idea occurred to you. It's one of the best feelings. Like the whole world just got bigger. I think people would definitely be interested in using this effect in some way or another.
Coming from a filmmaking background, I couldn't help but draw this comparison: If the ASCII characters are allowed to change symbols as they move around (and they move around fast enough), you can effectively get more resolving power. Film in movies works this way. A single film frame is not very sharp compared to the output of a modern digital camera sensor. But because each frame of film has its “pixels” (grains) randomly distributed, you get more spacial information over time.
Oh that's really interesting about getting more resolving power!
What if instead of all of the water and fire characters moving in relationship to the camera, they moved in relationship to the tangent plane of the surface they are rendering. That way all of the movement would follow the 3d geometry instead of the object, instead of looking like a 2d surface. That would give more information about the environment to the user.
Fantastic work, this is such a cool way to see the development process of something like this, and your delivery of information is very efficient. Well done
This is incredibly cool. There's so much potential shown here. Great work!
This is insane!
Major props to you!
The effect you show with the orbs near the end is so pretty!
Wow! Now that you e made it, someone is definitely going to make a game influenced by this. I can’t believe how far you’ve explored this effect. I definitely think mentioning Dwarf Fortress early gives a great perspective throughout the rest of the video. I’m not thinking about how nerdy it is, just how cool it would be to see this as a stylistic effect for a much bigger work. This is exactly what a perfect shader is! Great work
It would be so cool to see a game based on this effect! Also thanks for the feedback on how mentioning dwarf fortress helps give perspective!
This is really cool, good job dude!
This would go absolutely nuts as a censoring effect, you’re right. All of these are so visually interesting, especially that material id bit.
I'm glad you think so!
It definitely can't add as much detail as it removes. But it certainly adds interesting and new details! This is pretty cool!
I think it’s amazing how much you were already able to do with it just in playing around with the idea for this 8 minute video. I definitely think it has potential for use in games. It has a way more dynamic look that Dwarf Fortress, & people play that. 😆
Thanks, and haha good point about dwarf fortress!
Cool effect. Another idea would be to read out the value change of the source pixel from the last frame to the next frame and control the characters move strength by that. With a falloff over time for the strength, it should leave a trail for moving objects in a more static scenery. :D
This is an awesome idea I'll experiment with it when I have time.
I love the idea of using this as a censor or an overlay. Really sick!
I'd be hesitant to call it ASCII because, while the characters may indeed be ASCII characters, saying "ASCII" implies some text mode thing, like a terminal or a command line. I don't think there are many, if any, terminals that can move characters around like a graphical sprite. Semantics out of the way, I think this is really cool, and I especially like the idea of applying different effects based on some ID like you showed at the end.
This is really awesome work! Feels like there's heaps of potential here.
Wow, this is a super interesting idea. My first thought for this is to use a vector field to make objects that are moving wiggle, almost like motion blur, but leave everything that isn’t moving static.
I could imagine a game where the camera is mainly static like the old resident evil games using something like this
I like this idea about a vector field! Very interesting idea using this with those fixed camere games also.
very intriguing! i could see an implementation where the movement/scaling within the picture (optical flow?) translates to the characters moving / scaling for a subtle effect. also i could see chroma keying one color of the input to be rendered colored and the rest as grayscale. the game concept would need to fit this style though, limiting applications to something where details are not the most important thing. maybe a game where you need to rotate the camera and move some objects to arrange them in a specific way. the render params could be used to show how far away from the solution you are.
The blur and movement of the characters as a depth of field effect is my favorite. It makes it look like objects are materializing as you approach them
This is super cool, looks amazing. I can see this being used for a games particle effects etc
The final example reminds me something from a game I've played:
That game is currently only in Chinese, and it utilizes the fact that Chinese characters fits well in a grid. In a part of that game, it renders a 3D scene, where the each character is based on what objects that "pixel" is, for example the doors are consist of the characters that means "door" etc.
Cool! Could you share the name of this game?
@@Yusef28
《文字遊戲》, or in English "Word game", by Team9. Note that:
1. The said effects is only used in the "true ending" part of the game. and the majority of the game is in 2D. Think how Rougelikes on terminal look like, but now all symbols and characters are literally replaced by the words of what they represent.
2. Due to how that game works, you HAVE know Chinese to play it, and I don't think it's ever possible to be translated into languages other than Japanese, or maybe Korean.
The "true ending" part of that game can be seen in this video, starts from 9:52:
ua-cam.com/video/sjhNX02M5FM/v-deo.htmlm52s
IDEA!!! So what if you used square characters, and expanded them to exactly touch their neighbors, and turn up the resolution, and make their color exactly the color of what they’re sampling. Then they would look just like pixels, and you’d just have a low resolution pixelization filter. But when you add in the depth of field wiggling, the pixels break apart! And also could be used for seemingly tearing the fabric of reality!
Yup I like where you're going with this!
would love a game with this style.. has so much possibilities for cool gameplay too.
The ideas in this video are insanely creative. I would love to see a game made around them, even if it’s just a glorified tech demo. Thanks for sharing!
Thanks for the feedback! I would also like to see a game made around them.
I did something similar writing an expression in After Effects. Each pixel/cell was a precomp’d animation. The cell value was mapped to the animation’s time. So like yours there are smooth tweens between values updating. Imagine each character smoothly morphing into the next.
That sounds sweet, I need to look into after effects!
Dude, I would love to see a game in this style. Kudos!
I think this is a very cool post-processing effect, and could be used for so much! When I see the characters moving, I immediately think of a recent video of Datamoshing by @Jam2go where he uses a velocity vector of the entire screen to move and apply effects to individual pixels. I think this could also be applied to your effect, using the velocity vector to move the individual characters and perhaps creating an interesting effect.
This is a great suggestion! There is a lot of potential with velocity and motion vectors for driving different effects. I'll put this on the list to look into further.
This is a fun idea. I really liked the different animations on the different materials 🙂
Hey good to see you on youtube! I'm glad you think so. I didn't have time to show as much of the materials capabilities as I would have liked so I'm glad the main idea still comes across ok.
This is awesome and has so much potential. I think this sort of effect with not even just ascii but arbitrary SDFs could do some very interesting things
Show a pretty cool shader.
UA-cam's Compression:
Allow us to introduce ourselves
haha yup
Very cool! I love how you took an already creative idea and just shared your exploration process. I'm glad the algorithm brought this video to me :)
great work, keep experimenting and finding fun and interesting paths to explore, thanks for sharing ☺
1:00 the thing about the basic way to turn images into ascii is that the images just look like well not art, the only novelty is lots and lots of text characters resembling a very color banned image, i have made a better converter in python (let me know if i should release it) that what it does is instead of storing the brightness values separately it takes a 12 X 24 image of every character (doesn't only have to be ascii, limited by your font) and it compares 12x24 parts of the image with every character to see which character best represents that part of the image, it works quite well and it makes it so that the shape of the image like for a logo looks incredibly smooth since it's taking advantage of the shape of the characters and not just making a big fuzzy anti aliasing mess like with some other converters, and also with grayscale images it works with them as well!
of course nothing beats ascii artists where they can be creative and like make a house where they use diagonals with slash characters and a door knob with whatever, stuff like that if you tried to do it with a generator it would not align, you would have to manually align a very specific premade image to use with the generator and at that point you should become an artist, of course there is AI and i did see one that was pretty good at that but the font width (normal ascii art is monospaced because it's easier) it was kinda wild and it was this kinda pixelated font, it doesn't have that much personality but AI with a lot of personality like chatGPT are crap, also it generates braille art sometimes which is not ascii and i and other ascii artists think braille art generators are the most lazy things ever
Using increased motion/displacement for censorship is cool. I'm thinking of games like Obra Dinn, where a face you can't identify with the given clues is presented blurry, or Watch_Dogs, where the MC hacks the city's CCTV network to blur out his face from all footage. If the game is already stylized through ASCII, that could definitely add a dimension, and your examples were quite interesting.
Right on and thanks for the examples of games that actually use censorship as a main element! I couldn't think of any games that did that.
Looks cool. Maybe add motion to the characters based on motion vectors from your game engine? Would probably only be coherent on slow movement of certain objects within the scene as opposed to camera movement
The effect kind of reminds me of Cogmind which animates explosions using ascii and this could add to that effect
This is really cool! Looks damn satisfying
Made me think of one of those old Black Ops trippy numbers cutscenes. Definitely potential for a horror filter
Nice I'm getting a lot of comments saying Horror
Legitimately the coolest thing I've seen all week
Glad to hear it!
Perhaps you could find a way to add this as a post motion blur effect on high resolution colored video, where the blur gradually turns into larger and more dispersed ascii characters.
The ripple effect you did could also be a displacement map for colored video, or even break an image or video into ascii particles that have physics applied to it, such as having a 3D block that is cracking and falling down like a collapsing building, but it’s pieces turn into various ascii characters.
Something else I’d find nice and interesting is if you can apply this effect volumetrically. Consider a cone of light that falls off in the distance. Instead of placing the ascii characters as 2d shapes on a 2d shape of the image, they could be rendered and move as particles in 3D space. This would make many overlap of course but the motion would make the effect visible, subtle, and the falloff make it more intense. The ability to look around the volume of ascii particles would be interesting as it would enhance the appearance of 3D space. This could then be applied in various ways to objects. The water or fire materials for example would be more believable, interactive and three dimensional. You could define specific characters and sizes of characters for the various properties of a material, for example the peaks of waves being different to the unbroken water surface being underwater, or ice having different characters in more transparent parts than places with more solid ice. Etc.
Wow these are great ideas. I especially the one about 3D. It should be possible since 3d voronoi is possible. Performance would be the tricky part. You're right though it would extend the material effect alot. I'll keep this in mind to explore.
Really cool!!! I had a thought for a variation, what if the character changed to a new character as it randomly wandered? It could change depending on the underlying data. Perhaps do several ascii maps with offset coordinates to get higher resolution upsampling, and as the character moves towards different points on the different grids, it could shift characters, so display higher resolution data as a lower resolution character, thanks to the movement. I forget who, but another youtuber did edge detection in ascii rendering. Adding something like that so the edges are shown as the character moves would probably look amazing.
I like this idea especially how it could help show edges. That might have been Acerola's ascii renderer you are talking about.
This is pretty cool! The material ascii shader might be useful in some kind of puzzle game where the movement and the set of characters making up a material tell you something about an objects properties. also im curious if using optical flow or motion vectors to influence the characters motion could help with clarity at lower sizes.
So a puzzle game where you have to infer what something is based about an object on the movement of the characters. Right on that's a great idea! I haven't got into motion vectors or optical flow but might have to since I keep hearing about them (at least motion vectors).
I love the way this looks. I wonder how it could change if it was unbound from the idea of an ascii shader and instead the particles could take whatever shape or opacity. Maybe they could have their own internal motion, like spinning or wiggling.
I really dig how it evokes the ascii look though.
That's actually a great idea. They don't need to be ascii characters and actually in my example some weren't but there is room to get even more creative with it and yeah differerent motion for each opens up even more possibilities.
Wow this is so cool looking, I could definitely see this being a big inspiration for lots of different game genres. It's so cool looking it'd just draw people in to see what this different look to a game feels like to play.
Great point about it drawing people in, I agree!
Super cool! Some of this reminded me of Neuromancer and how I thought it may have looked.
I haven't heard of neuromancer until now but apparently it's one of the earliest cyberpunk works? It looks like a really good novel.
Tbh, this idea of having moving particles create the image is a neat idea in general, even without using ascii characters. You could use it like you did in this video showing distance objects or motion blur or creating special animated materials, but ot would just be drawing squares that maintain the color of the actual image behind it without the shader perhaps, or you can apply whichever other changes you want.
This is a good point! There is potential for this outside of ascii.
My first thought with the movement was to use motion vectors which are normally used for motion blur effects, which could help tracking the movement of objects much more easily
Ok another vote for motion vectors, I need to look into it, thanks for the comment!
This is incredible and super creative; I'll have to try implementing this one day :)
Thanks and awesome I'm sure you'll be able to make something even better!
This is really neat. I think another good way to drive the motion of the characters would be using a technique similar to normal motion blur. You could create and sample a velocity texture for each frame. See: GPU Gems 3 Chapter 27 Motion Blur as a Post-Processing Effect
Thanks for this idea I will check it out!
This is beautiful. I always wonder the amount of detail that could be added by adding more characters for more levels of brightness.
wild. Hope to see more of this. I would love this on some Hotline miami kind of game with explosions and crazy colors.
I haven't heard of Hotel Miami, definitely explosions though and vibrant colors would be wicked!
@@Yusef28 My dumbass meant hotline
Freakin sweet! Thanks for sharing. Great video
explaining that the neighbours to "help out" in drawing is actually genius, I remember thinking along those lines writing a shader to render a tilemap ages ago but never really being able to describe what it was doing.
Thanks this is great feedback, I'm really trying to make sure everything is clear and also concise!
@@Yusef28 Well you're doing a great job, keep it up!
the smily face is not in fact ascii but a default Windows NT mapping of non printed characters to printed ones
Oh ok good to know!
its actually really easy to make in Touchdesigner. This looks so dope!
Cool, it's really good to know that's possible in TD. So far I only know that TOPS and CHOPS ect exist but I haven't made anything with it yet.
Could I use this renderer in a game I'm planning to make? Making IDs to change the movement type is such a unique way to render things, so much so that I think it would fit in an Cyberpunk based FPS environment - aka entering a mode that shows you the world as ascii, but maybe if an enemy is close to you behind a wall, the wall would shake in the shape of the player. This gave me so many cool ideas! If you agree to me using your idea, will it be okay if you send me your source code? Even if there's a language barrier, I mainly want the theory behind this project :)
This is very very cool
At parts, it almost looks like an approximation of film grain on a consumer level low iso film stock :O
Oh I think I see what you mean, I bet higher resolution could get even closer to that look too.
This is really cool !! ideal for destroying youtube's bitrate too, lol
this is very cool. this was a great idea!
This is gorgeous!
Many modern render engines also compute a buffer of motion vectors which they use for motion blur, which might be used for this?
Also, for better performance, it might be a good idea to first render your initial buffers at a low resolution, where for each character there is only one pixel rendered in the first place, and then use the ASCII shader to produce the final high resolution render.
yeah I've been hearing about motion vectors recently. It might work but this grid is still limited to the 3x3 cells or 5x5 if we increase the voronoi neighborhood. Depending on the motion or with some tweaks it could still be useful.
That does sound like a good optimization idea. I didn't look too much into performance for this yet but I'll keep this in mind.
This definitely looks cool
About two weeks after this video came out, Jam2go came out with a video on real-time datamoshing in UE5 and it got me thinking could you combine this ASCII renderer with his datamoshing techniques to make the characters move around when movement happens. Take p-frame data and use it to control the movement of the text. Or maybe change sharpness and color, give it a chromatic aberration like look? Could be a lot of interesting effects there.
Oh definitely a lot of potential taking inspiration from that real-time datamoshing effect. Good call!
Maybe it’s possible to blend this with a non-ascii shader so you get the benefits of the highly stylized blur with the clarity of a traditional renderer. I’m imagining you zoom in on a regular image to reveal it’s made of text, kinda like how if you look closely at a ps5 controller it’s made of little PlayStation button symbols
oohh interesting, and I didn't even know about the ps5 controller I guess since I don't have one but that's also a really cool design decision imo
This is so innovative thank you for sharing!!!
This didn't end up as intriguing as I thought. You just took an ascii render and moved the characters around. You're not moving around the window in which the brightness is being checked for, so you're essentially jumbling pixels. If you had moved around the window that the brightness checked for, not just the final render character, it would create a clear image.
This is amazing! I can see a higher resolution being used to create this viewable shader. Might be cool for a text based game or games like uncertale. 👍 🎉
I wonder what would happen if you used a basic letter array but added a lot of color. You might end up with something close to whay Vangogh saw.
I'm glad you liked it. Yeah that makes sense and with high resolution the movement should still be visible where it's happening so that's a plus. I had to google van gogh in relation to vision to know what you were talking about. So he saw in shades of yellow? Very interesting!
Whatever it is…it sure is pretty damn cool. Still not quite sure what I just watched.
I love it. The vibes are cool. I think with webcam could you track the eyes and have it effect the letters like the mouse?
Sure if you had an eye tracker that should be doable and could be very interesting. Even more in VR I'd imagine.
I think the most cool/useful thing this could be turned to (at least in terms of video games) is make it work dynamically with regular pixel rendering (it's not called that but you know what I mean hopefully) for example, the damage effect thingy where you have the characters moving more erratically the more damaged something is, you could make that effect appear for a freeze frame when something is hit, or better yet, make the object slowly become more and more asci rendered rather then classically rendered the more it is damaged. Make only specific objects like that instead of pre-processing the whole scene.
I am not at all a shader guy (I started to be seriously interested in it recently, still need to sit down and try to write something) but I think it could be achieved with some sort of mask? and then inverting that mask for one of the steps, so you will have parts in pixels, parts in characters hopefully with natural-esk looking overlaps. It could look like reality is breaking, straight up matrix.
Right, I think the trickiest part will be having characters overlap with parts of the scene that aren't ascii. It should be possible though esp with masking etc like you say, and it would be a really cool effect. That reality breaking matrix description gives me a super cool visual.
Wery cool effect, thanks for the content! Would like to see more your videos in the future 😁
No problem and you got it!
I wonder if displacing and scaling characters based on the gradient of brightness or outlines could look interesting or improve image quality. E.g. characters in high contrast downsampled pixels shrink to match a thinner bright line more closely or characters along an edge are offset to recreate the outline better.
something chunky and simple would be great with this, makeing a very simple style horror game with low poly modes and simple rooms and halls while having the monster rended differently from everything else or i could even see something like a minecraft shader seeing the blocks could be coloured differently and stuff like water and leaves could be spiced up with very little render time and performance issuies.
I agree something with less detail that we could use this to add texture to would be great.
Super cool project!
Love it, super creative!
Unique effect!
What if you had them as true particles, and influence their momentum based on optical flow, and at a weaker strength have them also be pushed away from higher density areas to ensure they never leave gaps unfilled for too long?
Really beautiful