Explorar el Código

update RenderWorld

mikymod hace 12 años
padre
commit
20d09f9809
Se han modificado 2 ficheros con 15 adiciones y 20 borrados
  1. 14 19
      engine/RenderWorld.cpp
  2. 1 1
      engine/RenderWorld.h

+ 14 - 19
engine/RenderWorld.cpp

@@ -50,23 +50,22 @@ UniformId				u_lightmap_0;
 UniformId				u_brightness;
 
 static const char* default_vertex =
-	"in vec4           a_position;"
-	"in vec4           a_normal;"
-	"in vec2           a_tex_coord0;"
-	"in vec4           a_color;"
+	"uniform mat4      	u_model;"
+	"uniform mat4      	u_model_view_projection;"
 
-	"uniform mat4      u_model;"
-	"uniform mat4      u_model_view_projection;"
+	"in vec4           	a_position;"
+	"in vec4           	a_normal;"
+	"in vec2           	a_tex_coord0;"
+	"in vec4           	a_color;"
 
-	"varying out vec2  tex_coord0;"
-	"varying out vec4  color;"
+	"varying out vec2	tex_coord0;"
+	"varying out vec4	color;"
 
 	"void main(void)"
 	"{"
 	"	tex_coord0 = a_tex_coord0;"
 	"   color = a_color;"
 	"	gl_Position = u_model_view_projection * a_position;"
-	"	gl_FrontColor = vec4(vec3(1, 0, 0), 1.0);"
 	"}";
 
 static const char* default_fragment = 
@@ -80,12 +79,10 @@ static const char* texture_fragment =
 	"in vec4            color;"
 
 	"uniform sampler2D  u_albedo_0;"
-	"uniform sampler2D  u_lightmap_0;"
-	"uniform float      u_brightness;"
 
 	"void main(void)"
 	"{"
-	"	gl_FragColor = texture(u_albedo_0, tex_coord0) * texture(u_lightmap_0, tex_coord0) * color * u_brightness;"
+	"	gl_FragColor = texture(u_albedo_0, tex_coord0);"
 	"}";
 
 //-----------------------------------------------------------------------------
@@ -102,8 +99,6 @@ RenderWorld::RenderWorld()
 	texture_fs = r->create_shader(ShaderType::FRAGMENT, texture_fragment);
 
 	u_albedo_0 = r->create_uniform("u_albedo_0", UniformType::INTEGER_1, 1);
-	u_lightmap_0 = r->create_uniform("u_lightmap_0", UniformType::INTEGER_1, 1);
-	u_brightness = r->create_uniform("u_brightness", UniformType::FLOAT_1, 1);
 
 	default_program = r->create_gpu_program(default_vs, default_fs);
 	texture_program = r->create_gpu_program(default_vs, texture_fs);
@@ -153,9 +148,9 @@ Mesh* RenderWorld::lookup_mesh(MeshId mesh)
 }
 
 //-----------------------------------------------------------------------------
-SpriteId RenderWorld::create_sprite(const char* name, int32_t node, const Vector3& pos, const Quaternion& rot)
+SpriteId RenderWorld::create_sprite(ResourceId id, int32_t node, const Vector3& pos, const Quaternion& rot)
 {
-	SpriteResource* sr = (SpriteResource*) device()->resource_manager()->lookup(SPRITE_EXTENSION, name);
+	SpriteResource* sr = (SpriteResource*) device()->resource_manager()->data(id);
 
 	SpriteId sprite = allocate_sprite(sr, node, pos, rot);
 
@@ -222,10 +217,10 @@ void RenderWorld::update(const Matrix4x4& view, const Matrix4x4& projection, uin
 		r->set_state(STATE_DEPTH_WRITE | STATE_COLOR_WRITE | STATE_ALPHA_WRITE | STATE_CULL_CW);
 		r->set_vertex_buffer(sprite.m_vb);
 		r->set_index_buffer(sprite.m_ib);
-		r->set_program(sprite.m_program);
-		r->set_texture(0, sprite.m_uniform, sprite.m_texture, TEXTURE_FILTER_LINEAR | TEXTURE_WRAP_CLAMP_EDGE);
+		r->set_program(texture_program);
+		r->set_texture(0, u_albedo_0, sprite.m_texture, TEXTURE_FILTER_LINEAR | TEXTURE_WRAP_CLAMP_EDGE);
 
-		r->set_pose(sprite.m_local_pose);
+		r->set_pose(sprite.m_world_pose);
 		r->commit(0);
 	}
 

+ 1 - 1
engine/RenderWorld.h

@@ -58,7 +58,7 @@ public:
 	void 		destroy_mesh(MeshId id);
 	Mesh* 		lookup_mesh(MeshId mesh);
 
-	SpriteId	create_sprite(const char* name, int32_t node = -1, const Vector3& pos = Vector3::ZERO, const Quaternion& rot = Quaternion::IDENTITY);
+	SpriteId	create_sprite(ResourceId id, int32_t node = -1, const Vector3& pos = Vector3::ZERO, const Quaternion& rot = Quaternion::IDENTITY);
 	void		destroy_sprite(SpriteId id);
 	Sprite*		lookup_sprite(SpriteId id);