Hmmmm.... you'd need to talk to someone who knows the insides of QC and OpenGL. Sadly, I'm not that person. I do remember that the reason vertex attributes for Tangent, Bitangent in QC weren't a goer had something to do with the application's handling of extra texture coordinates. I think it basically can't handle more than one texture coordinate per-vertex. Can't give you any more specific information though. I'm sure there are some others on the QC devlist who can give you some more info. a|x
--- On Fri, 19/3/10, luca palmili <[email protected]> wrote: From: luca palmili <[email protected]> Subject: Re: tangent and bitanget attributes in GLSL shader To: "Alex Drinkwater" <[email protected]> Cc: [email protected] Date: Friday, 19 March, 2010, 16:44 Hi Alex,don't worry about the bad news: we're here to "solve" problems: no problems = no fun :)I think that it should be possible to pass tangent values using gl_TexCoord variable. I used OpenCollada exporter in 3dstudio max with "export tangent/binormal" option turned on. In the .dae file created the are these lines: <input semantic="VERTEX" source="#geom-Plane01-vertices" offset="0"/> <input semantic="NORMAL" source="#geom-Plane01-normals" offset="1"/> <input semantic="TEXCOORD" source="#geom-Plane01-map1" offset="2" set="1"/> <input semantic="TEXTANGENT" source="#geom-Plane01-map1-textangents" offset="3" set="1"/> <input semantic="TEXBINORMAL" source="#geom-Plane01-map1-texbinormals" offset="3" set="1"/> Now I know that tangent and binormal per-vertex values are described in the mesh file. How to read that values in the GLSL shader? Here it is how collada handles multiple texture: http://www.gamedev.net/community/forums/topic.asp?topic_id=529630&whichpage=1� ..so I tried to modify the .dae file to pass tangents and binormal values as multiple texture coordinates adding these lines: <input semantic="TEXCOORD" source="#geom-Plane01-map1" offset="2" set="0"/> [...] <bind_vertex_input semantic="TEXCOORD" input_semantic="TEXTANGENT" input_set="1" set="1"></bind_vertex_input> <bind_vertex_input semantic="TEXCOORD" input_semantic="TEXBINORMAL" input_set="1" set="2"></bind_vertex_input> ..and then I tried to access texture UV coords using gl_TexCoord[0], tangents coords using gl_TexCoord[1], and binormal coords using gl_TexCoord[2]but it doesn't seem to work. :\ Am I wasting my time, or it could be one possible solution? I was wanted to do the same thing a while back. Unfortunately, the answer was pretty much that it can t be done in QC. It could potentially be achieved with a 3rd-party plugin like Kineme 3D, but the Kineme developers seemed to think the way QC is setup internally makes it very difficult to pass arbitrary vertex attributes to GLSL shaders. Sorry to be the bearer of bad news... a|x >Hi, >I'm trying to implement cone-step mapping shader in QC, and I got this >problem: the GLSL vertex shader needs to know the tangent of each vertex. As >far as I know, GLSL lets to access to the per-vertex normal value using the >built-in attribute gl_Normal, but the tangent of each vertex needs to be >passed from the OpenGL application (calculated when the mesh is loaded for >example), or stored in the mesh file. >So, i guess the right way to do that is to use per-vertex attribute like >this in vertex shader: > >[...] >attribute vec3 tangent; //The tangent of the current vertex >[...] > >...but how can this attribute be passed to the GLSL shader for each vertex? >I also need per-vertex binormal value, but I guess it would be ok to >calculculate its value once I got per-vertex normal and tangent values in >this way: > >binormal = normalize(cross(normal, tangent)); > >Thank you for any kind of help!
_______________________________________________ Do not post admin requests to the list. They will be ignored. Quartzcomposer-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com This email sent to [email protected]

