Need Help making Guide

Discussion in 'Off Topic' started by Tumbolisu, Aug 12, 2016.

  1. Tumbolisu

    aa Tumbolisu  I ⌄ I 

    Messages:
    947
    Positive Ratings:
    930
    Since November 2015 I've been trying to write a guide on the proper creation of VTF and VMT files. My slight language barrier and especially the fact that I'm terrible at writing things means that I have no idea how to do this properly. I have made 4 textfiles filled with random information so far.
    Maybe somebody can help me structure this and remove pointless things or add to more important parts?

    Code:
    This first page is a simple explanation of this project
    Textures and Materials will be explained
    It should cover a lot, but not too much detail in less usefull parts
    Links to the VDC, NoDraw.net and possibly other places will be provided
    
    I’m not sure about the structure yet. Maybe you can help by copy+pasting and then giving me a link to what you got?
    
    Comments are enabled for everybody.
    
    Quick Info
    
    What is a texture?
    	A bunch of values placed on a predefined grid
    		red, green, blue, black/white, alpha, frame
    			animation, cubemap, volumetric, mipmap
    
    What types of textures are there and what are they used for?
    	diffuse/albedo, bumpmap/normalmap, envmap, masks, lightwarp, …
    
    What is a material?
    	A textfile telling the game how to use the textures
    	Specifies many other properties
    
    What makes materials different from another?
    	shaders
    		LightmappedGeneric, VertexLitGeneric, UnLitGeneric, ...
    	proxies
    
    What file types are used and how are they special if at all
    	Textures: .vtf
    		stores a ton by itself
    	Materials: .vmt
    		a simple text file
    
    What programs are used
    	VTFEdit to convert to .vtf + edit properties
    	Notepad++ to create and edit .vmts
    
    File locations, naming, ?
    	tf/materials/, nature, concrete, other
    	tf/materials/models/, props_xyz, other
    	as short and descriptive as possible
    		numbers for identical names
    		letters for similar materials
    
    
    VTF
    
    Valve Texture Format
    Stores any type of texture
    Stores other special information like reflectivity color
    VTFEdit creates one per drag+drop
    	Settings on texture creation are important to understand
    		General
    			Compression method?
    				Compressed
    					DXT1
    					DXT1 with one bit alpha
    					DXT3
    					DXT5
    				Uncompressed
    					RGB888
    					RGBA8888
    					I8
    					IA88
    			Alpha Y/N?
    			Animated/Cubemap/Volumetric?
    		Mipmap
    			Mipmap Filter
    			Sharpen Filter
    			What happens without a mipmap?
    		VTF Version
    		Compute Reflectiviy Y/N?
    		Generate Thumbnail Y/N?
    		Should other settings ever be changed?
    	Can also edit some of the properties
    		Point Sample
    		Clamping
    		No Mipmap / No Level Of Detail
    
    Texture creation and explanation
    	Handpainted
    		image editors
    			diffuse/albedo
    			masks
    			lightwarp
    
    	Generated
    		programs (image editors, 3D-software, other)
    			bump/normalmap
    			
    		buildcubemaps
    	Difficulties
    		Cubemaps and Skyboxes
    		Animations
    
    VMT
    
    Valve Material Type
    Formatting
    	brackets "{ }"
    		shows a collection of information
    		the word right before the bracket specifies the type of information
    			examples
    				Shaders
    				Proxies
    				$color
    					{ } or [ ]
    	tab character "		"
    		at the start of a line to better visualise brackets
    		inbetween words to give even spacing
    		makes reading/editing a lot easier for everybody
    		ignored by the game
    	space character "  "
    		to seperate things
    	quotation marks """"
    		"keeps words or numbers together"
    		"mostly not required"
    		"a good habit to wrap them around everything"
    	Capitalization
    		Nothing is case sensitive - Can Be Used Whenever You Want To
    		MostlySeen when youCantUse spaces or_underscores
    	Line breaks
    		also ignored by the game
    		helps greatly in reading and editing
    		not using line breaks is the most horrible thing anybody could do
    Creation
    	Create a .txt file and change file extension to .vmt
    	You might need to enable the ability of changing file extensions
    Basics
    	Shader
    		Brushes
    			LightMappedGeneric
    			LightMappedTwoTexture
    			WorldVertexTransition
    			Water
    		Models
    			VertexLitGeneric
    			EyeRefract
    		Both
    			UnLitGeneric
    			UnLitTwoTexture
    			Wireframe
    	Parameter
    		$-Parameters
    			$basetexture
    			$nocull
    			$bumpmap
    			$detail
    			Transparency
    				$translucent
    				$alphatest
    				$additive
    		Phong and Rimlighting
    		Fake parameters (for proxies)
    		%-Parameters
    			%keywords
    			tool parameters
    				%CompileDetail
    				%CompileNodraw
    				%CompileHint
    	Proxy
    		TextureScroll
    		AnimatedTexture
    		Sine
    		ItemTintColor
    		SelectFirstIfNonZero
    
    Specialties
    	Overlays
    	
    
    Code:
    Strange words and their meanings:
    Pixel
    	A single point that holds color related information
    	Pixels appear on your screen and are what images made out of
    Texel
    	A Pixel that has been placed in a 3D-environment.
    	considering size, they almost never appear 1:1 with a pixel on your screen.
    
    	
    What is a texture?
    
    A texture stores a lot of information in a grid-like space.
    The stored informations are usually called "channel". Red-channel, Green-channel, Blue-channel, Alpha-channel. There also exists a special Black/White channel.
    	Red, Green and Blue are simply colors.
    	Black/White is used when only one channel is needed.
    	The Alpha-channel is usually seen for transparency, but games use it for all sorts of things.
    This grid is usually two-dimensional but can also be three-dimensional.
    In the source engine, the height and width are both limited to 2^n, where n is a whole number from 0 to 12. (1 pixel to 4096 pixels)
    The third dimension "length" has no limitations. However, the increase in filesize can be a limitation.
    Making use the third-dimension results in the texture being one of the following types:
    	An animated texture. Used for animations, like fire
    	A cubemap. Used for reflections. Mostly seen on glass and weapons.
    	A volumetric texture. Rarely used, if at all. I don't know how to make use of this myself.
    Almost every texture also stores another dimension: Mipmaps.
    Mipmaps are required for lower graphic settings, they make things look pretty from a distance and they reduce GPU-load.
    
    
    What types of textures are there and what are they used for?
    
    There are many different types of textures.
    Most common is the diffuse map, also called albedo. It simply stores an image to be projected on a surface. Here is an example:
    	[IMAGE]
    The second most common is the normalmap. In source, it is often refered to as "bumpmap". These are two different things, but the intention is the same: Three-Dimensional lighting on a two-dimensional surface.
    The normalmap stores in what direction a pixel of the surface is pointing to, giving the engine enough information to fake the lighting. The different color-channels are used to the X Y and Z coordinates. Z always stays above 128, otherwise the surface would be pointing backwards, which is not possible.
    	[IMAGE]
    Another quite common thing is the envmap. It stores a 3d image that represents the inside faces of a cube, making it 6 images. It is used for pre-made reflections on various surfaces.
    	[IMAGE]
    There are also various types of "masks". They are used so that things like reflections appear in different intensity on a single surface. Most masks only require a single channel, which is why most of them are included in other textures as the Alpha-channel.
    Examples of masks are the envmapmask,
    	[IMAGE]
    the blendmodulate,
    	[IMAGE]
    and the phongmask (only seen as the alpha-channel in albedos and normalmaps)
    	[IMAGE]
    Lastly I want to show you the type of texture that has helped the most in making TF2 look like what is, while being be simplest texture of them all:
    The lightwarp texture. It is a one-dimensional texture, meaning its just a row of pixels. Lightwarps tint a texel depending on how bright they are.
    If you would try to make a lightwarptexture that doesnt actually affect anything, meaning you are trying to find the "default state", you would have a single grey pixel.
    The tinting works like this: On the left, we have the color for the dark pixels. On the right, we have the color for the bright pixels.
    	[IMAGE]
    
    What is a material?
    
    Materials are simple textfiles. They tell the game what textures to use and how to use them.
    They also tell the game more than just visual information. The type of surface, meaning what sound it makes when you walk on it or shoot it, is also specified in the material.
    
    Code:
    ==Shaders==
    LightMapped- //Hammer brushes
    VertexLit- //Models
    UnLit- //Anything; No lighting
    -Generic //standart texture
    -TwoTexture //enables $texture2
    WireFrame //No textures; just a colored wireframe
    EyeRefract //Eyes on models
    
    ==Parameters==
    "$color2" "[1 1 1]" //R,G,B; works by multiplying; [1 1 1] does nothing; [0 0 0] makes black; [2 2 2] doubles brightness
    "$basetexture" "FILEPATH STARTING AFTER (mod)/materials/" //The basis of the texture; the albedo
    "$bumpmap" "FILEPATH STARTING AFTER (mod)/materials/" //normalmap
    	"$ssbump" "1" //Is the normal map actually a ssbump? 1 = yes
    "$texture2" "FILEPATH STARTING AFTER (mod)/materials/" //Used by -TwoTexture; Multiplied onto albedo
    Code:
    What is VTF
    Valve texture format, saves textures and some extra data about them.
    Textures must be 2^N in both X and Y. (X and Y are usually refered to as U and V)
    Multiple images can be stored in a single vtf. These are used mostly for animations and cubemaps.
    
    What is VMT
    Valve material type, saves properties of a surface.
    This means which textures to use and how to use them.
    Also controls how a surface is lit and other special effects.
    
    Usefull Programs and Stuff
    VTFEdit
    GCFScape
    Notepad++ Plugin https://developer.valvesoftware.com/wiki/Notepad%2B%2B_VDF_languages
    Windows VTF Shell Extension https://developer.valvesoftware.com/wiki/VTF_Shell_Extensions
    
    Making a VTF
    Drag PNG or TGA in VTFEdit
    You are greeted by a window with 3 tabs: General, Advanced, Resources
    General
    	There are 4 sections here: General, Mipmaps, Resize, Normal Map
    	General
    		Normal Format and Alpha Format
    			Always pick the same for both to counteract any potential errors that might happen.
    			Look up the "What texture compression to use" part of this guide.
    		Texture Type
    			Most cases you will want "Animated Texture". Considering you only have a single frame, it will not actually be animated.
    	Mipmaps
    		When viewed in low texture resolution, from an angle or from far away, the texture will switch to a lower resolution of itself. These are called "Mipmaps".
    		You should always have "Generate Mipmaps" checked unless you have a very good reason not to! Preventing texture seems on a model is not a valid reason.
    		Mipmap Filer and Sharpen Filter are something you are gonna have to play around with. Some texture look better with a strong sharpen filter, others look better with a smoothen filter.
    			I generaly use Quadratic + Sharpen Soft
    	Resize
    		Don't even bother with this. It doesn't even seem to work anyways(?).
    	Normal Map
    		Don't bother with this either. Automated creation of normal maps is always a bad idea.
    Advanced
    	Version
    		Pick 7.3 and never change it. Do not pick 7.4!
    	Gamma Correction
    		I dunno if that's a good idea to have checked. I have it unchecked.
    	Miscellaneous
    		Check "Compute Reflectivity" and "Genereate Thumbnail". Uncheck if you are making a texture that is not meant to be an albedo/diffuse/colormap. (Although keeping it checked won't hurt anybody)
    	DXT Compression
    		Always leave it on High.
    	The other settings here are weird and don't need to be touched.
    Resources
    	Ignore this stuff unless you really wanna include information in the VTF, like "Hey look I made this texture".
    
    Press "Ok"
    
    There are 4 tabs on the left: File System, Image, Info, Resources.
    Most of these are read-only. You will only ever need "Image" and "Info"
    Image
    	Image
    		Frame
    			The frame of the animation. Click the arrows to look at the different frames or click "Play" below to have VTFEdit do the clicking for you.
    		Face
    			Look at a different side of a cubemap.
    		Slice
    			Look at a different slice of a volumetric texture.
    		Mipmap
    			Look at smaller version of the texture. Use this to check if your mipmaps settings are good or not.
    		Key, Shift, Gamma
    			These always appear greyed out for me, no idea what makes them useable.
    	Flags
    		Some important information is stored in these flags. Click the little box to place or remove a checkmark. Some flags are determined when the VTF is created, you can not change these afterwards!
    		Look up the "What do these flags do" part of this guide.
    Info
    	Here you can find information about the texture, like the resolution, the file size and the compression format used.
    
    Making a VMT
    Try to copy existing VMTs and slightly edit them if you are having trouble understanding this stuff.
    Every VMT starts with a Shader. Most common are LightmappedGeneric, VertexlitGeneric and UnlitGeneric.
    	Look up the "Which shader do I use" part of this guide.
     
  2. MaccyF

    aa MaccyF Notoriously Unreliable

    Messages:
    908
    Positive Ratings:
    1,468
    I haven't had time to properly read through this yet, but one thing i did notice is

    Tf2 textures use baked in lighting (AO) in most instances, so diffuse would be the better term to use.