|
|
|
@ -8,7 +8,7 @@ use kea_gpu::{
|
|
|
|
|
storage::buffers::Buffer,
|
|
|
|
|
};
|
|
|
|
|
use kea_gpulib::Aabb;
|
|
|
|
|
use kea_renderer_shaders::SlotId;
|
|
|
|
|
use kea_renderer_gpu::SlotId;
|
|
|
|
|
use spirv_std::glam::{vec3a, Affine3A, Quat, Vec3, Vec3A};
|
|
|
|
|
use std::sync::Arc;
|
|
|
|
|
|
|
|
|
@ -37,7 +37,7 @@ pub struct Sphere {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[derive(Component)]
|
|
|
|
|
pub struct Material(pub kea_renderer_shaders::materials::Material);
|
|
|
|
|
pub struct Material(pub kea_renderer_gpu::materials::Material);
|
|
|
|
|
|
|
|
|
|
#[derive(Component)]
|
|
|
|
|
pub struct Mesh {
|
|
|
|
@ -62,7 +62,7 @@ impl Scene {
|
|
|
|
|
&mut self,
|
|
|
|
|
position: Vec3,
|
|
|
|
|
radius: f32,
|
|
|
|
|
material: kea_renderer_shaders::materials::Material,
|
|
|
|
|
material: kea_renderer_gpu::materials::Material,
|
|
|
|
|
) {
|
|
|
|
|
self.world
|
|
|
|
|
.spawn((Position(position), Sphere { radius }, Material(material)));
|
|
|
|
@ -73,7 +73,7 @@ impl Scene {
|
|
|
|
|
position: Vec3,
|
|
|
|
|
scale: Vec3,
|
|
|
|
|
rotation: Quat,
|
|
|
|
|
material: kea_renderer_shaders::materials::Material,
|
|
|
|
|
material: kea_renderer_gpu::materials::Material,
|
|
|
|
|
) {
|
|
|
|
|
let vertices = vec![
|
|
|
|
|
vec3a(0.5, -0.5, 0.5),
|
|
|
|
@ -115,12 +115,12 @@ impl Scene {
|
|
|
|
|
"kea renderer scene".to_string(),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
let spheres: Vec<kea_renderer_shaders::spheres::Sphere> = self
|
|
|
|
|
let spheres: Vec<kea_renderer_gpu::spheres::Sphere> = self
|
|
|
|
|
.world
|
|
|
|
|
.query::<(&Position, &Sphere, &Material)>()
|
|
|
|
|
.iter(&self.world)
|
|
|
|
|
.map(|(position, sphere, material)| {
|
|
|
|
|
kea_renderer_shaders::spheres::Sphere::new(position.0, sphere.radius, material.0)
|
|
|
|
|
kea_renderer_gpu::spheres::Sphere::new(position.0, sphere.radius, material.0)
|
|
|
|
|
})
|
|
|
|
|
.collect();
|
|
|
|
|
|
|
|
|
@ -137,7 +137,7 @@ impl Scene {
|
|
|
|
|
|
|
|
|
|
let aabbs: Vec<Aabb> = spheres
|
|
|
|
|
.iter()
|
|
|
|
|
.map(|s: &kea_renderer_shaders::spheres::Sphere| s.aabb())
|
|
|
|
|
.map(|s: &kea_renderer_gpu::spheres::Sphere| s.aabb())
|
|
|
|
|
.collect();
|
|
|
|
|
log::debug!("Aabbs: {:?}", aabbs);
|
|
|
|
|
let aabbs_buffer = Buffer::new_from_data(
|
|
|
|
@ -162,7 +162,7 @@ impl Scene {
|
|
|
|
|
scene.add_instance(geometry_instance);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let mut meshes: Vec<kea_renderer_shaders::triangles::Mesh> = vec![];
|
|
|
|
|
let mut meshes: Vec<kea_renderer_gpu::triangles::Mesh> = vec![];
|
|
|
|
|
let mut all_vertices: Vec<Vec3A> = vec![];
|
|
|
|
|
let mut all_indices: Vec<[u32; 3]> = vec![];
|
|
|
|
|
|
|
|
|
@ -211,7 +211,7 @@ impl Scene {
|
|
|
|
|
GeometryInstance::new(Arc::new(geometry), 0, transform, meshes.len() as _);
|
|
|
|
|
scene.add_instance(geometry_instance);
|
|
|
|
|
|
|
|
|
|
meshes.push(kea_renderer_shaders::triangles::Mesh {
|
|
|
|
|
meshes.push(kea_renderer_gpu::triangles::Mesh {
|
|
|
|
|
// vertices_address,
|
|
|
|
|
// indices_address,
|
|
|
|
|
vertices_offset: vertices_offset as _,
|
|
|
|
|