Per esempio, se io uso vertex shader come la seguente:GLSL esegue davvero calcoli superflui con valori uniformi (non per vertice)?
#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;
}
intende fare projM * viewM * modelM
moltiplicazione di matrici per ogni vertice, o abbastanza intelligente per calcolare se una volta e non ricalcolare fino variabili uniformi sono cambiati? Se non è "abbastanza intelligente", c'è un modo per ottimizzarlo se non quello di calcolare tutti i valori dipendenti dalla CPU e inviarli come variabili uniformi alla GPU?
Inoltre sono interessato alle soluzioni che possono essere convertite in OpenGL ES 2.0 in seguito senza problemi.
Awsome. Dovrò tenerlo a mente. –
+1 per lo sforzo di profilazione (e utilizzando le 2 schede grafiche che ho). – GraphicsMuncher
+1. Ma come hai valutato i risultati? Sembra che la differenza sia quasi trascurabile. Suggerisco di eseguire entrambe le simulazioni per 60 secondi e considerare solo la migliore lettura FPS (poiché rappresenta le migliori prestazioni che la CPU/GPU può fare). – Calmarius