Nella mia scena ho un oggetto 3D e lo shader di frammenti per questo oggetto riceve una trama con le stesse dimensioni dello schermo. Voglio ottenere le coordinate dal frammento corrente e trovare le informazioni sul colore sull'immagine nella stessa posizione. È possibile? Qualcuno può indicarmi la giusta direzione?Ricerca del colore dei pixel in una coordinata specifica da un sampler2D utilizzando GLSL
7
A
risposta
12
Lo shader di frammenti ha un valore incorporato denominato gl_FragCoord che fornisce le coordinate pixel del frammento di destinazione. È necessario dividerlo in base alla larghezza e all'altezza della finestra per ottenere le coordinate della trama per la ricerca. Ecco un breve esempio:
uniform vec2 resolution;
uniform sampler2D backbuffer;
void main(void) {
vec2 position = (gl_FragCoord.xy/resolution.xy);
vec4 color = texture2D(backbuffer, position);
// ... do something with it ...
}
Per un esempio di lavoro completo, provate questo in un browser WebGL-grado:
Non riesco a credere che fosse così semplice, grazie un sacco @emackey , Ho cercato di farlo per giorni –