Changeset 1256 for trunk


Ignore:
Timestamp:
Apr 21, 2012, 6:58:23 PM (8 years ago)
Author:
sam
Message:

orbital: split model matrix into modelview and projection so that we
can start working on lighting.

Location:
trunk/orbital
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/orbital/mesh.h

    r1254 r1256  
    3131            "attribute vec3 in_Normal;"
    3232            "attribute vec4 in_Color;"
    33             "uniform mat4 in_Matrix;"
     33            "uniform mat4 in_ModelView;"
     34            "uniform mat4 in_Proj;"
    3435            "varying vec4 pass_Color;"
    3536            ""
    3637            "void main(void) {"
    37             "    gl_Position = in_Matrix * vec4(in_Vertex, 1.0);"
     38            "    vec4 tmp = in_ModelView * vec4(in_Vertex, 1.0);"
     39            "    gl_Position = in_Proj * tmp;"
    3840            "    pass_Color = in_Color;"
    3941            "}",
     
    4951            "          float3 in_Normal : NORMAL,"
    5052            "          float4 in_Color : COLOR,"
    51             "          uniform float4x4 in_Matrix,"
     53            "          uniform float4x4 in_ModelView,"
     54            "          uniform float4x4 in_Proj,"
    5255            "          out float4 out_Position : POSITION,"
    5356            "          out float4 pass_Color : COLOR) {"
    5457            "    pass_Color = in_Color;"
    55             "    out_Position = mul(in_Matrix, float4(in_Vertex, 1.0));"
     58            "    float4 tmp = mul(in_ModelView, float4(in_Vertex, 1.0));"
     59            "    out_Position = mul(in_Proj, tmp);"
    5660            "}",
    5761
     
    6266#endif
    6367        );
    64         m_gpu.mvp = m_gpu.shader->GetUniformLocation("in_Matrix");
     68        m_gpu.modelview = m_gpu.shader->GetUniformLocation("in_ModelView");
     69        m_gpu.proj = m_gpu.shader->GetUniformLocation("in_Proj");
    6570        m_gpu.coord = m_gpu.shader->GetAttribLocation("in_Vertex",
    6671                                              VertexUsage::Position, 0);
     
    113118    }
    114119
    115     void Render(mat4 const &mvp)
     120    void Render(mat4 const &modelview, mat4 const &proj)
    116121    {
    117122        m_gpu.shader->Bind();
    118         m_gpu.shader->SetUniform(m_gpu.mvp, mvp);
     123        m_gpu.shader->SetUniform(m_gpu.modelview, modelview);
     124        m_gpu.shader->SetUniform(m_gpu.proj, proj);
    119125        m_gpu.vdecl->SetStream(m_gpu.vbo, m_gpu.coord, m_gpu.norm, m_gpu.color);
    120126        m_gpu.vdecl->Bind();
     
    383389        Shader *shader;
    384390        ShaderAttrib coord, norm, color;
    385         ShaderUniform mvp;
     391        ShaderUniform modelview, proj;
    386392        VertexDeclaration *vdecl;
    387393        VertexBuffer *vbo;
  • trunk/orbital/orbital.cpp

    r1254 r1256  
    5252    mat4 proj = mat4::perspective(45.0f, 640.0f, 480.0f, 0.1f, 10.0f);
    5353
    54     m_matrix = proj * view * model * anim;
     54    m_modelview = view * model * anim;
     55    m_proj = proj;
    5556}
    5657
     
    6768    }
    6869
    69     m.Render(m_matrix);
     70    m.Render(m_modelview, m_proj);
    7071}
    7172
  • trunk/orbital/orbital.h

    r1249 r1256  
    1919    Mesh m;
    2020    float m_angle;
    21     mat4 m_matrix;
     21    mat4 m_modelview, m_proj;
    2222
    2323    bool m_ready;
Note: See TracChangeset for help on using the changeset viewer.