descargar opengl shader glsl fragment

opengl shader descargar



Fragment shaders: variables de salida (3)

quiero dar algunos ejemplos:

void add(in float a, in float b, out float c) { //you can not use c here. only set value //changing values of a and b does not change anything. c = a + b; } void getColor(out float r, out float g, out float b) { //you can not use r, g, b here. only set value r = gl_FragColor.r; g = gl_FragColor.g; b = gl_FragColor.b; } void amplify(inout vec4 pixelColor, in value) { //inout is like a reference pixelColor = pixelColor * value; }

Lectura de la especificación GLSL 1.40:

Las salidas de fragmentos solo pueden ser float, vectores de coma flotante, enteros con o sin signo o vectores enteros, o matrices de cualquiera de estos. Matrices y estructuras no pueden ser enviadas. Las salidas de fragmentos se declaran como en los siguientes ejemplos:

out vec4 FragmentColor; fuera Luminosidad;

El color del fragmento está definido escribiendo gl_FragColor ... ¿está bien? ¿Alguien podría aclarar mis ideas sobre estos resultados? ¿Puedo escribir solo ''FragmentColor'' del ejemplo para determinar el color del fragmento? ¿Puedo leerlos (''Luminosity'' por ejemplo)?


La variable de salida global gl_FragColor está en desuso después de la versión 120 de GLSL. Ahora debe darle un nombre y escribirlo usted mismo, como en su ejemplo. Con respecto a varios productos, este enlace le brinda información sobre el mapeo: http://www.opengl.org/wiki/GLSL_Objects#Program_linking

(Y encontré ese enlace en: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=270999 )

¡Espero que esto ayude! :RE

Ooops! Veo que kvark dio la información relevante. De todos modos, tal vez también sacó algo de mi texto.


Tu ejemplo tiene 2 salidas. Tienen ranuras de FBO correspondientes asociadas después del enlace del programa GLSL. Puede redirigirlos usando glBindFragDataLocation .

Una vez que haya activado el sombreador y el FBO vinculado, todo depende de una máscara de dibujo, establecida por glDrawBuffers . Por ejemplo, si pasó GL_COLOR_ATTACHMENT0 y GL_COLOR_ATTACHMENT2 allí, eso significaría que el índice de salida 0 irá al archivo adjunto 0, y el índice de salida 1 irá al archivo adjunto de color 2.