从零开始渲染器-TransientResource
从零开始渲染器.论 TransientResource。
TransientResource
TransientResource分为两个阶段,资源标记和已注册资源。资源标记用于 frame graph 的 Setup 阶段和 Compile 阶段。注册资源用于 frame graph 的实际渲染。
#[derive(Clone)]
pub enum AnyTransientResource {}
#[derive(Clone)]
pub enum AnyTransientResourceDescriptor {}
#[derive(Clone)]
pub enum AnyArcTransientResource {}
#[derive(Clone)]
pub enum VirtualResource {
Setuped(AnyTransientResourceDescriptor),
Imported(AnyArcTransientResource),
}
AnyTransientResource代表已经注册的资源,这个和实际的gpu资源一一对应。VirtualResource代表资源标记。
定义TransientResource trait和TransientResourceDescriptor trait。代码如下:
pub trait TransientResource: 'static {
type Descriptor: TransientResourceDescriptor;
fn borrow_resource(res: &AnyTransientResource) -> &Self;
fn get_desc(&self) -> &Self::Descriptor;
}
pub trait TransientResourceDescriptor:
'static + Clone + Into<AnyTransientResourceDescriptor>
{
type Resource: TransientResource;
fn borrow_resource_descriptor(res: &AnyTransientResourceDescriptor) -> &Self;
}
ResourceRegisterContainer
ResourceRegisterContainer的主要功能有三点:
- 创建实际的资源
- 销毁实际的资源
- 获取实际的资源