Example #1
0
static void Render(int frameNumber) {
  PixBufT *umap;

  int du = 2 * frameNumber;
  int dv = 4 * frameNumber;

  {
    MatrixStack3D *ms = GetObjectTranslation(scene, "Object");

    StackReset(ms);
    PushScaling3D(ms, 1.25f, 1.25f, 1.25f);
    PushRotation3D(ms, 0, (float)(-frameNumber * 2), frameNumber);
    PushTranslation3D(ms, 0.0f, 0.0f, -2.0f);
  }

  if (effectNum == 0) {
    umap = NewPixBufWrapper(WIDTH, HEIGHT, uvmap->map.fast.u);

    PROFILE(PixBufClear)
      PixBufClear(shades);
    PROFILE(RenderScene)
      RenderScene(scene, shades);

    PixBufSetBlitMode(shades, BLIT_ADDITIVE);
    PixBufBlit(umap, 0, 0, orig, NULL);
    PixBufBlit(umap, 0, 0, shades, NULL);

    UVMapSetOffset(uvmap, du, dv);
    UVMapRender(uvmap, canvas);

    MemUnref(umap);
  } else {
    UVMapSetOffset(uvmap, du, dv);
    UVMapRender(uvmap, canvas);

    PROFILE(PixBufClear)
      PixBufClear(shades);
    PROFILE(RenderScene)
      RenderScene(scene, shades);

    PixBufSetColorMap(shades, colorMap);
    PixBufSetBlitMode(shades, BLIT_COLOR_MAP);

    PixBufBlit(canvas, 0, 0, shades, NULL);
  }

  c2p1x1_8_c5_bm(canvas->data, GetCurrentBitMap(), WIDTH, HEIGHT, 0, 0);
}
Example #2
0
static void Init() {
  float lightRadius = 1.0f;
  int i;

  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);
  PixBufClear(canvas);

  uvmap = NewUVMap(WIDTH, HEIGHT, UV_FAST, 256, 256);
  UVMapGenerateTunnel(uvmap, 32.0f, 3, 4.0 / 3.0, 0.5, 0.5, NULL);
  UVMapSetTexture(uvmap, texture);

  flare = NewPixBuf(PIXBUF_GRAY, 64, 64);
  GeneratePixels(flare, (GenPixelFuncT)LightLinearFalloff, &lightRadius);
  for (i = 0; i < flare->width * flare->height; i++)
    flare->data[i] /= 4;

  origU = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);
  PixBufBlit(origU, 0, 0,
             NewPixBufWrapper(WIDTH, HEIGHT, uvmap->map.fast.u), NULL);

  origV = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);
  PixBufBlit(origV, 0, 0,
             NewPixBufWrapper(WIDTH, HEIGHT, uvmap->map.fast.v), NULL);

  InitDisplay(WIDTH, HEIGHT, DEPTH);
  LoadPalette(texturePal);
}
Example #3
0
void RenderMesh(int frameNumber_) {
  PixBufT *canvas = R_("Canvas");
  SceneT *scene = R_("Scene");
  float frameNumber = frameNumber_;
  float s = sin(frameNumber * 3.14159265f / 90.0f) + 1.0f;

  {
    MatrixStack3D *ms = GetObjectTranslation(scene, "Object");

    StackReset(ms);
    PushScaling3D(ms, 0.75f + 0.5f * s, 0.75f + 0.5f * s, 0.75f + 0.5f * s);
    PushRotation3D(ms, 0, (float)(-frameNumber * 2), frameNumber);
    PushTranslation3D(ms, 0.0f, 0.0f, -2.0f);
  }

  PixBufClear(canvas);
#if 0
  RenderFlatShading = true;
  PixBufSetColorMap(canvas, R_("ColorMap"), -32);
#endif
  PROFILE(RenderScene)
    RenderScene(scene, canvas);

  c2p1x1_8_c5_bm(canvas->data, GetCurrentBitMap(), WIDTH, HEIGHT, 0, 0);
}
Example #4
0
static void Init() {
  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);
  PixBufClear(canvas);

  ms = NewMatrixStack2D();

  InitDisplay(WIDTH, HEIGHT, DEPTH);
}
Example #5
0
static void HandleEvent(InputEventT *event) {
  PixBufClear(canvas);

  if (KEY_RELEASED(event, KEY_RIGHT))
    effect = (effect + 1) % lastEffect;
  if (KEY_RELEASED(event, KEY_LEFT)) {
    effect--;
    if (effect < 0)
      effect += lastEffect;
  }
}
Example #6
0
static void Init() {
  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);
  PixBufClear(canvas);

  uvmap = NewUVMap(WIDTH, HEIGHT, UV_NORMAL, 256, 256);
  UVMapSetTexture(uvmap, texture);

  shades = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);
  smallMap = NewUVMap(H_RAYS, V_RAYS, UV_ACCURATE, 256, 256);
  lightFunc = CalculateLightFunc();

  LoadPalette(texturePal);
  InitDisplay(WIDTH, HEIGHT, DEPTH);
}
Example #7
0
static void Render(int frameNumber) {
  PointT *toDraw = triangleToDraw;

  float s = sin(frameNumber * 3.14159265f / 22.5f);
  float c = cos(frameNumber * 3.14159265f / 45.0f);

  StackReset(ms);
  PushTranslation2D(ms, -1.5f, -1.5f);
  PushScaling2D(ms, 20.0f + 10.0f * s, 20.0f + 10.0f * s);
  PushRotation2D(ms, (float)(frameNumber * -3));
  PushTranslation2D(ms, (float)(WIDTH/2) + c * (WIDTH/4), (float)(HEIGHT/2));

  Transform2D(crossToDraw, cross, 12, GetMatrix2D(ms, 0));

  if (effect == 0) {
    PixBufClear(canvas);
    DrawPolyLine(canvas, crossToDraw, 12, TRUE);
  }

  StackReset(ms);
  PushTranslation2D(ms, 5.0f, 10.0f);
  PushScaling2D(ms, 2.5f, 2.5f);
  PushRotation2D(ms, (float)(frameNumber*5*c));
  PushTranslation2D(ms, WIDTH/2 + c * 50, HEIGHT/2 + s * 20);

  Transform2D(triangleToDraw, triangle, 3, GetMatrix2D(ms, 0));

  frameNumber &= 255;

  if (frameNumber < 128)
    canvas->fgColor = frameNumber * 2;
  else 
    canvas->fgColor = (255 - frameNumber) * 2;

  if (effect == 1) {
    TriPoint p1 = { toDraw[0].x, toDraw[0].y };
    TriPoint p2 = { toDraw[1].x, toDraw[1].y };
    TriPoint p3 = { toDraw[2].x, toDraw[2].y };
    DrawTriangle(canvas, &p1, &p2, &p3);
  }

  if (effect == 2) {
    DrawEllipse(canvas,
                toDraw[1].x, toDraw[1].y,
                30 + c * 15, 30 + s * 15);
  }

  c2p1x1_8_c5_bm(canvas->data, GetCurrentBitMap(), WIDTH, HEIGHT, 0, 0);
}
Example #8
0
/*
 * Set up effect function.
 */
void SetupEffect() {
  PixBufClear(R_("Canvas"));
  LoadPalette(R_("Palette"));
  StartProfiling();
}