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 lets 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 primarily 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 on the point of view, so you can create, for example, depth effects in backgrounds like brick walls.

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

Version translated to Spanish, English, French, Brazilian-Portuguese, Catalan, Japanese, Danish and German!

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.7 Installer
Laigter 1.10.7 Portable
Laigter 1.10.7 App (Experimental)
Laigter 1.10.7 AppImage 25 MB

Development log

View all posts


Log in with itch.io to leave a comment.

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

Man, this tool is really awesome! Thank you

I'm glad You like it!

This is a great piece of software, thank you for everything you do for internet sharing, it will play a huge role in my game

i'm glad to hear that!

Hi. I make a comparison from Laigter (open source) with Sprite DLight (proprietary).

Your software is awesome. I could generate almost the same textures as the Sprite DLight.

PS: I don't have the sprite DLight. I just take the example from the web site and make a similar one with laigter generated textures.

Thanks for the comparison! Sprite DLight seems to be a great software! I never had the opportunity to try it. I tried to make laigter as complete as i could!

Hi. I never use Sprite DLight to.

I get the results image from this link.


Hi, i have a problem, each time i try to export an image it comes up with an error that says "Could not export maps. check destination's permissions" any solution?

Probably You are trying to export to a directory that laigter has no permissions si save to, try saving in other directory. Or moving your original files to folders with public access

Hi @azagaya,

I would love to use the normal map brush, but whenever I install it, laigter crashes.

I use the flatpack version and the plugin file downloaded in the plugin page.

cheers atn


The flatpack version is not maintained by me, and its an outdated version. Plugins from here only work with latest version. Can you tell me the version of the flatpack you are installing?  You may try with older plugin versions found here: https://github.com/azagaya/LaigterNormalBrushPlugin/releases

Great tool!


I have a problem - images are not displayed. Judging by the documentation, I did everything right

Deleted 210 days ago

Sorry, i deleted previous answer. This seems to be related to a not supported opengl version by your gpu or drivers. Could You tell me your PC specs? Have You updated drivers?

Hello! This is a good software, but I found that this software does not have Chinese. I hope this software can have Chinese, because I am a primary school student and I don't know so much English. Please adopt my opinion, thank you!:)

Hi! It would be great ti have Chinese language, but i don't know Chinese, so i have to wait for someone that knows to make the translation.

I downloaded the link for windows but when I try to open my pixel art (png file) there is only a black screen

Hi! would you tell me what gpu you have and what is the supported OpenGL version for it?

(2 edits)

My GPU is called Mobile Intel® 4 Series Express Chipset Family (Microsoft Corporation - WDDM 1.1) and the supported openGL version for it is 1.1

Oh, unfortunately OpenGL 1.1 is too low for laigter. You could try running it from command line with -s parameter. Or using a software opengl implementation, but im not sure if it will work. Check this: https://github.com/pal1000/mesa-dist-win

Ok, thanks!

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.  

Hi! Just curious to know if you ended up finding something. I've been messing around trying to do the same thing. here

Not really sorry, i havent tried to implement that kind of shader on unity.


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.

Hi. I'm  having some issues exporting maps. I keep receiving an error message saying check permissions of the destination and I don't  know how to fix this

Where are You trying to save the exported images? You are using Windows versión, right? 


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 ;)

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