pub struct Scene { /* private fields */ }Expand description
The main datatype for rendering graphics.
A Scene stores a sequence of drawing commands, their context, and the
associated resources, which can later be rendered.
Most users will render this using Renderer::render_to_texture.
Rendering from a Scene will not clear it, which should be done in a separate step, by calling Scene::reset.
If this is not done for a scene which is retained (to avoid allocations) between frames, this will likely quickly increase the complexity of the render result, leading to crashes or potential host system instability.
Implementations§
Source§impl Scene
impl Scene
Sourcepub fn bump_estimate(&self, transform: Option<Affine>) -> BumpAllocatorMemory
Available on crate feature bump_estimate only.
pub fn bump_estimate(&self, transform: Option<Affine>) -> BumpAllocatorMemory
bump_estimate only.Tally up the bump allocator estimate for the current state of the encoding,
taking into account an optional transform applied to the entire scene.
Sourcepub fn encoding_mut(&mut self) -> &mut Encoding
pub fn encoding_mut(&mut self) -> &mut Encoding
Returns a mutable reference to the underlying raw encoding.
This can be used to more easily create invalid scenes, and so should be used with care.
Sourcepub fn push_layer(
&mut self,
blend: impl Into<BlendMode>,
alpha: f32,
transform: Affine,
clip: &impl Shape,
)
pub fn push_layer( &mut self, blend: impl Into<BlendMode>, alpha: f32, transform: Affine, clip: &impl Shape, )
Pushes a new layer clipped by the specified shape and composed with previous layers using the specified blend mode.
Every drawing command after this call will be clipped by the shape
until the layer is popped.
For layers which are only added for clipping, you should
use push_clip_layer instead.
However, the transforms are not saved or modified by the layer stack.
That is, the transform argument to this function only applies a transform to the clip shape.
Sourcepub fn push_luminance_mask_layer(
&mut self,
alpha: f32,
transform: Affine,
clip: &impl Shape,
)
pub fn push_luminance_mask_layer( &mut self, alpha: f32, transform: Affine, clip: &impl Shape, )
Pushes a new layer clipped by the specified shape and treated like a luminance mask for the current layer.
That is, content drawn between this and the matching pop_layer call will serve
as a luminance mask for the prior content in this layer.
Every drawing command after this call will be clipped by the shape until the layer is popped.
However, the transforms are not saved or modified by the layer stack.
That is, the transform argument to this function only applies a transform to the clip shape.
§Transparency and premultiplication
In the current version of Vello, this can lead to some unexpected behaviour when it is used to draw directly onto a render target which disregards transparency (which includes surfaces in most cases). This happens because the luminance mask only impacts the transparency of the returned value, so if the transparency is ignored, it looks like the result had no effect.
This issue only occurs if there are no intermediate opaque layers, so can be worked around
by drawing something opaque (or having an opaque base_color), then putting a layer around your entire scene
with a Compose::SrcOver.
Sourcepub fn push_clip_layer(&mut self, transform: Affine, clip: &impl Shape)
pub fn push_clip_layer(&mut self, transform: Affine, clip: &impl Shape)
Pushes a new layer clipped by the specified clip shape.
The pushed layer is intended to not impact the “source” for blending; that is, any blends within this layer will still include content from before this method was called in the “source” of that blend operation. Note that this is not currently implemented correctly - see #1198. As such, you should currently not include any blend layers until this layer is popped.
Every drawing command after this call will be clipped by the shape until the layer is popped.
However, the transforms are not saved or modified by the layer stack.
That is, the transform argument to this function only applies a transform to the clip shape.
Sourcepub fn draw_blurred_rounded_rect(
&mut self,
transform: Affine,
rect: Rect,
brush: Color,
radius: f64,
std_dev: f64,
)
pub fn draw_blurred_rounded_rect( &mut self, transform: Affine, rect: Rect, brush: Color, radius: f64, std_dev: f64, )
Draw a rounded rectangle blurred with a gaussian filter.
Sourcepub fn draw_blurred_rounded_rect_in(
&mut self,
shape: &impl Shape,
transform: Affine,
rect: Rect,
brush: Color,
radius: f64,
std_dev: f64,
)
pub fn draw_blurred_rounded_rect_in( &mut self, shape: &impl Shape, transform: Affine, rect: Rect, brush: Color, radius: f64, std_dev: f64, )
Draw a rounded rectangle blurred with a gaussian filter in shape.
For performance reasons, shape should not extend more than approximately 2.5 times
std_dev away from the edges of rect (as any such points will not be perceptably painted to,
but calculations will still be performed for them).
This method effectively draws the blurred rounded rectangle clipped to the given shape.
If just the blurred rounded rectangle is desired without clipping,
use the simpler Self::draw_blurred_rounded_rect.
For many users, that method will be easier to use.
Sourcepub fn fill<'b>(
&mut self,
style: Fill,
transform: Affine,
brush: impl Into<BrushRef<'b>>,
brush_transform: Option<Affine>,
shape: &impl Shape,
)
pub fn fill<'b>( &mut self, style: Fill, transform: Affine, brush: impl Into<BrushRef<'b>>, brush_transform: Option<Affine>, shape: &impl Shape, )
Fills a shape using the specified style and brush.
Sourcepub fn stroke<'b>(
&mut self,
style: &Stroke,
transform: Affine,
brush: impl Into<BrushRef<'b>>,
brush_transform: Option<Affine>,
shape: &impl Shape,
)
pub fn stroke<'b>( &mut self, style: &Stroke, transform: Affine, brush: impl Into<BrushRef<'b>>, brush_transform: Option<Affine>, shape: &impl Shape, )
Strokes a shape using the specified style and brush.
Sourcepub fn draw_image<'b>(
&mut self,
image: impl Into<ImageBrushRef<'b>>,
transform: Affine,
)
pub fn draw_image<'b>( &mut self, image: impl Into<ImageBrushRef<'b>>, transform: Affine, )
Draws an image at its natural size with the given transform.
Sourcepub fn draw_glyphs(&mut self, font: &FontData) -> DrawGlyphs<'_>
pub fn draw_glyphs(&mut self, font: &FontData) -> DrawGlyphs<'_>
Returns a builder for encoding a glyph run.