Browse Source

enable world_transform in default shader path

testing
cinnaboot 6 years ago
parent
commit
397ec3ee68
  1. 1
      include/shader_program.h
  2. 4
      src/default_shaders.cpp
  3. 2
      src/entity.cpp
  4. 6
      src/render_object.cpp
  5. 2
      src/shader_program.cpp

1
include/shader_program.h

@ -11,6 +11,7 @@ struct default_shader_program
GLuint program_id;
GLuint model_matrix_id;
GLuint world_transform_id;
GLuint view_matrix_id;
GLuint projection_matrix_id;
GLuint normal_matrix_id;

4
src/default_shaders.cpp

@ -9,6 +9,7 @@ out vec3 fragVertex;
out vec3 fragNormal;
out vec2 fragUV;
uniform mat4 world_transform;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
@ -19,7 +20,8 @@ void main()
fragNormal = normal;
fragVertex = vertexPosition_modelspace;
fragUV = texCoord.st;
gl_Position = projection * view * model * vec4(vertexPosition_modelspace, 1);
gl_Position = projection * view *
world_transform * model * vec4(vertexPosition_modelspace, 1);
}
)VS";

2
src/entity.cpp

@ -35,8 +35,6 @@ entInitModel(entity& e, const char* model_path)
bool
entInitMesh(entity& e, simple_mesh* mesh, GLenum draw_mode)
{
// TODO: test that this doesn't really do anything, then remove, and in
// entInitModel
initDefaults(e);
e.mesh = mesh;
e.render_objs = roInitSimpleMesh(*e.mesh, draw_mode);

6
src/render_object.cpp

@ -52,6 +52,7 @@ bool initGLTexture(const util_image image, GLuint& tex_id);
bool loadMeshIntoGL(default_render_object* ro_out, mesh_info* mi_in);
inline void updateMatrices(default_shader_program* shader,
camera& cam,
glm::mat4 world_xform,
glm::mat4 node_xform);
@ -157,7 +158,7 @@ drawDefault(render_objects* r_objs,
default_shader_program* shader = sw.default_shader;
default_render_object* objects = (default_render_object*) r_objs->objects;
glUseProgram(shader->program_id);
updateMatrices(shader, cam, objects->node_xform);
updateMatrices(shader, cam, world_transform, objects->node_xform);
if (lights->needs_update) lightsUpdate(lights, shader);
for (uint i = 0; i < r_objs->count; i++) {
@ -289,8 +290,11 @@ loadMeshIntoGL(default_render_object* ro_out, mesh_info* mi_in)
inline void
updateMatrices(default_shader_program* shader,
camera& cam,
glm::mat4 world_xform,
glm::mat4 node_xform)
{
glUniformMatrix4fv(
shader->world_transform_id, 1, GL_FALSE, &world_xform[0][0]);
glUniformMatrix4fv(shader->model_matrix_id, 1, GL_FALSE, &node_xform[0][0]);
glUniformMatrix4fv(shader->view_matrix_id, 1, GL_FALSE, &cam.view[0][0]);
glUniformMatrix4fv(shader->projection_matrix_id, 1, GL_FALSE,

2
src/shader_program.cpp

@ -28,6 +28,8 @@ shaderInitDefault(const char* vertex_code, const char* frag_code)
glBindVertexArray(sp->vertex_array_id);
// assign uniforms
sp->world_transform_id =
glGetUniformLocation(sp->program_id, "world_transform");
sp->model_matrix_id = glGetUniformLocation(sp->program_id, "model");
sp->view_matrix_id = glGetUniformLocation(sp->program_id, "view");
sp->projection_matrix_id =

Loading…
Cancel
Save