示例#1
0
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);
}
示例#2
0
/*-------------------------------------------------------------------------

  -------------------------------------------------------------------------*/
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);
}
示例#4
0
文件: Cg.cpp 项目: EwgB/frontier-net
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);

}
示例#5
0
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 );
}
示例#7
0
文件: main.cpp 项目: peterlew/CGDemo
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();
}
示例#8
0
	void	IOGLBaseShader::SetUniform(const CString& strName, const Math::CVector2D& vValue){
		cgGLSetParameter2f(this->GetParameter(strName), vValue.X, vValue.Y);
	}