ranim_render/primitives.rs
1pub mod mesh_items;
2pub mod viewport;
3pub mod vitems;
4
5use crate::utils::WgpuContext;
6
7/// The RenderResource encapsules the wgpu resources.
8///
9/// It has a `Data` type that is used to initialize/update the resource.
10pub trait RenderResource {
11 /// The type used for [`RenderResource::init`] and [`RenderResource::update`].
12 type Data;
13 /// Initialize a RenderResource using [`RenderResource::Data`]
14 fn init(ctx: &WgpuContext, data: &Self::Data) -> Self;
15 /// update a RenderResource using [`RenderResource::Data`]
16 fn update(&mut self, ctx: &WgpuContext, data: &Self::Data);
17}
18
19/// The Primitive is the basic renderable object in Ranim.
20///
21/// The Primitive itself is simply the data of the object.
22/// A Primitive can generate a corresponding [`Primitive::RenderPacket`],
23/// which implements [`RenderResource`]:
24/// - [`RenderResource`]: A trait about init or update itself with [`RenderResource::Data`].
25pub trait Primitive {
26 /// The RenderInstance
27 type RenderPacket: RenderResource<Data = Self> + Send + Sync + 'static;
28}