Asset* AssetManager::LoadSubShaders(const std::string& subshaderFile)
{
  std::string fullPath = GetAbsolutePathOfFile(subshaderFile);
  std::wstring filepath = std::wstring(fullPath.begin(),fullPath.end());
  SUBSHADERTYPE sstype = GetSubShaderTypeFromFile(fullPath);

  Asset* pSubShader = 0;;

  switch (sstype)
  {
  case VERTEX_SHADER:

    pSubShader = new SubShader<ID3D11VertexShader>(filepath, sstype);
    break;

  case PIXEL_SHADER:

    pSubShader = new SubShader<ID3D11PixelShader>(filepath, sstype);
    break;
  case COMPUTE_SHADER:

	  pSubShader = new SubShader<ID3D11ComputeShader>(filepath, sstype);
	  break;

  case GEOMETRY_SHADER:

	  pSubShader = new SubShader<ID3D11GeometryShader>(filepath, sstype);
	  break;
  }

  pSubShader->SetAutoUnload(false);
  pSubShader->AddUseCounter();

  return pSubShader;
}