Example #1
0
//-------------------------------------------------------------
// GLSLProgram::loadShader() load shader
//-------------------------------------------------------------    
void ARBProgram::loadShader(int mode) {
    if ((mode & S2D)>0) {
        if ((mode & SMIP)>0)
            loadFragmentShader(mipFShader2D);
        else
            loadFragmentShader(volumeFShader2D);
    } else if((mode & S3D)>0){
        if ((mode & SMIP)>0)
            loadFragmentShader(mipFShader3D);
        else
            loadFragmentShader(volumeFShader3D);
    }
    else
    	loadFragmentShader(htFShader1D);
}   
Example #2
0
bool GLSLShader::loadShaders(const std::string& vs, const std::string& ps, const std::string& gs, GLint inputGeometryPrimitive,GLint outputGeometryPrimitive, int nb_max_vertices)
{
	m_nameVS = vs;
	m_nameFS = ps;
	m_nameGS = gs;

	std::string vss = findFile(vs);
	if(!loadVertexShader(vss)) return false;

	std::string pss = findFile(ps);
	if(!loadFragmentShader(pss)) return false;

	std::string gss = findFile(gs);
	bool geomShaderLoaded = loadGeometryShader(gss);

	if (!geomShaderLoaded)
	{
		CGoGNerr << "Error while loading geometry shader" << CGoGNendl;
	}

	if(!create(inputGeometryPrimitive,outputGeometryPrimitive,nb_max_vertices))
	{
		CGoGNout << "Unable to create the shaders !" << CGoGNendl;
		return false;
	}

	CGoGNout << "Shaders loaded (" << vs << "," << ps << "," << gs <<")" << CGoGNendl;
	return true;
}
Example #3
0
void Shader::loadFromFile(const std::string& vertexShaderPath, const std::string& fragmentShaderPath)
{
    std::string vertex = loadFile(vertexShaderPath);
    std::string fragment = loadFile(fragmentShaderPath);
	loadVertexShader(vertex);
	loadFragmentShader(fragment);
}
void CGraphicsResourceManager::handleShaderEvent(ResourceId id, EListenerEvent event,
	IResourceManager* resourceManager)
{
	ResourceId vertex;
	ResourceId tessControl;
	ResourceId tessEval;
	ResourceId geometry;
	ResourceId fragment;

	switch (event)
	{
	case EListenerEvent::Create:
		// TODO Replace assert with log statement and global error handler
		assert(m_shaderPrograms.count(id) == 0 && "Shader id already exists");

		// Load shader source ids
		if (!resourceManager->getShader(id, vertex, tessControl, tessEval, geometry, fragment))
		{
			// TODO Replace assert with log statement and global error handler
			assert(false && "Failed to access shader resource");
		}

		// Load shader objects from source
		if (!loadVertexShader(vertex, resourceManager) ||
			!loadTessControlShader(tessControl, resourceManager) ||
			!loadTessEvalShader(tessEval, resourceManager) ||
			!loadGeometryShader(geometry, resourceManager) ||
			!loadFragmentShader(fragment, resourceManager))
		{
			// TODO Log error
			return;
		}

		// Add create shader program
		m_shaderPrograms[id] = std::move(std::unique_ptr<CShaderProgram>(new CShaderProgram(
			getVertexShaderObject(vertex), getTessControlShaderObject(tessControl),
			getTessEvalShaderObject(tessEval), getGeometryShaderObject(geometry),
			getFragmentShaderObject(fragment))));

		break;

	case EListenerEvent::Change:
		// TODO Implement

	case EListenerEvent::Delete:
		// TODO Keep shader?
		break;

	default:
		// TODO Log error on unknown event?
		break;
	}
}
Example #5
0
bool GLSLShader::loadShaders(const std::string& vs, const std::string& ps)
{
	m_nameVS = vs;
	m_nameFS = ps;

	std::string vss = findFile(vs);
	if(!loadVertexShader(vss)) return false;
	
	std::string pss = findFile(ps);
	if(!loadFragmentShader(pss)) return false;

	if(!create()) {
		CGoGNout << "Unable to create the shaders !" << CGoGNendl;
		return false;
	}
	CGoGNout << "Shaders loaded (" << vs << "," << ps << ")" << CGoGNendl;
	return true; 
}
Example #6
0
bool Shader::loadShaderPairByName(const char* name)
{
  const unsigned int length = strlen("resources/shaders/") + strlen(name) + 3;
  char* vsName = new char[length];
  char* fsName = new char[length];
  sprintf(vsName, "resources/shaders/%s%s", name, ".vs");
  sprintf(fsName, "resources/shaders/%s%s", name, ".fs");
  printf("Status for shader \"%s\": ", name);
  if(loadVertexShader(vsName) && loadFragmentShader(fsName))
  {
    delete[] vsName;
    delete[] fsName;
    return true;
  } else {
    delete[] vsName;
    delete[] fsName;
    return false;
  }
}
Example #7
0
/**
 * @brief Loads a fragment shader
 *
 * @param fragmentShader
 *      Fragment program
 */
void Shader::loadFragmentShaderFromFile(const std::string &fragmentShader) {
    loadFragmentShader(loadFile(fragmentShader));
}
Example #8
0
void Shader::loadFromMemory(const std::string& vertex, const std::string& fragment)
{
	loadVertexShader(vertex);
	loadFragmentShader(fragment);
}
Example #9
0
Shader::Shader(const char * const vertexFilename, const char * const fragmentFilename)
{
  loadVertexShader(vertexFilename);
  loadFragmentShader(fragmentFilename);
}