Spyro : Sketch #22



Hey !

This is my post for the sketch #22 : ~ Grayscale ! ~

List of edits (click to open)
  • 22/04 : Added tornado 4
  • 21/04 : Added tornado 3
  • 15/04 : Added tornado 2, added the “thumbnail gif” section
  • 12/04 : Added tornado 1 shader breakdown.

The theme I chose is … :tornado: TORNADOES !! :tornado:
…again (I love these cuties).

:tornado: Thumbnail Gif :tornado:


I’ll try to use a lot of different styles, from cartoonish to realistic ones. My goal is to create an unique mood for each tornado that I’ll make. It can be a static scene, some kind of panoramic environment, a gameplay-oriented way of approach or even some 2D animated artwork. I’ll try to do everything, I promise. :]
Let’s go !

  • ~ Tornado N°1 ~

Okay so ! Let’s begin with some Halftone, right ?


HD Video link (trust me, the gif quality is bad):

Alright ! So, after I searched a lot for visual references that can inspire me, I noticed that Halftone is a good candidate ! I tried to mix it with some custom banding shader. As you can see, my first entry is shader-only, no particles :dragon:

Basically, my shader is based on a custom lighting made by multiplying a screen space texture by the dot product of light direction & world normals. Actually, this is only the tiny tiny base of the process, I added a LOT of little things to make it better (like custom outline woo !) At the beginning, I used this video as a reference, it’s pretty cool : Video link

Also, there is a lot of things that could be optimized/upgraded, but if I do it for eevery entry, that will take like 3 months lol. (I mean, some outlines are weird, there are visual artifacts, the props animations are garbage, etc…).

~ Breakdown : how to make an easy Hightone shader with amplify ?

  • First step : configure the custom lighting. To do this, you need to multiply the dot product of the world normals and the light direction with the light color, and you can also put a vector1 to control the intensity.

  • Second step : configure the UV for the dots texture. The screen position could work alone, but you need to multiply it with the screen parameters and the texel size to normalize it, otherwise you texture will be stretched according to your screen resolution.


  • Next, take the XY values of this operation and plug in to the texture UVs. What I do after this is multiplying my texture by the light config output that we etablished at step 1, resulting in a gradient that’s close to the final output. Then, I use a smoothstep to reduce the grey gradient, and to gain control over how my dots are rendered.

  • That’s it ! Now plug this into your custom lighting input, play with the values, and you should have something similar to this :


  • This is the base that I made for my shaders. I added a lot of little features like custom outline with vertex alpha blending (to remove some artifacts), panning and rotation, posterize, vertex offset, nodes for the emission, etc… testing is key :]

  • ~ Tornado N°2 ~

Today I made this tornado ! It’s a stylized naruto-ish style, and I was hugely inspired and motivated by all the fantastic VFX we can find on CG Joy.


Video link

The whole tornado is composed of some emitters, for a total of ~75 particles on screen. Most of them are meshes, so I tried to do my best to optimize them, to have the least overdraw possible. There are also really simple dissolve shader, and the core shader is composed of a single texture that’s doing both the emission and the vertex offset.

Well, about this one I feel like I cound polish some things like the top of the tornado, or add some kind of background/ground to the scene, but I don’t have the time right now.

  • ~ Tornado N°3 ~

Here is my third sketch. It’s a realistic one this time ! My main reference is this Google research.

Supercell storms are really amazing ! But quite hard to make; I restarted like 3 times… And it’s really not perfect. But hey, it’s a sketch :] Here we go :


Video link (it seems like Youtube has destroyed my greyscale values, unlucky)

This one is all about noises, and I used quite the same methods than my Sketch #12. If you want a detailed workflow about how to make this kind of realistic tornadoes, I wrote an article for 80.lv right here !

  • ~ Tornado N°4 ~

I did some pixel art post process to render this one. Actually, these are 3D meshes with an orthographic camera. Quite fun to make ! My main reference is this gif.


Video link

Tornado textures are screen space, with standard distortion. Storm is made of some meshes with simple dissolve and posterized noises. Maybe I’ll polish this one at the end ! Maybe not :]

Stay tuned, more tornadoes are coming this week end !

To be edited

Like always, feel free to ask me anything about this ! I’ll try my best to answer correctly.

See you soon for an update ! :smile:


Good job @Spyro!

I really like those props orbiting the tornado. This “comic” look is getting pretty trendy lately.

Also, don’t worry about the imperfections, since you only need to block out the 7 variations, and then choose one to take it to a final stage.

Have a nice day!


That is really cool and eye catching!


Ohhh! I like this one A LOT.


Thanks !

Yeah @Lush and I feel like I took too much time to make this one haha, I will try to be more efficient lol


I feel like the outline could be blended like the rest of the tornado. The “pure” outline is punc ing too much of a h le in the scene. :slight_smile:
The strong outline also might be detracting from the silhouette.

But don’t get me wrong. I LOVE it. I just think there are some more options to try … even if they don’t end up working out. Great work!


Hey thanks for you feedback @William_Mauritzen !

Yeah this is actually a first version of this tornado, I’ll try to do some polish at the end of the month for sure !
I feel like it could be improved of course :stuck_out_tongue:

Edit : Tornado 2 is here !



The second tornado looks fantastic, awesome job @Spyro! :tornado:


absolutely amazing. I love the effect, can look at it for hours, can i ask how you made the vertex offset? Have been wanting to make my own tornado but cant figure out the vertex offset node system since i also use amplify.


Hey thanks @Disturbed !
Yeah it’s pretty simple ! There’s no vertex offset node, the only thing you have to do is multiply the “vertex normal” node with a noise texture, then plug in onto the vertex offset property :wink: of course to do that, you have to be sure that your mesh normals are correct. Oh, and be sure to also add a value to control your offset!


thank you so much, i always thought i needed to use vertex position and vertex tex coord this helps a ton!


I’m pretty sure you can do something similar with vertex position (like we can see here)

But I’ve never used this method before.


thank you so much! i will make a shader to try what you said earlier with the vertex normal. I’ll keep you updated!



I’m doing a couple of noise subtractions with multiple noise textures then using step on them to make it a little more random :smiley:


Here is what it currently looks like, not too fancy and a lot of cleenup is needed but its progress :smiley:


does anyone know why im getting the smooth edge to the left but hard edge to the right? Seems like the vertex offset is going by 1 axis


Good job with both these tornadoes dude! Can’t wait to see what more you come up with! These are both very unique and great art styles in itself. <3


@veer Thanks man ! I’m really happy that you liked it :smile:

Tornado 3 is here ! I had some difficulties to make it uh. But more are coming this weekend !



Cool! guys! :+1::+1:


Thanks you @Katten !

Tornado 4 is done ! Pixelated one this time yaay (fake pixel art made with post process hehe, maybe I could have done something similar in true pixel art, but it would have taken me days and days lol)