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) };
}
Beispiel #2
0
  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;
   }
  }
Beispiel #3
0
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")));



}
Beispiel #4
0
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;
   }
  }
Beispiel #7
0
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);
}