Compare commits
2 Commits
b025f72604
...
8bba7b9e1b
Author | SHA1 | Date |
---|---|---|
Simon Gellis | 8bba7b9e1b | |
Simon Gellis | a0e39796bf |
|
@ -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];
|
||||
}
|
||||
|
|
33
src/app.rs
33
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::{
|
||||
|
@ -43,7 +44,7 @@ struct AppWindow {
|
|||
impl AppWindow {
|
||||
fn setup_gpu(event_loop: &ActiveEventLoop, client: &EmulatorClient) -> Self {
|
||||
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
|
||||
backends: wgpu::Backends::PRIMARY,
|
||||
backends: wgpu::Backends::PRIMARY.difference(wgpu::Backends::VULKAN),
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
|
@ -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