diff --git a/src/app/mod.rs b/src/app/mod.rs index 9ed1847..d848a38 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -25,9 +25,9 @@ impl App { let mut world_gen = WorldGen::new(); let start = std::time::Instant::now(); - for x in 0..32 { + for x in 0..48 { for y in 0..16 { - for z in 0..32 { + for z in 0..48 { world_gen.generate(&mut renderer, Point3{x, y, z}); } } diff --git a/src/renderer/buffers/mod.rs b/src/renderer/buffers/mod.rs index ffb0e63..029c5ec 100644 --- a/src/renderer/buffers/mod.rs +++ b/src/renderer/buffers/mod.rs @@ -3,7 +3,7 @@ pub const BLOCK_SIZE : usize = 32; // 32x32x32 block size pub const BLOCK_TEX_SIZE : usize = 64; // 64x64 blocks in texture -pub const NODE_TEX_SIZE: usize = 32; // 32x32x32 nodes in texture +pub const NODE_TEX_SIZE: usize = 48; // 32x32x32 nodes in texture pub const NODE_TEX_LEN: usize = NODE_TEX_SIZE*NODE_TEX_SIZE*NODE_TEX_SIZE; // Number of u32 in node texture diff --git a/src/shaders/bin/shader.frag.spv b/src/shaders/bin/shader.frag.spv index d305dd6..7887910 100644 Binary files a/src/shaders/bin/shader.frag.spv and b/src/shaders/bin/shader.frag.spv differ diff --git a/src/shaders/raycasting.cginc b/src/shaders/raycasting.cginc index f660a26..f755548 100644 --- a/src/shaders/raycasting.cginc +++ b/src/shaders/raycasting.cginc @@ -13,7 +13,7 @@ HitResult castBricks(vec3 origin, vec3 start, vec3 dir, vec3 incAxis, uint addr) // Change scale origin = start - origin; origin += dir*0.00001; - origin *= 32; + origin *= BLOCK_SIZE; // Same as in casting nodes vec3 pos = floor(origin); @@ -35,7 +35,7 @@ HitResult castBricks(vec3 origin, vec3 start, vec3 dir, vec3 incAxis, uint addr) // Hit point vec3 mini = (pos-origin+0.5 - raySign*0.5) * rayInv; float len = max(mini.x, max(mini.y, mini.z)); - vec3 hitPoint = (origin + dir * len) / 32.0 + o; + vec3 hitPoint = (origin + dir * len) / BLOCK_SIZE + o; // Normal vector (negate previous increment axis and mult by sign) vec3 normal = -incAxis * raySign; diff --git a/src/shaders/shader.frag b/src/shaders/shader.frag index a8cbf6d..d899b76 100644 --- a/src/shaders/shader.frag +++ b/src/shaders/shader.frag @@ -25,7 +25,8 @@ layout(set=3, binding=0) uniform Materials { // Defines #define EPSILON 0.00000001 -#define NODE_TEX_SIZE 32 +#define SCALE 1.0 +#define NODE_TEX_SIZE 48 #define BLOCK_TEX_SIZE 64 #define BLOCK_SIZE 32 @@ -35,6 +36,7 @@ layout(set=3, binding=0) uniform Materials { #include "shading.cginc" #include "raycasting.cginc" + float seed; float random(float s) { return fract(sin(seed++ + s)*43758.5453123); @@ -61,7 +63,7 @@ vec3 solve() // Calculate ray direction vec3 view_dir = (_ProjMatrixInv * vec4(vert_uv, 0, 1)).xyz; vec3 rayDir = normalize(_ViewMatrix * vec4(view_dir,0)).xyz; - Ray primaryRay = Ray(_CamPos, rayDir); + Ray primaryRay = Ray(_CamPos / SCALE, rayDir); // Raycast HitResult primary = castNodes(primaryRay, 100);