コード例 #1
0
ファイル: explorer.c プロジェクト: n3rdswithgame/gz
static void set_lighting(void)
{
  /* create light */
  z64_gbi_lights_t *gbi_lights = gDisplayListAlloc(&z64_ctxt.gfx->poly_opa.d,
                                                   sizeof(z64_gbi_lights_t));
  gbi_lights->numlights = 0;
  Ambient *a = &gbi_lights->lites.a;
  a->l.col[0] = a->l.colc[0] = z64_game.lighting.ambient[0];
  a->l.col[1] = a->l.colc[1] = z64_game.lighting.ambient[1];
  a->l.col[2] = a->l.colc[2] = z64_game.lighting.ambient[2];
  /* fill light */
  for (z64_light_node_t *light_node = z64_game.lighting.light_list;
       light_node; light_node = light_node->next)
  {
    z64_light_handler_t handler = z64_light_handlers[light_node->light->type];
    handler(gbi_lights, &light_node->light->lightn, NULL);
  }
  /* set light */
  gSPNumLights(z64_ctxt.gfx->poly_opa.p++, gbi_lights->numlights);
  gSPNumLights(z64_ctxt.gfx->poly_xlu.p++, gbi_lights->numlights);
  for (int i = 0; i < gbi_lights->numlights; ++i) {
    gSPLight(z64_ctxt.gfx->poly_opa.p++, &gbi_lights->lites.l[i], i + 1);
    gSPLight(z64_ctxt.gfx->poly_xlu.p++, &gbi_lights->lites.l[i], i + 1);
  }
  gSPLight(z64_ctxt.gfx->poly_opa.p++, &gbi_lights->lites.a,
           gbi_lights->numlights + 1);
  gSPLight(z64_ctxt.gfx->poly_xlu.p++, &gbi_lights->lites.a,
           gbi_lights->numlights + 1);
}
コード例 #2
0
void F3DEX2CBFD_MoveWord( u32 w0, u32 w1 )
{
	switch (_SHIFTR( w0, 16, 8 ))
   {
      case G_MW_NUMLIGHT:
         gSPNumLights(w1 / 48);
         break;

      case G_MW_CLIP:
         gSPClipRatio( w1 );
         break;

      case G_MW_SEGMENT:
			gSPSegment( _SHIFTR( w0, 0, 16 ) >> 2, w1 & 0x00FFFFFF );
         break;

      case G_MW_FOG:
			gSPFogFactor( (s16)_SHIFTR( w1, 16, 16 ), (s16)_SHIFTR( w1, 0, 16 ) );
         break;

		case G_MW_PERSPNORM:
			gSPPerspNormalize( w1 );
			break;

      case G_MV_COORDMOD:
			gSPCoordMod( w0, w1 );
         break;
   }
}
コード例 #3
0
ファイル: F3DCBFD.cpp プロジェクト: Mystro256/Not64
void F3DCBFD_MoveWord( u32 w0, u32 w1 )
{
	switch (_SHIFTR( w0, 16, 8 ))
	{
		case G_MW_NUMLIGHT:
			gSPNumLights( w1 / 48 );
			break;
		default:
			F3DEX2_MoveWord( w0, w1 );
			break;
	}
}