glsl matrix issue

   886   1   1
User Avatar
Member
6 posts
Joined: July 2016
Offline
I have a box in the viewport. I want to output its local position on screen.
Follow the description in HDK_ViewportGL3_Intro: “glH_InvObjectMatrix (mat4) - inverse transform matrix for the current object (world->local)”.

I multiply glH_InvObjectMatrix to vert's position.
Obviously, the result is not right.


I'd like to know why it is not working, what is the right way to get the desired result?

vert
in vec3 P;

uniform mat4    glH_ObjectMatrix;
uniform mat4    glH_ViewMatrix;
uniform mat4    glH_ProjectMatrix;
uniform mat4    glH_InvObjectMatrix;

out parms
{
    vec4  pos;
} vsOut;                       
                       
void main()
{
    vec4 pos;   
    pos = vec4(P, 1.0);
    vsOut.pos = glH_InvObjectMatrix * pos;
    gl_Position  = glH_ProjectMatrix * glH_ViewMatrix * glH_ObjectMatrix * pos;
}

frag
in wparms
{
    vec4 pos;
} fsIn;

uniform mat4 glH_InvObjectMatrix;

out vec4 color;

void main()
{
    color = vec4(fsIn.pos.xyz, 1.0);
}
User Avatar
Staff
5156 posts
Joined: July 2005
Offline
P is already in local object space, so don't multiply it by anything.
  • Quick Links