Laigter
A downloadable tool for Windows, macOS, and Linux
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!
If you have any doubts or suggestions, join us on discord!
Status | Released |
Category | Tool |
Platforms | Windows, macOS, Linux |
Rating | Rated 5.0 out of 5 stars (126 total ratings) |
Author | azagaya |
Tags | 2D, normal-map, parallax, Sprites, tool |
Code license | GNU General Public License v3.0 (GPL) |
Average session | A few seconds |
Languages | English, Spanish; Latin America |
Links | Twitter/X, Patreon, Source code, YouTube, Discord, ko-fi |
Download
Click download now to get access to the following files:
Development log
- New Laigter Release!Aug 15, 2023
- Laigter 1.10.6 minor bugfix is out!Jun 04, 2021
- Another bug-fix release!Feb 23, 2021
- Laigter 1.10.4!Feb 20, 2021
- Laigter 1.10.3 is out!Feb 06, 2021
- Laigter 1.10.2 Bug fix release is out!Sep 27, 2020
- Laigter documentation is online!Sep 11, 2020
- Laigter 1.10.1 BugFix release is out!Jul 26, 2020
Comments
Log in with itch.io to leave a comment.
Very useful, thank you for your work!
Is there a way I can use this on tilemaps of a fixed size eg 16x16?
Hey, right now the tilemap feature works only with the number of tiles instead of the size. This is something i should add.
I added this, so you can config the size instead of the number of frames:
expect it in the new version :)
mmm the image did not appear
those who know: 💀
I'm a true beginner at this, I can't find the export options shown in YouTube tutorials, the save button saves a dotlaigter file that Godot doesn't recognize. I don't get it...
Edit: okay so, I didn't see the "Target Directory" option, thanks for this great tool Azagaya
Very nice tool, thank you! I was wondering if anyone can direct me to a tutorial on how to achieve the pixelated+toon type lighting in Godot 4? I'm guessing it involves some shader work but I can't find any instructions on how to do it.
Hope it's what are you looking for.
Thank you so much!
The tool is really useful, thank you for developing it! I did notice however, that scaling sprites up will not affect the size of the export. This seems to be intentional as per the documentation, but I was wondering if applying this onto the export files would be possible to add?
Linux: laigter 1.11 keeps crashing after import image
the one 1.10.7 from github works ok.
great work
My laigter program keeps shutting down when I import a laigter file.
Can you share me the file that is giving you issues?
The only setback is having to redo the entire texture, other than that no problem. I have a laigter file, how do I share it?
you can join the discord and send it there, or maybe through filebin or something similar?
Totally forgot about file bin. Shared 2 files. Both causing the same problem.
https://filebin.net/saysrozvauvwqnug
Thanks, ill check them on the weekend
Thank you for the wonderful tool! This is seriously awsome.
One suggestion or feature requests that I would have is that the Tile Sheets options could be expanded a bit:
- It would be nice if the H and V options could go higher than 99. I am currently splitting the sheets manually before importing them to Laigter, but it would be nice to just have it work without having to do that.
- It would also be nice to just be able to input the tile size height and width directly. The sprite sheets I use all vary in size, so now I have to manually calculate the horizontal and vertical splits for each one.
- It would be really cool if the individual tile cells could be combined to make different sized and shaped individual cells, sort of like it works in Godot's tilesets/tilemaps.
But if this is the only critique I have, then I think that means you have done an amazing job. :)
Thanks for the feedback! At the moment im only doing maintenance of the tool (fixing bugs) because of lack of time, but perhaps the first two requests are simple enough to add them.
This is awesome for a solo dev like me doing some art, it improve so much my game, thank you for this amazing tool !
I'm glad you find it helpful!
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!!!
Gracias!
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.
TRANSLATED WITH GOOGLE:
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.
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?
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:
Hi,
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!
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.
Hi!
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.
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?
P.S
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.
https://lampewick.itch.io/spoopy-garden
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!
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:
If that doesn't work, you can try this:
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!
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.
http://www.2deegameart.com/p/sprite-dlight.html
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
Hi,
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!
Thanks!
I have a problem - images are not displayed. Judging by the documentation, I did everything right
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?