Wie funktioniert der Cache mit kachelbasiertem Rendering?
Gibt es Tipps, wie Sie die Cache-Trefferquote verbessern können? (Wenn beispielsweise Kacheln horizontal verarbeitet werden und ich vertikale Dreiecksegmente mit derselben Textur habe, funktioniert dies für den Cache schlechter als wenn ich Dreiecke horizontal auslegen würde?)
texture
gpu
shader
optimisation
Felipe Lira
quelle
quelle
Antworten:
Ob es sich um eine kachelbasierte GPU handelt oder nicht, wirkt sich nicht wirklich auf die Textur-Cache-Architektur aus. Das Speicherlayout der Textur sieht in allen GPUs wie eine Art Morton-Ordnung oder Hilbert-Kurve aus.
Infolgedessen ist es effizienter, Dreiecke zu rendern, die nahe an gleichseitigen Dreiecken liegen, da das GPU-Speichersystem Cache-Zeilen von Texeln abruft.
Offensichtlich kann es an Kachelrändern vorkommen, dass Sie Texel zweimal abrufen müssen. Dies hat geringe Kosten, da Kachelränder nur "wenige" Pixel sind.
Möglicherweise verhalten sich Desktop-GPUs identisch mit kachelbasierten GPUs, wie Experimente wie die folgenden zeigen: http://www.g-truc.net/post-0597.html
Die Größe der Kacheln ist unterschiedlich, aber beide Architekturen verarbeiten Fragmente tatsächlich zu einer Hierarchie von Kacheln unterschiedlicher Größe.
Bei der Codierung von kachelbasierten GPUs empfehle ich Folgendes:
quelle