Initial wgpu abstraction

This commit is contained in:
Werner
2021-11-09 21:07:16 -03:00
parent 15e8989bef
commit b23bc27f55
25 changed files with 775 additions and 209 deletions

46
Source/Shader/Shader.rs Normal file
View File

@ -0,0 +1,46 @@
use super::{ShaderSource, ShaderStage};
use serde::{Deserialize, Serialize};
use std::borrow::Cow;
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
pub struct Shader {
pub label: Cow<'static, str>,
pub source: ShaderSource,
pub stage: ShaderStage,
}
impl Shader {
pub fn New(stage: ShaderStage, source: ShaderSource) -> Self {
Self {
label: "".into(),
source,
stage,
}
}
/*
pub fn FromSpirv(spirv: &[u8]) -> Self {
Self {
label: "".into(),
source: ShaderSource::Spirv(spirv),
stage,
}
}
*/
pub fn FromGlsl(stage: ShaderStage, glsl: &str) -> Self {
Self {
label: "".into(),
source: ShaderSource::Glsl(glsl.to_string()),
stage,
}
}
pub fn FromWgsl(wgsl: &str) -> Self {
Self {
label: "".into(),
source: ShaderSource::Wgsl(wgsl.to_string()),
stage: ShaderStage::Multiple,
}
}
}