public Shader(String fileName)
	{
		this.m_fileName = fileName;

		ShaderResource oldResource = s_loadedShaders.get(fileName);

		if(oldResource != null)
		{
			m_resource = oldResource;
			m_resource.AddReference();
		}
		else
		{
			m_resource = new ShaderResource();

			String vertexShaderText = LoadShader(fileName + ".vs");
			String fragmentShaderText = LoadShader(fileName + ".fs");

			AddVertexShader(vertexShaderText);
			AddFragmentShader(fragmentShaderText);

			AddAllAttributes(vertexShaderText);

			CompileShader();

			AddAllUniforms(vertexShaderText);
			AddAllUniforms(fragmentShaderText);
			
			s_loadedShaders.put(fileName, m_resource);
		}
	}