void PS3Graphics::UpdateCgParams(unsigned width, unsigned height, unsigned tex_width, unsigned tex_height) { cgGLSetStateMatrixParameter(_cgpModelViewProj, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY); cgGLSetParameter2f(_cgpVideoSize, width, height); cgGLSetParameter2f(_cgpTextureSize, tex_width, tex_height); cgGLSetParameter2f(_cgpOutputSize, _cgViewWidth, _cgViewHeight); }
/*------------------------------------------------------------------------- -------------------------------------------------------------------------*/ bool FilterBox::Initialize(int w, int h) { bufw = w; bufh = h; // // FBO // glGenFramebuffersEXT(2, fb); glGenTextures(2, textureID); glGenRenderbuffersEXT(1, &depth_rb); initRT(0, w, h); initRT(1, w, h); // // initialize depth renderbuffer // glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depth_rb); glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, w, h); glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depth_rb); CheckFramebufferStatus(); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); // // CGFX things // cgContext = cgCreateContext(); cgGLRegisterStates(cgContext); std::string resolved_path; cgEffect = cgCreateEffectFromFile(cgContext, "data/shaders/FilterBox.cgfx", NULL); if(!cgEffect) { exit(0); const char * pszErrors = NULL; fprintf(stderr, "CgFx Parse error : %s", pszErrors); const char *listing = cgGetLastListing(cgContext); bValid = false; return false; } cgTechnique = cgGetNamedTechnique(cgEffect, "Filter"); cgPassFilterH = cgGetNamedPass(cgTechnique, "verticalPass"); cgPassFilterV = cgGetNamedPass(cgTechnique, "horizontalPass"); cgPassBlend = cgGetNamedPass(cgTechnique, "drawFinal"); cgBlendFactor = cgGetNamedEffectParameter(cgEffect, "blendFactor"); cgGlowFactor = cgGetNamedEffectParameter(cgEffect, "glowFactor"); srcSampler = cgGetNamedEffectParameter(cgEffect, "srcSampler"); tempSampler = cgGetNamedEffectParameter(cgEffect, "tempSampler"); finalSampler = cgGetNamedEffectParameter(cgEffect, "finalSampler"); verticalDir = cgGetNamedEffectParameter(cgEffect, "verticalDir"); horizontalDir = cgGetNamedEffectParameter(cgEffect, "horizontalDir"); cgGLSetParameter2f(verticalDir, 0,1.0f/(float)h); cgGLSetParameter2f(horizontalDir, 1.0f/(float)w, 0); bValid = true; return true; }
void DepthOfField::UpdateParameters() { for(int i = 0; i < DOFSAMPLES; i++) { cgGLSetParameter2f(m_CGSamples[i], m_Samples[i].x, m_Samples[i].y); } cgGLSetParameter1f(m_BlurSize, m_TweakBlurSize); cgGLSetParameter1f(m_MinRange, m_TweakMinRange); cgGLSetParameter1f(m_MaxRange, m_TweakMaxRange); }
static void vshader_select (int select) { VShader* s; GLvector p; Env* e; GLrgba c; float val1, val2; vshader_selected = select; if (!CVarUtils::GetCVar<bool> ("render.shaders")) return; if (select == VSHADER_NONE) { cgGLDisableProfile (cgp_vertex); return; } val1 = val2 = 0.0f; if (select == VSHADER_TREES || select == VSHADER_GRASS) val1 = wind; if (select == VSHADER_CLOUDS) val1 = wind / 5; s = &vshader_list[select]; e = EnvGet (); cgGLEnableProfile (cgp_vertex); cgGLBindProgram (s->program); cgGLSetParameter3f (s->lightpos, -e->light.x, -e->light.y, -e->light.z); c = e->color[ENV_COLOR_LIGHT]; cgGLSetParameter3f (s->lightcol, c.red, c.green, c.blue); c = e->color[ENV_COLOR_AMBIENT] * glRgba (0.2f, 0.2f, 1.0f); cgGLSetParameter3f (s->ambientcol, c.red, c.green, c.blue); p = AvatarCameraPosition (); cgGLSetParameter3f (s->eyepos, p.x, p.y, p.z); cgGLSetStateMatrixParameter(s->matrix, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MODELVIEW_MATRIX); cgGLSetParameter2f (s->fog, e->fog.rmin, e->fog.rmax); cgGLSetParameter4f (s->data, SceneVisibleRange (), SceneVisibleRange () * 0.05, val1, val2); glColor3f (1,1,1); }
static void gl_cg_set_uniform_parameter( void *data, struct uniform_info *param, void *uniform_data) { CGparameter location; cg_shader_data_t *cg = (cg_shader_data_t*)data; if (!param || !param->enabled) return; if (param->lookup.enable) { char ident[64]; CGprogram prog = 0; switch (param->lookup.type) { case SHADER_PROGRAM_VERTEX: prog = cg->prg[param->lookup.idx].vprg; break; case SHADER_PROGRAM_FRAGMENT: default: prog = cg->prg[param->lookup.idx].fprg; break; } if (param->lookup.add_prefix) snprintf(ident, sizeof(ident), "IN.%s", param->lookup.ident); location = cgGetNamedParameter(prog, param->lookup.add_prefix ? ident : param->lookup.ident); } else { struct uniform_cg *cg_param = (struct uniform_cg*)uniform_data; location = cg_param->loc; } switch (param->type) { case UNIFORM_1F: cgGLSetParameter1f(location, param->result.f.v0); break; case UNIFORM_2F: cgGLSetParameter2f(location, param->result.f.v0, param->result.f.v1); break; case UNIFORM_3F: cgGLSetParameter3f(location, param->result.f.v0, param->result.f.v1, param->result.f.v2); break; case UNIFORM_4F: cgGLSetParameter4f(location, param->result.f.v0, param->result.f.v1, param->result.f.v2, param->result.f.v3); break; case UNIFORM_1FV: cgGLSetParameter1fv(location, param->result.floatv); break; case UNIFORM_2FV: cgGLSetParameter2fv(location, param->result.floatv); break; case UNIFORM_3FV: cgGLSetParameter3fv(location, param->result.floatv); break; case UNIFORM_4FV: cgGLSetParameter3fv(location, param->result.floatv); break; case UNIFORM_1I: /* Unimplemented - Cg limitation */ break; } }
void Effect::setParam( const char *_name, float _x, float _y ) { CGparameter param = cgGetNamedEffectParameter( effect, _name ); cgGLSetParameter2f( param, _x, _y ); }
void display() { glClear(GL_COLOR_BUFFER_BIT); // cgGLSetParameter1f(cgGetNamedParameter(julia, "zoom"), zoom); // cgGLSetParameter2f(cgGetNamedParameter(julia, "zc"), centerX, centerY); // cgGLSetParameter2f(cgGetNamedParameter(julia, "c"), mouseX, mouseY); // cgGLSetParameter2f(cgGetNamedParameter(ship, "c"), mouseX, mouseY); // cgGLSetParameter2f(cgGetNamedParameter(ship, "zc"), centerX, centerY); // cgGLSetParameter1f(cgGetNamedParameter(ship, "delta"), 5*delta); // cgGLSetParameter1f(cgGetNamedParameter(ship, "zoom"), zoom); // cgGLSetParameter1f(cgGetNamedParameter(newton, "zoom"), zoom); // cgGLSetParameter2f(cgGetNamedParameter(newton, "f"), mouseX, mouseY); // cgGLSetParameter2f(cgGetNamedParameter(newton, "zc"), centerX, centerY); // cgGLSetParameter1f(cgGetNamedParameter(mandel, "zoom"), zoom); // cgGLSetParameter2f(cgGetNamedParameter(mandel, "zc"), centerX, centerY); // cgGLSetParameter1f(cgGetNamedParameter(gen, "zoom"), zoom); // cgGLSetParameter2f(cgGetNamedParameter(gen, "zc"), centerX, centerY); // cgGLSetParameter1f(cgGetNamedParameter(gen, "var1"), var1); // cgGLSetParameter1f(cgGetNamedParameter(gen, "var2"), var2); /* //General shader viewer cgGLBindProgram(newton); glBegin(GL_QUADS); glVertex2f(-1, -1); glVertex2f(1, -1); glVertex2f(1, 1); glVertex2f(-1, 1); glEnd(); cgGLDisableProgramProfiles(newton); glEnable(GL_BLEND); glBlendEquation(GL_FUNC_ADD_EXT); cgGLBindProgram(gen); glBegin(GL_QUADS); glVertex2f(-1, -1); glVertex2f(1, -1); glVertex2f(1, 1); glVertex2f(-1, 1); glEnd(); glDisable(GL_BLEND); */ //DEMO cgGLSetParameter1f(cgGetNamedParameter(gen, "zoom"), zoom); cgGLSetParameter2f(cgGetNamedParameter(gen, "zc"), centerX, centerY); cgGLSetParameter1f(cgGetNamedParameter(gen, "var1"), var1); cgGLSetParameter1f(cgGetNamedParameter(gen, "var2"), var2); glBegin(GL_QUADS); glVertex2f(-1, -1); glVertex2f(1, -1); glVertex2f(1, 1); glVertex2f(-1, 1); glEnd(); /* //Mandelbrot viewer with mini Julia set cgGLBindProgram(julia); glBegin(GL_QUADS); glVertex2f(-1, -1); glVertex2f(1, -1); glVertex2f(1, 1); glVertex2f(-1, 1); glEnd(); cgGLSetParameter1f(cgGetNamedParameter(pass, "startX"), 0.25); cgGLSetParameter1f(cgGetNamedParameter(pass, "endX"), 1); cgGLSetParameter1f(cgGetNamedParameter(pass, "startY"), -0.25); cgGLSetParameter1f(cgGetNamedParameter(pass, "endY"), -1); cgGLBindProgram(julia); glBegin(GL_QUADS); glVertex2f(0.25, -0.25); glVertex2f(1, -0.25); glVertex2f(1, -1); glVertex2f(0.25, -1); glEnd(); */ /* //Julia and Newton quads cgGLBindProgram(julia); glBegin(GL_QUADS); glVertex2f(-1, -1); glVertex2f(-1, 0); glVertex2f(0, 0); glVertex2f(0, -1); glVertex2f(0, 0); glVertex2f(1, 0); glVertex2f(1, 1); glVertex2f(0, 1); glEnd(); cgGLBindProgram(newton); glBegin(GL_QUADS); glVertex2f(-1, 0); glVertex2f(0, 0); glVertex2f(0, 1); glVertex2f(-1, 1); glVertex2f(0, 0); glVertex2f(1, 0); glVertex2f(1, -1); glVertex2f(0, -1); glEnd(); */ /* //Interactive Newton cgGLBindProgram(newton); cgGLSetParameter1f(cgGetNamedParameter(newton, "delta"), 0.0); cgGLSetParameter1f(cgGetNamedParameter(newton, "fx"), mouseX); cgGLSetParameter1f(cgGetNamedParameter(newton, "fy"), mouseY); glBegin(GL_QUADS); glVertex2f(-1, -1); glVertex2f(1, -1); glVertex2f(1, 1); glVertex2f(-1, 1); glEnd(); */ glutSwapBuffers(); }
void IOGLBaseShader::SetUniform(const CString& strName, const Math::CVector2D& vValue){ cgGLSetParameter2f(this->GetParameter(strName), vValue.X, vValue.Y); }