The game is very well crafted from a sound/ambience perspective, the music is nice, the worlds are way to small (even the large).
The game will not be very fun on a single island, you will need other islands, or in my opinion the world should be like MC and be a planet instead of an island.
This seems like it will be a lot of fun when the gameplay is implemented.
MountainLabs
97
Posts
4
Topics
7
Followers
26
Following
A member registered Nov 08, 2021 · View creator page →
Creator of
Recent community posts
Dynamic direct sunlight working with level of detail comments · Posted in Dynamic direct sunlight working with level of detail comments
It is also strange that you say you think it is the ray origins and diretions that are not calculated correctly, (although you could very possibly be right, I wouldn't doubt it) But it is strange, because if I do a basic ray box intersection using the same ray directions and origins there is no warping at all. The warping exists entirely within the DDA algorithm I have. Here it is:
fn Sphere_DDA_March( start_pos: vec3<f32>, // Starting position of the ray in world space end_pos: vec3<f32>, // Ending position of the ray in world space voxel_size: vec3<f32>, // Size of each voxel in the voxel grid bounds: vec3<i32>, // Dimensions of the voxel grid (width, height, depth) ) -> vec4<f32> { var direction: vec3<f32> = normalize(vec3<f32>(end_pos - start_pos)); var step: vec3<i32> = vec3<i32>( select(-1, 1, direction.x > 0.0), select(-1, 1, direction.y > 0.0), select(-1, 1, direction.z > 0.0) ); var tMax: vec3<f32> = vec3<f32>( ((select(floor(start_pos.x / voxel_size.x) + 1.0, floor(start_pos.x / voxel_size.x), direction.x < 0.0) * voxel_size.x) - start_pos.x) / direction.x, ((select(floor(start_pos.y / voxel_size.y) + 1.0, floor(start_pos.y / voxel_size.y), direction.y < 0.0) * voxel_size.y) - start_pos.y) / direction.y, ((select(floor(start_pos.z / voxel_size.z) + 1.0, floor(start_pos.z / voxel_size.z), direction.z < 0.0) * voxel_size.z) - start_pos.z) / direction.z ); var tDelta: vec3<f32> = vec3<f32>( abs(voxel_size.x / direction.x), abs(voxel_size.y / direction.y), abs(voxel_size.z / direction.z) ); let center: vec3<f32> = vec3<f32>(15.0); var ray_world_coord = vec3<f32>(vec3<f32>(current_voxel) * voxel_size); var ray_dist: f32 = f32(sqrt(((ray_world_coord.x - camera.position.x) * (ray_world_coord.x - camera.position.x)) + ((ray_world_coord.y - camera.position.y) * (ray_world_coord.y - camera.position.y)) + ((ray_world_coord.z - camera.position.z) * (ray_world_coord.z - camera.position.z)))); while(ray_dist < 256.0){ ray_world_coord = vec3<f32>(vec3<f32>(current_voxel) * voxel_size); var world_cord = vec3<f32>(vec3<f32>(current_voxel) * voxel_size); ray_dist = f32(sqrt(((ray_world_coord.x - camera.position.x) * (ray_world_coord.x - camera.position.x)) + ((ray_world_coord.y - camera.position.y) * (ray_world_coord.y - camera.position.y)) + ((ray_world_coord.z - camera.position.z) * (ray_world_coord.z - camera.position.z)))); var dist: f32 = f32(sqrt(((world_cord.x - center.x) * (world_cord.x - center.x)) + ((world_cord.y - center.y) * (world_cord.y - center.y)) + ((world_cord.z - center.z) * (world_cord.z - center.z)))); if (dist < 60.0){ let start_light: vec3<f32> = vec3<f32>(world_cord.x, world_cord.y + -0.5, world_cord.z); let end_light: vec3<f32> = vec3<f32>(world_cord.x, world_cord.y + 10.0, world_cord.z); let output = DDA_Light(start_light, end_light, voxel_size, bounds); if (output == 0) { return vec4<f32>(1.0, ray_dist / 100.0, 0.0, 1.0); } else { return vec4<f32>(0.75, ray_dist / 100.0, 0.0, 1.0); } } if (tMax.x < tMax.y && tMax.x < tMax.z) { current_voxel.x += step.x; tMax.x += tDelta.x; } else if (tMax.y < tMax.z) { current_voxel.y += step.y; tMax.y += tDelta.y; } else { current_voxel.z += step.z; tMax.z += tDelta.z; } } return vec4<f32>(0.0); }
Rasterized triangles are evil! comments · Replied to Teknologicus in Rasterized triangles are evil! comments
Improved fragment/compute shading rates comments · Posted in Improved fragment/compute shading rates comments
Update: Hilbert Curve surface grooved stone block comments · Replied to Teknologicus in Update: Hilbert Curve surface grooved stone block comments
Hilbert Curve surface grooved stone block comments · Posted in Hilbert Curve surface grooved stone block comments
Overhaul of buffer use in voxel engine comments · Posted in Overhaul of buffer use in voxel engine comments
Heir Obscure - Alpha Demo comments · Replied to Andrzej Gieralt in Heir Obscure - Alpha Demo comments
Testing other colors of procedurally generated mushrooms comments · Posted in Testing other colors of procedurally generated mushrooms comments
Voxel-level ambient occlusion optimization bits generation via compute shader comments · Posted in Voxel-level ambient occlusion optimization bits generation via compute shader comments