void ShaderProgram::create_from_sources(std::string const & v_source, std::string const & f_source, SubstitutionMap const& substitutions) { program_.reset(); dirty_ = true; interleaved_stream_capture_.clear(); in_rasterization_discard_ = false; substitutions_ = substitutions; stages_ = { ShaderProgramStage(scm::gl::STAGE_VERTEX_SHADER, v_source), ShaderProgramStage(scm::gl::STAGE_FRAGMENT_SHADER, f_source) }; }
void LowQualitySplattingSubRenderer::_load_shaders() { //create stages only with one thread! if(!shaders_loaded_) { #ifndef GUACAMOLE_RUNTIME_PROGRAM_COMPILATION #error "This works only with GUACAMOLE_RUNTIME_PROGRAM_COMPILATION enabled" #endif ResourceFactory factory; shader_stages_.clear(); shader_stages_.push_back(ShaderProgramStage(scm::gl::STAGE_VERTEX_SHADER, factory.read_shader_file("resources/shaders/plod/one_pass_splatting/one_pass_low_quality.vert"))); shader_stages_.push_back(ShaderProgramStage(scm::gl::STAGE_GEOMETRY_SHADER, factory.read_shader_file("resources/shaders/plod/one_pass_splatting/one_pass_low_quality.geom"))); shader_stages_.push_back(ShaderProgramStage(scm::gl::STAGE_FRAGMENT_SHADER, factory.read_shader_file("resources/shaders/plod/one_pass_splatting/one_pass_low_quality.frag"))); shaders_loaded_ = true; } }
SPointsRenderer::SPointsRenderer() : initialized_(false) { ResourceFactory factory; // create final shader description program_stages_.push_back(ShaderProgramStage( scm::gl::STAGE_VERTEX_SHADER, factory.read_shader_file("resources/shaders/forward_point_rendering.vert"))); program_stages_.push_back(ShaderProgramStage( scm::gl::STAGE_FRAGMENT_SHADER, factory.read_shader_file("resources/shaders/forward_point_rendering.frag"))); }
void ShaderProgram::create_from_files(std::string const & v_file, std::string const & f_file) { for (auto p : programs_) { p.reset(); } programs_.clear(); interleaved_stream_capture_.clear(); stages_ = { ShaderProgramStage(scm::gl::STAGE_VERTEX_SHADER, v_file, false), ShaderProgramStage( scm::gl::STAGE_FRAGMENT_SHADER, f_file, false) }; }
void LogToLinSubRenderer::_load_shaders() { //create stages only with one thread! if(!shaders_loaded_) { #ifndef GUACAMOLE_RUNTIME_PROGRAM_COMPILATION #error "This works only with GUACAMOLE_RUNTIME_PROGRAM_COMPILATION enabled" #endif ResourceFactory factory; shader_stages_.clear(); shader_stages_.push_back(ShaderProgramStage(scm::gl::STAGE_VERTEX_SHADER, factory.read_shader_file("resources/shaders/plod/p00_log_to_lin_conversion.vert"))); shader_stages_.push_back(ShaderProgramStage(scm::gl::STAGE_FRAGMENT_SHADER, factory.read_shader_file("resources/shaders/plod/p00_log_to_lin_conversion.frag"))); shaders_loaded_ = true; } }
void HoleFillingSubRenderer::_load_shaders() { //create stages only with one thread! if(!shaders_loaded_) { #ifndef GUACAMOLE_RUNTIME_PROGRAM_COMPILATION #error "This works only with GUACAMOLE_RUNTIME_PROGRAM_COMPILATION enabled" #endif ResourceFactory factory; shader_stages_.clear(); shader_stages_.push_back(ShaderProgramStage(scm::gl::STAGE_VERTEX_SHADER, factory.read_shader_file("resources/shaders/plod/linked_list_splatting/p03_fill_holes.vert")) ); shader_stages_.push_back(ShaderProgramStage(scm::gl::STAGE_FRAGMENT_SHADER, factory.read_shader_file("resources/shaders/plod/linked_list_splatting/p03_fill_holes.frag")) ); shaders_loaded_ = true; } }
void Video3DUberShader::create(std::set<std::string> const& material_names) { UberShader::create(material_names); // create depth shader std::vector<ShaderProgramStage> warp_pass_stages; warp_pass_stages.push_back( ShaderProgramStage( scm::gl::STAGE_VERTEX_SHADER, _warp_pass_vertex_shader())); warp_pass_stages.push_back( ShaderProgramStage( scm::gl::STAGE_GEOMETRY_SHADER, _warp_pass_geometry_shader())); warp_pass_stages.push_back( ShaderProgramStage( scm::gl::STAGE_FRAGMENT_SHADER, _warp_pass_fragment_shader())); auto warp_pass_program = std::make_shared<ShaderProgram>(); warp_pass_program->set_shaders(warp_pass_stages); add_program(warp_pass_program); // create final shader std::vector<ShaderProgramStage> blend_pass_stages; blend_pass_stages.push_back(ShaderProgramStage(scm::gl::STAGE_VERTEX_SHADER, _blend_pass_vertex_shader())); blend_pass_stages.push_back(ShaderProgramStage(scm::gl::STAGE_FRAGMENT_SHADER, _blend_pass_fragment_shader())); auto blend_pass_program = std::make_shared<ShaderProgram>(); blend_pass_program->set_shaders(blend_pass_stages); add_program(blend_pass_program); }