Hi Rômulo,

Hi,

I have used normal mapping using GLSL and OSG for my application (an imaging 
sonar simulation) and I got problems by calculating the TBN matrix on shaders. 
The normal vectors contain lower resolution on border in comparison with the 
center of image.

You cannot get a valid Co-TangentSpace by taking only the normal into account considering arbitrary geometries. There are multiple ways to tackle this however: First is to calculate the mesh's tangentspace beforehand and pass the tangent and binormal via vertex attributes. See the osgUtil::TangentSpaceGenerator (example in the osg::CookBook AFAIK).

Second one is to calculate it in the view-space. Beware of dragons, since the precision will be awful for big coordinates:

http://www.thetenthplanet.de/archives/1180

hth
Sebastian


Follows my vertex code:

Code:

#version 130

out vec3 pos;
out vec3 normal;
out mat3 TBN;

void main() {
     pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
     normal = gl_NormalMatrix * gl_Normal.xyz;

     vec3 n = normalize(normal);
     vec3 t = normalize(cross(normal, vec3(-1,0,0)));
     vec3 b = cross(t, n) + cross(n, t);
     TBN = transpose(mat3(t,b,n));

     gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
     gl_TexCoord[0] = gl_MultiTexCoord0;
}




Part of my fragment code:

Code:

#version 130

in vec3 pos;
in vec3 normal;
in mat3 TBN;
uniform sampler2D normalTexture;

void main() {
     vec3 newNormal = (texture2D(normalTexture, gl_TexCoord[0].st).rgb * 2.0 - 
1) * TBN;
     newNormal = normalize(newNormal);
...
}




The resulting figure is attached.

How can I calculate the TBN matrix to compute the normal mapping properly?

Thanks in advance,


...

Thank you!

Cheers,
Rômulo[/img]

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=72324#72324




Attachments:
http://forum.openscenegraph.org//files/screenshot_from_2017_11_06_23_00_48_832.png


_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to