pub struct Scene {
pub background: Option<Box<dyn Shader>>,
pub lights: Vec<Light>,
pub d3_static: Vec<Batch<[f32; 4]>>,
pub d3_dynamic: Vec<Batch<[f32; 4]>>,
pub d2: Vec<Batch<[f32; 3]>>,
pub textures: Vec<Texture>,
}Expand description
A scene of 2D and 3D batches which are passed to the rasterizer for rasterization.
Fields§
§background: Option<Box<dyn Shader>>§lights: Vec<Light>§d3_static: Vec<Batch<[f32; 4]>>3D static batches which do not need to be changed, i.e. no animation for textures or the mesh itself.
d3_dynamic: Vec<Batch<[f32; 4]>>3D dynamic batches which can be updated dynamically.
d2: Vec<Batch<[f32; 3]>>The 2D batches get rendered on top of the 3D batches (2D game or UI).
textures: Vec<Texture>The list of textures which the batches index into.
Implementations§
Source§impl Scene
impl Scene
pub fn empty() -> Self
Sourcepub fn from_static(d2: Vec<Batch<[f32; 3]>>, d3: Vec<Batch<[f32; 4]>>) -> Self
pub fn from_static(d2: Vec<Batch<[f32; 3]>>, d3: Vec<Batch<[f32; 4]>>) -> Self
Examples found in repository?
examples/cube.rs (lines 25-30)
21 fn new() -> Self
22 where
23 Self: Sized,
24 {
25 let scene = Scene::from_static(
26 vec![Batch::from_rectangle(0.0, 0.0, 200.0, 200.0)],
27 vec![Batch::from_box(-0.5, -0.5, -0.5, 1.0, 1.0, 1.0)
28 .sample_mode(SampleMode::Nearest)
29 .cull_mode(CullMode::Off)],
30 )
31 .background(Box::new(VGrayGradientShader::new()))
32 .textures(vec![Texture::from_image(Path::new("images/logo.png"))]);
33
34 Self {
35 camera: D3OrbitCamera::new(),
36 scene,
37 }
38 }More examples
examples/obj.rs (lines 25-31)
21 fn new() -> Self
22 where
23 Self: Sized,
24 {
25 let scene = Scene::from_static(
26 vec![Batch::from_rectangle(0.0, 0.0, 200.0, 200.0)],
27 vec![Batch::from_obj(Path::new("examples/teapot.obj"))
28 .sample_mode(SampleMode::Linear)
29 .repeat_mode(RepeatMode::RepeatXY)
30 .transform(Mat4::scaling_3d(Vec3::new(0.35, -0.35, 0.35)))],
31 )
32 .background(Box::new(VGrayGradientShader::new()))
33 .textures(vec![Texture::from_image(Path::new("images/logo.png"))]);
34
35 Self {
36 camera: D3OrbitCamera::new(),
37 scene,
38 }
39 }Sourcepub fn background(self, background: Box<dyn Shader>) -> Self
pub fn background(self, background: Box<dyn Shader>) -> Self
Sets the background shader using the builder pattern.
Examples found in repository?
examples/cube.rs (line 31)
21 fn new() -> Self
22 where
23 Self: Sized,
24 {
25 let scene = Scene::from_static(
26 vec![Batch::from_rectangle(0.0, 0.0, 200.0, 200.0)],
27 vec![Batch::from_box(-0.5, -0.5, -0.5, 1.0, 1.0, 1.0)
28 .sample_mode(SampleMode::Nearest)
29 .cull_mode(CullMode::Off)],
30 )
31 .background(Box::new(VGrayGradientShader::new()))
32 .textures(vec![Texture::from_image(Path::new("images/logo.png"))]);
33
34 Self {
35 camera: D3OrbitCamera::new(),
36 scene,
37 }
38 }More examples
examples/obj.rs (line 32)
21 fn new() -> Self
22 where
23 Self: Sized,
24 {
25 let scene = Scene::from_static(
26 vec![Batch::from_rectangle(0.0, 0.0, 200.0, 200.0)],
27 vec![Batch::from_obj(Path::new("examples/teapot.obj"))
28 .sample_mode(SampleMode::Linear)
29 .repeat_mode(RepeatMode::RepeatXY)
30 .transform(Mat4::scaling_3d(Vec3::new(0.35, -0.35, 0.35)))],
31 )
32 .background(Box::new(VGrayGradientShader::new()))
33 .textures(vec![Texture::from_image(Path::new("images/logo.png"))]);
34
35 Self {
36 camera: D3OrbitCamera::new(),
37 scene,
38 }
39 }Sourcepub fn textures(self, textures: Vec<Texture>) -> Self
pub fn textures(self, textures: Vec<Texture>) -> Self
Sets the background shader using the builder pattern.
Examples found in repository?
examples/cube.rs (line 32)
21 fn new() -> Self
22 where
23 Self: Sized,
24 {
25 let scene = Scene::from_static(
26 vec![Batch::from_rectangle(0.0, 0.0, 200.0, 200.0)],
27 vec![Batch::from_box(-0.5, -0.5, -0.5, 1.0, 1.0, 1.0)
28 .sample_mode(SampleMode::Nearest)
29 .cull_mode(CullMode::Off)],
30 )
31 .background(Box::new(VGrayGradientShader::new()))
32 .textures(vec![Texture::from_image(Path::new("images/logo.png"))]);
33
34 Self {
35 camera: D3OrbitCamera::new(),
36 scene,
37 }
38 }More examples
examples/obj.rs (line 33)
21 fn new() -> Self
22 where
23 Self: Sized,
24 {
25 let scene = Scene::from_static(
26 vec![Batch::from_rectangle(0.0, 0.0, 200.0, 200.0)],
27 vec![Batch::from_obj(Path::new("examples/teapot.obj"))
28 .sample_mode(SampleMode::Linear)
29 .repeat_mode(RepeatMode::RepeatXY)
30 .transform(Mat4::scaling_3d(Vec3::new(0.35, -0.35, 0.35)))],
31 )
32 .background(Box::new(VGrayGradientShader::new()))
33 .textures(vec![Texture::from_image(Path::new("images/logo.png"))]);
34
35 Self {
36 camera: D3OrbitCamera::new(),
37 scene,
38 }
39 }Trait Implementations§
Auto Trait Implementations§
impl Freeze for Scene
impl !RefUnwindSafe for Scene
impl Send for Scene
impl Sync for Scene
impl Unpin for Scene
impl !UnwindSafe for Scene
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T, U> OverflowingInto<U> for Twhere
U: OverflowingFrom<T>,
impl<T, U> OverflowingInto<U> for Twhere
U: OverflowingFrom<T>,
fn overflowing_into(self) -> (U, bool)
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().