From 71e30abb621a41decade758037f284d6beafe304 Mon Sep 17 00:00:00 2001 From: Piotrek Date: Tue, 11 May 2021 10:57:54 +0200 Subject: [PATCH] Added fog --- src/game/mod.rs | 4 +- src/renderer/texture.rs | 61 ------------------------ src/shaders/raytrace/.bin/main.frag.spv | Bin 13616 -> 14124 bytes src/shaders/raytrace/main.frag | 6 +++ 4 files changed, 8 insertions(+), 63 deletions(-) delete mode 100644 src/renderer/texture.rs diff --git a/src/game/mod.rs b/src/game/mod.rs index a2b7f95..f652b7c 100644 --- a/src/game/mod.rs +++ b/src/game/mod.rs @@ -40,8 +40,8 @@ impl Game { // Generate new world else { let timer = Instant::now(); - for x in 0..128 { - for z in 0..128 { + for x in 0..32 { + for z in 0..32 { let pos = &Point3{x,y:0,z}; let block = app.world.gen_block(pos); content.write(pos, block); diff --git a/src/renderer/texture.rs b/src/renderer/texture.rs deleted file mode 100644 index 6d0ce00..0000000 --- a/src/renderer/texture.rs +++ /dev/null @@ -1,61 +0,0 @@ -use std::path::Path; -use image::GenericImageView; - -pub struct Texture { - pub texture: wgpu::Texture, - pub view: wgpu::TextureView, - pub sampler: wgpu::Sampler, -} - -impl Texture { - - pub fn from_file(device: &wgpu::Device, queue: &wgpu::Queue, str_path: &str) -> Self { - let img_path = Path::new(str_path); - let img = image::open(img_path).unwrap(); - Self::from_image(&device, &queue, &img) - } - - pub fn from_image(device: &wgpu::Device, queue: &wgpu::Queue, img: &image::DynamicImage) -> Self { - // Data from image - let img_dim = img.dimensions(); - let img_data = img.as_rgba8().unwrap(); - - // Create texture on device - let texture_size = wgpu::Extent3d { width: img_dim.0, height: img_dim.1, depth: 1, }; - let texture = device.create_texture(&wgpu::TextureDescriptor { - size: texture_size, - mip_level_count: 1, - sample_count: 1, - dimension: wgpu::TextureDimension::D2, - format: wgpu::TextureFormat::Rgba8UnormSrgb, - usage: wgpu::TextureUsage::SAMPLED | wgpu::TextureUsage::COPY_DST, - label: None, - }); - - // Write texture to memory - queue.write_texture( - wgpu::TextureCopyView { texture: &texture, mip_level: 0, origin: wgpu::Origin3d::ZERO }, - img_data, - wgpu::TextureDataLayout { offset: 0, bytes_per_row: 4 * img_dim.0, rows_per_image: img_dim.1 }, - texture_size, - ); - - // Create view and sampler - let view = texture.create_view(&wgpu::TextureViewDescriptor::default()); - let sampler = device.create_sampler( - &wgpu::SamplerDescriptor { - address_mode_u: wgpu::AddressMode::ClampToEdge, - address_mode_v: wgpu::AddressMode::ClampToEdge, - address_mode_w: wgpu::AddressMode::ClampToEdge, - //mag_filter: wgpu::FilterMode::Linear, - mag_filter: wgpu::FilterMode::Nearest, - min_filter: wgpu::FilterMode::Nearest, - mipmap_filter: wgpu::FilterMode::Nearest, - ..Default::default() - } - ); - - Self { texture, view, sampler } - } - -} \ No newline at end of file diff --git a/src/shaders/raytrace/.bin/main.frag.spv b/src/shaders/raytrace/.bin/main.frag.spv index 4e721000781704c913692b9162c06abbb5545a3c..653209dca3b6a955b1356aaea3d682338442f294 100644 GIT binary patch delta 1339 zcmYk6zfV(96vyu?g$ikj5fw#?MMNa6^#>J2pe<5Gfl7-GnwTg_!Du2F(fP%}Q4>-Z zT^$&7(DZ+B(uGAwU3Fp9#rXL?-f4Kr&HbM5Irn>hy!+nAhaXlFEs_41bDryP33p>X zG3%8--A={|QP&l5uJ&NIlmYZtluysap@};QqB6}N|RP9)3t3Pq3JC5z# z=9JzIPn&V%TIPr1B^?nY3RsB?WUVc@ka^$m-9sdd z*29utUyvVOj3Z$ARG%sbPW8PAS+@Z;%^Toj)X*x6Ce@2r~&Xz zcFndDev*T5im|10n$(H#To$a)R*4j=B9u^mD`E&N?w^aeA&vJB;1`6AIa6QHb@?ap zWLU4m`*I2_F3YkzcN#2yp0w7&8Ek7oerrLc=szaE^*;g@_lg{9<2+dZ3HU@%pNI>{ F{Rc-GYBK-; delta 804 zcmX|9%PvDv6y3M4tD>p6Y3tRhP(@2s-};Uw1_ml2Au%wLFu=sP>AJ5lsfgBjsz)rj~o!59(gK_-rB< z=ORx0Bj%lMXu00A-qR3{-S>`GTwLN7kx}g1LEOM%jEO@A5GSGU719;OgW%0hpsIKX z{HuFZRX$VTtl>W9!tj|zbis>$MTnwwn_o6fIARX z>lE{~+XgGLz;@6BEVdxenY-SoGYT|sw!KDcfe7moSHV#hf!URM9U6DWv0gQiEb?Xe zaNm-ptGZ=y&PKg$c_o19#~i(Cs7nGLB64ncwfbhOAWSH;G%z(DMww-RX~m<&cN!|zB8_0aZ_eX4f{Ehel&U23-???U}ylN&hM(f5Jatvw!iw{j5bR3xa7OIAD qJ-qD+a1PA_GOr#bXX0aKUVWJ`Ftsc6;AGRle1OzB9k^5Su=@r0*+Vq| diff --git a/src/shaders/raytrace/main.frag b/src/shaders/raytrace/main.frag index 270a628..d56a3ea 100644 --- a/src/shaders/raytrace/main.frag +++ b/src/shaders/raytrace/main.frag @@ -55,9 +55,15 @@ vec3 solve() // HitResult second = castNodes(secondRay, 25); // if(second.data > 0) color += getAlbedo(second.data) * 0.8; + // Fog + float dist = distance(primary.pos, primaryRay.origin); + float fog = exp2(-pow(0.02*dist, 2)); + color = mix(vec3(0.8, 0.8, 0.75), color, clamp(fog, 0.0, 1.0)); + return color; } + // Sky float up = clamp(dot(primaryRay.dir, vec3(0, 1, 0)) + 0.1, 0, 1); return vec3(0.176, 0.592, 0.901) * up; }