Struct bottomless_pit::material::MaterialBuilder
source · pub struct MaterialBuilder<'a> { /* private fields */ }Expand description
A builder struct used to create Materials
Implementations§
source§impl<'a> MaterialBuilder<'a>
impl<'a> MaterialBuilder<'a>
sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new MaterialBuilder, that contains no texture, custom shaders, or uniforms
Examples found in repository?
examples/debug_triangle.rs (line 15)
8 9 10 11 12 13 14 15 16 17 18 19 20
fn main() {
let mut engine = EngineBuilder::new()
.with_resolution((400, 400))
.set_clear_colour(Colour::BLACK)
.build()
.unwrap();
let material = MaterialBuilder::new().build(&mut engine);
let pos = DebugTriangle { material };
engine.run(pos);
}More examples
examples/rectangles.rs (line 18)
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
let mut engine = EngineBuilder::new()
.set_clear_colour(Colour::BLACK)
.build()
.unwrap();
let texture = Texture::new(&mut engine, "examples/bplogo.png");
let texture_material = MaterialBuilder::new()
.add_texture(texture)
.build(&mut engine);
let regular_material = MaterialBuilder::new().build(&mut engine);
let pos = Position {
pos: Vec2 { x: 0.0, y: 0.0 },
regular_material,
texture_material,
};
engine.run(pos);
}examples/texture.rs (line 18)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
let mut engine = EngineBuilder::new()
.set_window_title("Testing Triangle")
.with_resolution((400, 400))
.build()
.unwrap();
let texture = Texture::new(&mut engine, "examples/bplogo.png");
let texture = MaterialBuilder::new()
.add_texture(texture)
.build(&mut engine);
let defualt = MaterialBuilder::new().build(&mut engine);
let s = TextureExample {
current: texture,
other: defualt,
pos: Vec2 { x: 0.0, y: 0.0 },
};
engine.run(s);
}examples/ngon.rs (line 32)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let mut engine = EngineBuilder::new()
.with_resolution((500, 500))
.remove_vsync()
.set_clear_colour(Colour::BLACK)
.build()
.unwrap();
let data = Time {
time: 0.0,
_pading: 0.0,
_padding2: 0.0,
_padding4: 0.0,
};
let uniform_data = UniformData::new(&engine, &data);
let mouse_shader = Shader::new("examples/sinewaves.wgsl", true, &mut engine);
let regular_material = MaterialBuilder::new()
.set_uniform(&uniform_data)
.set_shader(mouse_shader)
.build(&mut engine);
let pos = Position {
regular_material,
time: 0.0,
};
engine.run(pos);
}examples/shader.rs (line 35)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
fn main() {
let mut engine = EngineBuilder::new()
.set_clear_colour(Colour::WHITE)
.build()
.unwrap();
let mouse_shader = Shader::new("examples/mouse.wgsl", true, &mut engine);
let circle_shader = Shader::new("examples/movement.wgsl", true, &mut engine);
let data = MousePos {
x: 0.0,
y: 0.0,
_junk: 0.0,
_padding2: 0.0,
};
let mouse_uniform_data = UniformData::new(&engine, &data);
// On wasm we need this to be 16 bytes aligned so we have added this instead of
// a 0.0_f32
let circle_uniform_data = UniformData::new(&engine, &data);
let mouse_material = MaterialBuilder::new()
.set_shader(mouse_shader)
.set_uniform(&mouse_uniform_data)
.build(&mut engine);
let circle_material = MaterialBuilder::new()
.set_shader(circle_shader)
.set_uniform(&circle_uniform_data)
.build(&mut engine);
let defualt_material = MaterialBuilder::new().build(&mut engine);
let game = ShaderExample {
data,
mouse_material,
circle_material,
defualt_material,
theta: 0.0,
};
engine.run(game);
}sourcepub fn add_texture(self, texture: ResourceId<Texture>) -> Self
pub fn add_texture(self, texture: ResourceId<Texture>) -> Self
Adds a Texture to the Material
Examples found in repository?
examples/rectangles.rs (line 19)
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
let mut engine = EngineBuilder::new()
.set_clear_colour(Colour::BLACK)
.build()
.unwrap();
let texture = Texture::new(&mut engine, "examples/bplogo.png");
let texture_material = MaterialBuilder::new()
.add_texture(texture)
.build(&mut engine);
let regular_material = MaterialBuilder::new().build(&mut engine);
let pos = Position {
pos: Vec2 { x: 0.0, y: 0.0 },
regular_material,
texture_material,
};
engine.run(pos);
}More examples
examples/texture.rs (line 19)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
let mut engine = EngineBuilder::new()
.set_window_title("Testing Triangle")
.with_resolution((400, 400))
.build()
.unwrap();
let texture = Texture::new(&mut engine, "examples/bplogo.png");
let texture = MaterialBuilder::new()
.add_texture(texture)
.build(&mut engine);
let defualt = MaterialBuilder::new().build(&mut engine);
let s = TextureExample {
current: texture,
other: defualt,
pos: Vec2 { x: 0.0, y: 0.0 },
};
engine.run(s);
}sourcepub fn set_uniform(self, data: &'a UniformData) -> Self
pub fn set_uniform(self, data: &'a UniformData) -> Self
Sets the initial Uniform data for the shader
Examples found in repository?
examples/ngon.rs (line 33)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let mut engine = EngineBuilder::new()
.with_resolution((500, 500))
.remove_vsync()
.set_clear_colour(Colour::BLACK)
.build()
.unwrap();
let data = Time {
time: 0.0,
_pading: 0.0,
_padding2: 0.0,
_padding4: 0.0,
};
let uniform_data = UniformData::new(&engine, &data);
let mouse_shader = Shader::new("examples/sinewaves.wgsl", true, &mut engine);
let regular_material = MaterialBuilder::new()
.set_uniform(&uniform_data)
.set_shader(mouse_shader)
.build(&mut engine);
let pos = Position {
regular_material,
time: 0.0,
};
engine.run(pos);
}More examples
examples/shader.rs (line 37)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
fn main() {
let mut engine = EngineBuilder::new()
.set_clear_colour(Colour::WHITE)
.build()
.unwrap();
let mouse_shader = Shader::new("examples/mouse.wgsl", true, &mut engine);
let circle_shader = Shader::new("examples/movement.wgsl", true, &mut engine);
let data = MousePos {
x: 0.0,
y: 0.0,
_junk: 0.0,
_padding2: 0.0,
};
let mouse_uniform_data = UniformData::new(&engine, &data);
// On wasm we need this to be 16 bytes aligned so we have added this instead of
// a 0.0_f32
let circle_uniform_data = UniformData::new(&engine, &data);
let mouse_material = MaterialBuilder::new()
.set_shader(mouse_shader)
.set_uniform(&mouse_uniform_data)
.build(&mut engine);
let circle_material = MaterialBuilder::new()
.set_shader(circle_shader)
.set_uniform(&circle_uniform_data)
.build(&mut engine);
let defualt_material = MaterialBuilder::new().build(&mut engine);
let game = ShaderExample {
data,
mouse_material,
circle_material,
defualt_material,
theta: 0.0,
};
engine.run(game);
}sourcepub fn set_shader(self, shader: ResourceId<Shader>) -> Self
pub fn set_shader(self, shader: ResourceId<Shader>) -> Self
Sets the shader for the Material
Examples found in repository?
examples/ngon.rs (line 34)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let mut engine = EngineBuilder::new()
.with_resolution((500, 500))
.remove_vsync()
.set_clear_colour(Colour::BLACK)
.build()
.unwrap();
let data = Time {
time: 0.0,
_pading: 0.0,
_padding2: 0.0,
_padding4: 0.0,
};
let uniform_data = UniformData::new(&engine, &data);
let mouse_shader = Shader::new("examples/sinewaves.wgsl", true, &mut engine);
let regular_material = MaterialBuilder::new()
.set_uniform(&uniform_data)
.set_shader(mouse_shader)
.build(&mut engine);
let pos = Position {
regular_material,
time: 0.0,
};
engine.run(pos);
}More examples
examples/shader.rs (line 36)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
fn main() {
let mut engine = EngineBuilder::new()
.set_clear_colour(Colour::WHITE)
.build()
.unwrap();
let mouse_shader = Shader::new("examples/mouse.wgsl", true, &mut engine);
let circle_shader = Shader::new("examples/movement.wgsl", true, &mut engine);
let data = MousePos {
x: 0.0,
y: 0.0,
_junk: 0.0,
_padding2: 0.0,
};
let mouse_uniform_data = UniformData::new(&engine, &data);
// On wasm we need this to be 16 bytes aligned so we have added this instead of
// a 0.0_f32
let circle_uniform_data = UniformData::new(&engine, &data);
let mouse_material = MaterialBuilder::new()
.set_shader(mouse_shader)
.set_uniform(&mouse_uniform_data)
.build(&mut engine);
let circle_material = MaterialBuilder::new()
.set_shader(circle_shader)
.set_uniform(&circle_uniform_data)
.build(&mut engine);
let defualt_material = MaterialBuilder::new().build(&mut engine);
let game = ShaderExample {
data,
mouse_material,
circle_material,
defualt_material,
theta: 0.0,
};
engine.run(game);
}sourcepub fn build(self, engine_handle: &mut Engine) -> Material
pub fn build(self, engine_handle: &mut Engine) -> Material
Turns the builder into a Material
Examples found in repository?
examples/debug_triangle.rs (line 15)
8 9 10 11 12 13 14 15 16 17 18 19 20
fn main() {
let mut engine = EngineBuilder::new()
.with_resolution((400, 400))
.set_clear_colour(Colour::BLACK)
.build()
.unwrap();
let material = MaterialBuilder::new().build(&mut engine);
let pos = DebugTriangle { material };
engine.run(pos);
}More examples
examples/rectangles.rs (line 20)
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
let mut engine = EngineBuilder::new()
.set_clear_colour(Colour::BLACK)
.build()
.unwrap();
let texture = Texture::new(&mut engine, "examples/bplogo.png");
let texture_material = MaterialBuilder::new()
.add_texture(texture)
.build(&mut engine);
let regular_material = MaterialBuilder::new().build(&mut engine);
let pos = Position {
pos: Vec2 { x: 0.0, y: 0.0 },
regular_material,
texture_material,
};
engine.run(pos);
}examples/texture.rs (line 20)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
let mut engine = EngineBuilder::new()
.set_window_title("Testing Triangle")
.with_resolution((400, 400))
.build()
.unwrap();
let texture = Texture::new(&mut engine, "examples/bplogo.png");
let texture = MaterialBuilder::new()
.add_texture(texture)
.build(&mut engine);
let defualt = MaterialBuilder::new().build(&mut engine);
let s = TextureExample {
current: texture,
other: defualt,
pos: Vec2 { x: 0.0, y: 0.0 },
};
engine.run(s);
}examples/ngon.rs (line 35)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let mut engine = EngineBuilder::new()
.with_resolution((500, 500))
.remove_vsync()
.set_clear_colour(Colour::BLACK)
.build()
.unwrap();
let data = Time {
time: 0.0,
_pading: 0.0,
_padding2: 0.0,
_padding4: 0.0,
};
let uniform_data = UniformData::new(&engine, &data);
let mouse_shader = Shader::new("examples/sinewaves.wgsl", true, &mut engine);
let regular_material = MaterialBuilder::new()
.set_uniform(&uniform_data)
.set_shader(mouse_shader)
.build(&mut engine);
let pos = Position {
regular_material,
time: 0.0,
};
engine.run(pos);
}examples/shader.rs (line 38)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
fn main() {
let mut engine = EngineBuilder::new()
.set_clear_colour(Colour::WHITE)
.build()
.unwrap();
let mouse_shader = Shader::new("examples/mouse.wgsl", true, &mut engine);
let circle_shader = Shader::new("examples/movement.wgsl", true, &mut engine);
let data = MousePos {
x: 0.0,
y: 0.0,
_junk: 0.0,
_padding2: 0.0,
};
let mouse_uniform_data = UniformData::new(&engine, &data);
// On wasm we need this to be 16 bytes aligned so we have added this instead of
// a 0.0_f32
let circle_uniform_data = UniformData::new(&engine, &data);
let mouse_material = MaterialBuilder::new()
.set_shader(mouse_shader)
.set_uniform(&mouse_uniform_data)
.build(&mut engine);
let circle_material = MaterialBuilder::new()
.set_shader(circle_shader)
.set_uniform(&circle_uniform_data)
.build(&mut engine);
let defualt_material = MaterialBuilder::new().build(&mut engine);
let game = ShaderExample {
data,
mouse_material,
circle_material,
defualt_material,
theta: 0.0,
};
engine.run(game);
}Trait Implementations§
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for MaterialBuilder<'a>
impl<'a> Send for MaterialBuilder<'a>
impl<'a> Sync for MaterialBuilder<'a>
impl<'a> Unpin for MaterialBuilder<'a>
impl<'a> !UnwindSafe for MaterialBuilder<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more