diff --git a/examples/simple_new.rs b/examples/simple_new.rs new file mode 100644 index 0000000000..5f380ba7b5 --- /dev/null +++ b/examples/simple_new.rs @@ -0,0 +1,71 @@ +use bevy::prelude::*; +use bevy::render::render_graph_2::{StandardMaterial, ShaderUniforms}; + +fn main() { + AppBuilder::new().add_defaults().setup_world(setup).run(); +} + +fn setup(world: &mut World) { + let cube = Mesh::load(MeshType::Cube); + let plane = Mesh::load(MeshType::Plane { size: 10.0 }); + + let (cube_handle, plane_handle) = { + let mut mesh_storage = world.resources.get_mut::>().unwrap(); + (mesh_storage.add(cube), mesh_storage.add(plane)) + }; + + world.build() + // plane + .add_archetype(NewMeshEntity { + mesh: plane_handle.clone(), + material: StandardMaterial { + albedo: math::vec4(0.1, 0.2, 0.1, 1.0), + }, + shader_uniforms: ShaderUniforms::new(), + local_to_world: LocalToWorld::identity(), + translation: Translation::new(0.0, 0.0, 0.0), + }) + // cube + .add_archetype(NewMeshEntity { + mesh: cube_handle.clone(), + material: StandardMaterial { + albedo: math::vec4(0.5, 0.3, 0.3, 1.0), + }, + shader_uniforms: ShaderUniforms::new(), + local_to_world: LocalToWorld::identity(), + translation: Translation::new(0.0, 0.0, 1.0), + }) + // light + .add_archetype(LightEntity { + light: Light { + color: wgpu::Color { + r: 0.8, + g: 0.8, + b: 0.5, + a: 1.0, + }, + fov: f32::to_radians(60.0), + depth: 0.1..50.0, + target_view: None, + }, + local_to_world: LocalToWorld::identity(), + translation: Translation::new(4.0, -4.0, 5.0), + rotation: Rotation::from_euler_angles(0.0, 0.0, 0.0), + }) + // camera + .add_archetype(CameraEntity { + camera: Camera::new(CameraType::Projection { + fov: std::f32::consts::PI / 4.0, + near: 1.0, + far: 1000.0, + aspect_ratio: 1.0, + }), + active_camera: ActiveCamera, + local_to_world: LocalToWorld(Mat4::look_at_rh( + Vec3::new(3.0, 8.0, 5.0), + Vec3::new(0.0, 0.0, 0.0), + Vec3::new(0.0, 0.0, 1.0), + )), + }) + .build(); +} diff --git a/src/render/render_graph_2/resource_provider.rs b/src/render/render_graph_2/resource_provider.rs index 93475407d5..f443f203cf 100644 --- a/src/render/render_graph_2/resource_provider.rs +++ b/src/render/render_graph_2/resource_provider.rs @@ -124,9 +124,9 @@ impl ResourceProvider for LightResourceProvider { renderer.copy_buffer_to_buffer( "LIGHT_TMP", - light_count_size as u64, - resource_name::uniform::LIGHTS, 0, + resource_name::uniform::LIGHTS, + light_count_size as u64, total_size as wgpu::BufferAddress, ); } diff --git a/src/render/render_graph_2/shader.rs b/src/render/render_graph_2/shader.rs index 70e2ceb570..bc7e55bc68 100644 --- a/src/render/render_graph_2/shader.rs +++ b/src/render/render_graph_2/shader.rs @@ -9,9 +9,8 @@ use crate::{ }, }; use legion::{prelude::*, storage::Component}; -use std::collections::HashSet; -use std::marker::PhantomData; use zerocopy::AsBytes; +use std::marker::PhantomData; pub type ShaderUniformSelector = fn(Entity, &World) -> Option>; pub struct ShaderUniforms { @@ -383,9 +382,9 @@ where fn resize( &mut self, renderer: &mut dyn super::Renderer, - world: &mut World, - width: u32, - height: u32, + _world: &mut World, + _width: u32, + _height: u32, ) { } }