1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use crate::camera::Camera;
use crate::light::Light;
use crate::planar_camera::PlanarCamera;
use crate::resource::{Mesh, PlanarMesh};
use crate::scene::{ObjectData, PlanarObjectData};
use na::{Isometry2, Isometry3, Vector2, Vector3};
pub trait Material {
fn render(
&mut self,
pass: usize,
transform: &Isometry3<f32>,
scale: &Vector3<f32>,
camera: &mut dyn Camera,
light: &Light,
data: &ObjectData,
mesh: &mut Mesh,
);
}
pub trait PlanarMaterial {
fn render(
&mut self,
transform: &Isometry2<f32>,
scale: &Vector2<f32>,
camera: &mut dyn PlanarCamera,
data: &PlanarObjectData,
mesh: &mut PlanarMesh,
);
}