[osg-users] TBN Matrix for Normal Mapping - OSG and GLSL
Sebastian Messerschmidt
sebastian.messerschmidt at gmx.de
Wed Nov 8 00:18:25 PST 2017
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 at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
More information about the osg-users
mailing list