From ad48ebabe5e78b803c1fd09aa1ed8c53335f1ffb Mon Sep 17 00:00:00 2001 From: The Dust Council Date: Fri, 12 Jun 2026 12:07:06 -0700 Subject: [PATCH] Initial public commit. --- README.md | 35 +++- main.c | 521 ++++++++++++++++++++++++++++++++++++++++++++++++--- vectordesert | Bin 50384 -> 67504 bytes 3 files changed, 524 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 8aa15f8..5003eea 100644 --- a/README.md +++ b/README.md @@ -61,11 +61,14 @@ Example: | keys | does | |------|------| | `W` / `S` | throttle: accelerate / decelerate forward speed (holds when released; `S` past zero goes into reverse) | +| `X` | full stop (zero the camera's velocity) | | `A` / `D` | strafe left / right | | `Page Up` / `Page Down` | raise / lower camera altitude | | `←` / `→` | pan view left / right | | `↑` / `↓` | pan view up / down | | `[` / `]` | decrease / increase rendering distance | +| `G` | toggle the floor-altitude indicator | +| `Space` | drop a bomb | Velocity is held in world space, so panning the view with the arrow keys only changes where you look — it does not change the direction you are @@ -97,13 +100,43 @@ on-screen heads-up display (drawn in the same vector style) lists every setting next to the key(s) that change it. The HUD fades out after 10 seconds with no keypresses and snaps back as soon as you press a key. +All settings (and the rendering distance) are saved to `~/.vectordesert.cfg` +on exit and reloaded at startup, so the program resumes with the values from +your last session. Command-line options still override the saved values for +that run. + +## Bombs + +Press `Space` to drop a bomb. It falls from the sky onto a random spot in +your field of view, between half the rendering distance and the full +rendering distance away. When it strikes the ground it detonates into an +animated, all-vector mushroom cloud twenty times the height of the tallest +mountains, in an extremely bright random hue (additively blended so it +glows): + +- an initial blinding fireball, +- a rising stem with climbing vortex rings, +- a billowing cap that stays joined to the stem — a rolling vortex torus + whose outer edge curls up and over — and keeps animating as the whole + cloud fades away. + +The blast **obliterates every mountain and cactus within the cloud's total +radius** and **gouges a deep crater** — a steep-walled bowl with a raised +rim thrown up above the surrounding surface — at the impact point. Every +bomb leaves its own permanent crater, and craters never erase one another: +repeated blasts in the same place **accumulate**, deepening and reshaping +the crater. Drop as many as you like; the clouds animate and dissipate +independently. + ## Notes - **Arms scale with size:** the number of arms is derived from a cactus's normalized size, so the smallest cacti always have the fewest arms (down to a bare trunk) and the largest always reach `max-arms`. - The world is generated procedurally from a hash-based value-noise height - field, so it is effectively infinite — the camera flies forever. + field, so it is effectively infinite — the camera flies forever. As well + as mountain ranges rising above the plain, the terrain carves valleys and + basins below it (and bomb craters), so it has real depth, not just relief. - Distance fog fades distant geometry into the dusk sky for depth. ## Performance diff --git a/main.c b/main.c index 3442bde..207668c 100644 --- a/main.c +++ b/main.c @@ -125,54 +125,107 @@ static Settings S = { #define ARM_LIMIT 12 +/* ------------------------------------------------------------------ */ +/* blast craters: bombs flatten the terrain (and clear cacti) inside a */ +/* radius. Stored here so terrainHeight() can carve them out. */ +/* ------------------------------------------------------------------ */ +typedef struct { float x, z, r, bowlR, depth; } Crater; +static Crater *g_craters = NULL; /* append-only: every bomb keeps a crater */ +static int g_nCraters = 0; +static int g_craterCap = 0; + +static void addCrater(float x, float z, float size){ + if(g_nCraters == g_craterCap){ + g_craterCap = g_craterCap ? g_craterCap*2 : 32; + g_craters = (Crater*)realloc(g_craters, (size_t)g_craterCap*sizeof(Crater)); + } + Crater *c = &g_craters[g_nCraters++]; + c->x = x; c->z = z; + c->r = 0.5f * size; /* blast / clear radius */ + c->bowlR = 0.16f * size; /* crater radius */ + c->depth = clampf(size*0.12f, 20.0f, 130.0f); /* deep, well-defined */ +} + +static bool inCrater(float x, float z){ + for(int i=0;i lower - * threshold -> ranges appear more often. */ - float mask = valnoise(x*0.006f, z*0.006f); - float thr = clampf(0.80f - 0.11f*S.mountainFreq, 0.35f, 0.86f); - float mountainMask = smoothstepf(thr, thr+0.10f, mask); - if(mountainMask <= 0.0f) return plains; - - /* Base frequency scaled by range height keeps slopes proportional for - * short and tall ranges alike (no-op at the default max height). */ +/* The shape of a range/basin in 0..1: a ridged multifractal that roughness + * morphs from a flat-topped mesa (0) to jagged crests (1). Used for both the + * mountains (added) and the valleys (subtracted). */ +static float rangeRidge(float x, float z){ float bf = 0.05f * (26.0f / fmaxf(S.mountainMaxH, 1.0f)); - - /* Accumulate a ridged multifractal. The first octave is the broad mass; - * the remaining octaves add higher-frequency jagged detail riding on the - * existing crests. */ float freq=bf, amp=0.5f, sum=0.0f, norm=0.0f, weight=1.0f, mass=0.0f; for(int i=0;i<6;i++){ float n = 1.0f - fabsf(2.0f*valnoise(x*freq, z*freq) - 1.0f); n *= n; - if(i==0) mass = n; /* broad base shape */ - n *= weight; /* detail only rides on existing ridge*/ + if(i==0) mass = n; + n *= weight; weight = clampf(n*2.5f, 0.0f, 1.0f); sum += n*amp; norm += amp; freq *= 2.0f; amp *= 0.5f; } float jagged = clampf(sum / norm, 0.0f, 1.0f); + float mesa = clampf((mass - 0.25f) * 3.2f, 0.0f, 1.0f); + return lerpf(mesa, jagged, S.mountainRough); +} - /* A mesa: saturate the broad mass so its top clamps to a flat plateau - * with steeper sides. */ - float mesa = clampf((mass - 0.25f) * 3.2f, 0.0f, 1.0f); +static float terrainHeight(float x, float z){ + /* The default state of the world is a near-flat desert plain with only + * very gentle undulation. */ + float plains = (fbm(x*0.02f, z*0.02f, 3) - 0.5f) * 2.0f; + float h = plains; - /* mountainRough morphs flat-topped mesas (0) into jagged peaks (1) */ - float ridge = lerpf(mesa, jagged, S.mountainRough); + /* Coherent low-frequency blobs decide where ranges/basins occur; the + * user's mountainFreq sets how much of the plain they cover. */ + float thr = clampf(0.80f - 0.11f*S.mountainFreq, 0.35f, 0.86f); - /* ridge (0..1) maps the range between the user's min and max heights */ - float body = lerpf(S.mountainMinH, S.mountainMaxH, ridge); - return plains + mountainMask * body; + /* mountain ranges rise above the plain */ + float mMask = smoothstepf(thr, thr+0.10f, valnoise(x*0.006f, z*0.006f)); + if(mMask > 0.0f) + h += mMask * lerpf(S.mountainMinH, S.mountainMaxH, rangeRidge(x, z)); + + /* valleys / basins carve below the plain (a differently-phased mask so + * they fall in different places than the mountains). Roughness shapes + * them too: flat-bottomed basins -> rugged canyons. */ + float vMask = smoothstepf(thr, thr+0.10f, valnoise(x*0.006f+19.3f, z*0.006f-23.1f)); + if(vMask > 0.0f) + h -= vMask * lerpf(S.mountainMinH, S.mountainMaxH, rangeRidge(x+57.0f, z-91.0f)) * 0.85f; + + /* blast craters. Two separable effects so that overlapping blasts + * accumulate rather than wipe each other out: + * - flatten: erase the procedural mountains/valleys back to the plain + * across the blast radius (combined as a max, applied once); + * - carve: a deep bowl + raised rim, summed over every crater so that + * repeated blasts in one place deepen and reshape the crater. */ + float flat = 0.0f, carve = 0.0f; + for(int i=0;ix, dz=z-c->z; + float d2 = dx*dx + dz*dz; + if(d2 >= c->r*c->r) continue; + float d = sqrtf(d2); + float f = smoothstepf(c->r, c->r*0.65f, d); /* 1 inside, 0 at rim */ + if(f > flat) flat = f; + /* bowl: flat floor inside, steep wall up to the lip */ + float wall = smoothstepf(c->bowlR, c->bowlR*0.55f, d); + carve -= c->depth * wall; + /* raised rim: a bump straddling the lip, rising above the surface */ + float rim = (d - c->bowlR)/(c->bowlR*0.25f); + carve += c->depth*0.35f*expf(-rim*rim); + } + if(flat > 0.0f) h = lerpf(h, plains, flat); + h += carve; + return h; } /* ------------------------------------------------------------------ */ @@ -223,6 +276,7 @@ static void lookAtGL(V3 eye, V3 center, V3 up){ /* ------------------------------------------------------------------ */ static V3 camPos; static float g_viewRadius = 128.0f; /* rendering distance (runtime) */ +static bool g_showAlt = false; /* altitude indicator toggle */ #define FOG_NEAR 18.0f /* fog reaches full opacity a little inside the draw radius so the mesh @@ -232,6 +286,57 @@ static float fogFarDist(void){ return f < FOG_NEAR + 5.0f ? FOG_NEAR + 5.0f : f; } +/* ------------------------------------------------------------------ */ +/* settings persistence: every user setting is saved on exit and */ +/* reloaded at startup, so the program resumes with the last values. */ +/* ------------------------------------------------------------------ */ +static const char *configPath(void){ + static char path[512]; + const char *home = getenv("HOME"); + if(home && *home) snprintf(path, sizeof path, "%s/.vectordesert.cfg", home); + else snprintf(path, sizeof path, "vectordesert.cfg"); + return path; +} + +static void saveSettings(void){ + FILE *f = fopen(configPath(), "w"); + if(!f) return; + fprintf(f, "terrainHue %.5f\n", S.terrainHue); + fprintf(f, "mountainFreq %.5f\n", S.mountainFreq); + fprintf(f, "mountainRough %.5f\n", S.mountainRough); + fprintf(f, "mountainMinH %.5f\n", S.mountainMinH); + fprintf(f, "mountainMaxH %.5f\n", S.mountainMaxH); + fprintf(f, "cactusFreq %.5f\n", S.cactusFreq); + fprintf(f, "cactusSizeVar %.5f\n", S.cactusSizeVar); + fprintf(f, "cactusMinSize %.5f\n", S.cactusMinSize); + fprintf(f, "cactusMaxSize %.5f\n", S.cactusMaxSize); + fprintf(f, "cactusHue %.5f\n", S.cactusHue); + fprintf(f, "maxArms %d\n", S.maxArms); + fprintf(f, "viewRadius %.3f\n", g_viewRadius); + fclose(f); +} + +static void loadSettings(void){ + FILE *f = fopen(configPath(), "r"); + if(!f) return; + char key[64]; float v; + while(fscanf(f, "%63s %f", key, &v) == 2){ + if (!strcmp(key,"terrainHue")) S.terrainHue = v; + else if (!strcmp(key,"mountainFreq")) S.mountainFreq = v; + else if (!strcmp(key,"mountainRough")) S.mountainRough = v; + else if (!strcmp(key,"mountainMinH")) S.mountainMinH = v; + else if (!strcmp(key,"mountainMaxH")) S.mountainMaxH = v; + else if (!strcmp(key,"cactusFreq")) S.cactusFreq = v; + else if (!strcmp(key,"cactusSizeVar")) S.cactusSizeVar = v; + else if (!strcmp(key,"cactusMinSize")) S.cactusMinSize = v; + else if (!strcmp(key,"cactusMaxSize")) S.cactusMaxSize = v; + else if (!strcmp(key,"cactusHue")) S.cactusHue = v; + else if (!strcmp(key,"maxArms")) S.maxArms = (int)v; + else if (!strcmp(key,"viewRadius")) g_viewRadius = v; + } + fclose(f); +} + /* ------------------------------------------------------------------ */ /* line batch: collect every wireframe segment into one vertex+colour */ /* array so a whole frame's geometry ships in a single glDrawArrays. */ @@ -399,12 +504,66 @@ static void drawHUD(int fbw, int fbh, float alpha){ LINE("9/0 CACTUS HUE %.2f", S.cactusHue); LINE("-/= MAX ARMS %d", S.maxArms); LINE("[/] RENDER DIST %.0f", g_viewRadius); + LINE("X FULL STOP"); + LINE("G FLOOR ALT %s", g_showAlt ? "ON" : "OFF"); #undef LINE /* camera + window controls footer */ y += lineH*0.5f; glColor4f(0.45f, 0.70f, 0.85f, alpha); - drawText("WASD MOVE ARROWS PAN PGUP/DN ALT F FULL", x, y, sc*0.85f); + drawText("WASD MOVE ARROWS PAN PGUP/DN ALT SPACE BOMB F FULL", x, y, sc*0.85f); + + glEnable(GL_FOG); + glEnable(GL_DEPTH_TEST); + glMatrixMode(GL_PROJECTION); glPopMatrix(); + glMatrixMode(GL_MODELVIEW); glPopMatrix(); +} + +/* on-screen altitude indicator: the terrain floor directly beneath the + * camera, the camera's own altitude, and the clearance between them, plus a + * vertical clearance gauge. Drawn top-right when toggled on. */ +static void drawAltIndicator(int fbw, int fbh){ + float floor = terrainHeight(camPos.x, camPos.z); + float camAlt = camPos.y; + float clear = camAlt - floor; + + float sc = fbh/240.0f; if(sc < 2.0f) sc = 2.0f; + float lineH = 9.0f*sc, pad = 5.0f*sc; + float gaugeW = 6.0f*sc, gaugeH = 56.0f*sc; + float gx1 = fbw - pad, gx0 = gx1 - gaugeW; + float textW = 12.0f*5.0f*sc; + float tx = gx0 - 6.0f*sc - textW; + float ty = pad; + + glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); + glOrtho(0.0, fbw, fbh, 0.0, -1.0, 1.0); + glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); + glDisable(GL_DEPTH_TEST); + glDisable(GL_FOG); + + char buf[48]; + glColor4f(0.95f, 0.85f, 0.35f, 1.0f); + drawText("ALTITUDE", tx, ty, sc); ty += lineH*1.4f; + glColor4f(0.55f, 1.0f, 0.75f, 1.0f); + snprintf(buf,sizeof buf,"FLOOR %.1f", floor); drawText(buf,tx,ty,sc); ty+=lineH; + snprintf(buf,sizeof buf,"CAM %.1f", camAlt); drawText(buf,tx,ty,sc); ty+=lineH; + snprintf(buf,sizeof buf,"CLEAR %.1f", clear); drawText(buf,tx,ty,sc); ty+=lineH; + + /* vertical clearance gauge (0..120) */ + float gTop = pad, gBot = pad + gaugeH; + glColor4f(0.45f, 0.70f, 0.85f, 1.0f); + glBegin(GL_LINE_LOOP); + glVertex2f(gx0, gTop); glVertex2f(gx1, gTop); + glVertex2f(gx1, gBot); glVertex2f(gx0, gBot); + glEnd(); + float cl = clampf(clear/120.0f, 0.0f, 1.0f); + float fillY = gBot - cl*(gBot-gTop); + glColor4f(0.55f, 1.0f, 0.75f, 1.0f); + glBegin(GL_LINES); + for(float yy=gBot-1.5f*sc; yy>fillY; yy-=2.5f*sc){ + glVertex2f(gx0+1.0f, yy); glVertex2f(gx1-1.0f, yy); + } + glEnd(); glEnable(GL_FOG); glEnable(GL_DEPTH_TEST); @@ -693,6 +852,7 @@ static void buildCacti(float cx, float cz, float margin){ float dx = wx-cx, dz = wz-cz; float d2 = dx*dx + dz*dz; if(d2 > reach2) continue; + if(inCrater(wx, wz)) continue; /* obliterated by a blast */ buildCactus(&gCacti, wx, wz, sqrtf(d2)); } } @@ -751,6 +911,294 @@ static float camPitch = -0.18f; /* slightly downward */ static V3 camVel; /* persistent world-space velocity (W/S) */ static double g_lastInput = 0.0; /* time of last keypress (for HUD fade) */ +/* ================================================================== */ +/* bombs + animated vector mushroom clouds */ +/* ================================================================== */ +#define MAX_BOMBS 48 +#define BOMB_GRAV 120.0f /* fall acceleration */ +#define EXPLO_DUR 12.0f /* explosion lifetime (seconds) */ + +typedef struct { + bool active; + bool exploding; /* false = falling, true = mushroom */ + float gx, gz; /* ground impact x,z */ + float y; /* current altitude while falling */ + float vy; /* fall speed */ + float groundY; /* terrain height at impact */ + float t; /* time since detonation */ + float size; /* cloud size (20 * max mountain height)*/ + V3 col; /* cloud hue */ +} Bomb; +static Bomb bombs[MAX_BOMBS]; + +static uint32_t g_rng = 0x2545F491u; +static float frand(void){ + g_rng = g_rng*1664525u + 1013904223u; + return ((g_rng >> 8) & 0xffffff) / (float)0xffffff; +} +static V3 vlerp(V3 a, V3 b, float t){ + return v3(lerpf(a.x,b.x,t), lerpf(a.y,b.y,t), lerpf(a.z,b.z,t)); +} + +/* a wobbly horizontal ring -- the basic cloud-billow primitive */ +static void drawWobRing(float cx,float cy,float cz,float r,int nA, + float wob,int lobes,float phase,V3 col,float a){ + if(r <= 0.0f || a <= 0.0f) return; + glColor4f(col.x,col.y,col.z,a); + glBegin(GL_LINE_LOOP); + for(int k=0;kt, H=b->size, gY=b->groundY, cx=b->gx, cz=b->gz; + float eg = smoothstepf(0.0f, 3.0f, t); /* main growth */ + float late = clampf((t-3.0f)/6.0f, 0.0f, 1.0f); /* slow billow */ + float fade = (t < EXPLO_DUR-2.5f) ? 1.0f + : clampf((EXPLO_DUR-t)/2.5f,0.0f,1.0f); + float roil = t*1.6f; /* roll phase */ + V3 hue = b->col; + V3 hot = vlerp(hue, v3(1.0f,0.95f,0.7f), 0.75f); /* incandescent*/ + float alpha = fade; + + float top = H*(0.22f + 0.78f*eg); + float stemTopY = gY + top*0.50f; + float capR = H*0.30f*(0.35f + 0.65f*eg)*(1.0f + 0.4f*late); + float stemR = H*0.055f*(0.5f + 0.5f*eg); + /* the head always sits on top of the stem -- it never detaches. It just + * keeps billowing and rolling (the roil phase advances with time) as the + * whole cloud fades away. */ + float capCenterY = stemTopY + capR*0.45f; + float capH = top*0.50f; + + /* initial blinding fireball, fading into the rising column */ + if(t < 1.0f){ + float ff = clampf(t/0.6f, 0.0f, 1.0f); + float fr = H*0.14f*ff + H*0.02f; + float fy = gY + fr*0.9f + (stemTopY-gY)*0.2f*ff; + float fa = alpha*clampf(1.0f-(t-0.4f)/0.6f, 0.0f, 1.0f); + if(fa > 0.01f) drawSphereWire(cx,fy,cz,fr, hot, fa, roil*2.0f); + } + + /* ground shock + dust skirt */ + float shockR = H*0.5f*smoothstepf(0.0f,2.0f,t); + float shockA = alpha*clampf(1.0f - t/4.0f, 0.0f,1.0f)*0.7f; + if(shockA > 0.01f){ + drawWobRing(cx, gY+H*0.005f, cz, shockR, 48, 0.05f, 8, roil, hue, shockA); + drawWobRing(cx, gY+H*0.02f, cz, shockR*0.7f, 44, 0.10f, 6, roil*1.3f, hue, shockA*0.8f); + } + + /* rising vortex rings climbing the stem */ + for(int k=0;k<3;k++){ + float rp = fmodf(t*0.5f + k*0.34f, 1.0f); + float ry = gY + rp*(stemTopY-gY); + float rr = stemR*(1.0f + rp*2.2f); + drawWobRing(cx, ry, cz, rr, 32, 0.14f, 5, roil+k, vlerp(hot,hue,rp), alpha*(1.0f-rp)*0.7f); + } + + /* stem -- always joined to the cap */ + { + const int nP=8; float ys[8], rs[8]; V3 cs[8]; + for(int i=0;igx, y=b->y, z=b->gz, s=1.8f; + glColor4f(1.0f,0.75f,0.35f,0.85f); + glBegin(GL_LINES); + glVertex3f(x,y,z); glVertex3f(x,y+10.0f,z); + glEnd(); + glColor4f(0.9f,0.9f,0.95f,1.0f); + glBegin(GL_LINE_LOOP); + glVertex3f(x,y+s*2,z); glVertex3f(x+s,y,z); + glVertex3f(x,y-s*2,z); glVertex3f(x-s,y,z); + glEnd(); + glBegin(GL_LINE_LOOP); + glVertex3f(x,y+s*2,z); glVertex3f(x,y,z+s); + glVertex3f(x,y-s*2,z); glVertex3f(x,y,z-s); + glEnd(); +} + +/* drop a new bomb into a random spot in the field of view, between half + * the rendering distance and the full rendering distance */ +static void spawnBomb(void){ + int slot=-1; + for(int i=0;ibest){ best=bombs[i].t; slot=i; } + } + Bomb *b=&bombs[slot]; + float R = g_viewRadius; + float a = camYaw + (frand()-0.5f)*1.1f; /* within the FOV */ + float dist = lerpf(0.5f*R, R, frand()); /* half..full distance*/ + b->gx = camPos.x + sinf(a)*dist; + b->gz = camPos.z - cosf(a)*dist; + b->groundY = terrainHeight(b->gx, b->gz); + b->size = 20.0f * S.mountainMaxH; + b->y = b->groundY + fmaxf(160.0f, b->size*0.55f); + b->vy = 0.0f; + b->t = 0.0f; + b->exploding = false; + b->active = true; + b->col = hsv2rgb(frand(), 0.85f, 1.0f); /* vivid, extremely bright */ +} + +static void updateBombs(float dt){ + for(int i=0;iactive) continue; + if(!b->exploding){ + b->vy += BOMB_GRAV*dt; + b->y -= b->vy*dt; + if(b->y <= b->groundY){ /* impact -> detonate */ + b->y = b->groundY; + b->exploding = true; + b->t = 0.0f; + /* obliterate mountains + cacti within the cloud's total + * radius, and gouge a real crater bowl at the impact point */ + addCrater(b->gx, b->gz, b->size); + tk.ok = false; ck.ok = false; /* force terrain+cacti rebuild */ + } + } else { + b->t += dt; + if(b->t >= EXPLO_DUR) b->active = false; + } + } +} + +static void drawBombs(void){ + bool any=false; + for(int i=0;i 0.001f) drawHUD(fbw, fbh, hudAlpha); + if(g_showAlt) drawAltIndicator(fbw, fbh); glfwSwapBuffers(win); glfwPollEvents(); } printf("\n"); + saveSettings(); /* persist settings for next launch */ glfwDestroyWindow(win); glfwTerminate(); return 0; diff --git a/vectordesert b/vectordesert index 68e1f541d5b0592b86c5a03e84d6686ce66f2176..2c795fcc290f0b722d1d3d851bb78c0c677f6898 100755 GIT binary patch literal 67504 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 literal 50384 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

J--->2~kYFsTe>Me87kM(I~Gl0fLm`o&C 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