I wrote an article about it: tiffnix.com/csharp-conve...
I finally got terrain rendering working reliably without lag or crashes
www.youtube.com/watch?v=Ut9c...
I spent a week converting my game's code from gdscript and gdextension C++ into C# (still using godot, but using its C# integration now)
it's so much easier to work on the codebase now, I've already fixed a bunch of issues and I'm in a much better spot to add more gameplay systems
screenshot of material maker showing a wood plank material I made, with its node graph visible as well as a 3D preview using an HDRI
I started using material maker recently, it's an open source program for making PBR textures
it's a much nicer workflow for my pixel art style than the krita filter layers I was using before, although it does crash a lot
screenshot of the godot editor showing stars rendering at 1500fps
view of doppler shift at 92% of the speed of light
I've been out of motivation on my godot project for a while, but today I got a foothold on it, converting star rendering to use compute shaders + CompositorEffect
I'm going to try a different way to fix the issues that I got stuck on before (unrelated to star rendering)
Commits on Jul 26, 2025 Replace async-std with smol (#209) Exit with failure code for errors in CLI args (#208) Steradian should be radian^2 (#207) add As and Ah to abbrevs (implements #187) Prefixed currency like £3 (#206) Custom currency units (#202) add factorial function (#205)
I worked on rink this weekend, I'm hoping to get v0.9 out soon if I can, but there are a few big annoying tasks left to do
A giant octahedron shaped fractal with several shapes similar to a Sierpinski triangle visible. It's colored mostly in yellow and red. Ruleset is 1-3/1,4-5/5/N
A lot of different lines scuttling about, covering the entire screen in complete chaos. There are colors in a gradient from yellow to purple. The ruleset is 4/4/5/M
I've been making a program that runs 3D cellular automata on the GPU using compute shaders, and renders using voxel raymarching
I can run 512x512x512 volumes in realtime on my PC
Whoa.
That's a sprite, an elusive, high-altitude electrical discharge from a thundercloud photographed by NASA astronaut Nichole Ayers from the ISS earlier today.
With reported sightings going back more than a century, this phenomenon was first photographed in 1989.
Comic. [two people in labcoats look at body pierced with blade draped over bench] PERSON 1: We found him lying uncomformably on the lab bench. I wonder if the iron-rich intrusion in his back is related. PERSON 2 with ponytail: It could be clastic. Maybe a rift opened in his body, and the intrusive material later fell into the hole. [caption] The Geology Department Investigates Their First Murder
Geology Murder
xkcd.com/3112/
my dream here is to have a lot of weird emergent behavior caused by the random variation (which follows a log-normal distribution)
I want titan-like seas of liquid methane, planets with crusts composed of 90% carbonate rocks, atmospheres that are primarily argon, etc
I'm already not that far off
screenshot showing a solar system with planets a through j, planet d is selected Celestial Mass 0.93 earth Planet Radius 1.03 earth Surface Gravity 9.67 m/s^2 Core Composition Mass 0.10 earth Thickness 26.68 km pyrite 51.06 % Fe 41.17 % Ni 4.62 % Mn 2.66 % Co 0.47 % Ru 50.93 ppm Au 46.01 ppm
Mantle Composition Mass 0.18 earth Thickness 15.04 km bridgmanite 38.63 % lansfordite 17.66 % magnesite 12.62 % forsterite 10.37 % ceylonite 4.84 % spinel 4.00 % pleonaste 2.97 % Cr 2.06 % fayalite 1.72 % natrite 0.51 % millerite 0.37 % kirschteinite 0.37 %
Crust Composition Mass 0.03 earth Thickness 2.74 km lansfordite 33.94 % magnesite 24.24 % quartz 16.59 % boehmite 5.33 % gibbsite 3.83 % buddingtonite 3.19 % goethite 1.62 % limonite 1.30 % Cr 1.23 % pyrite 1.06 % siderite 0.95 % albite 0.85 % Hydrosphere Mass 0.10 earth Thickness 16.76 km water 99.99% Br 2.27 ppm Atmosphere Mass 0.53 earth Surface Pressure 614.40 kPa Scale height 846.82 m CO2 43.95 % Ne 28.40 % He 14.89 % O2 12.15 % N2 0.54 % Ar 694.19 ppm Cl 2.02 ppm
I started making a procedural planetary system generator, starting from a raw list of elemental abundances + a bunch of formulas for various minerals
it's still pretty buggy but it's really cool to me that it's working at all
a ship traveling at 0.99981 c, in a dark void with a bright red light in front of it
the ship slowed down to 0.9932 c, the red glow is fading away and the milky way is visible as a ring in front of the ship
the ship has slowed to 0.84 c, things are mostly back to normal, although stars are still red- and blue-shifted
traveling so fast that the leftover light from the birth of the universe glows red hot
screenshot of the game, showing venus and the sun in the foreground, venus is selected and the info panel is showing it on the left at the bottom of the screen there is the text: INTERCEPT TRAJECTORY closest approach: 97.14 km time remaining: 10.25 min distance remaining: 0.61 au braking burn needed: 121.45 m/s²
same text but zoomed in
I added an intercept planner and now it's much easier to get to places without overshooting by 400 km/s
it automatically activates when your closest approach to the selected object is inside its hill sphere (the area where orbiting it is possible basically)
Funny how you just need to break some angles to turn kitchen environment into a spaceship.
the spacecraft is affected by gravity, I'm hoping to make it less confusing by adding UI/HUD elements
it currently accelerates very fast (100 km/s^2, or 10 000 Gs), otherwise interplanetary travel would take real life hours
I got a basic version of spaceflight working
STufaro (Author) 183 stars December 28, 2011 04:41 PM Well, after a little bit of struggling yesterday I've come up with a buggy, but somewhat-working, implementation. My basic steps are as follows: Get the vector of the line: lineDirection = (lineStart - lineEnd) Find our soon-to-be constructed quad's normal as: quadNormal = cameraPosition - lineMidpoint Where lineMidpoint = ((lineStart + lineEnd) / 2). I reason this should be the quad's normal since the quad will always be facing the camera, like a billboard. Get the direction along which we should extrude vertices from our line, which is the cross product of lineDirection and quadNormal: extrudeDirection = Vector3.Cross(lineDirection, quadNormal) Normalize extrudeDirection. Get the W of lineStart and lineEnd by transforming them by the viewMatrix * projectionMatrix. wStart = (Vector3.Transform(lineStart, viewMatrix * projectionMatrix)).W wEnd = (Vector3.Transform(lineEnd, viewMatrix * projectionMatrix)).W Extrude vertices from the line along the extrudeDirection vector, in some multiple of the W. Vector3 startVert1 = lineStart + extrudeDirection * wStart * lineWeight Vector3 startVert2 = lineStart - extrudeDirection * wStart * lineWeight Vector3 endVert1 = lineEnd + extrudeDirection * wEnd * lineWeight Vector3 endVert2 = lineEnd - extrudeDirection * wEnd * lineWeight Connect the vertices to form a quad.
I was struggling for hours yesterday to get this to work, but thankfully there was this super helpful forum thread from 2011:
www.gamedev.net/forums/topic...
the butterfly curve rendered with a gradient from red to blue from t=0 to t=12pi
spiral thing with another gradient, except this time the gradient is also controlling the line width
zoomed in view showing buttery smooth pixels
extends MeshInstance3D # https://en.wikipedia.org/wiki/Butterfly_curve_(transcendental) func _butterfly(a: float) -> Vector3: var r = ( exp(sin(a)) - 2.0 * cos(4.0 * a) + pow(sin((2.0 * a - PI) / 24.0), 5.0) ) var x = sin(a) * r var y = cos(a) * r return Vector3(y, 0.0, 5.0 -x) func _ready(): var lines = Lines.new() lines.grid(Basis(Vector3.LEFT, PI*0.5), 10, Color.REBECCA_PURPLE) lines.start(Vector3(0, 0, 0)) lines.set_color(Color.CHARTREUSE) lines.set_thickness(0.0) for i in range(360 * 20): var a = deg_to_rad(i + 1) var h = float(i) / 360.0 var s = sin(h / 10) var x = cos(a) var y = sin(a) lines.line_to(Vector3(x * s, h / 4.0, y * s)) lines.set_color(Color.DARK_TURQUOISE) lines.set_thickness(4.0) lines.start(_butterfly(0.0)) lines.set_color(Color.RED) for i in range(360 * 12 * 5): var a = deg_to_rad((i + 1) / 5.0) var pos = _butterfly(a) lines.line_to(pos) lines.set_color(Color.BLUE) mesh = lines.build_mesh()
antialiased 3d line rendering in godot, with a convenient API
I might eventually release this as an open source addon
search UI showing nearby stars sorted by distance, lots of "Gaia DR3 1234" and "HD 1234"
a view showing earth orbiting the sun, with a line showing the orbital path a nicely organized info panel on the left showing the objects in the sol system, and the properties of earth
I worked on my project this weekend, I've mostly been refactoring stuff, but I did add some nicer UIs
screenshot from my project, showing a view in deep space of many stars however, many of the stars are bunching up along lines and planes where they would have exceeded the size of a huge box dozens of parsecs across the box edges are super bright because there are a lot of stars bunched up there there's also a bunch of random debug text on screen
similar to before, but showing the stars bunching up along the surface of a huge sphere
I accidentally made the distance between stars just a little bit too large and everything clamped to the maximum size of a 64bit integer
the box edges look cool
I tried clamping the position to a sphere to see what that would look like too
i turned it into a drawing
in the year 58,515 an interstellar ship tears through space at 99.9999% lightspeed, travelling to some far away place. the extremely blueshifted light is enough to heat its exotic hull to the point of incandescence
Firefly Aerospace just released their Blue Ghost Moon landing video, this view is rather special...
Source: www.youtube.com/watch?v=NpHh...
#BGM1
a data schema for the tables: barycenters, orbits, celestials, stars, and systems. most of them are keyed on a `celestial_id` as the primary key, except for the orbits table, which is keyed on a `child_id` and `parent_id` (which are both celestial_id's) this is just a markdown doc but it's too big to paste as alt text
a test scene showing a bunch of lines connecting stars in the hyades cluster together, one of them is selected, showing this info: star #059232 name : Theta Tauri Ab gaia edr3 : 3312744219988782720 position : -42.57 -0.26 -17.21 distance : 2.53 pc temperature : 6773 K abs mag : 0.07 luminosity : 73.790423 is hyades : yes white dwarf : no
doing a big refactor of my project so that I can actually start working on game systems (a lot of the current code is a mess)
I'm using data oriented design (for perf + for fun), which means lots of schemas
I just got done with orbits & stars:
PSA:
1. If you are not silly, it is vital you become silly
2. If you are silly, you must stay silly
2. If you used to be silly but have stopped, you must make all efforts to return to silliness
Hey NPR artist! 👋
At @blender.org , we are working in collaboration with @dillongoostudios.bsky.social to heavily improve NPR workflows in #b3d.
🧵Thread🧵 👇
the same tree but it's more hd now
updated version
procedurally generated tree that doesn't really correspond to any real life tree species, just the generic idea of "Tree" some of my older lollipop trees are visible in the background
I've spent so many hours trying to understand how trees work
I tried different tree creator programs, none worked the way I needed, so I started writing my own that works at runtime (currently <3ms to generate this tree)
I also painted the leaf bunch and bark texture
today i learned x264 has a setting specifically for encoding touhou games
screenshot of my game showing a view from a hill with the ocean and a mountain visible in the distance
high in the air showing a landmass with many trees on it
continents, tree lod, and a bunch of other changes