engine/render: PBRTextureSet
parent
c541260a93
commit
cf9ebfbae7
|
@ -10,7 +10,7 @@ mod util;
|
||||||
mod physics;
|
mod physics;
|
||||||
|
|
||||||
use render::vulkan::data;
|
use render::vulkan::data;
|
||||||
use render::renderable::{Object, Renderable, ResourceManager, Material, Mesh, Texture};
|
use render::renderable::{Object, Renderable, ResourceManager, Mesh, Texture, PBRTextureSet};
|
||||||
use physics::color;
|
use physics::color;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -19,7 +19,7 @@ fn main() {
|
||||||
|
|
||||||
let mut rm = ResourceManager::new();
|
let mut rm = ResourceManager::new();
|
||||||
|
|
||||||
let mesh_cube = {
|
let mesh = {
|
||||||
let vertices = Arc::new(vec![
|
let vertices = Arc::new(vec![
|
||||||
data::Vertex::new([-0.5, -0.5, 0.5], [1.0, 1.0, 1.0], [1.0, 0.0]),
|
data::Vertex::new([-0.5, -0.5, 0.5], [1.0, 1.0, 1.0], [1.0, 0.0]),
|
||||||
data::Vertex::new([0.5, -0.5, 0.5], [1.0, 1.0, 0.0], [0.0, 0.0]),
|
data::Vertex::new([0.5, -0.5, 0.5], [1.0, 1.0, 0.0], [0.0, 0.0]),
|
||||||
|
@ -66,12 +66,11 @@ fn main() {
|
||||||
rm.add_mesh(Mesh::new(vertices, indices))
|
rm.add_mesh(Mesh::new(vertices, indices))
|
||||||
};
|
};
|
||||||
|
|
||||||
let material_cube = rm.add_material(Material::new(
|
let material = PBRTextureSet {
|
||||||
Texture::from_image(String::from("assets/test-128px.png")),
|
diffuse: Texture::from_image(String::from("assets/test-128px.png")),
|
||||||
Texture::from_color(color::LinearF32::new(1.0)),
|
roughness: Texture::from_color(color::LinearF32::new(1.0)),
|
||||||
));
|
}.build(&mut rm);
|
||||||
|
|
||||||
let mut renderer = render::Renderer::initialize();
|
|
||||||
|
|
||||||
let mut cubes: Vec<Box<Object>> = vec![];
|
let mut cubes: Vec<Box<Object>> = vec![];
|
||||||
for x in -20..20 {
|
for x in -20..20 {
|
||||||
|
@ -79,9 +78,7 @@ fn main() {
|
||||||
for z in -20..20 {
|
for z in -20..20 {
|
||||||
let transform = cgm::Matrix4::from_translation(cgm::Vector3::new((x as f32)*4.0, (y as f32)*4.0, (z as f32)*4.0));
|
let transform = cgm::Matrix4::from_translation(cgm::Vector3::new((x as f32)*4.0, (y as f32)*4.0, (z as f32)*4.0));
|
||||||
let cube = render::renderable::Object {
|
let cube = render::renderable::Object {
|
||||||
mesh: mesh_cube,
|
mesh, material, transform,
|
||||||
transform: transform,
|
|
||||||
material: material_cube,
|
|
||||||
};
|
};
|
||||||
cubes.push(Box::new(cube));
|
cubes.push(Box::new(cube));
|
||||||
}
|
}
|
||||||
|
@ -91,6 +88,7 @@ fn main() {
|
||||||
let renderables: Vec<Box<dyn Renderable>> = cubes.into_iter().map(|e| e as Box<dyn Renderable>).collect();
|
let renderables: Vec<Box<dyn Renderable>> = cubes.into_iter().map(|e| e as Box<dyn Renderable>).collect();
|
||||||
|
|
||||||
let start = time::Instant::now();
|
let start = time::Instant::now();
|
||||||
|
let mut renderer = render::Renderer::initialize();
|
||||||
loop {
|
loop {
|
||||||
let instant_ns = time::Instant::now().duration_since(start).as_nanos() as u64;
|
let instant_ns = time::Instant::now().duration_since(start).as_nanos() as u64;
|
||||||
let instant = ((instant_ns/1000) as f32) / 1_000_000.0;
|
let instant = ((instant_ns/1000) as f32) / 1_000_000.0;
|
||||||
|
|
|
@ -88,6 +88,17 @@ impl<'a> ResourceManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct PBRTextureSet {
|
||||||
|
pub diffuse: Texture<color::XYZ>,
|
||||||
|
pub roughness: Texture<color::LinearF32>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PBRTextureSet {
|
||||||
|
pub fn build(self, rm: &mut ResourceManager) -> ResourceID {
|
||||||
|
rm.add_material(Material::new(self.diffuse, self.roughness))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub struct Material {
|
pub struct Material {
|
||||||
diffuse: Texture<color::XYZ>,
|
diffuse: Texture<color::XYZ>,
|
||||||
roughness: Texture<color::LinearF32>,
|
roughness: Texture<color::LinearF32>,
|
||||||
|
|
Loading…
Reference in New Issue