Pack of brand new textures, grass and effects in high resolution for Call of Pripyat and Call of Chernobyl based mods

Report RSS Basic of Bumping Bumps and Remaking Remakes

Not long and not to short basic tutorial of remaking and creating bump textures for Stalker with all necessary steps to make it work in game...

Posted by on - Intermediate Textures

I wanted to make that tutorial long time ago, but its just sooooo boring and time consuming so I always put it for "later". But today I had some mood for doing boring stuff and I decided to make it for you all.

First of all, I need to point out why its not video tutorial: I dont like them. Seriously, Im old fashion in many way, and even if some stuff can be better explained in video, I prefer good old images and text. Why? Mostly because it force user to actually thing by them self, Im not gonna point out every thing like you would be little kid, I will not gonna show every mouse movement because if you managed to wake up, eat breakfast, and turn on PC you should managed to understand whats going on by yourself :]

Also important thing: I forgot to change language of GIMP to English... sorry, but overall if you want to remake texture you should know basic of GIMP so just placement of options should be enough to understand everything.

Second thing, I was going to remake some more complex thing but I realize that it would be way to long, so I choose basic texture with just one material in it. It should be enough to show basic things about creating textures and bump maps for Stalker.

Third thing. Why I use GIMP, not Photoshop? Because I prefer GIMP. The End.

I will do some errors and not gonna use some of its features of GIMP on purpose to show some stuff that are easier to understand when they are made by hand.(like eg, not using layers modes or using some of colors options). There is lots of tools that help working with gimp but for now we gonna focus on basic.

So now when we explained those three things lets start.

Things that we will need:
- GIMP, any version, Even if there in new version I still prefer 2.8.22 mostly because better compatibility with some plugins that I use. You can find gimp HERE
- Gimp DDS plugin that you can find here: GDRIVE
- Normalmap plugin that you can download here: GDRIVE
I also use some smaller plugin but they are not needed and are mostly related to do some additional fancy-dancy effects.
- AXRTools for modifying THM files, you can find it here: GDRIVE
- its good to have graphic tablet for such work but you can make most of it using mouse.

Now when we have all things set up, we can open our texture. When we open it using gimp we will see window popup with some options related to DDS file format.


We dont need mipmaps, so we uncheck that option and click OK.

Out texture for remake will be small thing, simple and quick to do:


First thing what we do is resize texture to some nice big resolution.

TIP: I normally make everything as big as possible and then resize it to fit the game, but for most of time you should always take in to the account placement of texture, because you dont need some big res image on small models or places where player dont see it or see it only from distance.

Our image is tall, and not seen often so lets pick 2048x512 resolution:


Now we need donor image, image that have part that fit to our needs.

I personally have huge collection of such files that I gathered over past 15 years. I always try to pick images that are free to use, its sometimes hard to know if image is free because of crappy-ass sites like depositephoto that steel from others take free images and try to sell them(I know that because for some time I was selling my own images and textures and I was ripped of because I found my own images in other sites for sale...)

Overall its a matter of using google image to find good images that can be used for texturing, there are also lots of sites that gather them and distribute for free, like texture lib or lugher textures.
We gonna use this texture because its fit pretty good to original one:


We need to pick up parts that will fit to our texture.

TIP: Its good to set edge smoothing to few pixels so it will blend with other textures better, you still will need to do some manual fixes but it help a lot, depending on material you copy, its good to keep it between 3 and 15


Lets copy them to our texture and fit it match original size of tile:


Copy/paste it, to fill all line. You can also copy new parts, but we gonna keep it simple:


Now lets do other side. copy/paste, then we use "flip" option to reverse it vertically so it will not repeat it self so much:


Now lets make middle part. We need some parts for it so lets use again our source image:


We gonna repeat the same steps: copy, resize, fit:




Now last part, damaged parts.
We are lucky because our source image have already such parts so we dont need to look for it in other images:



Now that we have our parts we need to stitch them better by smoothing all sides, we gonna use for it nothing more than eraser.

TIP: if you don have graphic tablet with pressure sensitivity, its good to set eraser or brush tool to 50-70% transparency and do lots of smaller mouse movements than one big, it will create more... natural effect.


Just few strokes here and there and all parts fit to each other.
Now lets make our texture sharper, we loose some of quality because of all that resizing:

TIP: Instead of using one big change in sharpness its good to set it to eg 15-25 and hit Ctrl+F to repeat effect until we get result we need.

Now next part.
We gonna select damages parts on our new texture, for that we gonna use "select by color" tool.
We doing that so when we gonna change colors of tiles we not gonna screw colors of filling and damage parts. We also gonna use those damaged parts later so its better than just selecting parts that we gonna color.

Also before we gonna change any colors, lets save our tiles as separate layer and move it to back, it will be useful later.

Now to change color we gonna use few settings: "Color and Saturation, Brightness and Contrast" and levels. Im not gonna show you every setting that I use because for 90% of time you dont use it in specific order. You really do small changes of every setting one at the time until you get proper results. Of course you can use special filters or do it automatically but using automatic modes you get... automatic effect(read: average or crap result).

Now when we get our colors right lets get back to our damages parts. If we would leave them after changing colors so much those parts would be black and ugly... but now they are not pretty as well, because some white elements from original color are visible, so lets fix them a bit(graphic tablet is really helpful here):

We dont need to focus so much on details, later we can fix smaller bright spots with level tools.

Now lets add some details to texture. I will not gonna focus too much to make it exactly like original one, in this texture id dont matter that much, so we add just few dark spots here and there and we add some texture effect on it:

Now lets add those few painted tags that are on those original tiles:

They are not realistic at all... but this texture will be small anyway, and player will not gonna see it often, point is to make it just look right :]

Now lets add more shading to texture, I use variation of brushes and shading tool.

TIP: its good to keep some heavier shading as separate layer, it will later not mess your bumpmap, because you can just disable that layer. In bumpmap section I will explain that in details.

TIP 2: If you using shade tool(burn/light) try to not use solid brushes, pick one that look more like cloud or are not one big blob. Its also good to select dynamic to "basic simple", it will rotate brush with every move so our lines will be not so straight.

Ok now when we have our Diffuse texture ready, lest check it out, and if needed add more effects or sharpen it.

After we finish it, we gonna need to flatten our image or at least connect all layers together and fit them to image canvas. ITS VERY IMPORTANT! If we dont merge all layers and fit it to image canvas, our texture will save only currently selected layer and use its size.

After we done that, lets export it.
Just select option: File->Export as...
We gonna save it as DDS file, after we click "save" popup window show up with specific settings that DDS file have:

All flat diffuse textures save as DXT1. We gonna need to create new Mipmaps so we select "Generate Mipmaps" from menu. Then select "Advanced" and from "Filter" choose "Kaiser". Basically it make mipmaps textures tad sharper than normal filtering that blur them when minimize. Rest of options we leave alone, we dont need them now.

TIP: Mipmaps are basically smaller version of our image(power of 2) saved as layer one after another. Power of 2, mean nothing more than each texture is x2 smaller than previous one, so for example if we have texture that is 1024x1024px first mipmap will be 512x512, next will be 256x256, then 128x128 until we reach 1px.
Mipamaps are used to render textures in distance, it take more memory but it need less power to render textures in game so overall it good for hardware even if it need more memory, but to clear confusion, we dont talk about RAM but graphic memory(VRAM).
But why use mips at all? Well if you render texture in distance it will gonna create weird line pattern that just look ugly, its especially visible if you dont use any texture filtering(anisotropic filtering), and as I said it use less power to render, because game render smaller images in the distance.
To see how Mipmaps work in stalker see this gif: LINK

Other thing that some of you probably wondering about, is what is DXT?
Its nothing more than unified texture compression format used in any DirectX game/program. There is no point of explaining it beside mentioning this:
-If our texture dont have anythig transparent: save it as DXT1
-If our texture have transparency: save it as DXT5
So what about DXT3? Well DXT3 is useful when our texture use more levels of alpha but its not complex and DXT1 mess it too much...

But now lets return to our texture.

Now when we finished our Diffuse texture, now its time to create most important thing: Normalmap.

Normalmap, also called Bumpmap, is responsible of bringing more life and realizm to our texture. It create fake 3D effects on 2D texture, like name say it "bump" it, bring specific details of material, create holes and hills on image that react to lighting in game, so depending on light direction it will bounce that light like it was 3D.

There is lots and lots of ways to create bumpmap, to create perfect bumpmap you need lots of work and experience, you need to understand how that famous violet colored images work.
But we will stick to basics, after some works most of you will get how it all work and how to use it.

Now we gonna do our normalmap in one of simplest way: black and white way.
You need to just remember simple rule: "Anything that is bright will be high. Anything that is Black will be low"

Its mean than anything that is dark on our texture will be saved as concavity after we use any bumpmap plugin or app, and anything that is bright will be saved as hill/bump. More darker/brighter it is, the more/less bumpier it will be.

Now when we know that, we can beggin.
Lets start with disabling all additional shading layers, we dont want to those layers saved in our bummap because they are just pain/dirt.
After that we gonna focus on cracks that our tiles have, we gonna use nothing more than simple brush tool to select cracks on our texture and pain them black in new separate layer(not on main texture). Again, graphic tablet is really useful and speed up such work.

TIP: You can use different transparency and blur on lines to create more natural and detailed lines, spots and specific parts of texture. Here Im doing just simple black lines, but in bigger textures or more important ones you need to play more with shading those black/white places.

Depending on texture and its visibility we can select more or less damages, here we gonna select just most visible ones.

Now lets bring back our saved layer that we made before coloring and desaturate it. Desaturation is not needed but can help distinguish some of parts of texture when preparing it to converting to normalmap.

After that we gonna create new layer by right clicking on layer list and select "New layer by visibility", it will create new layer that will merge everything including cracks. This will be our working layer.

We also gonna prepare duplicated layer of it and use "Selective Blur" Filter on it to create one of normalmap layer.

Because our texture dont have any real bumpiness on it, we dont need to create additional layer where we would use white brush to highlight bumps. For smoother edges we gonna use that second layer that we made.

Now to create Normalmap we gonna select that layer and go to our Filers list->mapping-Normalmap

Popup window willl shop up where we gonna have some functions to select:

We select big filtering 9x9 and set high scale. Normally we would use small scale but here we need big one.

After that we blur it a bit, it will be used for smoothing edges of our tiles:

Now lets select our main layer(not blurred), duplicate it, and again apply Normalmap to it, but this time we set different setting for it:

It will be used for showing bigger details.

After that we gonna need our diffuse texture(not desaturated one), lest copy it as new layer and again apply normalmap filter, this time it will be details, so we select "4 samples" filter and something between 10-15 scale.

Now the most trickiest part. We have 3 different normalmaps, why? because we gonna merge them all to create more complex texture with big and small details.
Tricky parts is to set their transparency so we get that balance between details and smooth big shapes on it.
We gonna use that blurred part as background, then we add on top of it one with bigger details and set transparency to something between 40-50% main detail layer should be somewhere between 20-40% but its all depend on texture it self, so its all about tests. After we finish we create new layer by selecting "New layer from view"

TIP: You can also use separate apps like CrazyBump, Normalmap creator, bump Maker... anything. You just use not diffuse texture but that desaturated one. After using it copy it to our project as new layer and continue.

Now when we have our normalmap we need to prepare it to work with stalker.

First we need to separate colors by selecting "Colors->Components->Decompose"

We need to separate it to RGB channels.

New image with 3 layers will be created(white, and two gray):

We need to swap them to:

After that we need to copy on top of them our diffuse textures, you can just drag/drop diffuse texture from folder to our image, it will be automatically converted to greyscale.
Also we gonna copy to it our crack layers that we made for bumpmap and merge it with previous layer.

Now what we gonna do here?

Stalker beside Normalmap in his bump file add also specular layer, responsible for shines. Our new layer that we have will be responsible for what will be shinny in our texture. The brighter elements on texture is the more shinny it will be.
We gonna use "Level" editor from Color tab to fit it to our needs.
Because we have here tiles, we gonna left here some brightness on it.
We can also add some hand made shininess if we need.

After we finish with that we can create that famous green stalker bump file.
To do that we gonna again go to Colors->Components but this time we select "Compose"

We need to save our image with RGBA channels:

We should get our green texture:

We need to save it as DDS file, just like diffuse texture, but instead of DXT1 we select DXT5 compression:

Now we need to create highmap, in Stalker called _bump#

Highmap is responsible to create parallax effect. its mostly used in textures like bricks walls. It give textures "deepness" even more than normal bumpmap.

Stalker can make such textures via SDK, but we dont need that really.
creating _bump# files are not that hard as people think. You just need to remember few things.

Firs, lets take our diffuse textures:

Desaturate it:

Now lest select brush, set its transparency to 70% and color to #808080 or #848284 and apply it to our image as one smooth color(just set brush size as big one).

Other way to make it is to just create new layer fill it with that color and set our diffuse texture layer mode to "cover" and then change its transparency a bit and merge it together.

After that we set transparency of that layer to 50% so get something like that:

We now add black background layer so we actually can see something...

Now how that _bump# texture work exactly?

We have our layer that have 50% transparency. Anything that is bellow that will be low, anything that is more visible will be high...
Pretty much the same situation as with bumps but here we have transparency, not black/white color. And just like with bump we can make it simple or make detailed bumps and concavities. Im gonna show basic stuff.

We gonna copy to our image from previous crack layer. Those cracks are after all concavities, so after we copy them we need to select them, switch to our main layers(deleting cracks layer, we dont need it anymore), and using Eraser tool set to 30-50% remove those parts from layer:

Now lets take care of damaged parts. Lets select them all and remove 20% of it, then by hand remove more damaged parts.

Now to make it more interesting lets select few tiles and make them more or less visible:

After that we can remove our black background layer:

Because _bump# map dont need to be big, lets resize it. Normally it can be small as 256x256px i its simple, if its more complicated it can be even 1024x1024px, its all depend on details in it but overall try to keep it bellow 1024px size....

TIP: remember that texture will dont care about transparency set in gimp. even if texture should be semi-transparent it need to have layer visibility set to 100% so its often good to just delete black layer color and then merger it with our texture so even if texture will be semi-transparent, layer it self in gimp will be have 100%

After that we can save it, just as bumpmap, DDS format with DXT5 compression...

Now we need take care of THM files that are responsible for adding bumps, details and other stuff to our textures in game.
For that we gonna use one of most amazing tool for Stalker ever created: AXRTools made by Alundaio
Its all-in-one package for every stalker modder.

Before we start few things need to be explained:
bump# file dont need thm file, game can deal without it and we have less work, most important is thm file for diffuse texture, there we can put path to our bump texture, it dont need to be in the same folder, if we have few similar textures we can use one bumpmap for them all. Other thing is that Bumpmaps have (almost)always BlinPhong material on them, this is nothing more than material that is shiny, and tho, making bumps reflect light giving it nice 3D effect. Also material weight should be around 0.5 all the time, its also important to put proper flags for texture, like if it have alpha we need to put: "HasAlpha" tag.
Last thing is detail layer, after we select our detal layer, number bellow set how often it will repeat it self on texture: bigger number=more squeezed details on it but also more visible repetition of it.

We are interested in THM editor, so we click "THM Viewer" tab and then to Editor:

Now we need to select folder where we have our texture or just copy/paste its path.

After that we select "All" from option on top to refresh list:

Now lets right click our texture to get window with thm settings.

We need to set proper resolution for it, texture format, set if its use bumpmap and parallax, if its use detail layer, flags etc.

Then we set up our bump file:

TIP: Its important to remember that all values here are case sensitive.

For more info about what are flags and what options are available visit wiki of AXRTool:

And thats it!
We have our texture that we can put in game:



Cool tutorial man! Very comprehensive

Reply Good karma Bad karma+7 votes

Extremely happy with this!

Reply Good karma Bad karma+5 votes

You are the real MVP!

Reply Good karma Bad karma+3 votes

it works perfectly, thanks man

Reply Good karma Bad karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Report Profile
S.T.A.L.K.E.R.: Call of Pripyat
Send Message
Release date
Mod watch
Related Games
S.T.A.L.K.E.R.: Call of Pripyat
S.T.A.L.K.E.R.: Call of Pripyat First Person Shooter