In diesem Tutorial wird beschrieben, wie ein Material erstellt werden kann, welches auf einem func_breakable_surf aufgetragen realistisch Zerspringt.
Zunächst wird eine Grundtextur benötigt. Als abschreckendes Beispiel wird hier dieses kotzgrüne Mosaik verwendet.

Vielleicht weißt du schon, wie man ein Material erstellt, andernfalls gibt es hier einen Crashkurs.
Dieses Mosaik bekommt in einem Graphikprogramm (The GIMP,Photoshop), welches das erstellen von semitransparenten Bildern erlaubt, einen Alpha-Kanal. Der Alpha-Kanal gibt an, wo das Glas durchsichtig ist und wo nicht. Der Beispiel-Alpha-Kanal sieht so aus.

Damit ist die normale Glastextur schon fertig und kann vorerst als ein TGA-Bild gespeichert werden. Auf die RLE-Komprimierung sollte verzichtet werden.
Die Spiegelungen werden in der Source-Engine von specular Maps geregelt.
Dies geschieht am einfachsten mit VTFedit. Per File→Import die TGA auswählen, praktischer Weise mit DXT5 komprimieren und im Materials-Ordner abspeichern (der wäre beispielsweise cstrike\materials\deinname\deinglas.vtf bzw. deinglas_spec.vtf). Mit den Funktionen von VTFEdit ist es einfach zu überprüfen, ob der Alphakanal erkannt wurde.
Exemplarisch sieht sie so aus:
//Inhalt von "cstrike\materials\deinname\deinglas.vmt"
"LightmappedGeneric"
{
"$basetexture" "deinname/deinglas"
"$surfaceprop" "glass" //dann klimperts beim Treffer
"$translucent" "1" //Aktiviert den Alphakanal
"$nocull" "1" //Macht die Textur von beiden Seiten sichtbar
//Die Specular-Map lässt das Glas spiegeln
"$envmap" "env_cubemap"
"$envmapcontrast" "1"
"$envmapmask" "deinname/deinglas_spec"
//Jetzt kommt's
"$crackmaterial" "deinname/deinglas_break" //Dieses Material soll verwendet werden, wenn die Glassscheibe kaputt ist
}
Im Grunde muss dieselbe Textur nur noch Sprünge bekommen. Die meisten besseren Graphikprogramme bieten einen Haufen Filter an, die eine zerbrochene Glasscheibe immitieren können. Ich habe es mir einfach gemacht und die Textur des Materials glass/glasswindowbreak070a mit GCFScape extrahiert, mit VTFedit exportiert und mit dem GIMP als Ebene mit „Faser vermischen“ über die normale Glastextur gelegt.

Die Textur wird dann wie bei der ersten wieder als VTF gespeichert, hier als deinglas_break. Die VTF ist eine Kopie der ersten und sieht nun so aus:
//Inhalt von "cstrike\materials\deinname\deinglas_break.vmt"
"ShatteredGlass"
{
"$basetexture" "deinname/deinglas_break"
"$detail" "deinname/deinglas_break"
"$surfaceprop" "glass"
"$translucent" "1"
"$nocull" "1"
"$envmap" "env_cubemap"
"$envmapcontrast" "1"
"$envmapmask" "deinname/deinglas_spec"
//Der Rest kommt von Valve
"ShatteredGlass_DX7"
{
"$lightmaptint" 0.1
"$envmaptint" "[.1 .1 .1]"
}
"Proxies"
{
"BreakableSurface"
{
}
}
}