bevy_solari/scene/
types.rs

1use bevy_asset::Handle;
2use bevy_derive::{Deref, DerefMut};
3use bevy_ecs::{component::Component, prelude::ReflectComponent};
4use bevy_mesh::Mesh;
5use bevy_pbr::{MeshMaterial3d, StandardMaterial};
6use bevy_reflect::{prelude::ReflectDefault, Reflect};
7use bevy_render::sync_world::SyncToRenderWorld;
8use bevy_transform::components::Transform;
9use derive_more::derive::From;
10
11/// A mesh component used for raytracing.
12///
13/// The mesh used in this component must have [`Mesh::enable_raytracing`] set to true,
14/// use the following set of vertex attributes: `{POSITION, NORMAL, UV_0, TANGENT}`, use [`bevy_mesh::PrimitiveTopology::TriangleList`],
15/// and use [`bevy_mesh::Indices::U32`].
16///
17/// The material used for this entity must be [`MeshMaterial3d<StandardMaterial>`].
18#[derive(Component, Clone, Debug, Default, Deref, DerefMut, Reflect, PartialEq, Eq, From)]
19#[reflect(Component, Default, Clone, PartialEq)]
20#[require(MeshMaterial3d<StandardMaterial>, Transform, SyncToRenderWorld)]
21pub struct RaytracingMesh3d(pub Handle<Mesh>);