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!

PlatformsWindows, macOS, Linux
Rated 5.0 out of 5 stars
(114 total ratings)
Tags2D, normal-map, parallax, Sprites, tool
Code licenseGNU General Public License v3.0 (GPL)
Average sessionA few seconds
LanguagesEnglish, Spanish; Latin America
LinksTwitter, Patreon, Source code, YouTube, Discord, ko-fi


Download NowName your own price

Click download now to get access to the following files:

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

Development log

View all posts


Log in with itch.io to leave a comment.

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

This is great. Saved me so much time manually making normal maps for my pixel art game :)


Im glad you found it useful!

Hi, is possible make a red mask with laigter? some tuto's? thank for sharing laigter save me s2!

Hi! I'm not sure what you mean with a red mask. Can you elaborate please? 

I'm glad you found Laigter useful btw!

Sorry, I made a mistake in my previous message. What I meant to say is that I need to create a red color mask texture for Unity, similar to the example shown in the image. This is for reflecting light.

Mmm, no, laigter doesnt have something to create such a texture. Maybe you can try with a specular map, but youll need to change the color by hand.


Hi! I have a question, I couldn't run the the app on my mac. What version would I need for this?


I dont have access to a mac anymore to compile and test the project. You can try the app from here https://github.com/azagaya/laigter/releases  (laigter.zip), but i cannot do much if it doesnt work, because i cannot test it myself anymore on Mac... Sorry

thanks so much for your reply, that did help! And thank you so so much again, cause this has literally just saved me hourssss of work! 


Im glad it worked!

Is there a way to convert textures in batch?

If they are many files, you can use the cli to process a list of files, or all the files in a directory.


It took me to much time to find this omg

muy cheto esto!!!


Olá,  adorei o software, é fácil e pratico, e talvez algum dia eu poderia usá-lo em um possível jogo no futuro.

Mas estou um pouco confuso na parte de licença do software, se eu apenas usar ele para criar o normal map do Sprites do meu jogo, o que eu devo fazer? devo colocar os créditos? (o que obviamente eu vou dar o créditos, pois isso ajuda bastante na produção de um game!). Meu jogo pode ser pago se eu usar esse programa nos Sprites do meu jogo? 

mas é um ótimo programa! só estou com essa duvida mesmo.


Hi! The license only applies to the code of the software. You have all the rights to use whatever map you generate with it (as long as you have the rights to use the original image where you generated it from.
So, if you use laigter to generate a normal map from a sprite you have legal right to use, you can use those normal maps in your games, even commercially, without need to give attribution or anything. The maps you generate with laigter are yours.

The license only apply to the code of the tool, not its output.


Oi! A licença se aplica apenas ao código do software. Você tem todos os direitos de usar qualquer mapa que gerar com ele (desde que tenha os direitos de usar a imagem original de onde a gerou). Então, se você usar o laigter para gerar um mapa normal a partir de um sprite que você tem direito legal de usar, você poderá usar esses mapas normais em seus jogos, mesmo comercialmente, sem necessidade de dar atribuição nem nada. Os mapas que você gera com o laigter são seus. A licença se aplica apenas ao código da ferramenta, não à sua saída.

(1 edit)

installed windows exe 1.11.0. I love it except for one minor (major) issue. I can't get the toolbar or export widget to show up.  When I make the toolbar visible only the 3 plugin options show up (and seem to work just fine with the available brush plugins) but nothing else, no save, load, zoom, etc. Also, there is no "export" even listed in the visibility list.

Hey! Can you share me a screenshot of the problem? Can you join the Discord server (link in the tool page) and send me details of the issue over there? 

(1 edit) (+1)

Hi azagaya, thank you for the tool. I have a suggestion and would be happy to tip you $50 to $100 if you can implement this.

Is it possible to use a limited color palette to make normal map for pixel art? It will make your tool perfect for pixel art.

 Examples of limited color palette for pixel art:

Is this for the normal brush? Or you want the generated normals to be limited to those colors?

I want the generated normals to be limited to those colors.


Ok, ill try to work on it for next release!

(4 edits) (+1)

Thank you so much! I believe this feature will make pixel art look a lot better. I have tipped you $30 on kofi for now. 

Maybe you can use these 2 limited color palettes.

Coarse palette:

Fine palette:


Oh thanks a lot! That wasn't necessary! Also, have in mind that i work on laigter on my free time. These changes can take a while to be implemented.


I this is the first tool to generate normal maps that I've ever come across that works on Linux. Good stuff too!


This is a very good tool. Thank you 🤗


Thanks! Im glad you like it!

I am curious how this works. Do you have any links to papers or something naming and explaining the techniques?
Looking through the code I guessed that the shaders just render the images with lighting using the generated normal, spec, POM, maps? Are the calculations actually all done in `fshader.glsl`? or is there some CPU image processing somewhere else? I'll keep digging.
I wanted to try applying it to image masking or see if there's a way to do something like it in real time with a shader on the GPU.


fshader.glsl only does the rendering. The maps are calculated in the CPU using cimg image processing library. All the code is in image_procecssor.cpp. For the normals, is basically obtaining a heightmap from a distance transform, and the grayscale version of the image, and then using derivative opperators to get the normals.

Everything could be done in shaders (the most difficult part would be the distance transform, which i guess you could do with SDF?). I tried in the past to migrate everything to shaders, but the changes were too much and i didnt have the time. I also never sorted out how to do cli exports without a window if they depend on OpenGL, so CPU was better for that.

I suggest you keep it in CPU because it is not intended for real-time but to export. If you achieve a GPU version my personal preference is have the possibility to switch between GPU and CPU. Because it can give different results, so I prefer to have the ability to choose.

Yeah, thanks for the suggestion. I don't have any plan to change the generation for the time beign to GPU, so it will still be done in CPU in the future.

Really good tool for generating normal maps. Tried and results having good quality. Also useful configuration options. Still I found a bug. When using the Tile mode and adjusting the neighbors, the data is not saved into the file. After restarting the tool and loading the project all neighbor settings are lost. I would appreciate a fix here.

Yeah, this has been reported, and im working on a fix. Sadly is taking a long time as my time has become more lmited over time.

Nice to hear! Looking forward to it, but take your time.

Sorry, i missunderstood and thought you were refering to the issue opened in github about saving neighbors as presets.
The neighbors were already being saved in the project file, so i checked and it seems that they were being reseted after the load. I just pushed a fix to github. Once i finish the feature of saving the presets ill publish a bugfix release.

(1 edit)

Ups, yes, you are right. I re-read the github issue and it is indeed another issue and NOT the one I faced. So, yep, I would highly appreciate the fix in a released compiled version of Laigter, so I wait for the next release!


Thanks for fixing the issue and releasing a new version! The neighbor tile settings are now saved/loaded correctly from the project file. I now fully integrate laigter in my asset workflow. I also made a small donation as gratitude.


Thanks! Im glad you find it useful! I still need to improve the settings for tiles, but that will require more time as it probably implies a rewrite of the presets,.

Hello, thanks for amazing app! On Windows it works perfectly, but on Linux (Fedora) I ran into problem - there is just black screen. I have GTX 1650 TI and last NVIDIA drivers. What can possibly be an issue?

And also, please add negative height to normal maps, there are cases when I need to lower height, not to raise.

Hi! Im not sure what can be happening, as i have the same gpu, and it works fine on my Linux pc (Ubuntu 22.04). I didnt try fedora but i can ask some coworkers to test.

About the negative normal maps, isnt enough to invert the x and y axis?

Oh. I didnt think about that. Thanks.
And about black screen - my OpenGL is 4.6.0, but there may be some problems with Nvidia drivers, so I am working on it. If i would have some results - will write back.

Thanks! Just write me here or on discord if you find anything! Btw, i just had a friend test it on his Fedora 38 and worked fine for him too. 

Hello, it may be a false positive but out of curiosity, I scanned the .exe of the program in VirusTotal and this set a Trojan-type malware alert.


Yeah, is a false positive.


Great software that was integral to me achieving my art style.

Used here and credited.



Thank you for an absolutely fantastic piece of software, @azagaya! This has been my secret weapon in developing a good looking game as a first time solo dev.  

Here's hoping Laigter becomes widely known, and you get to sell out to a big soulless corp! 

The second one is optional :P


Thanks! I'm glad you like it! Laigter will always be open source!


I'm trying to generate normals for a large tileset, and this seems to work perfectly, however I need to set each tile to have itself as all its neighbors in order to tile properly, and this is pretty time consuming. Is there any faster way to set up the neighbors for all tiles?
I've also noticed neighbors don't seem to save with the rest of the project.

Right now there is no other way than setting the neighbors manually, I was testing some ways to provide this, but i couldn't find yet an easy way and I'm currently very busy with work.

The neighbors not being saved must be a bug, because it should definitely save. Ill try to fix that on my vacations.

I'm making use of this excellent tool in my project now and I'd like to list you in the credits, should I put "Azagaya" or something else? And link to this page, the github page, or something else

yeah! Azagaya and a link would be great! Thanks!

(1 edit)

When is the next update


Probably in My next holidays as i'm really busy with work and games. That updated Will fix some Bugs and add some translations. No new features had been added so far for it, but You can always request if You need something!


This tool worked wonderfully for me! I used it in my latest project (Pentamental), I credited you in the description, too! :D

I'm glad You find it useful! I'll check your project soon!


Hey there, I've just downloaded on Mac but it's saying

“laigter” cannot be opened because the developer cannot be verified.

Any ideas?


Laigter is not verified in Mac because I cannot afford a dev license just for it.

You can try some things to add it as an exceptions, that other users reported that worked:

  1. Open Finder.
  2. Locate the app you’re trying to open.
  3. Control+Click the app.
  4. Select Open.
  5. Click Open.
  6. The app should be saved as an exception in your security settings, allowing you to open it in the future.

If that doesn't work, you can try this:

  1. Open the Apple menu, and click System Preferences.
  2. Click Security & Privacy.
  3. Click the General tab.
  4. Click the lock in the lower right corner of the window.
  5. Enter your username and password when prompted, and click Unlock.
  6. Click the App Store and Identified Developers radial button.
  7. Look for “(App Name) was blocked from opening because it is not from an identified developer” and click Open Anyway. (In older versions of macOS, you could click Anywhere and then click Allow From Anywhere.)
  8. Try rerunning the app.

The second way in System Preferences worked! Thanks so much :)


No problem!


Having to pay for dev licensing no matter the scale of your budget is so dumb and annoying.


It is indeed...


Hello, thanks for this nice tool! I just have a question, can i make normal maps for pixel arts?


Yes you can!
You have a "Pixelated" checkbox in the Visualization Dock. Check it. Also, for normal maps and pixel art images is usually better to use low distance and height values, as well as smooth values.
If you have more doubts, join us on discord and i can share you some screenshots, or you can send me some of your pixel art so i show you how to use with it.

I share you an image where i use laigter with pixel art game!

Deleted 2 years ago

can you give me best setting for pixel art normal maps

It depends a lot on your art, but usually start by using very low values of distance and height, and trying from there.


Hello, thank you for putting out such a great tool at name your own price! Is it possible to generate normal maps using only the command line with it? Would be awesome if I could   include  it   into an automated pipeline

Yes! its possible. You can call laigter from the command line with --help to see the possible parameters.
In summary, doing `laigter.exe -d "path to texture" -n` will generate normal maps with default settings.
You can use the ui to generate some presets, and then use the switch -r to tell laigter which preset to use while generating through the cmd.

Oh that's incredible, thank you!

Purchased it now officially and it's perfect!  Thought I should tell you about the tiniest of bugs, that from the command line the --no-gui flag works as intended but -g does not (at least according to --help)

Okay only issue  is I can't seem to get the preset working from the command line. I   can  create a preset in the gui and export it somewhere, but whatever I try to point the  arguments at the preset file, whether in the same directory or not, doesn't seem to get used. The defaults would be fine actually, if only they included transparency/copying the alpha channel.  Is there something I'm missing or is this perhaps a bug with the command line usage?


Hey! Thanks for the purchase!|
Im sorry to hear that you are having inconvenience. Today after work ill check it and get back to you, because perhaps is a bug or regression.

Just passing the path to the preset should work. Ill look at it to fix it asap.

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 2 years 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.

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