GeoSphereProgram::GeoSphereProgram(const std::string &filename, const std::string &defines) { m_name = filename; m_defines = defines; LoadShaders(filename, defines); InitUniforms(); }
void Program::Reload() { Unuse(); glDeleteProgram(m_program); LoadShaders(m_name, m_defines); InitUniforms(); }
SPostProcess::SPostProcess(SShader *prog, int w, int h, const SGenericTexture* texSRC1, const SGenericTexture *texSRC2, const SGenericTexture* texSRC3, const SGenericTexture* texSRC4) :p_prog(prog) { for (int i = 0 ; i < SRC_TEXTURES_MAX ; i++){ d_texSRC[i] = 0; d_RBO[i] = 0; //?? } d_resultRBO = 0; d_texSRC[0] = texSRC1; d_texSRC[1] = texSRC2; d_texSRC[2] = texSRC3; d_texSRC[3] = texSRC4; InitQuard(); InitUniforms(RectSizeInt(w,h)); }
MultiProgram::MultiProgram(const MaterialDescriptor &desc, int lights) { lights = Clamp(lights, 1, 4); //build some defines std::stringstream ss; if (desc.textures > 0) ss << "#define TEXTURE0\n"; if (desc.vertexColors) ss << "#define VERTEXCOLOR\n"; if (desc.alphaTest) ss << "#define ALPHA_TEST\n"; //using only one light if (desc.lighting && lights > 0) ss << stringf("#define NUM_LIGHTS %0{d}\n", lights); else ss << "#define NUM_LIGHTS 0\n"; if (desc.specularMap) ss << "#define MAP_SPECULAR\n"; if (desc.glowMap) ss << "#define MAP_EMISSIVE\n"; if (desc.usePatterns) ss << "#define MAP_COLOR\n"; if (desc.quality & HAS_HEAT_GRADIENT) ss << "#define HEAT_COLOURING\n"; m_name = "multi"; m_defines = ss.str(); LoadShaders(m_name, m_defines); InitUniforms(); }
Program::Program(const std::string &name, const std::string &defines) : m_name(name) , m_defines(defines) , m_program(0) { LoadShaders(name, defines); InitUniforms(); }
VtxColorProgram::VtxColorProgram(const MaterialDescriptor &desc) { m_name = "vtxColor"; RENDERER_CHECK_ERRORS(); LoadShaders(m_name, m_defines); InitUniforms(); }
VtxColorProgram::VtxColorProgram(const MaterialDescriptor &desc) { m_name = "vtxColor"; CheckRenderErrors(); LoadShaders(m_name, m_defines); InitUniforms(); }
UIProgram::UIProgram(const MaterialDescriptor &desc) { m_name = "ui"; CHECKERRORS(); LoadShaders(m_name, m_defines); InitUniforms(); }
FresnelColourProgram::FresnelColourProgram(const MaterialDescriptor &desc) { //build some defines std::stringstream ss; m_name = "FresnelColour"; m_defines = ss.str(); LoadShaders(m_name, m_defines); InitUniforms(); }
ShieldProgram::ShieldProgram(const MaterialDescriptor &desc, int lights) { lights = Clamp(lights, 1, 4); //build some defines std::stringstream ss; m_name = "shield"; m_defines = ss.str(); LoadShaders(m_name, m_defines); InitUniforms(); }
int Graphic::Renderer::Init() { if (!GetShaderProgramWithType(ShaderProgram::Type::Main)->isLinked()) { std::cout<<"Shader program is not linked. Failed to init renderer \n"; return 1; } Settings::Instance().resources.Init(*GetShaderProgramWithType(ShaderProgram::Type::Main)); Settings::Instance().PassToShaderProgram(*GetShaderProgramWithType(ShaderProgram::Type::Main)); skyBox->LoadModel(Settings::Instance().resources.GetPathSphereModel().c_str()); if (InitUniforms() != 0) std::cout << "Failed to load uniforms \n"; glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); return 0; }
SPostProcess::SPostProcess(SShader *prog, RBO * resultRBO, RBO * srcRBO1, RBO * srcRBO2, RBO * srcRBO3, RBO * srcRBO4) :p_prog(prog),d_resultRBO(resultRBO) { for (int i = 0 ; i < SRC_TEXTURES_MAX ; i++){ d_texSRC[i] = 0; } d_RBO[0] = srcRBO1; d_RBO[1] = srcRBO2; d_RBO[2] = srcRBO3; d_RBO[3] = srcRBO4; for (int i = 0 ; i < SRC_TEXTURES_MAX ; i++){ if (d_RBO[i]) d_texSRC[i] = d_RBO[i]->texIMG(0); } InitQuard(); RectSizeInt sz = resultRBO->getSize(); InitUniforms(sz); }
void ShaderBase::InitUniforms(ID3D10Blob* s) { InitUniforms(s->GetBufferPointer(), s->GetBufferSize()); }