Ejemplo n.º 1
0
std::string Video3DUberShader::_warp_pass_geometry_shader() const
{
  std::string geometry_shader(
    Resources::lookup_shader(Resources::shaders_uber_shaders_gbuffer_video3d_warp_pass_geom)
  );

  return geometry_shader;
}
Ejemplo n.º 2
0
ShaderColorGeometry::ShaderColorGeometry(GraphicContext &gc)
{
	ShaderObject vertex_shader(gc, shadertype_vertex, vertex);
	if(!vertex_shader.compile())
	{
		throw Exception(string_format("Unable to compile vertex shader object: %1", vertex_shader.get_info_log()));
	}

	ShaderObject geometry_shader(gc, shadertype_geometry, geometry);
	if(!geometry_shader.compile())
	{
		throw Exception(string_format("Unable to compile geometry shader object: %1", geometry_shader.get_info_log()));
	}

	if (!glProgramParameteri)
		throw Exception("Geomtry shader is not available");

	ShaderObject fragment_shader(gc, shadertype_fragment, fragment);
	if(!fragment_shader.compile())
	{
		throw Exception(string_format("Unable to compile fragment shader object: %1", fragment_shader.get_info_log()));
	}

	program_object = ProgramObject(gc);
	program_object.attach(vertex_shader);
	program_object.attach(geometry_shader);
	program_object.attach(fragment_shader);
	program_object.bind_attribute_location(0, "InPosition");
	program_object.bind_attribute_location(1, "InColor");
	program_object.bind_frag_data_location(0, "cl_FragColor");

	if (!program_object.link())
	{
		throw Exception(string_format("Unable to link program object: %1", program_object.get_info_log()));
	}
	
	program_object.set_uniform1i("Texture0", 0);

	gpu_uniforms = clan::UniformVector<ProgramUniforms>(gc, 1);


}
Ejemplo n.º 3
0
//-------------------------------------------------------------
// GLSupport::gl_init() initialize
//-------------------------------------------------------------
void GLSupport::gl_init()
{
	static int initialized=0;
	if(!initialized){
		const GLubyte *version=glGetString(GL_VERSION);
		const GLubyte *glsl_version=glGetString(GL_SHADING_LANGUAGE_VERSION);
		gl_version=10*(version[0]-'0');
		gl_version+=version[2]-'0';
		ARB_multitexture_supported=extensionSupported("GL_ARB_multitexture");
		ARB_texture_env_combine_supported=extensionSupported("GL_ARB_texture_env_combine");
		ARB_texture_cube_map_supported=extensionSupported("GL_ARB_texture_cube_map");
		ARB_texture_env_dot3_supported=extensionSupported("GL_ARB_texture_env_dot3");
		ARB_shading_language_100_supported=extensionSupported("GL_ARB_shading_language_100");
		ARB_shader_objects_supported=extensionSupported("GL_ARB_shader_objects");
		EXT_framebuffer_object_supported=extensionSupported("GL_EXT_framebuffer_object");
		ARB_geometry_shader4_supported=extensionSupported("GL_ARB_geometry_shader4");
		printf("OGL  version : %s (%d)\n",version,gl_version);
		printf("GLSL version : %s \n",glsl_version);
#ifdef SHOW_ALL_EXTENSIONS
		const GLubyte *exts=glGetString(GL_EXTENSIONS);
        printf("%s\n",exts);
#endif
		initialized=1;
	}

	setContext();

	// make white texture for ogl1.1 specular pass
	//if(gl_version==11){
	//	glGenTextures (1, &white_texture);
	//	glBindTexture (GL_TEXTURE_2D, white_texture);
	//}
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

	//glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST );
	//glHint(GL_POINT_SMOOTH_HINT, GL_NICEST );

	//glPolygonOffset(0.1,1);
	//glEnable(GL_POLYGON_OFFSET_FILL);
	int auxbufs=0;

	glGetIntegerv(GL_SAMPLE_BUFFERS_ARB,&auxbufs);

	//glEnable(GL_POLYGON_SMOOTH);
 	//glEnable(GL_NORMALIZE);

   // unsigned char pixels[2*2*4];
    //memset (pixels, 0xff, 2*2*4);
    //glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, 2, 2,
     //             0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);

	txchnls=1;
	if(multiTextures()){
#ifdef GL_MAX_TEXTURE_UNITS_ARB
		glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB,&txchnls);
#else
#ifdef GL_MAX_ACTIVE_TEXTURES_ARB
		glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&txchnls);
#endif
#endif
	    printf("max multi-texture channels = %d\n",txchnls);
	}
	else
		printf(" multi-textures support disabled\n");

	if(glsl()){
		printf("GLSL supported\n");
		if(geometry_shader())
			printf("Geometry shader supported\n");
		else
			printf("Geometry shader NOT supported\n");
		if(renderTextures())
			printf("Render to Texture supported\n");
		else
			printf("Render to Texture NOT supported\n");
	}
	else
		printf("GLSL NOT supported\n");

	set_spectex(1);
}