Lightmapped 4WayBlend.
Lightmapped_4WayBlend
is a material shader available in the following Source engine games:
Counter-Strike: Global Offensive , Black Mesa . Es ist ein Shader die die Ecken mischt von Displacement Oberfläche zwischen vier verschiedenen Materialien. Es verarbeitet vier auf einmal, indem es gespiegelte Parametersätze mit "2", "3" oder "4" in ihrem Namen verwendet.
Die ersten 2 Texturen können Bumpmaps haben wie WorldVertexTransition
Wenn Sie eine Envmap verwenden und maskieren möchten, sollten Sie die Alphakanäle der Basistexturen verwenden und $basealphaenvmapmask
. Dieser Shader unterstützt nicht $normalmapalphaenvmapmask
in .Sie können eine verwenden $envmapmask
Textur, aber Sie müssen es von Hand malen, um es dem gewünschten Ergebnis anzupassen.
Als Ersatz für das Ältere Multiblend
Shader, wurde es eingeführt für die Karte cs_insertion.
$normalmapalphaenvmapmask
in . Es wird unterstützt in .Contents
Beispiel
Lightmapped_4WayBlend { "$basetexture" "brick_a" "$bumpmap" "brick_a_normal" "$texture1_lumstart" "0.0" "$texture1_lumend" "0.5"
"$basetexture2" "brick_a" "$ssbump" "1" "$bumpmap2" "brick_a_normal" "$surfaceprop" "concrete" "$texture2_lumstart" "0.0" "$texture2_lumend" "0.5" "$texture2_blendmode" "0" "$texture2_blendstart" "0.8" "$texture2_blendend" "0.9" "$texture2_uvscale" "[1.0 1.0]" "$texture2_bumpblendfactor" "0.7"
"$basetexture3" "brick_a_bottom_grime" "$texture3_blendmode" "0" "$texture3_uvscale" "[2.0 2.0]" "$texture3_lumstart" "0.0" "$texture3_lumend" "0.05" "$texture3_blendstart" "0.8" "$texture3_blendend" "1.0" "$texture3_bumpblendfactor" "0.7"
"$basetexture4" "brick_a_top_grime" "$texture4_blendmode" "0" "$texture4_uvscale" "[2.0 2.0]" "$texture4_lumstart" "0.0" "$texture4_lumend" "0.2" "$texture4_blendstart" "0.90" "$texture4_blendend" "0.99" "$texture4_bumpblendfactor" "0.3"
"$detail" "detail\noise_detail_01" "$detailscale" "[ 32 32 ]" "$detailblendfactor" "0.7" "$detailblendfactor2" "0.4" "$detailblendfactor3" "0.2" "$detailblendfactor4" "0.2"
"$lumblendfactor2" "0.5" "$lumblendfactor3" "0.7" "$lumblendfactor4" "0.4" }
Steuern des Mischens
[Image:SculptBlendDialog 4WayBlend.jpg|thumb|right|250px|Die Blend-Tools im Displacement Sculpt-Fenster.]] Das Muster der Überblendung wird durch Hammers scuplt fenster-Überblendwerkzeug definiert (siehe Bild rechts). Die Texturvorschau in Hammer erfordert, dass Sie zusätzliche VMT -Dateien für jede Textur einrichten, die im Dialogfeld angezeigt werden soll. Diese werden vom Shader selbst nicht verwendet. Die Funktionen Alpha Blend und Color Blend dieses Dialogs sind bei Verwendung von 4WayBlend deaktiviert, sie werden nur vom Material Multiblend verwendet.
Die Mischung kann zwischen einem linearen Farbverlauf und einem realistischeren Aussehen abgestimmt werden, indem die Luminanz jeder Basistextur durch Parameter angepasst wird. Dies geschieht mit einfacher Mathematik im Shader und vermeidet das Erfordernis zusätzlicher Texturen.
Luminanz anpassen
Die Parameter lumstart und lumend passen den Luminanzwert mit a in einen nutzbaren Bereich an smoothstep. (Englisch)
luminance = smoothstep( lumstart, lumend, luminanceof (basetexture) )
Sie können sich dies als Anpassung des Kontrasts der Luminanz vorstellen. Im Allgemeinen benötigen Sie mehr Kontrast, um eine interessantere Mischung zu erhalten.
Luminanzmischung
Beim Mischen einer bestimmten Ebene können Sie wählen, ob Sie die Luminanz dieser Ebene oder die Umkehrung der gemischten Luminanz der darunter liegenden Ebenen verwenden möchten. Dies geschieht mit den lumblendfactor-Parametern.
Vertex Blend Modulieren
Die resultierende Luminanz wird verwendet, um den Vertex-Mischwert mit dieser Formel zu modulieren:
blend = vertexblend * luminance + vertexblend
.
Die Scheitelpunktmischung ist das, was Sie mit dem Mischwerkzeug im Hammer malen.
Mischung anpassen
Schließlich wird das Ergebnis dieser Formel durch einen weiteren smoothstep (Englisch) mit den Parametern blendstart und blendend angepasst.
blend = smoothstep( blendstart, blendend, blend )
Sie können sich dies als Anpassen der Schärfe der Überblendung vorstellen.
Parameter
Die meisten dieser Parameter haben Gegenstücke, die auf die erste, zweite, dritte oder vierte Schicht eines Materials angewendet werden können. Der Kürze halber wird dies gegebenenfalls durch 1
bis 4
angezeigt. Beachten Sie, dass das Fehlen von 1 bedeutet, dass an dieser Stelle einfach keine Zahl stehen sollte, wenn dies für die Verwendung mit der ersten Schicht vorgesehen ist.
$basetexture
. Definiert die albedo -Textur für eine bestimmte Ebene.$surfaceprop
. Definiert den Oberflächentyp und seine Eigenschaften für einen bestimmten Layer.$bumpmap2
zu $bumpmap4
?$seamless_scale
.Mildert Displacement-Texturen, die sich über das gesamte Material erstrecken.$texture1_lumend
bis $texture1_lumend
zum Anpassen des Luminanzbereichs, der zum Modulieren der Überblendung verwendet wird.- Hinweis:Eine smoothstep-Operation wird wie folgt auf die Luminanz der Textur angewendet:
smoothstep(lumstart, lumend, luminanceof (texture))
.
- Hinweis:Die Basistextur wird mit 512 x 512 Pixel angenommen, größere Texturen werden auf 512 x 512 Pixel skaliert.
- Hinweis:Das Ändern der UV-Skalierung der Basistextur skaliert auch alle anderen Texturen und kann kompensiert werden, indem andere Texturen in die entgegengesetzte Richtung skaliert werden.
$texture2_blendend
bis $texture4_blendend
um den Mischbereich in einer bestimmten Ebene zu definieren.- Hinweis:An der Mischung wird eine smoothstep-Operation wie folgt durchgeführt:
smoothstep(blendstart, blendend, blend)
.
- Hinweis:Wenn für das Material eine
$bumpmap
bis$bumpmap4
definiert ist, wird dieser Parameter ignoriert. Stattdessen werden die Bumpmaps genauso überblendet wie in WorldVertexTransition .
$detailblendfactor
. Gibt den Mischungsbetrag der $detail
-Textur für eine bestimmte Ebene an.- Hinweis:Dies ist die Wahl zwischen der Luminanz der gegebenen Ebene und der Umkehrung der gemischten Luminanz der darunter liegenden Ebenen mit einem Lerp:
lerp( 1 - blended_lum_of_layers_below, lum_of_current_layer, lumblendfactor )