Jelajahi Sumber

Use hard coded shaders in both renderers

mikymod 12 tahun lalu
induk
melakukan
a0fb0b1e6f

+ 21 - 28
src/renderers/gl/GLRenderer.cpp

@@ -954,51 +954,44 @@ void GLRenderer::draw_lines(const float* vertices, const float* colors, uint32_t
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 void GLRenderer::load_default_shaders()
 void GLRenderer::load_default_shaders()
 {
 {
-	ResourceManager* resman = device()->resource_manager();
+	static const char* vs_text =
+		"in vec4 vertex;"
+		"in vec2 coords;"
+		"uniform mat4 mvp_matrix;"
+		"uniform vec3 color;"
 
 
-	// Load default vertex/pixel shaders
-	m_default_vertex_shader = resman->load("default/default.vs");
-	m_default_pixel_shader = resman->load("default/default.ps");
+		"void main(void)"
+		"{"
+		"	gl_Position = mvp_matrix * vertex;"
 
 
-	// Wait for loading
-	resman->flush();
+		"	gl_FrontColor = vec4(color, 1.0);"
+		"}";
 
 
-	// Obtain resource data
-	VertexShaderResource* vs = (VertexShaderResource*)resman->data(m_default_vertex_shader);
-	PixelShaderResource* ps = (PixelShaderResource*)resman->data(m_default_pixel_shader);
+	static const char* ps_text = 
+		"void main(void)"
+		"{"
+		"	gl_FragColor = gl_Color;"
+		"}";
+
+	m_default_vertex_shader = create_vertex_shader(vs_text);
+	m_default_pixel_shader = create_pixel_shader(ps_text);
 
 
 	// Create and bind the default program
 	// Create and bind the default program
-	m_default_gpu_program = create_gpu_program(vs->vertex_shader(), ps->pixel_shader());
+	m_default_gpu_program = create_gpu_program(m_default_vertex_shader, m_default_pixel_shader);
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 void GLRenderer::unload_default_shaders()
 void GLRenderer::unload_default_shaders()
 {
 {
-	ResourceManager* resman = device()->resource_manager();
+	destroy_pixel_shader(m_default_pixel_shader);
+	destroy_vertex_shader(m_default_vertex_shader);
 
 
 	destroy_gpu_program(m_default_gpu_program);
 	destroy_gpu_program(m_default_gpu_program);
-
-	resman->unload(m_default_pixel_shader);
-	resman->unload(m_default_vertex_shader);
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 void GLRenderer::reload_default_shaders()
 void GLRenderer::reload_default_shaders()
 {
 {
-	ResourceManager* resman = device()->resource_manager();
-
-	resman->reload(m_default_vertex_shader);
-	resman->reload(m_default_pixel_shader);
-
-	// Destroy old gpu program
-	destroy_gpu_program(m_default_gpu_program);
-
-	// Obtain resource data
-	VertexShaderResource* vs = (VertexShaderResource*)resman->data(m_default_vertex_shader);
-	PixelShaderResource* ps = (PixelShaderResource*)resman->data(m_default_pixel_shader);
-
-	// Create and bind the new default program
-	m_default_gpu_program = create_gpu_program(vs->vertex_shader(), ps->pixel_shader());
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------

+ 2 - 2
src/renderers/gl/GLRenderer.h

@@ -268,8 +268,8 @@ private:
 	//GLRenderBuffer	m_render_buffers[MAX_RENDER_BUFFERS];
 	//GLRenderBuffer	m_render_buffers[MAX_RENDER_BUFFERS];
 
 
 	// Default shaders
 	// Default shaders
-	ResourceId			m_default_vertex_shader;
-	ResourceId			m_default_pixel_shader;
+	VertexShaderId		m_default_vertex_shader;
+	PixelShaderId		m_default_pixel_shader;
 	GPUProgramId		m_default_gpu_program;
 	GPUProgramId		m_default_gpu_program;
 };
 };
 
 

+ 26 - 36
src/renderers/gles/GLESRenderer.cpp

@@ -808,7 +808,6 @@ void GLESRenderer::frame()
 	bind_gpu_program(m_default_gpu_program);
 	bind_gpu_program(m_default_gpu_program);
 
 
 	set_gpu_program_mat4_uniform(m_default_gpu_program, "mvp_matrix", m_model_view_projection_matrix);
 	set_gpu_program_mat4_uniform(m_default_gpu_program, "mvp_matrix", m_model_view_projection_matrix);
-	set_gpu_program_vec3_uniform(m_default_gpu_program, "color", Vec3(0, 1, 0));
 
 
 	glFinish();
 	glFinish();
 	check_gl_errors();
 	check_gl_errors();
@@ -940,51 +939,42 @@ void GLESRenderer::draw_lines(const float* vertices, const float* colors, uint32
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 void GLESRenderer::load_default_shaders()
 void GLESRenderer::load_default_shaders()
 {
 {
-	ResourceManager* resman = device()->resource_manager();
-
-	// Load default vertex/pixel shaders
-	m_default_vertex_shader = resman->load("default/default.vs");
-	m_default_pixel_shader = resman->load("default/default.ps");
-
-	// Wait for loading
-	resman->flush();
-
-	// Obtain resource data
-	VertexShaderResource* vs = (VertexShaderResource*)resman->data(m_default_vertex_shader);
-	PixelShaderResource* ps = (PixelShaderResource*)resman->data(m_default_pixel_shader);
+	static const char* vs_text =
+		"attribute vec4 vertex;"
+		"attribute vec2 coords;"
+		"uniform mat4 mvp_matrix;"
+		"uniform vec3 color;"
+
+		"void main(void)"
+		"{"
+		"	gl_Position = mvp_matrix * vertex;"
+		"}";
+
+	static const char* ps_text = 
+		"void main(void)"
+		"{"
+		"	gl_FragColor = vec4(1, 0, 0, 0);"
+		"}";
+
+	m_default_vertex_shader = create_vertex_shader(vs_text);
+	m_default_pixel_shader = create_pixel_shader(ps_text);
 
 
 	// Create and bind the default program
 	// Create and bind the default program
-	m_default_gpu_program = create_gpu_program(vs->vertex_shader(), ps->pixel_shader());
+	m_default_gpu_program = create_gpu_program(m_default_vertex_shader, m_default_pixel_shader);
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 void GLESRenderer::unload_default_shaders()
 void GLESRenderer::unload_default_shaders()
 {
 {
-	ResourceManager* resman = device()->resource_manager();
+	destroy_pixel_shader(m_default_pixel_shader);
+	destroy_vertex_shader(m_default_vertex_shader);
 
 
 	destroy_gpu_program(m_default_gpu_program);
 	destroy_gpu_program(m_default_gpu_program);
-
-	resman->unload(m_default_pixel_shader);
-	resman->unload(m_default_vertex_shader);
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 void GLESRenderer::reload_default_shaders()
 void GLESRenderer::reload_default_shaders()
 {
 {
-	ResourceManager* resman = device()->resource_manager();
-
-	resman->reload(m_default_vertex_shader);
-	resman->reload(m_default_pixel_shader);
-
-	// Destroy old gpu program
-	destroy_gpu_program(m_default_gpu_program);
-
-	// Obtain resource data
-	VertexShaderResource* vs = (VertexShaderResource*)resman->data(m_default_vertex_shader);
-	PixelShaderResource* ps = (PixelShaderResource*)resman->data(m_default_pixel_shader);
-
-	// Create and bind the new default program
-	m_default_gpu_program = create_gpu_program(vs->vertex_shader(), ps->pixel_shader());
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -1021,16 +1011,16 @@ void GLESRenderer::check_gl_errors() const
 		switch (error)
 		switch (error)
 		{
 		{
 			case GL_INVALID_ENUM:
 			case GL_INVALID_ENUM:
-				Log::e("GLRenderer: GL_INVALID_ENUM");
+				Log::e("GLESRenderer: GL_INVALID_ENUM");
 				break;
 				break;
 			case GL_INVALID_VALUE:
 			case GL_INVALID_VALUE:
-				Log::e("GLRenderer: GL_INVALID_VALUE");
+				Log::e("GLESRenderer: GL_INVALID_VALUE");
 				break;
 				break;
 			case GL_INVALID_OPERATION:
 			case GL_INVALID_OPERATION:
-				Log::e("GLRenderer: GL_INVALID_OPERATION");
+				Log::e("GLESRenderer: GL_INVALID_OPERATION");
 				break;
 				break;
 			case GL_OUT_OF_MEMORY:
 			case GL_OUT_OF_MEMORY:
-				Log::e("GLRenderer: GL_OUT_OF_MEMORY");
+				Log::e("GLESRenderer: GL_OUT_OF_MEMORY");
 				break;
 				break;
 		}
 		}
 	}
 	}

+ 2 - 2
src/renderers/gles/GLESRenderer.h

@@ -265,8 +265,8 @@ private:
 	//GLRenderBuffer	m_render_buffers[MAX_RENDER_BUFFERS];
 	//GLRenderBuffer	m_render_buffers[MAX_RENDER_BUFFERS];
 
 
 	// Default shaders
 	// Default shaders
-	ResourceId			m_default_vertex_shader;
-	ResourceId			m_default_pixel_shader;
+	VertexShaderId		m_default_vertex_shader;
+	PixelShaderId		m_default_pixel_shader;
 	GPUProgramId		m_default_gpu_program;
 	GPUProgramId		m_default_gpu_program;
 };
 };