A downloadable tool for Windows, macOS, 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. Specular map generation is possible too, which gives your sprites the shininess they need to look PRO! 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.

Specular Maps lets you make realistic shine into your sprites.

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.

Ambient Occlusion maps lets you define to which parts ambient light should reach weaker. Adds realism to lights.

Version translated to spanish and english!

Available for free, you name your own price!

Source Code

Patreon: Become a Patron!

If you like Laigter, you can invite me a Kofi!

Updated 8 days ago
PlatformsWindows, macOS, 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:

Laigter-1.7-setup.exe 19 MB
Laigter-1.7-Portable.zip 25 MB
laigter-1.7-x86_64.AppImage 32 MB
laigter-1.7.dmg 77 MB

Development log

View all posts


Log in with itch.io to leave a comment.

(1 edit)

Hi Man! I don't know what to do with this, for now. But it is so damn cool, simple and functional! I will use it at some point for sure. On Mac High Sierra works like a charm! A very good Job! Thank you so much! I let u a Coffe on Kofi! Keep up the good work! Thank you, again! 🙏

Thanks a lot! I really appreciate your kind words! i hope you use it soon and you find it useful!

(1 edit)

What a great tool! Thanks a lot for making something like that open source :). If it had brush-like editing for normal maps it would be perfect!

Hi! thanks for the kind words! I have that feature planned.. i hope to be able to add it soon.

(1 edit)

(Old)(it's must be cool to use this software for pixel art game, i would like to use it for that,  but this is not possible) ( (Update : They are Pixel art mode and it's work very good)


Why is not possible?

The exported map should be fine for pixel art.. and you have a pixelated checkbox to enable pixel preview.. are they not working? Could you share one of the pixel art sprites that are not working for you? Yo can also open an issue on github!

(3 edits)

I'm sorry i didn't see pixealed, i'm sorry ;(

your games look great by the way!

Thanks ;)

For me, it crashed if I click on "Tile". Image size is 128x128, Windows 10 64 bit.

Hi! can you please tell me your system specs? Can you share me the image?

Windows10 Home, 64 bit Version 1809, OS build 17763.615

Processor: AMD Ryzen 7 2700X Eight-Core Processor, 3.70 GHz


Graphics Card: GeForce GTX 1660, Driver Version 431.60

You know, people who reported this to me also have great pc like yours... Thanks for the report, i'll look into it! Really sorry for inconvinients.

I can confirm this happens in some windows devices. Could you please open an issue on github for this? including the image.

Thanks a lot!

(1 edit)

I can also confirm that in some windows devices it is working however. But it's deffinitly crashing in some windows devices. Its a windows only problem also.

Hey, I think the problem might be processor related (ryzen / certain Intel gen).

hi! Thanks for reporting that!

Anyways,i found a possible fix.. in this days i will release a bug fixe 1.5.1 version.. we can try then!

when i try to run the program, it give me 2 errors, both abou a missing dll. i try the installer and the portable version but both give the same error.

plz help me

yes,i was reported that for windows version.. ill fix it tonight.. can you tell me de missing dll?

Could you please try with the installer version now? Portable version is uploading... (sorry, my internet connection in this part of the world is really slow)

Hello. I can't start the application. After trying to run laigter.exe, I receive a message about a missing file: libopencv_imgproc320.dll. Where can I download it?

oh,thats strange.. it should be included... what version you tired? portable or installer? Can you check it's not present in laigtr's directory? I'll try to upload a fixed version today.. Sorry 

Thank you for the quick reply. I tried both versions. I also tried to install through the Itch application. In each case the same error. I can't see this file in any of the folders.

ok,surely I made a mistake when packaging... my notebook broke so I borrowed one and I made all the environment  in a rush... I'll upload a fixed version today.. sorry

OK, Thanks! :)

Could you try with the installer version now? The portable version is uploading in this moments, and my internet connection really sucks.

It would be awesome to be able to automate laigter usage through the command line. For example, one could use something like this to automate the maps generation for some file without ever opening the graphical interface:

laigter    --preset=/home/user/somePresetFile    --input=/home/user/input.png    --invert-y    --invert-x    --normal=/home/user/input.normal.png    --occlusion=/home/user/input.occlusion.png    --specular=/home/user/input.specular.png    --parallax=/home/user/input.parallax.png

Yes, i have that on my todo list...  but i haven't had enough time. Perhaps in the near future!

(1 edit)

Since I was really needing the command line export feature I forked your project and implemented the bare minimum for my personal needs. You can take a look here:


I only made a windows build since it is the main OS I'm currently using for development.

I can make you a pull request if you want, but I did'nt had the time to make sure my changes fit your projects coding style and quality standards.

Wow, thanks a lot!!

I'll check it as soon as i can.

About the coding style and quality standars, i have none till now.. this was supposed to be just a personal project, something like a test... and i'm usually messy writting code... But i think i should starting to define coding style. I think we could use clang-format beautifier and that's all.

Thanks again!

Hi, I like the concept of this app. 2 things... 1) Can you add a menu bar with all commands so we can use shortcut keys and also have a link in the memu back to your website? 2) Bottom right buttons, Exporting all images (normal maps etc) doesn't work at all on my Win10 machine. And the top export button ONLY exports the normal map... no other images, not even the preview. Would be nice if exporting worked and supported transparent PNG's. Even thought this app would be mostly for game dev, I would use it just for general graphic design. A quick way to add 3d effect to any flat image. Great work so far!!

Hi! thanks for the feddback!

1) What do you mean with all the commands? I may add shortcuts without the need of a menu bar.. would it be enough for your needs? Perhaps i cann add them for 1.6 (1.5 is almost ready).

2) Does any message appears when pressing "Export All..." i'll try on a windows machine later, but i think it was working. It exports the maps in the same directory the original file is. The top export button bug is fixed for next release.. i found it some days ago. The preview is not exported in 1.4, because the purpose of Laigter is to export maps that are used within shaders. I added the feature to export preview for 1.5, but just of the texture  currently selected due to some internal problems.

No message of any kind when exporting

Thats strange... I've just tried on a windows PC and worked fine. Can you give me the full specs of your system? what images are you trying to export? If you run it from cmd does it show anything? and if you run in cmd with s parameter? like "laigter.exe s" in cmd

I'll try in other computers also... can you try in other pc too?

I need to be able to reproduce this to be able to solve it.

(3 edits)

I get a message saying everything exports... but when I go to exported folder... nothing is there. lLke I said, only if I click the top export button do I get the one and only normalmap... nothing else.

Windows 10 (ver1908)

GTX 2060

Intel Core i7


FYI.. .screen doesn't reflect location of the application. I have a folder I keep all my created content in. I just named that folder Laigter too.

Thanks for the feedbak. Perhaps a dumb question, but have you tried with other pictures that are not the sample one? Export all and export too are not meant for the sample images...

I'll look at it further and tell you if i find anything.

The top bar export button, as i said previously, it's a bug is already fixed and ready for version 1.5! I think i will be able to release it soon.

Also, ran app from command prompt.... didn't make a difference

Absolutely fantastic tool mate, you're a god send for Developers that cant make art like me!

Any chance the Presets could save the Visualization settings though? It would be awesome to save the Light settings when moving from sprite to sprite.

(this would work great with Exporting the Preview image which I'm really excited for to!)

Keep up the great work!


May be i can add those features in future releases! Right now I'm trying to clean  up a bit the internals, and 1.5 will just include preview export.. but for next releases perhaps I can implement your suggestions!

Thanks mate, your a champion!

I mocked up a test character, its completely night and day, well done again.

Cool drawings! thanks for sharing.. i always like to see laigter in action!

Hi! Pretty nice tool. I wanted to play around with it but there's a problem:

It happens everytime - no matter what image I open, I get the default skull image in the preview. I don't know if I'm doing something wrong or if it's a bug. And by the way I use Windows 10.


Oh no.. i had this bug some time ago with some systems... probably is a regression.. can you send me one of the images you are trying?

Sure, here you go:

Also, would you please try to execute Laigter from console and see if any message appears when changing to preview?


Nope, no messages. I executed it from console, opened an image, changed to preview and got no messages.


Hey, i've tried in different machines with win10 and couldn't reproduce your problem.. could you give me your full system specs? What Opengl versions you support? The problem is with the installable version or with the portable version or both? have you tried in other win10 machines?

Is the linux build of this application working for anyone else? The .appimage will not launch the program for me.

Hi! I tried in debian 9, ubuntu 16.04, ubuntu 19.04 and latest fedora and worked fine for me. Could you try executing it from the console to see if some error arraises?

And also could you tell me what is your hardware and linux distro?

Hey, not OP but I'm having problems too on Pop!_OS (64bit ubuntu based)

bash: ./laigter-1.4.0-beta-x86_64.AppImage: cannot execute binary file: Exec format error

That's strange because i have a computer with Pop!_OS and always test it there. What version of Pop!_OS are you using? It's strange because that error you mention usually appears when you try to run an application for a different architecture, like an x86 app on an ARM target... 

Using Pop!_OS 18.10 x86_64. I just realized I'm not using 19.04 so i'm gonna upgrade and try again after that...

(1 edit)

How can you export what you see in preview mode? Ofcourse you can screenshot and crop it afterward, but is there a way to export it to a single image?

Hi! not yet.. i didn't think anyone would use it, as it's just a preview... I can add preview export for next release if you like.. Just curiosity, what would be the use case of it?


That would be really nice. To use it as a static sprite, to create that 3d-ish effect without using ingame shaders.

Would you mind the if the exported preview image has the size of the preview widget? Or you need it to have the same size as the original image? The framework i'm using has some limitations on how using opengl rendering.

The size of the previewwidget would be perfect.

Great! Anyways I managed to export the original size also while I waited for your reply.. just the lighting effect is not exactly the same as the preview.. I'll let the user chose wether he/she wants to export full preview or original size.

I was a ton of work! Expect it in next release!

Thank you for this

You are welcome!

Hi there, I saw a YouTube video featuring  Laigter https://www.youtube.com/watch?v=WZ-YnnZTzUw&t=186s where a normal map was created from a standard image an file and was thinking maybe I could do the same with a photo of a living room scene that I wanted to add a lighting effect to.  I downloaded and ran v 1.3 on my Windows 10 laptop but I am unable open any image files.  Any suggestions?

uh, thats strange.. could you tell me what hardware your laptop has? What opengl your video card supports? Also,does the program crash or just do nothing? If you run it in a console, does it state any error? Thanks for the feedback

Also,could you please send me one of the images you are trying to open? 

Really awesome. Please add support for GLSL 1.3

Hi! thanks for the suggestion.. you mean to be able to run Laigter to run on a pc that only supports till that version? I'll try for next release.

Yes, my laptop is old :/ thank you, looking forward for next release

And what OS are you using?


ok, i think tomorrow i'll upload a version with occlusion maps.. i'll make it with glsl 130 so you can try if it works.

(2 edits)


Just tried the update. Alot of great changes and bug fixes!

About pixelation; though the outlines are no longer there (it is fully pixelated now), there is one small issue. About 1 pixel in height across the width of the sprite image is deleted for some reason. I have made sure that the zoom in Laigter is maintained at 100%. 

I screen capped the result and when I overlaid it on top of the original, I could see the difference. This issue was replicated with more than one sprite. Below are gifs illustrating the problem:

a) Current result:

b) Desired result:

In the first gif (a), you can see the sprite is doing a "bounce" motion because in Laigter, there is some distortion in the lighted sprite which causes 1 pixel of height across the entire width of the sprite to somehow not get drawn, even at 100% zoom. The second gif (b) is where I manually edited the lighted sprite to add the 1 pixel back in which fixes the "bounce" motion. 

Its a minor issue, but I'm wondering if it could be addressed, so no manual editing is required. In any case, as always, awesome stuff and thanks for sharing this!

you are right, there seems to still be a bug there.. let me have a look at it again, and i'll tell you if i find anything

Hey! it took a ton of work, but i think i managed to solve this!
Expect the fix to be included in next release.



Looking forward to the next release!

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


Apparently this bug is in the library i use for importing images.. i could not solve the white line appearing at the edge of the image, but i could solve the hard invert that you see in the normal borders..

This fix will be available in next release. You will still see that annoying white border in the preview, but normals are fine, and you shouldn't notice them ingame.
If i find a way to solve that also i'll let you know.

Deleted post

Sorry, i don't understand what you are asking. English is not my mother language.. could you rephrase the question?

Hi! I solved the white edges problem! That fix will be available in next release.

Thanks for doing the extra work fixing this.

no problem!

(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!

Hi! I manage to solve the interpolation problem in the texture.. now it should look ok when pixelated is checked.
The problem with the preview is not due to interpolation. In the image, each colour square we see as a pixel is actually made of 9 pixels. Laigter just use the real pixels, so the light will affect 9 pixels for each "pixel" you see in your image.. i'm not sure if i'm making myself clear here!

I've tried to make a pixelated preview with a shader, but no luck till now.. if i manage to do so, i'll let you know!

The texture interpolation fix will be available in next release! so stay tuned.

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!!