Lightmapped 4WayBlend.

From Valve Developer Community
< De
Jump to: navigation, search
English (en)Deutsch (de)Translate (Translate)

Lightmapped_4WayBlend is a material shader available in the following Source engine games: Counter-Strike: Global Offensive Counter-Strike: Global Offensive , Black Mesa Black Mesa . Es ist ein Shader(en) die die Ecken mischt von Displacement(en) 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 Counter-Strike: Global Offensive.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 Counter-Strike: Global Offensive für die Karte cs_insertion.

Note.pngHinweis:Dieser Shader funktioniert nur bei Displacements.
Warning.pngAchtung:Dieser Shader wird nicht unterstützt $normalmapalphaenvmapmask in Counter-Strike: Global Offensive. Es wird unterstützt in Black Mesa.
Zu erledigen: Dokumentieren Sie Black Mesa's Version des Shaders weist keine weiteren Unterschiede auf Counter-Strike: Global Offensive's.
Icon-Bug.pngFehler:Dieser Shader zeichnet nicht die gemalten Mischungen, die Sie einfügen, wenn Hammers 3D-Ansicht auf eingestellt ist "3D Shaded Textured Polygons", Denken Sie daran, die 3D-Ansicht wieder auf zu stellen "3D Textured" beim Malen Ihrer Mischungen.  [todo tested in?]

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(en)-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(en) 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.

Source Textur 1
Source Textur 2
Source Textur 3
Source Textur 4
Im Spiel, Beispiel von 4WayBlend.

Luminanz anpassen

Die Parameter lumstart und lumend passen den Luminanzwert mit a in einen nutzbaren Bereich an smoothstep. (Englisch)

luminance = smoothstep( lumstart, lumend, luminanceof(en)(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.

Luminance without any adjusting
lumstart = 0.0, lumend = 0.5
lumstart = 0.0, lumend = 0.2
Note.pngHinweis:Sie können das Ergebnis umkehren, indem Sie die Lumstart- und Lumend-Werte vertauschen. Wenn Ihre Textur beispielsweise aus dunklen Kacheln mit hellem Fugenmörtel besteht, möchten Sie wahrscheinlich die inverse Luminanz verwenden, damit die Kacheln nach dem Fugenmörtel herausfallen.

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.

lumblendfactor = 1.0
lumblendfactor = 0.5
lumblendfactor = 0.0

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.

Blend ohne Luminanz
Mit Luminanz mischen

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.

blendstart = 0.75, blendend = 1.0
blendstart = 0.90, blendend = 1.0

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.

Siehe $basetexture. Definiert die albedo(en)-Textur für eine bestimmte Ebene.
Siehe $surfaceprop. Definiert den Oberflächentyp und seine Eigenschaften für einen bestimmten Layer.
Zu erledigen: Was ist das?
Zu erledigen: Was ist das?
Siehe $bumpmap. Definiert die Bump-Map für eine bestimmte Ebene. Es werden nur 2 Bump-Maps unterstützt.
See $ssbump.Definiert, ob die Reliefkarte selbstbeschattet ist oder nicht.
Zu erledigen: Was ist der Unterschied zwischen diesen und $bumpmap2 zu $bumpmap4?
See $seamless_scale.Mildert Displacement-Texturen, die sich über das gesamte Material erstrecken.
Benutzt mit $texture1_lumend bis $texture1_lumend zum Anpassen des Luminanzbereichs, der zum Modulieren der Überblendung verwendet wird.
Note.pngHinweis:Eine smoothstep-Operation wird wie folgt auf die Luminanz der Textur angewendet: smoothstep(lumstart, lumend, luminanceof(en)(texture)).
Legt die Skala des UV fest.
Note.pngHinweis:Die Basistextur wird mit 512 x 512 Pixel angenommen, größere Texturen werden auf 512 x 512 Pixel skaliert.
Note.pngHinweis: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.
Benutzt mit $texture2_blendend bis $texture4_blendend um den Mischbereich in einer bestimmten Ebene zu definieren.
Note.pngHinweis:An der Mischung wird eine smoothstep-Operation wie folgt durchgeführt: smoothstep(blendstart, blendend, blend).
Definiert den Mischmodus für eine bestimmte Ebene. Sie können zwischen normalem Blending wählen, indem Sie es auf 0 setzen, dem Standardwert, oder 2x Blending modulieren, indem Sie es auf 1 setzen.
Definiert, wie viel $bumpmap(en) für eine bestimmte Ebene angezeigt wird.
Note.pngHinweis:Wenn für das Material eine $bumpmap bis $bumpmap4 definiert ist, wird dieser Parameter ignoriert. Stattdessen werden die Bumpmaps genauso überblendet wie in WorldVertexTransition(en).
Siehe $detail.Definiert eine Detailtextur für das gesamte Material.
Siehe $detailblendfactor(en). Gibt den Mischungsbetrag der $detail-Textur für eine bestimmte Ebene an.
Definiert den Luminanzwert, der zum Mischen für eine bestimmte Ebene verwendet werden soll.
Note.pngHinweis: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 )

Siehe auch