Creating VTF, VMT and Normals textures

Hey, you! We are one of the oldest mod sites on the Interwebs. Sign up and maximize your browsing experience.

  • Subscribe: Get notified of new submissions like this.
  • Say Thanks: Show your appreciation by sending munnibhai points.
  • Post: Give munnibhai your thoughts on this Tutorial.
  • Vote: Help munnibhai win the Monthly Awards.
  • Rate: Give this Tutorial a rating out of 10.
  • Flag: Alert moderators and warn members of a problem with this Tutorial.
  • Watch: Get notified when this Tutorial is updated.

Sound fun?

Join GameBanana

Already a Bananite? Login

Ok guys, After a lot of searching on internet, it was difficult for me to gather resources, condulting videos etc for texture creation for counter strike, so I am writing it all here in one tutorial from start to end.

Adobe Photoshop or any other similar program
Notepad++ or any other text editor

Basic knowledge of Adobe Photoshop or any other image manipulation software, like resizing, copying and pasting of image etc
Okayyyy.. lets do it.

I am just going to assume that you have an image file which you want to convert to CS texture. But before we hit the gas, make sure to check that this image file can be served when tiled and that patterns are not out of alignment. I will show it next anyways. For the sake of this tutorial, you can use the image below.

I am also going to assume from now on that you are using photoshop, the tweaks i do in PS, you can do it in your program is different, like resizing etc


  1. Open Photoshop (or the program of your liking) and open the image and open the image.
  2. We are going to make a texture of 256x256px, it can be of any size though, but make sure it is something like 128x128, 256x256, 512x512 etc
  3. We have to resize this image first, so just press Alt++Ctrl+i to open resize dialog and write 256 in both width and height and press OK
  4. Now next step is to make sure that this texture will just work fine when tiled, so we will do it manually. Copy this image and  While still in photoshop, press Ctrl+N to open new document of 1000x1000 px.
  5. Paste the image in this new window and make 3 copies of this image layer. Press Ctrl+J two times to make copies.
  6. Now we will select each layer and put them on sides and bottom of first image. Refer to images below
  7. In the images above, we now see that the patters just sit fine, there are no gaps, no unaligned surfaces, this means we are good to go.
  8. Go back to original image which we had resized to 256x256 and save it as JPG with any name that you want. I saved it as wallbrick01.jpg.
  9. Close Photoshop.


  1. Now that we have the texture file saved, we need to make its normals map first.
  2. Open CrazyBump and open the saved image. "Open > Open Photograph from File".
  3. CrazyBump will process the image for a second or two and will give you two options to select  from the height maps, choose the one which you see is correct in vision.
  4. After you have selected the option, you will be presented with the initial map file in bluish pinkish colors. You can see different other tabs at the bottom but they are not our concern atm, we need to consider the normals map look with the option on the left side. You can adjust the slider to change the normals map to your liking, but I will leave it to default as it usually always is correct.
  5. Save it as desripted in the images below (Save Normals to File) and save it with name wallbrick01_normal.jpg
  6. Now we have a normals map created and its time to convert these both to VTF format.


  1. Open VTFEdit.
  2. press Ctrl+i to open image import dialog and open the wallbrick01.jpg image first.
  3. After processing it will give you the settings dialog, we pretty much do not need to change anything in it but its better to keep both Normal Format and Alpha Format to DXT5. Press Ok to complete the settings
  4. Save this image as wallbrick01.vtf
  5. Now repeat the procedure.
  6. Import wallbrick01_normal.jpg and in settings dialog, select BGR888 in Normal Format and press OK. The Alpha Format doesn't matter at this point since we do not have any transparency in our image or that our image doesn't have an alpha channel to process
  7. After the image open, check the box which says "Normal Map". Now save it as wallbrick01_normal.vtf.
  8. Now that we have both files, its time to build it vmt file. Do not close the VTFEdit yet


Click on Tools > Create VMT File to open its dialog.
In the dialog, Click on ... beside Base Texture 1 and select the image wallbrick01.vtf
At the bottom, beside Normal Map: click the dots to open and select wallbrick01_normal.vtf.

Now in the same dialog, at the top, click on Options tab and  in Surface 1 list, select Brick. (If your texture is stone, you can select Rock, or if it is floor tile, you can select tile or "Wood_Panel" if its if wood floor etc. Different surface props generate their according sounds when walked over and act differently when fired at with bullet)

Click OK to save it as wallbrick01.vmt.


We have to change the path in vmt file because VTFEdit simply writes the path of the folder it is present into atm.

Open Notepad++ or text editor and open wallbrick01.vmt file in it. Just remove the text highlighted in red and save the file, also, refer to the images below in other case.

We now have completed the texture creation for the brick image and place all these three files, that is
wallbrick01.vtf, wallbrick01_normal.vtf and wallbrick01.vmt

together in cstrike/materials/my_material folder.
You can now see this texture in hammer and in game, you will see the normals map creating depth in flat texture.

Thanks for reading, if you see something not correct or that if something can be improved in tutorial, please do notify in comment and I will update.

I wrote all this word to word, please do rate if you think its a valuable addition to the community.



  • 4mo
    Rafael De Jongh avatar
    Rafael De Jongh avatar Offline
    Apocalyptic Flag Affiliation: Apocalyptic
    Super Moderator Joined 9y
    44,703 points Ranked 90th
    73 medals 8 legendary 19 rare
    • 1st Place - Winter Textures Contest Medal icon
    • 1st Place - GameBanana Around the Globe Contest Medal icon
    • 1st Place - Sci-Fi Skinning Contest Medal icon
    • 1st Place - Winter Warfare Medal icon
    • 1st Place - Movie Replicas Modeling Contest Medal icon
    • Submitted 100 WiPs Medal icon
    Rafael De Jongh avatar
    Rafael De Jongh
    Apocalyptic Flag
    Skinning/Modelling Expert
    >Using Crazybump
    >Diffuse normal mapping the texture

    Please stop this madness! 
    2D/3D Artist avatar
    2D/3D Artist
  • 4mo
    ficool2 avatar
    ficool2 avatar Offline
    Member Joined 3y
    1,452 points Ranked 3233rd
    17 medals 3 rare
    • Returned 1000 times Medal icon
    • 10 submissions featured Medal icon
    • Reached 50 subscribers Medal icon
    • One month a member Medal icon
    • 6 months a member Medal icon
    • Reached 1,000 Points Medal icon
    "Go back to original image which we had resized to 256x256 and save it as JPG with any name that you want. I saved it as wallbrick01.jpg."

    No!!! Do not save it as JPG. Save it as .TGA.
    Somewhat inactive modder.
  • 4mo
    CS PRO avatar
    CS:GO Ports Flag Affiliation: CS:GO Ports
    Member Joined 3y
    6,116 points Ranked 725th
    31 medals 2 legendary 5 rare
    • Submitted 100 Skins Medal icon
    • 30 submissions featured Medal icon
    • Returned 1000 times Medal icon
    • 10 submissions featured Medal icon
    • Reached 50 subscribers Medal icon
    • Received thanks 50 times Medal icon
    CS PRO avatar
    CS PRO
    CS:GO Ports Flag
    CS:GO Ports
    Very helpful .. Thanks a lot :)


    It's time .. For a change avatar
    It's time .. For a change


Shareable Image:
Share banner
HTML embed code:
BB embed code:
Markdown embed code:

More embeddable images

Bookmark and Share


Key Authors


munnibhai avatar
munnibhai Offline
Member Joined 5mo
566 points Ranked 7726th

  • Paypal Donate
Send a Private Message to the submitter



Difficulty Level
Beginner Difficulty


Normals Map


Date Added
Date Modified


  • Today's Pick Apr 15 2017


90 bScore
10 Rating

1 voter

WiPs by Submitter tracking pixel