Ich spiele mit einem einfachen farbigen Quad Anwendung Dithering, und fand eine seltsame Frage. Ich habe ein Fragment-Shader, die an einem gewissen uv
und gibt eine Mischung Farbe Dithering berechnen soll. Dies funktioniert gut auf einem strukturierten Quad, aber seltsam genug, wenn ich Farbdaten von meinem inVertex
zugreifen, die uv
Koordinaten Änderung einiger bizarren Werten und y
Wert scheint x
Achse abgebildet werden. Ich werde versuchen zu veranschaulichen, was passiert, wenn ich Sachen um den Fragment-Shader-Code herum ändere.Metall Fragment-Shader uv Koordinaten ändern, wenn in Vertex Farbe Lesen
fragment float4 fragment_colored_dithered(ColoredVertex inVertex [[stage_in]],
float2 uv[[point_coord]]) {
float4 color = inVertex.color;
uv = (uv/2) + 0.5;
if (uv.y < 0.67) {
return float4(uv.y, 0, 0, 1);
}
else {
return color;
}
}
erzeugt das folgende Ergebnis:
Wo die linke Seite des Bildes meinen Gradienten Quad zeigt, feststellen, dass if (uv.y < 0.67)
Karten x-Werte im Bild.
Wenn ich diesen Fragment-Shader und nichts anderes im Code ändern, so, wo ich return float4(0, 0, 1, 0)
statt inVertex.color
, die uv
Koordinaten korrekt zugeordnet sind.
fragment float4 fragment_colored_dithered(ColoredVertex inVertex [[stage_in]],
float2 uv[[point_coord]]) {
float4 color = inVertex.color;
uv = (uv/2) + 0.5;
if (uv.y < 0.67) {
return float4(uv.y, 0, 0, 1);
}
else {
return float4(0, 0, 1, 0); //return color;
}
}
Erzeugt diese (richtige) Ergebnis:
Ich glaube, ich, um dieses Problem durch Anwendung einer 1x1 Textur auf den Gradienten und mit Texturkoordinaten hacken kann, aber ich würde wirklich was wissen, passiert hier, ist das ein Fehler oder ein Feature, das ich nicht verstehe?
danke dafür, ich werde versuchen, ein Feld für "texCoord" hinzuzufügen und sehen, was damit passiert. Wenn ich die Spezifikation erneut lese, habe ich das Attribut "point_coord" für etwas, das sich wie eine uv-Koordinate verhält, falsch verstanden! –
Ein zusätzliches Feld hinzugefügt, das funktioniert wie ein Zauber, danke nochmal für das Zeigen auf das Offensichtliche :) –