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); }
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); }
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); }
static void Init() { canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT); PixBufClear(canvas); ms = NewMatrixStack2D(); InitDisplay(WIDTH, HEIGHT, DEPTH); }
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; } }
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); }
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); }
/* * Set up effect function. */ void SetupEffect() { PixBufClear(R_("Canvas")); LoadPalette(R_("Palette")); StartProfiling(); }