A downloadable tool for Windows and Linux

Download NowName your own price

This tool lets you generate normal maps for 2D textures, with little effort. Specially designed for Sprites in 2D games. It also let's you create parallax maps, mainly intended for backgrounds, to obtain a nice 3D effect in 2D games!

Normal Maps lets you create awesome realistic lights for games. This tool is primary intended for illuminating 2D sprites for 2D games, although can also be used for 2D textures for 3D games.

Parallax Maps lets you "deform" the texture depending the point of view, so you can create, for example, depth effects in backgrounds like brick walls.

Version translated to spanish and english!

Available for free, you name your own price!

Patreon: https://www.patreon.com/azagaya

Updated 6 hours ago
PlatformsWindows, Linux
Tags2D, normal-map, parallax, sprites, tool
Average sessionA few seconds
LanguagesEnglish, Spanish; Latin America


Download NowName your own price

Click download now to get access to the following files:

LaigterPortable120.zip 23 MB
laigter-setup.exe 16 MB
laigter-x86_64.AppImage 58 MB

Development log

View all posts


Log in with itch.io to leave a comment.

Very interesting piece of software, thanks for putting it out there. I've been playing around with hand painting normal maps for 2D skeletal animation, but doing it by hand takes time. This looks like it could be really helpful for generating a rough first pass, or for more static assets.

One problem I noticed was that the edges on some of the 32 bit PNG files I handed it are fading to white on the border between black and transparent. There is also a very hard inverse border on the normal map along that boundary unless I turn bump height all the way up to compensate. I'm not sure if this is caused by the program I used to create the PNG or something in Laigter.


Hi! Thanks for the feedback..  could you share me your image so I can try with it? I think the problem could be when importing, cause I do a convertion there.. the inverted edge in the normal could be because the edge is black, and the transparent area is not being considered as 0 height.. I'll have to take a look at it also.

Sure, here's a cropped version which is showing the same issues on my system.

Thanks! I'll look at it as soon as i have some free time

(2 edits)

Hi, awesome application!

Just a question. In a project using pixel art, I don't plan to export the normal map itself since there are too many frames for the sprites. Instead, I'd like to simply use the preview image with the lighting on the sprite and use that as an "overlay". 

The only problem is I can't see an option to render the preview in its original pixel form.  The  preview image has interpolation turned on and there doesn't appear to be any way to restore the sprite's original pixel look.

Thanks for this amazing tool!

hi! I'm not sure if i understood the question.. have you tried pressing the "pixelated" checkbox in the preview dock?

Thanks for the reply.

I've checked to make sure the "pixelated" box is ticked, but there is still some interpolation going on.

I have attached examples below:

This is a test sprite which was screen captured at 500% zoom, and where pixelation is maintained:

And this is the same test sprite screen captured inside laigter with pixelation turned on,  also zoomed at 500%, :

The difference between the two is the first has no interpolation, where as the second one has some bit of it, most noticeably with dark outlines. 

I was hoping that the normal map lighting could apply with the pixelation maintained. I could then simply take a screen shot in the preview and use that as an overlay to simulate something like a muzzle flash. But currently, there is some interpolation which gets in the way. See below image for the difference:

Example areas are the shoulder pads and arms. In the left lit image,  there are a few dark colored outlines compared to the right, normal image. The effects looks great though.

I'm not sure if its possible to maintain the pixel look 100% (more or less  to remove those dark lines). But if it is, would be great!

Thanks again!

Hi! Yeah, i see what you mean. There must be a bug in the pixelization... would you share me the original image so i can test with it? I can't promisse i will solve this fast, because i have little time free from my daily job.. but i surely will try!

(1 edit)

Thank you for the reply azagaya. 

Here is the original image with transparency. 

Righ-click >  Save image as... (if you're on windows) should work fine with downloading the image.

And please take your time.  :) 

Like I said, the results look pretty good right now too, but if the pixelation is maintained fully, that'd be just super. Appreciate your effort to look into it, regardless of the outcome.

Thanks again!

This is really awesome!
I haven't used it yet but from what i'm seeing this will help a lot and makes the game I'm working on "Miko Mind Dreamer" look much better if a light source is used.
Will there be new updates coming in the future like adding new stuff and so on? keep up the amazing work!



I'm glad you like the tool! Your game looks cool, and I'm sure dynamic lights will be an awesome addition!

Regarding the new features, I have some in mind, but I have little to no free time, so I'm adding them slowly. I also try to prioritize features that users request.

Thanks a lot!
Yeah I understand it's the story of all of us, having little time to work on something we love, well if they are coming slowly or fast just keep it going, this tool could be really something special in the future!
Keep up the great work, I'll be following this one.

Hey! i've seen you are using GDevelop 5, aren't you? If so, i'm sorry to tell you that GDevelop 5 does not support dynamic lights and normal maps yet. So you wouldn't be able to use the maps exported by Laigter in your game at the momemt :(

Yeah GD5, hmm.. well that's sad, it's ok, hopefully it will support it in the future.

Hey, this is really useful for my Godot project! It works pretty great for the low resolution images I use, but i found that when I try to load higher resolution images it tends to crash very quickly.

 It doesn't really affect my work at all, since I only discovered this by messing around trying to add normal maps to memes and desktop backgrounds, and I use pixel art in my game, but it might be annoying to people using some high-resolution textures.

Depending on how large the image is, it either crashes the moment I try to load it, or after I try to change one of the sliders or checkboxes, or after loading multiple high-res images.


Well, i never intended Laigter for very high resolution images, cause is mainly for sprites and tiles. I guess that the problem is that currently every process and image is loaded in memory, and perhaps it runs out of it. Could you share me one of the images causing the crash? Also, could you run it from a comman line and see if any error appears when crashing?

(1 edit)

Running through the command line doesn't seem to raise any error messages, but here's the first image I experienced the issue with. After loading it in and changing any of the sliders it will crash. Like i said, I was just messing around with random images to see what they would look like, so this isn't a realistic use case. I figured some people might want to use the software with very high resolution sprites, so I thought you might want to pick up and fix the issue, but I suppose if you only intended the software for small images it's no big deal. Either way, it doesn't affect me directly lol. 

I also did test it with a few other generic texture images (like wood and stone textures you would use in 3D software), and found that loading more than three 1024x1024 textures would crash it. Here's an example of one of the images I used.Once again, if this is outside of the use you intended for the software, it's no big deal, just though I'd let you know :D

Thanks a lot! I'm very grateful for your feedback.  Even it wasn't intendeed at first, it doesn't mean it wont be intendeed in the future! So i must fix it if i can. Tests like the one you did really helps me make Laigter better!! When i have some free time, i'll try and see what happens. If it happens with that big images it also may be a bug in index. 

Thanks a lot and i hope Laigter to be very useful for you! 

P.D: would you show me your current project where you are using Laigter? I always like to see the tool in action in real use cases!


I've tried with both images and in my pc it did not crash. I've even tried with tile mode (that is more memory hungry). May be it's system or platform specific bug? would you please tell me on what system you are trying? I'm using linux, with 6GB RAM, 2th gen i5.

Thanks again!

I'm using windows 10 with 8GB of ram and 7th gen i5, so i don't think it's a problem with my hardware. Perhaps there's a problem with memory allocation in windows?

Here's a quick peek at what i'm working on. Right now most of the assets are placeholders, since i'm mostly focusing on the code to begin with, but you'll play as the robot that's currently floating, instead of the pair of jeans holding the gun, once i add legs and animate it. The normal map isn't good because I didn't use a "height map" style image to make it.

Cool Project!!

Surely is not a hardware issue, but memory allocation could be the problem. Some time ago i found some bugs with big images in windows when using Laigter.. i'll try on windows when i get a PC with it installed. I'll let you know if i can fix it!

Thanks again for your help!

This is great! I'd like to use it with some of my sprite sheets. It would be great if there were better nav controls like panning or zooming into different spots of the preview. My zoom seems fixed on the center so I can't see details on the left or right sides. Also, do you know if using these with Godot requires the invert x or y options? Thanks again!

Hi! Thanks for the feedback!

Ok, i'll try to add more nav controls for next release! Draging the texture would be enough?

For using with godot you need to invert the y axis of the normal maps. For parallax map, you have to write your own shader in godot. I want to make a video about that when i have some time.

Dragging would be great! Also, if the normal map adjustment sliders had number input fields so I could remember values between different sprites, that would also be awesome. Thanks again for this!


I was thinking about adding spin boxes along with the sliders, so you could modify the values right there..

This is nice, but it doesn't seem to like pixel art much - even with every smoothing option I can find at 0, it's still smoothing edges and looks gross in the editor.

Yes, i never made a pixel art mode.. if you share me some of the images you are trying with, may be i can figure something out for next version. Do you know any other normal map generator that allows pixel art? 


I realized that the problem is not the normal map. In first place, y use linear filters in opengl rendering, which softens the image when scaled. That can be changed for a future version. The second and more difficult problem is that the shader does not care about pixel when i calculate lighting, so the lighting effect get softened.. i'll see if i can change that for next release. Anyway, normal map are ok and using them in an engine should work fine.


Perhaps you are not reading this anymore, but i found a solution for pixelart. It will be included in next release! so stay tuned!

Was really excited to try this but the need for installation really puts me off. Sorry about that.



You are using windows right? I can zip all needed files and upload a portable version if that's better.. theres's not really a big difference.


I mean, not really a big difference for me to do that. I can see why would you prefer not to install it.

yes please!


I've already uploaded a zip with all needed files and libs. Please tell me if it works for you! I'll need to find a way to better deploy a portable app for windows in near future.

It works! At least for the most part :) I think the 'export to' button is not doing much but everything else seems good to go. I'll do a proper test when I have a little more time available :)

Hi , Just discovered this awesome software today. But I have a problem using it .

the open of images and exporting does work , but apparently it wont show my imported images and I can't change all of the controls that is present

uh, that's strange. Could you tell me what OS and hardware you are trying on? Have you tried also in other computers? Could you open it from a command line and see if some error appears?

Thanks a lot for the feedback!!

(2 edits)

Hi , I used it on a lenovo laptop (sorry I dont know what model. but i'll update it for you tomorrow it might help) and its on windows 10 . 

I'm gonna try it now on my personal pc i'll update you in a bit


It's working fine on my win7 pc. 

Thank you for this awesome tool . This is what I've been finding

thanks to you for giving me your feedback! I don't know what could cause those issues in your notebook, but if i find anything i'll write you back here! Also, i'm adding a new feature soon, so stay tuned!

No problem . Thanks again for this wonderful tool

(2 edits)

It's a very nice software. I'm a student of digital games and it helps me to make more beautiful sprites. It's really a treasure rare to find out there. Thanks to the developer. I'll share to my colleagues.

Two possible new feature that i would like to see is a way to save the settings to use in the future on other textures and drag the texture loaded to show other parts of it.

Hi, thanks a lot!

Yes, saving and loading presets is in my to-do list! I'm too busy at work now, but when I have some free time I'll add it, with other features I was asked to add.

I really appreciate that you are going to share Laigter with your colleagues! Thanks a lot!!