Actually do anaglyph
This commit is contained in:
		
							parent
							
								
									b025f72604
								
							
						
					
					
						commit
						a0e39796bf
					
				| 
						 | 
					@ -220,6 +220,20 @@ name = "bytemuck"
 | 
				
			||||||
version = "1.19.0"
 | 
					version = "1.19.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d"
 | 
					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]]
 | 
					[[package]]
 | 
				
			||||||
name = "bytes"
 | 
					name = "bytes"
 | 
				
			||||||
| 
						 | 
					@ -1489,6 +1503,7 @@ name = "shrooms-vb-native"
 | 
				
			||||||
version = "0.1.0"
 | 
					version = "0.1.0"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "anyhow",
 | 
					 "anyhow",
 | 
				
			||||||
 | 
					 "bytemuck",
 | 
				
			||||||
 "cc",
 | 
					 "cc",
 | 
				
			||||||
 "clap",
 | 
					 "clap",
 | 
				
			||||||
 "imgui",
 | 
					 "imgui",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ edition = "2021"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
anyhow = "1"
 | 
					anyhow = "1"
 | 
				
			||||||
 | 
					bytemuck = { version = "1", features = ["derive"] }
 | 
				
			||||||
clap = { version = "4", features = ["derive"] }
 | 
					clap = { version = "4", features = ["derive"] }
 | 
				
			||||||
imgui = "0.12"
 | 
					imgui = "0.12"
 | 
				
			||||||
imgui-wgpu = { git = "https://github.com/Yatekii/imgui-wgpu-rs", rev = "2edd348" }
 | 
					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)
 | 
					@group(0) @binding(1)
 | 
				
			||||||
var u_sampler: sampler;
 | 
					var u_sampler: sampler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct Colors {
 | 
				
			||||||
 | 
					    left: vec4<f32>,
 | 
				
			||||||
 | 
					    right: vec4<f32>,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					@group(0) @binding(2)
 | 
				
			||||||
 | 
					var<uniform> colors: Colors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@fragment
 | 
					@fragment
 | 
				
			||||||
fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
 | 
					fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
 | 
				
			||||||
    return textureSample(u_texture, u_sampler, in.tex_coords);
 | 
					    let brt = textureSample(u_texture, u_sampler, in.tex_coords);
 | 
				
			||||||
    // return vec4<f32>(0.3, 0.2, 0.1, 1.0);
 | 
					    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 imgui_winit_support::WinitPlatform;
 | 
				
			||||||
use pollster::block_on;
 | 
					use pollster::block_on;
 | 
				
			||||||
use std::{sync::Arc, time::Instant};
 | 
					use std::{sync::Arc, time::Instant};
 | 
				
			||||||
 | 
					use wgpu::util::DeviceExt as _;
 | 
				
			||||||
#[cfg(target_os = "windows")]
 | 
					#[cfg(target_os = "windows")]
 | 
				
			||||||
use winit::platform::windows::{CornerPreference, WindowAttributesExtWindows as _};
 | 
					use winit::platform::windows::{CornerPreference, WindowAttributesExtWindows as _};
 | 
				
			||||||
use winit::{
 | 
					use winit::{
 | 
				
			||||||
| 
						 | 
					@ -79,6 +80,15 @@ impl AppWindow {
 | 
				
			||||||
        }));
 | 
					        }));
 | 
				
			||||||
        let eyes = eyes.create_view(&wgpu::TextureViewDescriptor::default());
 | 
					        let eyes = eyes.create_view(&wgpu::TextureViewDescriptor::default());
 | 
				
			||||||
        let sampler = device.create_sampler(&wgpu::SamplerDescriptor::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 =
 | 
					        let texture_bind_group_layout =
 | 
				
			||||||
            device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
 | 
					            device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
 | 
				
			||||||
                label: Some("texture bind group layout"),
 | 
					                label: Some("texture bind group layout"),
 | 
				
			||||||
| 
						 | 
					@ -99,6 +109,16 @@ impl AppWindow {
 | 
				
			||||||
                        ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering),
 | 
					                        ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering),
 | 
				
			||||||
                        count: None,
 | 
					                        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 {
 | 
					        let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor {
 | 
				
			||||||
| 
						 | 
					@ -113,6 +133,10 @@ impl AppWindow {
 | 
				
			||||||
                    binding: 1,
 | 
					                    binding: 1,
 | 
				
			||||||
                    resource: wgpu::BindingResource::Sampler(&sampler),
 | 
					                    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