Na przykład, jeśli mogę użyć cieniowania wierzchołków, jak następuje:Czy GLSL naprawdę robi niepotrzebne obliczenia z jednolitymi wartościami (nie na jeden wierzchołek)?
#version 400 core
uniform mat4 projM;
uniform mat4 viewM;
uniform mat4 modelM;
in vec4 in_Position;
out vec4 pass_position_model;
void main(void) {
gl_Position = projM * viewM * modelM * in_Position;
pass_position_model = modelM * in_Position;
}
to zrobi projM * viewM * modelM
Mnożenie macierzy dla każdego wierzchołka, czy to wystarczy, inteligentny, aby obliczyć jeśli raz i nie przeliczyć aż jednolite zmienne są zmieniane? Jeśli nie jest "wystarczająco inteligentny", to czy istnieje sposób na jego optymalizację, poza obliczaniem wszystkich wartości zależnych od siebie w jednostce centralnej i przesłaniem ich jako zmiennych jednolitych do procesora graficznego?
Interesują mnie również rozwiązania, które później można bez problemu przenieść do OpenGL ES 2.0.
Awsome. Będę o tym pamiętać. –
+1 dla wysiłku profilowania (i przy użyciu dwóch posiadanych kart graficznych). – GraphicsMuncher
+1. Ale jak oceniłeś wyniki? Wydaje się, że różnica jest prawie nieistotna. Sugeruję uruchomienie obu symulacji przez 60 sekund i rozważenie najlepszego odczytu FPS (ponieważ jest to najlepsza wydajność, jaką może wykonać procesor/GPU). – Calmarius