GaRv3 Geschrieben 10. August 2016 Melden Share Geschrieben 10. August 2016 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 More sharing options...
Mark Geschrieben 11. August 2016 Melden Share Geschrieben 11. August 2016 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 More sharing options...
GaRv3 Geschrieben 13. August 2016 Autor Melden Share Geschrieben 13. August 2016 Ja, das dachte ich mir schon fast. Ich werde sehen, ob sich der Aufwand für mein kleines Projekt lohnt. Aber ich danke dir vielmals für die Hilfe!!! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.