Creating a Material

From Valve Developer Community
Jump to navigation Jump to search
English (en)Español (es)Français (fr)日本語 (ja)한국어 (ko)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)

Nesse tutorial vamos ver passo a passo decomo podemos criar um novo material(en), incluindo a criação da texture(en) do material.

Criando uma Textura

Qualquer imagem pode ser usada como textura, até que as suas dimensões( altura e largura) estão no potência do dois: 2,4,8,16,32,64,128,256,512,1024,2048 e assim por diante. Você pode examinar texturas existentes que tem o mesmo papel que a sua. Texturas com maior qualidade tem performance menor, mas ela ira será bem mais nítida quando olhado de perto. Diferentes classes do objeto tem diferentes resoluções padrão(ex: modelos de personagens são de alta qualidade). Olhe as escolhas da valve em source materials.gcf com GCFScape(en) se você ficar confuso

Note.pngNota:Arquivos sources da textura tem que ser salvados sem perdas, formatos comoTGA pre-comprimidos,para prevenir perda de detalhes desnecessárias. Para texturas sem um canal alpha,PNG também é aceito.
Note.pngNota:O tamnho maximo do arquivo é 3,554,432 bytes. Compilar um .vtf acima disso pode causar erros.

Converting the Texture

It's a command line(en) tool with quite a few limitations, so the third-party tool VTFEdit(en) is preferable: it provides a graphical user interface, allows you to change a texture's properties without re-compiling it from scratch, accepts a wide range of image formats, and doesn't require the creation of script files for each and every texture. There are a handful of situations where you'll need to fall back on VTEX… but only a handful. Also, if you have textures that use transparency, it is recommended that you save them in TIFF format before importing to VTFedit as PNG transparency tends to have problems. Texturas tem que ser convertidas para Valve Texture Format(en) antes da source engine poder usar ela. A ferramenta que a Valve disponibiliza para isso é a VTEX(en).
 

(There are VTF plug-ins that let you save to the format directly from Photoshop, GIMP and Paint.NET, but this tutorial will not cover them as not everyone uses those tools.)

To import your texture with VTFEdit, use File > Import or press Ctrl+I. Select your image and you will be presented with the import screen:

VTFEdit's import screen

General settings

These settings are the most important. There are three:

Normal format
The color/compression format that should be used if the texture is opaque.
Alpha format
The color/compression format that should be used if the texture has an alpha channel.
Texture type
If you imported more than one image, this determines what they will be used as (animation frames/cubemap faces/depth slices).

If you're making a plain and simple world texture you won't need to change any of these. If you're making a texture with fine gradient detail however, you'll need to choose a non-lossy compression mode.

Mipmap settings

Mipmaps(en) are low-resolution versions of a texture that swap in when a surface is far away from the camera. They greatly reduce the amount of texture resizing needed, improving both performance and image quality. Mips are required for texture LOD to work.

Tip.pngDica:Textures that will appear in the 3D world should have mipmaps. To conserve memory, textures that will only be used in a 2D interface should not.

The following images demonstrate the various mipmap filters available in VTFEdit:

Normal map settings

These (mislabelled[Como?]) settings allow you to automatically generate a bump map(en) from your input image. You'll want to do this properly with an image editor for the material you ship, but the automated option is there if you want quick results or a base to work from.

Configuring and Saving

When you hit OK the input file is converted (there may be quite a lengthy pause for large images) and the output VTF appears. Now all that is left is configuring the texture with the options in the checkbox list on the left-hand side of the screen. See Valve Texture Format#Image_flags for descriptions of each.

Finally, save the file somewhere under your game or mod's \materials folder.

Creating a Material

Source doesn't access textures directly. Everything goes through a material(en).

Materials are script files that can be created in any text editor, but it's recommended that you use Notepad++ in conjunction with the community-made syntax highlighting rules(en). For your material to be detected, you must save it under your game or mod's \materials folder with the extension .vmt.

Note.pngNota:If you are creating materials and textures exclusively for a map for an existing mod, consider using BSPZIP(en)\Packbsp(en)\Pakrat(en)\Compile Pal(en) to package the material and texture files within the map file itself. This will avoid them ever becoming lost.
Warning.pngAtenção:Although your computer will let you save a file name that contains the % character, and VTF(en)s work just fine with the character in the name, Hammer cannot handle VMT(en)s whose names contain the % character.

Syntax

A pasta do material deve parecer assim:

<shader(en)>
{
	<parameter> <value>
	...
}
LightmappedGeneric
{
	$basetexture coast\shingle_01
	$surfaceprop gravel
}

Tem varios shader(en)s para se escolher, mas muitos materials vão usar nenhumLightmappedGeneric (brush(en)es) or VertexLitGeneric (model(en)s). O terceiro é o mais comum é UnlitGeneric, que é usa para UI(en) materials e as vezes em tool texture(en).

Parameters

For a list of all documented shader parameters, see Category:List of Shader Parameters(en).

With a shader chosen, you're onto parameters (also called commands). There are hundreds of options for what to put in a material so this article will only cover the most common, which are accepted by more or less all shaders. They are:

Tip.pngDica:If you ever need to use a space or tab character in a parameter value, you must wrap the whole value with "quote marks." You'll often see absolutely everything wrapped like this, but this is wholly unnecessary.
Tip.pngDica:To refresh a material in-game without restarting it, use the following console command: mat_reloadmaterial "vmt_name without .vmt and quotation marks". Even though the mat_reloadallmaterials command exists, it's not recommended to use it, since various artifacts may appear. mat_reloadtextures is presented, too, but it seems to be very buggy.

For instance:

 mat_reloadmaterial combine_barricade_short01a
will reload every single material in the filesystem named combine_barricade_short01a, including all the custom content. For example: both materials/models/props_combine/combine_barricade_short01a.vmt and materials/models/props_metal_barricade/combine_barricade_short01a.vmt will be reloaded. This may appear very useful when writing proxies.

Utilities

XBLAH's Modding Tool XBLAH's Modding Tool

See also