engine/render: PBRTextureSet

ecs
q3k 2020-07-13 23:33:18 +02:00
parent c541260a93
commit cf9ebfbae7
2 changed files with 19 additions and 10 deletions

View File

@ -10,7 +10,7 @@ mod util;
mod physics;
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;
fn main() {
@ -19,7 +19,7 @@ fn main() {
let mut rm = ResourceManager::new();
let mesh_cube = {
let mesh = {
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, 0.0], [0.0, 0.0]),
@ -66,12 +66,11 @@ fn main() {
rm.add_mesh(Mesh::new(vertices, indices))
};
let material_cube = rm.add_material(Material::new(
Texture::from_image(String::from("assets/test-128px.png")),
Texture::from_color(color::LinearF32::new(1.0)),
));
let material = PBRTextureSet {
diffuse: Texture::from_image(String::from("assets/test-128px.png")),
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![];
for x in -20..20 {
@ -79,9 +78,7 @@ fn main() {
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 cube = render::renderable::Object {
mesh: mesh_cube,
transform: transform,
material: material_cube,
mesh, material, transform,
};
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 start = time::Instant::now();
let mut renderer = render::Renderer::initialize();
loop {
let instant_ns = time::Instant::now().duration_since(start).as_nanos() as u64;
let instant = ((instant_ns/1000) as f32) / 1_000_000.0;

View File

@ -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 {
diffuse: Texture<color::XYZ>,
roughness: Texture<color::LinearF32>,