This is archived copy of currently unavailable Nem's Tools website, restored from Web Archive.
Download section now provides links to both Web Archive and to this unofficial Github mirror.
About VTFLib - NemPosted: Apr 18th, 2005 - 10:27:01 pm

VTFLib is a LGPL open source programming library, written by Neil Jedrzejewski and I. VTFLib provides a C and C++ API that, with a few simple functions, can open and save .vtf and .vmt files, providing access to all known features. The library functions independent of Steam, allowing third party applications to use the library without Steam present or runningi on the target system.

VTFLib includes two GPL example applications, VTFCmd and VTFEdit. VTFCmd is a C command line frontend for VTFLib that can create .vtf and .vmt files from various source formats. It is similar in functionality to Valve's vtex Source SDK utility, but offers a lot more control. VTFEdit is a C++ .NET graphical frontend for VTFLib with viewing and creation capabilities. Both VTFCmd and VTFEdit support several source image formats, including, but not limited to .bmp, .dds, .gif, .jpg, .png and .tga.


VTFEdit .vtf frame/face/mipmap viewing. VTFEdit .vtf information viewing.

VTFEdit file system browsing. VTFEdit .vmt viewing.

VTFEdit import options. VTFEdit batch conversion options.

VTFEdit .wad conversion options. VTFEdit .vmt creation wizard.

VTFEdit .vmt creation wizard. VTFCmd command line options.

Documentation: Features:
  • Convert .bmp, .dds, .gif, .jpg, .png and .tga files to .vtf and .vmt files with easy access to all .vtf options.
  • Convert .vtf files to .bmp, .jpg, .png and .tga files.
  • Convert entire folders to and from .vtf and .vmt files.
  • Convert .wad files to .vtf and .vmt files.
  • Explore .bsp, .gcf, .pak, .wad and .xzp packages.
  • Preview .vtf files.
  • Recent file menu.
  • 100% Free.
Download: Third Party Downloads:
Modified: Sep 14th, 2007 - 3:28:10 am[ 447066 Views ]

[ 1 2 ]

1. NoBodyPosted: Apr 19th, 2005 - 4:25:31 am
Gj, i told the creator of fragmotion about it and he is considering building it in to fragmotion.

2. NemModified: Apr 21st, 2005 - 4:06:09 pm
Sounds good. happy

Some features we are working on for the next version (if you have any requests let me know):

- .vmt C creation routines.

- Basic .vmt creation (similar to vtex).

- Toolbar.
- Paste as new.
- Zooming.
- Alpha mask.
- Integrated file system browser.

You can find a preview here.

3. amckernPosted: Apr 21st, 2005 - 2:37:22 am
Can you please mark the bin better, i downloaded the sdk, first, and thought, WHERE ARE THE .EXE'S

So please, mark one as the exe style, as you have with your other tools



4. NemPosted: Apr 21st, 2005 - 10:50:45 am
I'll be changing the distribution for the next release, separating the code from the binaries and also providing an archive or installer for the binaries (similar to all my other binary distributions).

5. VarsityPosted: Apr 27th, 2005 - 12:05:13 pm
hllib.dll is missing from the installer, the version distributed with GCFScape is too old, and I haven't a clue what to do with the standalone download. package

6. NemPosted: Apr 27th, 2005 - 12:24:00 pm
Thnx, it has been fixed.

7. amckernPosted: May 8th, 2005 - 1:02:24 am
Nem would it be posible for vtfedit to produce a vmt, to the default save location, or is this to complex, with open varibales, and many texture styles?

PS, VERY GOOD WORK on the wad convertor!

8. NemPosted: May 8th, 2005 - 11:24:15 am
Yes, this is the planned focus for the next release, probably in the form of an export .vmt and auto export .vmt methodology.

It would be helpful if someone could provide templates for the various typical .vmt files (normal texture, bump mapped texture, HUD texture, sprite, etc).

Glad you like the .wad converter.


9. amckernPosted: May 11th, 2005 - 2:47:13 am
there are other tools around, that support the difering formats, if you contact the maker of vtex gui, you should come into good hands with them, its off my mind who made it, but i think 95% that its a hl2world forum topic for cs textures, that got hijackd

10. VarsityModified: May 11th, 2005 - 5:24:02 am
When I try to preview any normal map VTFs I make with VTFLib through the VTF Shell Extensions, the bottom third of the image is pure black. It works ingame, but seeing as that only happens for files I make with VTFLib I thought you might like to know. The program is evidently doing something non-standard.

11. NemPosted: May 11th, 2005 - 10:26:57 am
The VTF shell extensions are Jed's right? You might want to check that the bug isn't his. Is the format RGBA8888? I think he had a problem with that (try BGR888 or BGRA8888).

12. puryfuryPosted: Jun 20th, 2005 - 6:29:44 pm
I can't see scrollbar on the file system tab. What's a problem?
I using .net framework korean. pleaze help~

13. NemPosted: Jun 25th, 2005 - 12:10:38 am
Odd indeed. I don't know why this would happen, it is a standard system control. All I have to do is enable scrollbars and the system should take care of the rest.

14. NoBodyPosted: Jun 26th, 2005 - 11:20:07 am
hmm basic .vmt you say, hold on just a sec.

A emty material for wold geomaty



--commands you can have in it--

//Defuce texture (path is relative to materials folder, no .vtf)
"$basetexture" "MyTextures/Texture1"

//2 sided material
"$nocull" 1

//normal map bump mapping
"$bumpmap" "MyTextures/Texture1"

//8 bit transparency (uses the alpha form the basetexture)
"$translucent" 1

//1 bit transparency (uses the alpha form the basetexture).
"$alphatest" "1"

//material type (affects the sound and decale when hit)
"$surfaceprop" "concrete"
(I'll give you a list of posibles later on).

thers alot more stuff you can put in there as weal ill try to give you some more if you want.

15. NemPosted: Jun 26th, 2005 - 12:53:37 pm
I've already added VMT support.

If you enable Auto Create VMT File from the options menu, it will create a VMT with a $basetexture and a default shader whenever you save a VTF file. If you select Create VMT File from the Tools menu, you can specify all of the above options and create your VTF files. In order for the paths to be correct, your VTF file must be in a materials folder.

16. NoBodyPosted: Jun 26th, 2005 - 4:46:56 pm
Ok :)
Would it be posible for you to make a option to extract a vmt and all it's related .vtf files from the gcf file?

17. NemPosted: Jun 27th, 2005 - 10:15:54 pm
I suppose. I want to modify the file system tree to update in real time, so maybe I'll add that to the tree as a special .vmt option.

18. DeathByNukesPosted: Sep 7th, 2005 - 7:12:50 pm
Can you make VTFEdit import alpha from .BMPs? So far the only format that seems to import alpha is .DDS sad.
Also, the binary archive download doesn't have VTFCmd in it.

19. NemPosted: Sep 7th, 2005 - 9:57:29 pm
You should use .tga files if you want an alpha channel.

And VTFCmd is in the binary archive, it is in the bin folder.

20. DeathByNukesPosted: Sep 8th, 2005 - 5:49:23 pm
Haha I just found out Photoshop 7 doesn't save alpha in .tga files without a patch!

21. sputnikPosted: Sep 27th, 2005 - 9:28:12 pm
where the heck is the button to download it!>!!?!?!!?!?

22. pgr999Posted: Oct 21st, 2005 - 4:26:03 am

I am looking to add a buy zone to cs source map dotd_hellhold(I only have the bsp file).
Any suggestions would be appriciated.
G@b00n Vip3r

23. XinPosted: Nov 17th, 2005 - 2:04:54 am
exhaustedAAAAH, How do you make a VTF !!!? when i greated texutere i fot those pink and black squares.waaa

Can someone tell me where a tutorial is or make one?viking

24. NemPosted: Nov 17th, 2005 - 2:16:42 am
It's not your .vtf that is the problem, it is your .vmt file (specifically the $basetexture path).

25. makit3dPosted: Jan 8th, 2006 - 7:04:55 pm
I had read that vtfedit converts .vtf files into tga files. I have done this, but can it convert more than one at a time?

26. NemModified: Jan 8th, 2006 - 7:30:56 pm
  1. Select Tools->Convert Folder.
  2. Set the Input Folder to the folder with your .vtf files.
  3. Set the Output Folder to the folder you want the .tgas to go.
  4. Set the Filter to *.vtf.
  5. Press Convert.
That's all there is to it, additional faces and frames in animated .vtfs and environment maps will not be converted, these should be done manually.

27. makit3dModified: Jan 8th, 2006 - 7:43:32 pm
I mistook the batch convert section as looking to convert .tga's to .vtf.

Also, let me say thanks for these very sweet tools. I began my mapping days with Doom! It's a wild trip to see things get to where they are and these tools you have created sure to do make it a great deal more fun.


p.s. (lol...this is giving me a huge smile. I wish kids were this easy to deal with!)

28. AK47FALCONPosted: Apr 4th, 2006 - 5:47:08 pm
Hi I just got the VtfEdit program but when I try to use the tga to vtf conversion I get a program error when ever I try to select an input or output folder and I have reinstalled the program many times.

29. NemPosted: Apr 4th, 2006 - 6:01:08 pm
I'd need the exact error message, but I think you are experiencing one of the bugs with the .NET v1.1 framework. This is a critical bug in the .NET framework which prevents the OpenFolder dialog from running if the threading is not in a certain apartment state (and there is no way to set this state, it is system dependant).

As a work around, you can manually set the paths by setting the following two variables in your VTFEdit.ini file (before running VTFEdit):
Forms.BatchConvert.InputFolder =
Forms.BatchConvert.OutputFolder =

I will try to come up with a workaround if I can, but there isn't really an elegant solution. GCFScape had this same problem and I ended up converting it to .NET v2.0 (which doesn't have this bug). Unfortunately converting s a royal pain in the ass.

30. AK47FALCONModified: Apr 4th, 2006 - 6:27:17 pm
Ahh I see now. Lol I was looking around for that .ini! One um question though...I have three TGA's that won't conver to VTF but they meet the specs for conversion(powers of two). I get the message error loading "file". If you could help me on that, that would be nice. Good program though once I got past the errors....I hate vtex.

EDIT: Nevermind I went back and took the three bmps those files originally came from and the program converted fine. Excellent program!!! Just setup a shortcut to the .ini!

31. reacherPosted: Sep 13th, 2006 - 10:36:40 pm
Hi Nem. Your tools are great BTW!

ok brown nosing aside :P I'm using a scope image with my sniper rifle in my mod, and i'm having a lil trouble. i'm using a quarter circle image (with an alpha channel) and drawing it 4 times (rotated) to make a complete circle. i think the engine is softening the edges, because i get faint ghost lines in between the seams. you can view a screenie of it here:

any chance there's some VTF flags or VMT commands to prevent this from happening?

32. NemPosted: Sep 14th, 2006 - 11:16:43 am
Try enabling the Clamp S and Clamp T flags in VTFEdit along with No Mipmap and No Level Of Detail (unckecking Generate Mipmaps when you create your texture will also set the last two flags).

If that doesn't work, email me your .tga and .vtf file and I'll have a look.

Also, have you tried looking at existing scope materials?

33. reacherPosted: Sep 14th, 2006 - 5:35:35 pm
that did it! well, not sure which flag did it, but it was one of em :)

btw i had No Mipmap ticked already, so it was one of the other 3.



34. NemPosted: Sep 14th, 2006 - 6:39:20 pm
Good to hear. It was most likely the clamp flags. When Direct X samples a texture to resize it to a polygon, samples near the edge of the texture may wrap around to the other side of the texture. This is expected and creates the best results if your texture tiles, however, if your texture does not tile you wind up with your above problem. Generally you should set the Clamp S flag if your texture does not tile in the x axis and the Clamp T flag if your texture does not tile in the y direction.

The No Mipmap flag tells Direct X not to use the texture's mipmaps and is only recommended if your texture is never sized much smaller than its actual size (e.g. GUI elements or your scope or (sometimes) skyboxes). It will cause your texture to be rendered with a linear filter instead of bilinear, trilinear or anisotropic (which all require mipmaps).

No Level Of Detail tells the Source engine not to use a smaller resolution subset of the texture's mipmaps. There are a lot of 1024x1024 resolution textures in Half-Life 2, but most video cards only load the 512x512 or even 256x256 and lower resolution mipmaps because they don't have sufficient memory or bandwidth. No Level Of Detail forces the video cards to load and use the largest mipmap which means your texture will preserve a high level of detail.

35. eratPosted: Sep 15th, 2006 - 6:14:59 am
Is there a chance of getting a complete tutorial on how to make a working blend texture by using one of the two textures of a blend texture shown in material browser and then getting it to work in a distributable map so that anyone downloading the map can see the texture while playing.

That sentence was so long I have to visualize it a bit I guess:

I want:

Steal rock bitmap from rock/grassblend texture shown in material editor > combine that rock bitmap with my own bitmap of same size > Add it so that I can see it in Hammer and furthermore in game > Get everyone who downloads the map to be able to use the newly created blend texture.

Any good tutes on this?
I already tried: and

But I only got empty 64x64 texture showing in material browser using those tutorials.

- eRat

36. squirrelPosted: Dec 30th, 2006 - 7:41:06 am
Hello all... I am trying to create an animates spray. I followed a tutorial I found linked here:

I followed all the instructions, but vftedit does not have Multiple Frame in the Texture Type drop down options. It has Animated Texture, Environment Map, and Volume Texture... that is it. And none of those will work for me.

My file is 11 frames at 128x128 and is below 120k.

Any advice on why vftedit has this menu option for some but not all?


37. NemPosted: Dec 30th, 2006 - 11:00:46 pm
The tutorial is outdated, use the Animated Texture option (and disable mipmaps for sprays). Also, make sure you are selecting all the frames you want in your texture in the open file dialog.

As long as your .vtf is small enough and you create a .vmt (it just needs to be the same as the other generated .vmt files) your animated .vtf should work. I've made several myself and have never had problems.

38. blisPosted: Feb 22nd, 2007 - 3:15:34 pm
hi,I feel stupid having to ask this but how do you set the clamp t and clamp s flags?

I just see a checkbox that says clamp with minimum height and width.I couldnt see anything in the readme about how to do it via command line either


39. NemPosted: Feb 22nd, 2007 - 9:23:13 pm
  1. Select File then Import and select your image source.
  2. Select the VTF Options you want (these are options that relate to image generation), and then press OK.
  3. Under the Image tab, select the Clamp S and Clamp T flags.
  4. Select File then Save As and save your texture.

40. blisPosted: Feb 23rd, 2007 - 5:27:58 am
thanks nem

41. EchoPosted: Mar 5th, 2007 - 2:39:03 pm
I was also following the tutorial squirrel was using, and figured that animated texture replaced multiple frame in the type dropdown box. I am, however, having trouble with my final animated spray product. I produced a series of images in Photoshop, created an alph channel so that the background would be transparent, and saved them as .tga files. I imported them into imageready, set the delay, and exported the animation frames, saving them as .png files. When importing into VTFedit and making a final product, everything works except the background transparency. I'm not sure if I'm doing something wrong in VTFedit or in ImageReady, or both. I'd really appreciate it if you might be able to take a peek at the tut or offer any guesses as to what I might be doing wrong. Again, the tutorial I was using was:
I'm guessing the problem might be somewhere beginning with step 3. Thanks for any help Nem.

42. NemPosted: Mar 7th, 2007 - 1:46:47 pm
I don't really see anything wrong with the tutorial. If you exported each frame as a .tga (32 bit I hope), why not just import the .tga files directly?

Just an unrelated tip but: if you're making a spray, it's a good idea to disable mipmap generation as it will produce smaller .vtf files (so you can have more frames) and generally increase the in-game quality.

43. EchoPosted: Mar 7th, 2007 - 2:19:04 pm
You were correct, importing them as individual .tga's into VTFedit yielded a working spray; I'm not sure why the tutorial suggested doing otherwise. During the interim, however, I found the Convert.bat method of creating an animated spray as well. Thanks for the help.

44. zafar23081985Posted: Apr 3rd, 2007 - 4:11:02 am
Hello, everybody!!! Could you help me, I'm writing a program which works with VTF Textures. And I'm going to write it in Delphi 7. How can I use your VTFLib library from Delphi? I saw in Source SDK the VTF Explorer written in Delphi, are they also used VTFLib or another library??? Can I use classes declared inside the VTFLib??? For example, CVTFFile, CVMTFile e.t.c? I have tried to compile the library by VS 2005 , but I have got much problems with it, and why it so??? Thanks, with best regards, Zafar!!!

45. NemPosted: Apr 4th, 2007 - 1:37:25 pm
You have to import the C functions, you can't import C++ classes into Delphi. VTF Explorer uses a C wrapper for Valve's official libraries which is then imported (as C functions) into Delphi.

46. zafar23081985Modified: Apr 5th, 2007 - 12:48:10 am
Nem, I have written a header file in Delphi, which imports functions from the library. Loaded the *.vtf file into memory by the function vlImageLoad. As I understood the function only loads file to the stream. And how can I show the picture in the window? Which component shuld I use??? Can I use TImage class??? Should I convert an image before showing it???
Can I also use C wrapper as VTF Explorer??? If I can, then how???
Can anybody explain me spet by step, how can I load the *vtf file and show it on the window??? Please!!!! It is too important for me!
Thank you Nem and thanks evrebody!!

47. zafar23081985Posted: Apr 13th, 2007 - 10:07:49 pm
Hello, evrebody!!! I'm writing a program in Delphi 7 which opens VTF files and shows it.
Here is what I'm doing:

procedure TForm1.Button1Click(Sender: TObject);
TRGB = array[0..2] of Byte;

var VTFImage: Cardinal;
RawBuffer: string;
ImgData, AlphaData: string;
HasAlpha: Boolean;
ImageFormat: VTFImageFormat;
Width, Height: Cardinal;
V: array[1..2] of Single;
NumberOfPixels: Integer;
lpBuffer1, lpBuffer2: PByte;
Source, DestAlpha, DestImg, pSource, pDestAlpha, pDestImg: PChar;
i, j: integer;
uiR, uiG, uiB: Cardinal;
VTFFileStream:=TFileStream.Create('loading.vtf', fmOpenRead);
SetLength(RawBuffer, VTFFileStream.Size);
VTFFileStream.ReadBuffer(pointer(RawBuffer)^, length(RawBuffer));
// Zagrujaem biblioteku
if LoadVTFLib=true then
if vlCreateImage(@VTFImage)=false then
ShowMessage('Error creating file!');

if vlBindImage(VTFImage)=false then
ShowMessage('Error binding image!');

if vlImageLoadLump(pointer(RawBuffer), length(RawBuffer), false)=false then
ShowMessage('Error loading stream to memory!');


if HasAlpha then


if (Width>46340) or (Height>46340) then
ShowMessage('Unable to load VTF file. Picture is too large.');

NumberOfPixels:=Width * Height;

uiBufferSize:=vlImageComputeImageSize(Width, Height, 1, 1, ImageFormat);
lpBuffer2:=vlImageGetData(0, 0, 0, 0);

if vlImageConvert (lpBuffer2, lpBuffer1, Width, Height, vlImageGetFormat(), ImageFormat)=false then
ShowMessage('Unable to load VTF file. Call to vlImageConvert failed.');

In this way I have loaded VTF file, converted it to RGB format and load bytes to lpBuffer1!
Now, the problem is that how can I show the image data???
Am I doing anything wrong???
Thanks for Evrebody!!!

48. w33niePosted: Jun 7th, 2007 - 8:31:54 am
Hi, I'm having problems putting new .vtf and .vmt files onto my CS:S server.
So far I've created working .vtf and .vmt files, as well as adding new lines to my mani skins files. But when I use ma_setskin to change to the new skin, it still has the old one on.
The ma_setskin works perfectly, it has changed to the new skin as it says so in the console, and the new skins were even downloaded upon entering the server. But the same texture from the old model remains.

I also haven't edited anything else apart from what's listed above.
What can I do?

49. NemPosted: Jun 10th, 2007 - 1:22:39 pm
I'm not sure I can be much help here. I'm not too familiar with server MODs or Source modeling.

50. GarfieldModified: Jul 8th, 2007 - 11:39:11 am
Hi, I just waned to note that it seams there are memory leaks within VtfEdit.

After quite a research it turned out the source is not the VTFEdit itself, but the VTFLib that it uses.
After one more day in looking into the source code I found out that the NVIDIA TEXTURE TOOLS Library, used by VTFLib for some of its functions, is causing the problem.

Here are my notes:

Importing Image with resulution 4096^4096 few times:

DXT Compression - ok (not 100% sure)
thumbnail generation - minor LEAKs (~10MB for that image res!)
mipmap generation - minor LEAKs (another ~10MB)
resizing 3000 to 4096,- big LEAK (>70MB)
normalmaps generation - major LEAK (>200MB, 50MB for 2048x2048 image)

NOTE that if you NOT use these functions everythings works great - after importing the same file again the memory usage (in task manager) returns to the same value before importing the same image as already imported)
NOTE also that for smaller images the leaks are smaller but are thare!

You can try all this yourself.

Im looking for good texture manipulation library myself, that is why I have done such an investigation:)

Comments (on the issue) and directions (for the lib) are welcome!


sorry for my english

51. marceloModified: Jul 10th, 2007 - 3:18:06 am
Hi Nem,

I have troubles modifying a reticle for the game dark messiah.
I opened reticle_spell.vtf in VTFedit, and it shows 2 channels 1 rgb (with small white circle and black background)
and 1 alpha (which shows the actual reticle)
I export the file to TGA then I open it in GIMP.
However I can't find the alpha channel in GIMP despite looking in channel list.
Do you know what I missed here?

Also if I want to change the reticle drawing? will I have to modify both RGB and Alpha or only Alpha is necessary?

Thanks for your kind help !


I found the alpha channel, but unfortunately its all black, no drawing of the reticle, like it was showing up in vtfedit.

52. NemPosted: Jul 11th, 2007 - 11:38:25 pm
Hi, I just waned to note that it seams there are memory leaks within VtfEdit.

Thanks for the info. I wonder if NVDXTLib keeps the texture data in memory (and returns pointers to this data in the callback) until the next call. Either way, the memory usage seems excessive.

I don't have a lot of time to look at this at the moment, but if I get a chance I'll see if I can't find a workaround. NVDXTLib has always been quite buggy, I've had trouble with every release, but it seems to be getting better.

I found the alpha channel, but unfortunately its all black, no drawing of the reticle, like it was showing up in vtfedit.

I've confirmed that VTFEdit is exporting .tga files with proper alpha channels. I'm not really familiar with the GIMP, so I can't really provide any more help than to say they are there; good luck figuring it out. Maybe ask here?

53. paulbangeanPosted: Aug 1st, 2007 - 7:00:12 pm
hey i have a question. is there a program that con convert .vtf to wad?

54. NemPosted: Aug 2nd, 2007 - 12:04:45 am
No, but you should be able to open .vtf files in VTFEdit, copy them, and paste them directly into Wally to create a .wad file.

55. paulbangeanPosted: Aug 2nd, 2007 - 3:12:11 pm
ok thx. i will try that

56. eyeonusPosted: Aug 28th, 2007 - 7:27:15 am
How do I use this thing to batch convert .vtf to bmp, retaining directory structure?

57. NemPosted: Aug 29th, 2007 - 11:16:30 am
The Batch Convert tool can only convert from .vtf to .tga. To do this, put *.vtf as the Filter. I'll add support for other formats in the next version.

58. The_DecryptorModified: Sep 4th, 2007 - 2:18:25 am
Is there any way to export a HDR VTF, and keep the HDR data? When I've tried it's always exported a LDR image (I export to TGA)

And what about the ability to export to a PNG?, lossless and has 8Bit alpha support.

Edit: I don't want to come off sounding like some whiny user demanding things though (So sorry if I do), these are just thing's I'd like at some time in the future (At the moment I have to transfer the exported TGA's to my mac and save it as a PNG to get the Alpha channel in GIMP, so straight export to PNG would save me some time).

59. NemPosted: Sep 4th, 2007 - 8:53:59 pm
VTFEdit cannot export any HDR formats or PNG files, I may add this at a later time. The GIMP should open VTFEdit generated TGA files ok though...

60. The_DecryptorPosted: Sep 4th, 2007 - 11:27:05 pm
Cool, good to know.

And GIMP can open the TGA files, but it doesn't load the alpha channel, and IrfanView (another app I use) treats the alpha channel as if it was 1Bit, but if I open the PNG I converted on my mac, and re-save as TGA in GIMP, then GIMP and Irfan View can see the full alpha channel.

[ 1 2 ]

Nem's Tools v2.0 © 2006 Ryan Gregg.
Execution time: 0.07963s; Queries: 14.