2011-07-15 10 views
10

Para mayor claridad, comienzo con mi pregunta: ¿¿Tiene RenderMonkey un error en el mapeo de flujo TEXCOORD para GLSL?

¿Es posible usar (en el código de sombreado) del atributo personalizado nombrar que yo pongo para el uso TexCoord en el (OpenGL) mapeo de la cadena de RenderMonkey 1.82 o tengo que usar gl_MultiTexCoord0? (La pregunta podría ser válida para el uso normal también, es decir, nombre de encargo o gl_Normal)

Antecedentes:

Usando RenderMonkey la versión 1.82. He utilizado con éxito el mapeo de flujo para mapear la "posición" de atributo de vértice general (y tal vez "normal"), pero las coordenadas de textura no parecen ser reenviadas correctamente. Para el código de sombreado, uso #version 330 y el calificador "in" en GLSL, lo cual debería estar bien, ya que RM no compila los sombreadores en sí (el controlador OpenGL sí).

He intentado ambos archivos .obj y .3ds (exportados de Blender), y cuando comprobaba el archivo .obj de wavefront, toda la información de coordenadas de textura está allí, así como las posiciones de los vértices y las normales.

Si no es posible, el mapeo de flujo está roto y no tiene sentido nombrar las variables en el editor de mapeo de flujo (además del flujo de posición de vértices, que funciona), ya que uno tiene que usar el built-in variables de todos modos.

Actualización: Si se utiliza el desuso variables incorporadas, uno tiene que usar el modo de compatibilidad en el ejemplo de sombreado

#version 330 compatibility 
out vec2 vTexCoord; 

y, en la función principal:

vTexCoord = vec2(gl_MultiTexCoord0); 

(Ahora Tampoco estoy seguro del mapeo de corriente de las normales. Tan pronto como obtuve las coordenadas de textura funcionando, tuve problemas normales y tuve que volver a gl_Normal.)

Aquí hay una imagen de una solución de trabajo, pero con variables incorporadas (y sí, la variable texcoord comentada en la imagen no tiene el mismo nombre que en el cuadro de diálogo de asignación de ruta, pero tenía el mismo nombre cuando traté de usarlo, así que está bien): Stream mapping bypassed with built in variables

+1

no tengo la una Haga clic para su pregunta, pero puedo sugerir una alternativa multiplataforma, ShaderMaker: http://cg.in.tu-clausthal.de/teaching/shader_maker/index.shtml – appas

+0

Gracias por su sugerencia. No he evaluado ShaderMaker, pero parece estar dirigido a la tubería fija. Aparentemente hay otro proyecto llamado Lumina que también podría ser una alternativa. – Deorbit

+0

¿Puede Render Monkey soportar 3.30 sombreadores en absoluto? Pensé que solo para OpenGL 2.1 ... –

Respuesta

0

usted podría tratar de usar los atributos de los vértices genéricos, véase http://open.gl, es un gran tutorial;) (pero creo que implicaría que tendría que volver a escribir el código para manual. manejar las transformaciones ...)

0
#version 330 

layout(location = 0) in vec3 bla_bla_bla_Vertex; 
layout(location = 2) in vec3 bla_bla_bla_Normal; 
layout(location = 8) in vec3 bla_bla_bla_TexCoord0; 

Esta es una solución de trabajo para RM 1.82

Cuestiones relacionadas