Satellite Moss 🍉
@satellitemoss
Developer + technical artist
The grid is more fine than what I need, but I'm looking into voxelizing the geometry into a occupancy grid resource, that I can read from so procedural meshes can take that into account when building, like creating a wooden scaffolding tunnel when a path crosses underneath.
Testing physics sim dungeon generation. Given a 2D graph of tangled nodes, spawn room bodies connected to hallway bodies, run physics, freeze and draw 45 degree snapped paths accounting for occupied cell spaces.
SDF voxel work, I'm thinking for more non organic structural geometry
Moved some of lighting / ao / color calculations to c++. Still a little slow with large edits but significantly faster than before.
I like how this is serving the purpose of creating pixel art tilesets, as well as usable voxel tiles if there's ever a need for them. Added an option to render chosen face direction only as a performance option.
Was able to move all the pixel art post processing into shaders using a stack of subviewports for certain passes, while being pretty light. This could likely run fine at runtime
Worked on greedy meshing, unwrapping, and texture baking from voxel colors. I'm now thinking of ways of generating autotile neighbors based on chunk neighbors for a gridmap preview to check tile seamlessness.
Improved performance by dynamically building the voxel models with chunking. It can be improved where chunks meet. Eventually I'd like to export using greedy meshing, and baking the vertex colors to a textures.
You can see how much lifting the different layer effects do: first image is with directional lighting off, second image is that plus turning off ambient occlusion
More voxel to pixel art experiments, its kind of like smart materials but for voxels.
Needed a new voxel modelling tool. Had the thought why not try detecting AO / Curvature to make models pop. I think I want to expand this with paint layers and use those more as masks. Adding paint tools for smearing / oil paints would be neat.
These are the rock models in the back, duplicated and scaled, post processing really helps. Thinking about some better voxel modelling tools for environments. For a side scroller I could darken / lower contrast / fade into dither the environment based on depth.
Played around with particles and made it so lighting can be tunable for pixel art and can be baked into spritesheets.
Tried rendering a normal map from depth to see what it looks like
I still have some post processing passes, unsure how I'd handle with only shaders - for anti-aliasing / and removing single neighbor sub pixel artifacts. My passes are color > inner outline > outer outline > anti aliasing > remove artifacts > final pass on full spritehseet to reduce similar colors.
Not apparent in this render but was able to find a way to improve performance by rendering the depth to separate low res render target, skipping the need for transforming colliders, and just running neighbor checks for the outlines on it. And the results are almost similar
Improved rendering with anti-aliasing, and coloring outlins from neighboring pixels
So I've been experimenting with voxel models by weighting them to a 3d skeleton. I'm still using a pixel raytracer to find voxels, but colliders don't deform with weighted meshes. What I do is find the deformed voxel transforms and set them on the voxel colliders.
At the time I didn't understand 3D workflows or rigging and wasn't sure how I'd go about rigging voxels to a skeleton. I could have made them a single mesh, but my raytracer relied on hitting voxel colliders for custom coloring. I ended up deforming the voxels along a curve for limbs and capes.
Little known fact is that Vagante, used voxel models and custom software built in godot 3.1, to render all the character skins to spritesheets. It used a pixel based raytracer, to get the pixel perfect inner and outer outlines.
I think I'm going to retrofit my last project, into this current one. It was a super smash physics inspired combat arena roguelike, where the audience chucked random weapons / items into the playing field that would break on use forcing the player to improvise without the drawbacks of durability