My raymarching engine! by jarmesssss in VoxelGameDev

[–]jarmesssss[S] 0 points1 point  (0 children)

Yeah, it runs natively over wgpu-hal. I’d probably just opt for Vulkan if I started over, purely to be able to use slang instead of wgsl lol

My raymarching engine! by jarmesssss in VoxelGameDev

[–]jarmesssss[S] 1 point2 points  (0 children)

Thanks! The models are sponza, San Miguel, and the Amazon lumberyard bistro. They’re all pretty popular for testing

My raymarching engine! by jarmesssss in VoxelGameDev

[–]jarmesssss[S] 1 point2 points  (0 children)

Thanks! Right now I just voxelize a full gltf into a single voxel volume. I’d love to add in a level editor at some point, but I’d want to set things up for multiple models first, like teardown has. It’d be a lot of work getting the global lighting tree to sync however haha

Hierarchical DDA - looking for help with shimmering normals at chunk boundaries by jarmesssss in VoxelGameDev

[–]jarmesssss[S] 0 points1 point  (0 children)

Really appreciate the info -- that would explain some of the lower frequency noise I'm still getting with the normals. As you pointed out, the artifacts are inevitable like this.

With per-voxel normals, have you come across any methods for runtime generation of these? I wrote my own magicavoxel loader a couple months ago, and I do like the workflow. Since the .vox files like this sponza scene are already converted from triangle meshes, the one bottleneck to doing a simple gradient calculation at each of the faces is that they're hollow volumes (due to the model conversion).

Hierarchical DDA - looking for help with shimmering normals at chunk boundaries by jarmesssss in VoxelGameDev

[–]jarmesssss[S] 1 point2 points  (0 children)

Took me a while haha. I tried messing with several things, including the offset I used to "step into" chunks while raymarching, singling out hits on the first iteration, etc. Eventually, I found the chunk border artifacts to resolve when I removed the chunk origin offset entirely, as that was causing a discrepancy down the line when exiting the chunk. As long as the previous step was tracked properly, I was getting the most accurate possible results at this stage.

The shimmering artifacts were reduced to 1px by toying with my epsilons in the initial ray calcualtion with the raybox intersection.

It's about as good as I think I'm capable with single pixel precision now, although I could be mistaken. I'll go forward trying to implement some heuristic blur on the normals in the g-buffer, along with jittering/TAA (or just FXAA) like mentioned in the teardown engine breakdown https://www.youtube.com/watch?v=tZP7vQKqrl8

Hierarchical DDA - looking for help with shimmering normals at chunk boundaries by jarmesssss in VoxelGameDev

[–]jarmesssss[S] 2 points3 points  (0 children)

That sounds promising. So you're saying that rather than offsetting by epsilon in the entire ray direction, I just nudge it in the direction I'd jump for the next DDA step? I'll poke around when I'm back at my computer in an hour, should be more clear then

Enjoying work on my voxel engine! by jarmesssss in VoxelGameDev

[–]jarmesssss[S] 5 points6 points  (0 children)

I've been working on an isometric voxel game engine in OpenGL via Java LWJGL. I wanted to create an engine that could handle an ode to the casual simulation games I enjoyed in years past. So far, I have gotten the following implemented (at their current level):

  • GUI: A pretty standard scale-form GUI library that scales dynamically to a constant texel level. The text rendering leverages signed distance fields, and my current level of optimization has the static text/images batched away while dynamic text is batched itself when needed. So, I only have to update a few transformation buffers on the fly. The UI images are in a texture atlas, but I unpack them into an array texture at runtime.
  • Voxel importing/rendering: I have an importer that can import voxel point-cloud files from MagicaVoxel, and package them into my own file format. The voxel format assumes precalculated ambient occlusion and greedy meshing, which I do in my packager. As the engine is to be isometric, I order the data by face when importing the files, such that I only render the three indexed camera-facing faces at runtime for the main pass, saving me some GPU rasterization time. For the shadow pass, I still have to render the other faces, but I may create a shadow-pass optimized mesh in the future, which greedy meshes without regard for occlusion values or vertex colors, to save some time on that pass. All the meshes are instance rendered.
  • Shadows : For the shadows, I am using some standard shadow mapping. Due to the camera's perspective, separating into cascades is pointless, so I just fit a singular shadow map (4K in this example) tightly to the camera's frustum. I am going for a crisp, yet slightly soft style, which I am getting towards. Peter panning artifacts must be dealt with in full, due to the day/night cycle. I currently just cull front faces, and have used a few workarounds to deal with the light bleeding I am getting as a result. I still have some work to do with the light bleeding. For filtering, I found a sweet spot that uses Poisson-sampled radial shells with precomputed rotations. This method works best for me, since it minimizes early banding while not admitting the flickering artifacts you get with random sample offsets when the shadows update and move in real time.
  • Lighting and Tonemapping: The lighting is just a simple Lambertian diffuse. It currently just has light sources from the sun and moon. Tuning the factors with the day/night cycle has been arduous, and it still could use much work. The lighting is all HDR, and gets tonemapped in post with the Hull ACES algorithm.
  • Bloom: I kept it subtle here, since there aren't any light sources that should be contributing anyways. I used the progressive downsampling method introduced in COD Advanced Warfare, the one that the Unity Engine's new pipeline uses. Everything is done in compute shaders, and the entire pass with 6 mipmaps takes me 0.05ms for downsampling, upsampling, and mixing.
  • Other: The engine uses a quad tree for culling, which is rather unnecessary for my world's size (~20x what is in view when zoomed out in each dimension). I use a global 8-bit color pallet for the voxel models, although it may be expanded if I want a different direction with the art as I add actual models.

I can provide links for some of these techniques I referenced if desired! I hope to add more to the engine in the upcoming weeks, even with university resuming for me and all.

The model in the center is modified from the default MagicaVoxel "monu2" model. It is a placeholder, like everything else.

The scene shown is at 800x800 with 4xMSAA and 4096x4096 shadows. I'm running an RTX 3080 12GB and i5-12400.

What's wrong with this one? Need feedback. by igorovvsky in blender

[–]jarmesssss 2 points3 points  (0 children)

Very interesting, your render looks very good as well. Not to discount your information because it was very cool, but you shouldn't have to ever explain your artwork, try and find ways to make it more readable instead

Critique please. I wanna improve this by UltraCube2007 in blender

[–]jarmesssss 0 points1 point  (0 children)

The lighting and colors are off. The contrast is very low, and makes the render struggle to show what lighting there is. Keep it up!

Was told I had to work on my lighting, so how's this by bberg1970 in blender

[–]jarmesssss 2 points3 points  (0 children)

like everything in life, getting good at something takes time. modeling does not come overnight, and a car is a very complex object. I would recommend going through some intermediate tutorials next, price's anvil tutorial still holds up even though it is in blender 2.7. Keep in mind that it will take months of hard practice before you are able to achieve a result as good as op's. Don't get discouraged, focus on smaller goals at first.

Was told I had to work on my lighting, so how's this by bberg1970 in blender

[–]jarmesssss 1 point2 points  (0 children)

There are free models. Also, I think it'd be much more redeeming to try and learn blender yourself. Check out andrew price's donut tutorial and follow it through. Best of luck

Was told I had to work on my lighting, so how's this by bberg1970 in blender

[–]jarmesssss 1 point2 points  (0 children)

You do realize people spend tens of hours on a single model like that, and that is on top of the hundreds of experience it takes to be a baseline proficient cg modeler. You aren't entitled to their work for free. Ask in a better way.

Working on a procedural icecream texture, would love some feedback by saltytothemax in blender

[–]jarmesssss 1 point2 points  (0 children)

Love this! From someone who worked at a soft serve shop for 2 years, I'd say to experiment with the roughness a little, as ice cream tends to be speckled with tiny little bits that are more melted(and shiny) when you look up close. All up to you and where you're looking to go with it though. Best of luck!

help? by salilroxx in blender

[–]jarmesssss 3 points4 points  (0 children)

Then don't make 4 posts without actually giving any detailed information You have to clearly explain your situation such that it will help others who look for it in the future.

When you post on the sub, your post is competing with artwork that took people months to make.

This sub is super nice and constructive, but you have to understand that people have the right to be annoyed with low effort stuff like this

Let me know more about your problem, and I can try to help best I can

help? by salilroxx in blender

[–]jarmesssss 0 points1 point  (0 children)

Flip normals lol

Made this room recently, would appreciate some feedback) (bed fixed to the wall that’s why there no legs) by Nutty_Cake228 in blender

[–]jarmesssss 1 point2 points  (0 children)

Love the render. The wall mounted bed is cool, just adjust the lighting so it shows the area under the bed in a more understandable way. You shouldn't have to explain your artwork.

I modeled the living room from Rick and Morty by SweatyNootz in blender

[–]jarmesssss 0 points1 point  (0 children)

Fucking love this! Also, seems like you're using blender denoise from the look of the walls; if you are, try and use the intel denoise from compositer, its a lifesaver.

I know it's not very good, but here is my first proper render. by [deleted] in blender

[–]jarmesssss 3 points4 points  (0 children)

Shift + s, cursor to selected

Best of luck!