mirror of
https://github.com/EmbarkStudios/rust-gpu.git
synced 2024-11-25 08:14:12 +00:00
Put shader modules at the top of the example runners (#229)
This commit is contained in:
parent
2f63addede
commit
45f2312947
@ -17,6 +17,10 @@ use std::io::Cursor;
|
|||||||
use std::ops::Drop;
|
use std::ops::Drop;
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
|
||||||
|
fn shader_module() -> &'static [u8] {
|
||||||
|
&include_bytes!(env!("sky_shader.spv"))[..]
|
||||||
|
}
|
||||||
|
|
||||||
// Simple offset_of macro akin to C++ offsetof
|
// Simple offset_of macro akin to C++ offsetof
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! offset_of {
|
macro_rules! offset_of {
|
||||||
@ -619,7 +623,7 @@ fn main() {
|
|||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let mut spv_file = Cursor::new(&include_bytes!(env!("sky_shader.spv"))[..]);
|
let mut spv_file = Cursor::new(shader_module());
|
||||||
let code = read_spv(&mut spv_file).expect("Failed to read spv file");
|
let code = read_spv(&mut spv_file).expect("Failed to read spv file");
|
||||||
let shader_info = vk::ShaderModuleCreateInfo::builder().code(&code);
|
let shader_info = vk::ShaderModuleCreateInfo::builder().code(&code);
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@ use rayon::prelude::*;
|
|||||||
use spirv_std::glam::{vec2, Vec4};
|
use spirv_std::glam::{vec2, Vec4};
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
|
|
||||||
|
use sky_shader as shader_module;
|
||||||
|
|
||||||
// apply the srgb OETF (i.e. do "linear to sRGB")
|
// apply the srgb OETF (i.e. do "linear to sRGB")
|
||||||
fn srgb_oetf(x: f32) -> f32 {
|
fn srgb_oetf(x: f32) -> f32 {
|
||||||
if x <= 0.0031308 {
|
if x <= 0.0031308 {
|
||||||
@ -47,7 +49,7 @@ fn main() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// evaluate the fragment shader for the specific pixel
|
// evaluate the fragment shader for the specific pixel
|
||||||
let color = sky_shader::fs(screen_pos);
|
let color = shader_module::fs(screen_pos);
|
||||||
|
|
||||||
color_u32_from_vec4(color)
|
color_u32_from_vec4(color)
|
||||||
})
|
})
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
fn shader_module() -> wgpu::ShaderModuleSource<'static> {
|
||||||
|
wgpu::include_spirv!(env!("compute_shader.spv"))
|
||||||
|
}
|
||||||
|
|
||||||
fn create_device_queue() -> (wgpu::Device, wgpu::Queue) {
|
fn create_device_queue() -> (wgpu::Device, wgpu::Queue) {
|
||||||
async fn create_device_queue_async() -> (wgpu::Device, wgpu::Queue) {
|
async fn create_device_queue_async() -> (wgpu::Device, wgpu::Queue) {
|
||||||
let instance = wgpu::Instance::new(wgpu::BackendBit::PRIMARY);
|
let instance = wgpu::Instance::new(wgpu::BackendBit::PRIMARY);
|
||||||
@ -35,7 +39,7 @@ fn main() {
|
|||||||
let (device, queue) = create_device_queue();
|
let (device, queue) = create_device_queue();
|
||||||
|
|
||||||
// Load the shaders from disk
|
// Load the shaders from disk
|
||||||
let module = device.create_shader_module(wgpu::include_spirv!(env!("compute_shader.spv")));
|
let module = device.create_shader_module(shader_module());
|
||||||
|
|
||||||
let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
|
let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
|
||||||
label: None,
|
label: None,
|
||||||
|
@ -4,6 +4,10 @@ use winit::{
|
|||||||
window::Window,
|
window::Window,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fn shader_module() -> wgpu::ShaderModuleSource<'static> {
|
||||||
|
wgpu::include_spirv!(env!("sky_shader.spv"))
|
||||||
|
}
|
||||||
|
|
||||||
async fn run(event_loop: EventLoop<()>, window: Window, swapchain_format: wgpu::TextureFormat) {
|
async fn run(event_loop: EventLoop<()>, window: Window, swapchain_format: wgpu::TextureFormat) {
|
||||||
let size = window.inner_size();
|
let size = window.inner_size();
|
||||||
let instance = wgpu::Instance::new(wgpu::BackendBit::PRIMARY);
|
let instance = wgpu::Instance::new(wgpu::BackendBit::PRIMARY);
|
||||||
@ -39,7 +43,7 @@ async fn run(event_loop: EventLoop<()>, window: Window, swapchain_format: wgpu::
|
|||||||
.expect("Failed to create device");
|
.expect("Failed to create device");
|
||||||
|
|
||||||
// Load the shaders from disk
|
// Load the shaders from disk
|
||||||
let module = device.create_shader_module(wgpu::include_spirv!(env!("sky_shader.spv")));
|
let module = device.create_shader_module(shader_module());
|
||||||
|
|
||||||
let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
|
let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
|
||||||
label: None,
|
label: None,
|
||||||
|
Loading…
Reference in New Issue
Block a user