550
you are viewing a single comment's thread
view the rest of the comments
[-] darklamer@feddit.org 35 points 2 weeks ago

This code was first published 10 years ago, but I haven't seen any such game yet.

[-] fakeman_pretendname@feddit.uk 25 points 2 weeks ago

They'll get round to it. They're doing the graphics first. They're currently making individual 3D models of "all the stars".

[-] starman2112@sh.itjust.works 7 points 2 weeks ago* (last edited 2 weeks ago)

I'm not a computer graphics guy, but I wanna math. Theoretically, if I wanted to make the smallest possible 3d model, I would define it as four interconnected points. Each point has x, y, and z coordinates, so each model takes a theoretical minimum of 12 bytes of storage. Someone who knows computers can correct me if I'm off by a bunch.

The lower estimate is around 100,000,000,000 stars in the Milky Way. That's only 1.2 terabytes worth of my theoretical minimum 3d model. Doable! But you said all stars. The lower estimate is around 10^22 stars in the universe. That would be 120 zettabytes. That's only a few orders of magnitude off from the total available worldwide datadata storage!

Edit: I might have thought of a way to define a 3D model in just 2 bytes. You need four points that each have values for x, y, and z. They don't need 256 possible values for those, they can get by with two each. One bit can store two possible positions, so we can use as little as two bytes to define every point's position with 4 bits to spare. Behold, a tetrahedron: 0000 0100 1010 1110

Each set of four digits defines the x, y, and z coordinates for each point, as well as one extra dimension. You could use those extra four bits however you want. An extra spatial dimension, defining a color, etc. The theoretically smallest possible 3D model. Take the numbers I said up there and divide them by 6. A model for every star in the universe, and it would only take 20 zettabytes.

[-] AdrianTheFrog@lemmy.world 3 points 2 weeks ago* (last edited 2 weeks ago)

As an amateur computer graphics person, the best way to draw accurate stars is to just pre render it onto a cubemap. But if you really need that subpixel worth of parallax to be completely accurate for every star, there are a couple ways I can think of off of the top of my head. With any you'd want to make sure you only store position, size, and color, since stars are all spheres anyways. With effort, you can be very flexible with how these are stored. (4 bits color temperature, 4 bits size, 3*32 bits coordinates maybe)

  • splat each star into the screen texture with atomics
  • some sort of tiled software rasterization thing, like in Gaussian Splatting

Worse ideas:

  • instanced hardware rasterization
  • ray tracing

This is not that well suited to most usual rendering techniques, because most stars are probably going to be much smaller than a pixel. Ray tracing would mean you need to just hit every star by chance (or artificially increase star size and then deal with having tons of transparency), hardware rasterization is basically the same and additionally is inefficient with small triangles. I guess you could just live with only hitting stars by chance and throw TAA at it, there's enough stars that it doesn't matter if you miss some. That would react badly to parallax though and defeats the purpose of rendering every star in the first place.

It's much more efficient to do a manual splatting thing, where for each star you look at what pixel(s) it will be in. You can also group stars together to cull out of view stars more efficiently. Subpixel occlusion will be wrong, but it probably doesn't matter.

This is all just for the viewport, though. Presumably there are other objects in the game besides stars, which need to have reflections on them of the stars. Then that becomes an entirely different problem.

The real answer though is that you wouldn't try to render all of the stars, even if you want parallax. Maybe some of the closer and larger ones as actual geometry, simplify a ton of stuff in the background, render things as volumes or 2d billboards, have a cubemap for the far distance, etc

Edit: also ofc this presumes you know the position, scale, temperature of every star

I also like the idea of baking all of the stars into a volume in spherical coordinates, centered around the origin

load more comments (11 replies)
load more comments (14 replies)
load more comments (14 replies)
this post was submitted on 13 Apr 2026
550 points (99.1% liked)

Open Source

46541 readers
74 users here now

All about open source! Feel free to ask questions, and share news, and interesting stuff!

Useful Links

Rules

Related Communities

Community icon from opensource.org, but we are not affiliated with them.

founded 6 years ago
MODERATORS