Exemplo n.º 1
0
cubemap_info *
create_cubemap (u32 size, u32 fmt, u32 spsize, u32 spfmt)
{
  cubemap_info *cubemap = malloc (sizeof (cubemap_info));
  int i;
  
  for (i = 0; i < 6; i++)
    {
      cubemap->texels[i] = memalign (32, GX_GetTexBufferSize (size, size, fmt,
				     GX_FALSE, 0));
      GX_InitTexObj (&cubemap->tex[i], cubemap->texels[i], size, size, fmt,
		     GX_CLAMP, GX_CLAMP, GX_FALSE);
      cubemap->face_shader[i] = create_shader (&cubemap_shader_setup,
					       (void *) &faceno[i]);
      shader_append_texmap (cubemap->face_shader[i], &cubemap->tex[i],
			    faceno[i]);
      shader_append_texcoordgen (cubemap->face_shader[i], GX_TEXCOORD0,
				 GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);
    }

  cubemap->size = size;
  cubemap->fmt = fmt;

  cubemap->sphtexels = memalign (32, GX_GetTexBufferSize (spsize, spsize, spfmt,
				 GX_FALSE, 0));
  GX_InitTexObj (&cubemap->spheretex, cubemap->sphtexels, spsize, spsize, spfmt,
		 GX_CLAMP, GX_CLAMP, GX_FALSE);
  cubemap->sphsize = spsize;
  cubemap->sphfmt = spfmt;

  return cubemap;
}
Exemplo n.º 2
0
static void
greets_init_effect (void *params, backbuffer_info *bbuf)
{
  greets_data *gdata = (greets_data *) params;
  
  gdata->world = create_world (0);
  world_set_perspective (gdata->world, 60.0, 1.33f, 10.0f, 300.0f);
  world_set_pos_lookat_up (gdata->world,
			   (guVector) { 0, 0, 50 },
			   (guVector) { 0, 0, 0 },
			   (guVector) { 0, 1, 0 });

  TPL_OpenTPLFromMemory (&fontTPL, (void *) font_tpl, font_tpl_size);
  TPL_GetTexture (&fontTPL, font, &gdata->fontobj);
  GX_InitTexObjFilterMode (&gdata->fontobj, GX_LINEAR, GX_LINEAR);
  GX_InitTexObjWrapMode (&gdata->fontobj, GX_REPEAT, GX_REPEAT);
  
  gdata->tileidx = memalign (32, GX_GetTexBufferSize (TILES_W, TILES_H,
						      TILES_FMT, GX_FALSE, 0));
  GX_InitTexObj (&gdata->tileidxobj, gdata->tileidx, TILES_W, TILES_H,
		 TILES_FMT, GX_REPEAT, GX_REPEAT, GX_FALSE);
  GX_InitTexObjFilterMode (&gdata->tileidxobj, GX_NEAR, GX_NEAR);

  gdata->tile_shader = create_shader (&init_tile_shader, NULL);
  shader_append_texmap (gdata->tile_shader, &gdata->fontobj, GX_TEXMAP0);
  shader_append_texmap (gdata->tile_shader, &gdata->tileidxobj, GX_TEXMAP1);
  shader_append_texcoordgen (gdata->tile_shader, GX_TEXCOORD0, GX_TG_MTX2x4,
			     GX_TG_TEX0, GX_IDENTITY);
  memset (gdata->tileidx, 0, GX_GetTexBufferSize (TILES_W, TILES_H,
						  TILES_FMT, GX_FALSE, 0));
  init_ascii_to_char ();

  /*for (i = 0; i < 4; i++)
    put_text (gdata->tileidx, i, i, (unsigned char *) "OOOOOOOOOOOOOO");*/
  
  object_loc_initialise (&gdata->greets_loc, GX_PNMTX0);
}
Exemplo n.º 3
0
static void
put_text (void *tileidx, int row, int startcol, unsigned char *text,
	  unsigned int textlen, int offset, int len)
{
  unsigned char *c = tileidx;
  int i;
  
  for (i = 0; i < len; i++)
    {
      int offset2 = offset + i * 4;
      int idx = tex_index (startcol + i, row, TILES_W, 8);
      c[idx] = (offset2 >= 0 && offset2 < textlen)
	         ? ascii_to_char[text[offset2]] : 0;
    }

  DCFlushRange (c, GX_GetTexBufferSize (TILES_W, TILES_H, TILES_FMT, GX_FALSE,
					0));
}
Exemplo n.º 4
0
//Public functions
void ROOT::enableShadows(LIGHT * l, SDW_PARAMS shadow)
{
	this->shadowCaster = l;
	s = shadow;
	this->stencilBuffer = memalign(32, GX_GetTexBufferSize(256, 256, GX_TF_I8, GX_FALSE,0));
}
Exemplo n.º 5
0
static void
ghost_init_effect (void *params, backbuffer_info *bbuf)
{
  glass_data *gdata = (glass_data *) params;

  guPerspective (perspmat, 60, 1.33f, 10.0f, 500.0f);
  scene_update_camera (&scene);
  
  object_loc_initialise (&gdata->obj_loc, GX_PNMTX0);
  object_set_tex_norm_matrix (&gdata->obj_loc, GX_TEXMTX0);

  TPL_OpenTPLFromMemory (&mighty_zebuTPL, (void *) mighty_zebu_tpl,
			 mighty_zebu_tpl_size);
  
  /*TPL_OpenTPLFromMemory (&spiderwebTPL, (void *) spiderweb_tpl,
			 spiderweb_tpl_size);*/
  
  gdata->grabbed_texture = memalign (32, GX_GetTexBufferSize (RTT_WIDTH,
				     RTT_HEIGHT, USEFMT, GX_FALSE, 0));
  
  /* Set up refraction shader.  */
  gdata->refraction_shader = create_shader (&refraction_setup, NULL);
  shader_append_texmap (gdata->refraction_shader,
			get_utility_texture (UTIL_TEX_REFRACT),
			GX_TEXMAP2);
  shader_append_texcoordgen (gdata->refraction_shader, GX_TEXCOORD0,
			     GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX0);

  /* Set up refraction post-pass shader.  */
  TPL_GetTexture (&mighty_zebuTPL, mighty_zebu, &gdata->mighty_zebu_tex_obj);

  GX_InitTexObjWrapMode (&gdata->mighty_zebu_tex_obj, GX_CLAMP, GX_CLAMP);
  GX_InitTexObjFilterMode (&gdata->mighty_zebu_tex_obj, GX_LINEAR, GX_LINEAR);
  
  gdata->plain_texture_shader = create_shader (&plain_texture_setup, NULL);
  shader_append_texmap (gdata->plain_texture_shader,
			&gdata->mighty_zebu_tex_obj, GX_TEXMAP0);
  shader_append_texcoordgen (gdata->plain_texture_shader,
			     GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0,
			     GX_IDENTITY);

  GX_InitTexObj (&gdata->grabbed_tex_obj, gdata->grabbed_texture, RTT_WIDTH,
		 RTT_HEIGHT, USEFMT, GX_CLAMP, GX_CLAMP, GX_FALSE);
  gdata->refraction_postpass_shader = create_shader (&refraction_postpass_setup,
						     NULL);
  shader_append_texmap (gdata->refraction_postpass_shader,
			&gdata->grabbed_tex_obj, GX_TEXMAP0);
  shader_append_texmap (gdata->refraction_postpass_shader,
			&gdata->mighty_zebu_tex_obj, GX_TEXMAP1);
  shader_append_texcoordgen (gdata->refraction_postpass_shader,
			     GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0,
			     GX_IDENTITY);
  shader_append_texcoordgen (gdata->refraction_postpass_shader,
			     GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1,
			     GX_IDENTITY);

  /* Set up glass post-pass shader.  */
  gdata->glass_postpass_shader = create_shader (&glass_postpass, NULL);
  shader_append_texmap (gdata->glass_postpass_shader,
			get_utility_texture (UTIL_TEX_DARKENING), GX_TEXMAP3);
  shader_append_texcoordgen (gdata->glass_postpass_shader, GX_TEXCOORD0,
			     GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX0);
}