rewrite it in rust #1
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -220,6 +220,20 @@ name = "bytemuck"
 | 
			
		|||
version = "1.19.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "bytemuck_derive",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "bytemuck_derive"
 | 
			
		||||
version = "1.8.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "syn 2.0.87",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "bytes"
 | 
			
		||||
| 
						 | 
				
			
			@ -1489,6 +1503,7 @@ name = "shrooms-vb-native"
 | 
			
		|||
version = "0.1.0"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "anyhow",
 | 
			
		||||
 "bytemuck",
 | 
			
		||||
 "cc",
 | 
			
		||||
 "clap",
 | 
			
		||||
 "imgui",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,7 @@ edition = "2021"
 | 
			
		|||
 | 
			
		||||
[dependencies]
 | 
			
		||||
anyhow = "1"
 | 
			
		||||
bytemuck = { version = "1", features = ["derive"] }
 | 
			
		||||
clap = { version = "4", features = ["derive"] }
 | 
			
		||||
imgui = "0.12"
 | 
			
		||||
imgui-wgpu = { git = "https://github.com/Yatekii/imgui-wgpu-rs", rev = "2edd348" }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,9 +41,15 @@ var u_texture: texture_2d<f32>;
 | 
			
		|||
@group(0) @binding(1)
 | 
			
		||||
var u_sampler: sampler;
 | 
			
		||||
 | 
			
		||||
struct Colors {
 | 
			
		||||
    left: vec4<f32>,
 | 
			
		||||
    right: vec4<f32>,
 | 
			
		||||
};
 | 
			
		||||
@group(0) @binding(2)
 | 
			
		||||
var<uniform> colors: Colors;
 | 
			
		||||
 | 
			
		||||
@fragment
 | 
			
		||||
fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
 | 
			
		||||
    return textureSample(u_texture, u_sampler, in.tex_coords);
 | 
			
		||||
    // return vec4<f32>(0.3, 0.2, 0.1, 1.0);
 | 
			
		||||
    let brt = textureSample(u_texture, u_sampler, in.tex_coords);
 | 
			
		||||
    return colors.left * brt[0] + colors.right * brt[1];
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										31
									
								
								src/app.rs
								
								
								
								
							
							
						
						
									
										31
									
								
								src/app.rs
								
								
								
								
							| 
						 | 
				
			
			@ -3,6 +3,7 @@ use imgui_wgpu::{Renderer, RendererConfig};
 | 
			
		|||
use imgui_winit_support::WinitPlatform;
 | 
			
		||||
use pollster::block_on;
 | 
			
		||||
use std::{sync::Arc, time::Instant};
 | 
			
		||||
use wgpu::util::DeviceExt as _;
 | 
			
		||||
#[cfg(target_os = "windows")]
 | 
			
		||||
use winit::platform::windows::{CornerPreference, WindowAttributesExtWindows as _};
 | 
			
		||||
use winit::{
 | 
			
		||||
| 
						 | 
				
			
			@ -79,6 +80,15 @@ impl AppWindow {
 | 
			
		|||
        }));
 | 
			
		||||
        let eyes = eyes.create_view(&wgpu::TextureViewDescriptor::default());
 | 
			
		||||
        let sampler = device.create_sampler(&wgpu::SamplerDescriptor::default());
 | 
			
		||||
        let colors = Colors {
 | 
			
		||||
            left: [1.0, 0.0, 0.0, 1.0],
 | 
			
		||||
            right: [0.0, 0.7734375, 0.9375, 1.0],
 | 
			
		||||
        };
 | 
			
		||||
        let color_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
 | 
			
		||||
            label: Some("colors"),
 | 
			
		||||
            contents: bytemuck::bytes_of(&colors),
 | 
			
		||||
            usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
 | 
			
		||||
        });
 | 
			
		||||
        let texture_bind_group_layout =
 | 
			
		||||
            device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
 | 
			
		||||
                label: Some("texture bind group layout"),
 | 
			
		||||
| 
						 | 
				
			
			@ -99,6 +109,16 @@ impl AppWindow {
 | 
			
		|||
                        ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering),
 | 
			
		||||
                        count: None,
 | 
			
		||||
                    },
 | 
			
		||||
                    wgpu::BindGroupLayoutEntry {
 | 
			
		||||
                        binding: 2,
 | 
			
		||||
                        visibility: wgpu::ShaderStages::FRAGMENT,
 | 
			
		||||
                        ty: wgpu::BindingType::Buffer {
 | 
			
		||||
                            ty: wgpu::BufferBindingType::Uniform,
 | 
			
		||||
                            has_dynamic_offset: false,
 | 
			
		||||
                            min_binding_size: None,
 | 
			
		||||
                        },
 | 
			
		||||
                        count: None,
 | 
			
		||||
                    },
 | 
			
		||||
                ],
 | 
			
		||||
            });
 | 
			
		||||
        let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor {
 | 
			
		||||
| 
						 | 
				
			
			@ -113,6 +133,10 @@ impl AppWindow {
 | 
			
		|||
                    binding: 1,
 | 
			
		||||
                    resource: wgpu::BindingResource::Sampler(&sampler),
 | 
			
		||||
                },
 | 
			
		||||
                wgpu::BindGroupEntry {
 | 
			
		||||
                    binding: 2,
 | 
			
		||||
                    resource: color_buf.as_entire_binding(),
 | 
			
		||||
                },
 | 
			
		||||
            ],
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -438,3 +462,10 @@ impl ApplicationHandler for App {
 | 
			
		|||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[derive(Clone, Copy, bytemuck::Pod, bytemuck::Zeroable)]
 | 
			
		||||
#[repr(C)]
 | 
			
		||||
struct Colors {
 | 
			
		||||
    left: [f32; 4],
 | 
			
		||||
    right: [f32; 4],
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue