pub struct Imposters { /* private fields */ }
Expand description

A level-of-detail technique to replace rendering of high-poly meshes. Should only be used where details cannot be seen, for example when the objects are far away. A set of objects are rendered from different angles into a set of textures and the textures are then rendered continuously instead of the expensive objects.

Implementations§

source§

impl Imposters

source

pub fn new( context: &Context, positions: &[Vec3], objects: impl IntoIterator<Item = impl Object> + Clone, lights: &[&dyn Light], max_texture_size: u32 ) -> Self

Constructs a new Imposters and render the imposter texture from the given objects with the given lights. The imposters are placed at the given positions.

source

pub fn set_positions(&mut self, positions: &[Vec3])

Set the positions of the imposters.

source

pub fn update_texture( &mut self, objects: impl IntoIterator<Item = impl Object> + Clone, lights: &[&dyn Light], max_texture_size: u32 )

Render the imposter texture from the given objects with the given lights. Use this if you want to update the look of the imposters.

Methods from Deref<Target = Sprites>§

source

pub fn transformation(&self) -> Mat4

Returns the local to world transformation applied to all sprites.

source

pub fn set_transformation(&mut self, transformation: Mat4)

Set the local to world transformation applied to all sprites.

source

pub fn set_direction(&mut self, direction: Option<Vec3>)

Set a direction the sprite normals are always orthogonal to.

source

pub fn set_centers(&mut self, centers: &[Vec3])

Set the centers of the sprites. The centers also determines the number of sprites.

Trait Implementations§

source§

impl Deref for Imposters

§

type Target = Sprites

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl DerefMut for Imposters

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl Geometry for Imposters

source§

fn draw( &self, camera: &Camera, program: &Program, render_states: RenderStates, attributes: FragmentAttributes )

Draw this geometry.
source§

fn vertex_shader_source( &self, required_attributes: FragmentAttributes ) -> String

Returns the vertex shader source for this geometry given that the fragment shader needs the given vertex attributes.
source§

fn id(&self, required_attributes: FragmentAttributes) -> u16

Returns a unique ID for each variation of the shader source returned from Geometry::vertex_shader_source. Read more
source§

fn render_with_material( &self, material: &dyn Material, camera: &Camera, lights: &[&dyn Light] )

Render the geometry with the given Material. Must be called in the callback given as input to a RenderTarget, ColorTarget or DepthTarget write method. Use an empty array for the lights argument, if the material does not require lights to be rendered.
source§

fn render_with_effect( &self, material: &dyn Effect, camera: &Camera, lights: &[&dyn Light], color_texture: Option<ColorTexture<'_>>, depth_texture: Option<DepthTexture<'_>> )

Render the geometry with the given Effect. Must be called in the callback given as input to a RenderTarget, ColorTarget or DepthTarget write method. Use an empty array for the lights argument, if the material does not require lights to be rendered.
source§

fn aabb(&self) -> AxisAlignedBoundingBox

Returns the AxisAlignedBoundingBox for this geometry in the global coordinate system.
source§

fn animate(&mut self, _time: f32)

For updating the animation of this geometry if it is animated, if not, this method does nothing. The time parameter should be some continious time, for example the time since start.
source§

impl<'a> IntoIterator for &'a Imposters

§

type Item = &'a dyn Object

The type of the elements being iterated over.
§

type IntoIter = Once<&'a dyn Object>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl Object for Imposters

source§

fn render(&self, camera: &Camera, lights: &[&dyn Light])

Render the object. Use an empty array for the lights argument, if the objects does not require lights to be rendered. Must be called in the callback given as input to a RenderTarget, ColorTarget or DepthTarget write method.
source§

fn material_type(&self) -> MaterialType

Returns the type of material applied to this object.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.