Jump to content
Unity Insider Forum

Color Palette Shader?


GaRv3

Recommended Posts

Hallo zusammen!

 

Ich möchte meinen Shader anpassen, damit er Color Palettes nutzen kann. In dieser Palette sollen alle Farben angegeben werden, die für die Anzeige genutzt werden dürfen. Dann soll der Shader die Pixel auf die passenden Werte der Palette anpassen und so die Farben reduzieren.

 

Ich weiß, dass es wohl nicht besonders kompliziert ist, aber leider bin ich im Bereich Shaderprogrammierung noch recht unerfahren.

Weiß jemand, wie das möglichst einfach zu realisieren ist?

 

Vielen Dank!

garv3

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ehrlich gesagt ist das was du vorhast sogar ein wenig knfflig und benötigt etwas preprocessing Arbeit.

 

1. Dein Shader müsste ein PostProcessing Effekt sein (Image Effect).

2. Du benötigst als eingabe das gerenderte Bild und eine Volumentextur (3D Texture) Größe: 256³

3. Diese Volumentextur hat als Inhalt für jeden Voxel dessen Position als RGB Wert (RGB -> XYZ) gesehen werden kann den passenden Palettenfarbinhalt.

4. Der Shader:

vec4 imageColor = texture2D(background, UV);
vec4 finalColor = texture3D(volumeTexture, imageColor.xyz);
finalColor.a = imageColor.a;
return finalColor

 

5. Der Preprocessingstep für die Volumentextur:

var volumeTexture = new Texture3D(256, 256, 256, Format.ARGB);
for (var x = 0; x < 256; ++x)
 for (var y = 0; y < 256; ++y)
   for (var z = 0; z < 256; ++z)
     volumeTexture.SetPixel(x, y, z, FindBestColor(new Color32(x, y, z), palette))

 

Aller Code hier ist Pseudocode.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...