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, english, french, brazilian-portuguese, catalan and danish!

IMPORTANT: plugins have been moved to another project page, to keep this one clean. Click here to download plugins for Laigter!

Available for free, you name your own price!

Source Code

Patreon: Become a Patreon!

If you like Laigter, you can Buy Me a Coffee at ko-fi.com

If you have any doubts or suggestions, join us on discord!


Download NowName your own price

Click download now to get access to the following files:

Laigter 1.10.6 AppImage
Laigter 1.10.6 Installer
Laigter 1.10.6 Portable
Laigter 1.10.6 App (Experimental)

Development log

View all posts


Log in with itch.io to leave a comment.

Viewing most recent comments 1 to 40 of 53 · Next page · Last page

Hey Azagaya I'm having issues saving images now. It saves them as a .laigter file and I can't open it :/

Hi! Thats because You are saving the proyect. For saving the output images You need to use the export button in the toolbar! There You can choose some export options


ahhh that worked! Thanks so much!

This app is really quite good.


Hey :)  Seems like an amazing app but its not allowing me to open any  files,(working on a Mac)  All the icons in the app are a solid blue not detailed like in the intro video.  I can click the file icon and it opens up my folders, just can't click an image to upload. 

try with the import icon, or drag an image file to the app. Does that fail too?

ahh thanks so much for such a quick reply! Yess that worked Thanks so much! Really happy I paid for it now. Keep it up 

Thanks! I really appreciate the contribution! helps me a lot!


if i have to say anything, its that the god of 2d games sent you to help everyone

This is a great tool. I have some questions .

Is there a way to add flicker or other effects to the light preview?
Is there any way to hide that flame icon/logo in the light preview?

Hi! Thanks.

No, there is currently no way to add flicker or to hide the icon. What are you trying to do?

nothing I can't do in an engine just being lazy with the previewing, The tool is exactly what I was looking for . 

Cool! Glad to hear that.


Hi! Is it possible to have normal map flow properly for Tilesetter generated patterns? I'm trying to get normal maps for a tileset tile seamlessly but I think the app will treat edges as edges while they should expect some other tile to be there. Do you know the best way to deal with it?

Hi! if I understood you correctly, you just need to set the neighbors of each tile in Laigter. If you join us on discord, I can better explain how.

But basically, you import the tileset, set how many cells it has, check tileable option, and open neighbor selector to select a neighbor tile to each individual tile.

Oh, I think I found it, thanks! Is there an option to export the neighbour set? It looks like the relations are gonna be the same for most of my cases.

no option for that yet.. it may be a good new feature to add though.

Pleeeaaase =^.^= It seems saving the project doesn't save neighbours.

Oh, thats a bug... Ill look at it.

(1 edit)

I am trying the animation feature but for me it crashes with a "simple" sprite. The sprite is 128*384 pixels and 32bit color:

The steps: import the image in laigter, cut it 2 by 6. Check animation box. Select it. Press play => CRASH.

Using version 1.10.3 on windows 10 64bits nvidia geforce gtx 1650

Other than that it is a great tool :-)
Thank you.

PS: should I post on github instead?


hi! Thanks for repirting the issue. Ill try today, sorry for the inconvenience.. yeah it would be nice if you open the issue in github! Thanks

I just tried in my pc and worked fine. This afternoon ill try in another widnows pc.

Yes, its crashing on some machines. Thanks for the heads-up! If you could open an issue it would be great.

Also, if you could, try dropping the image in laigter instead of importing.


Ok, i think i fixed it. It will be released a patch soon.

(1 edit)

Pablo, buen día; una pregunta, espero me puedas ayudar; ¿cómo se puede replicar el filtro Caricatura y Pixelado en Unity? es con shader graph? estuve leyendo los post anteriores y mencionas una solución pero para Godot, no encontré mas. El sprite agarra un efecto muy bueno con Toon y pixelated palomeados pero no es lo mismo cuando se pasa a unity; es una herramienta increible muchas gracias. Pd. no divulgare tu identidad secreta 

Hola! Honestamente, he usado unity muy poco y no estoy seguro de como se haría. En godot es muy facil renderizar el juego en pixel perfect y eos ayuda mucho. El shader de toon creo que se podria hacer facil en unity... nunca use shader graph, siempre lo hago por código . En esta semana intento averiguar y si encuentro algo te aviso.  


i literally googled for about 2 hours with my 16x16 unormalized texture to get here

and i gotta say

thank you so fucking much for this


im glad you find laigter useful!

Hello! Great tool, very easy to use!

For some reason Laigter stopped displaying imported texture into main screen after I generated my first normal map. Do you know how to fix this issue? I already tried pressing all the zoom bottons.

To anyone who expericnece this issue, the problem is that I dont have a dedicated graphics card. Here is the step by step guide to tackle this problem:

1) Download this file: https://fdossena.com/?p=mesa/index.frag
2) Unzip and copy the "opengl32.dll" file open your install Laigter folder and paste the file there
3) Enjoy Laigter even with no dedicated graphics card.


Hi azagaya.

This is a really great program, and it's allowed my friends to quickly create some really nice normal maps for a project we are doing together. However, we have a question. 

When we import the actual normal map into Godot, the normal map itself works. However, we can't seem to get the lighting to work the way your test light in Liaghter works, specifically the Toon and Pixel filters. Could you explain to me what you used and how you made those filters possible? Specifically, did you have to use shaders, or a set of layered circles etc... ?

They look great and we'd really like to try and put that kind of light into the project. For reference, we are using Godot (if that matters, but I don't think it does).

Hi! The Pixelated and Toon options in Laigter are only for visualization.. that information cannot be exported with the map.

To replicate them in godot, for the pixel filter, you just need to import the textures with filter option unchecked.

For the Toon lighting, in godot 2D you need to write your own shader. I made a simple shader for my game with a simple toon efect. if you are interested, reach me at discord and i will share it to you. This is the discord link: https://discord.gg/88kJqry

It matters which engine are you using, because each engine has different features out of the box. With godot you have normal map, but no specular or others in 2D, for which you should implement shaders.

Also, for using with godot, remember to invert the y axis of the normal maps!

Wow, huge thanks for the quick and informative reply! I will send you a message on discord asap.


you have created an absolutely brilliant program here. thank you very much for your fantastic work =)

i would like to output the preview view directly via commandline. maybe you could add this possibility... and in this context also restore the lights (position, color, ...) via preset when loading via commandline?

my wish may seem strange, but i would like to use your excellent program to automatically give sprites a bit more depth without explicitly using normal maps in my game.

Hi! Im glad you like it! 

The problem of being able to output the preview with the command line is that the Qt framework needs an active opengl widget for rendering it. So the gui needs to be launched for that. The other maps are calculated in cpu instead. Maybe i can find another way to implement it. Thanks for the suggestion!

Gracias Pablo, una herramienta increible!

Me alegro que te haya gustado!

Por favor, no reveles mi identidad secreta!


Awesome program. Im trying to figure out how to use this to make deep effect on a top down building game, and day/night cycles, i would love if u can recomend me any tutorial on this program becose i couldn't find anything

Hi! i'm glad you like it! Can you share some screenshots of how your game looks? And what engine are you using?
About tutorials, there are a few on youtube... I have some unfinished tutorials that i hope i can release soon.

Awesome! I am using Godot an was looking for a tool to help generate normals for pixel art sprites, and was disappointed to learn that SpriteIlluminator apparently does not provide an option for y-invert. This is where Laigter came to the rescue!

Hi! i'm gald you like Laigter!

But to be fair, i think you can invert y in sprite illuminator, right before you export.

I want to know if the tool is free for commercial use without conditions


You can use it freely!


How can i change language manualy? I like to use all kind of tools in english, even if my native language is portuguese. Is there a way to change it?

Awesome tool by the way.


Hi! thanks for the kind words! this is a featured implemented in master branch. It will be included soon in 1.9 version, when i finish project file save/load. Here is a twitt about it!


Thank you for the reply! Glad to see this nice tool is improving!
Keep up the good work!

great tool



AMAZING!!!! thankyou so much!

Wonderful program <3

2 questions:

-Is there a way to change the language from a menu? 

I work on a spanish machine, but do English Tutorials and work with American Coworkers.


-Is there a way to Batch Render alot of images?



About the language, you cant in current version.. is planned for next version. If you are on windows you may try renaming the laigter_en files in the installation directory with laigter_es.

About the export, when you click export in the export dock, all oppened textures will be exported. Is that what you need? You could also use cli commands for using without gui

Yes! thats exactly what I needed~ thank you <3

Can´t wait for the next release, good luck! I´ll support you anyway I can as thanks~


thanks! 1.9 is taking longer because too many refactoring is going on i  the backend. But i hope ill finish it soon!

This shows how you will be able to change language in future version :)


can i use this in : "game maker studio" too?


Yes you can, but you need to make/find a shader for that. See this for reference. If there is enough interest, perhaps i can make a tutorial for this.

thanks so much i'll see this soon i have game maker studio 1.4.9999 i'll try this soon and thanks again :)

Is there a way to flip normal map colors to work with different lighting engines such as Godot?

(1 edit)

On the left side of the screen (under the "Normal" tab) there is a section called "Axis:". You can flip the X and/or Y axis there before exporting.

Thats right! Thats the way to flip normals. Thanks for taking the time to answer!

Thank you for this tool! I came back to it after a couple of months and I am very excited for the progress that has been made on it.

Thanks! Im working really hard on this tool! I really appreciate your kind words. Lots of new features are planned.. but they take time!

Yes! thank you for the answer, I saw it there but dismissed it because it looked like it was inverting the height (making bumps into dips). I may need more sleep... Again thank you.

you can also use those checkboxes to invert height. In fact,i think it would be useful to add an invert option on export, and leave those checkboxes only for inverting height.

I must say that in 1.8 there is a bug that affects flipping in some way. Please see: https://github.com/azagaya/laigter/issues/31

To workarround it, modify "distance" slider AFTER checking the invert checkbox.

Hi there!
You should update the description with the new translations available ;)

Oh yeah, sorry!

Haha, that's ok! Just letting you know ;)

(1 edit)

Some suggestions for future updates...

1) Currently you can add lights, but cannot delete them afterwards. Need the ability to delete added lights

2) Creating, Edit and Saving of project settings so we can comeback and edit what we have made. From programmers viewpoint... you would just save a text file of the path to the image and all the settings.

3) If you keep the export canvas function, a) change icon to something else beside an animation/video icon; b) The ability to edit the dimension (WxH) of the canvas.

This is a really awesome software tool that I could someday use to make certain 2D games pop out with DEPTH. If there is one feature missing that would be beneficiary is the ability to save the laigter setup as a template file so then users and artists would be able to reload the exact lighting setup for any sprites in production.

Hi! Im glad you like Laigter!

You can save settings of the currently selected texture y the preset manager. You will find the preset manager button in the toolbar. In the left there is a list, where "lights" option is unchecked, you can check it before saving if you want also light settings for that texture to be saved.

Is that what you needed?

(2 edits)

I tried the preset, but how do you load it? I clicked the import and apply button but nothing happens

Hi! After you save the preset, in the combobox at the top right, you will see it. Then you select the textures to which you want to apply the preset, and then click apply. I think i really need to write docs about Laigter.

I also think the is needed as well. From just a graphic designer viewpoint. I would want a project file too. This way I and edit a project, say a day or so and not have to rebuild all the settings.

(1 edit)

Hi, how do i save the preview image. it saves all the other maps but not the3 preview image. i don't use your app for games, but just for general graphics. thanks for a neat program.

(1 edit)

If you are using Laigter 1.7, you save the preview of the current selected texture with the icon in the toolbar!

(1 edit)

Okay it works, but when it exports it exports the entire screen leaving the little image in the middle. Meaning I have to crop it to use it.  See the image below . Even though you can't see the boundary it extends three times wider and taller than the little 3D image itself . Save the image to your hard drive and then look at it you will see what I mean . 

Uh, i see.. this must be a regression as i fixed that bug some time ago. Let me check in this days and i'll wirte you back. Would you please open an issue on github?

Okay submitted bug report. Thanks

Thanks! Also,would you check if there is an unchecked  checkbox in the export dock widget? I think one of the changes in 1.7 was to add that option there to export individual previews

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

Deleted 1 year ago

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?

Deleted 1 year ago

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


Deleted 1 year ago

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!

Viewing most recent comments 1 to 40 of 53 · Next page · Last page