From a42e07f482afaab063bcc614a7391774d4689d00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kurt=20K=C3=BChnert?= Date: Thu, 7 Oct 2021 19:26:05 +0200 Subject: [PATCH 1/2] renamed the texture module to image moved the texture cache renamed many texture variables to image --- Cargo.toml | 4 +- examples/2d/pipelined_image_atlas.rs | 98 ++++++++ examples/2d/pipelined_texture_atlas.rs | 94 ------- examples/README.md | 2 +- examples/shader/custom_shader_pipelined.rs | 2 +- examples/tools/bevymark_pipelined.rs | 22 +- pipelined/bevy_core_pipeline/src/lib.rs | 2 +- pipelined/bevy_gltf2/src/loader.rs | 4 +- pipelined/bevy_pbr2/src/material.rs | 2 +- pipelined/bevy_pbr2/src/render/light.rs | 1 - pipelined/bevy_pbr2/src/render/mod.rs | 2 +- .../hdr_image_loader.rs} | 10 +- .../src/{texture => image}/image.rs | 21 +- .../image_conversion.rs} | 9 +- .../image_loader.rs} | 15 +- .../src/{texture => image}/mod.rs | 31 +-- pipelined/bevy_render2/src/lib.rs | 8 +- .../bevy_render2/src/render_resource/mod.rs | 2 + .../texture_cache.rs | 13 + pipelined/bevy_render2/src/view/window.rs | 2 +- pipelined/bevy_sprite2/src/bundle.rs | 32 ++- ...lder.rs => dynamic_image_atlas_builder.rs} | 67 +++-- pipelined/bevy_sprite2/src/image_atlas.rs | 127 ++++++++++ .../bevy_sprite2/src/image_atlas_builder.rs | 227 +++++++++++++++++ pipelined/bevy_sprite2/src/lib.rs | 15 +- pipelined/bevy_sprite2/src/rect.rs | 2 +- pipelined/bevy_sprite2/src/render/mod.rs | 61 ++--- pipelined/bevy_sprite2/src/sprite.rs | 48 +++- pipelined/bevy_sprite2/src/texture_atlas.rs | 145 ----------- .../bevy_sprite2/src/texture_atlas_builder.rs | 236 ------------------ 30 files changed, 655 insertions(+), 649 deletions(-) create mode 100644 examples/2d/pipelined_image_atlas.rs delete mode 100644 examples/2d/pipelined_texture_atlas.rs rename pipelined/bevy_render2/src/{texture/hdr_texture_loader.rs => image/hdr_image_loader.rs} (87%) rename pipelined/bevy_render2/src/{texture => image}/image.rs (95%) rename pipelined/bevy_render2/src/{texture/image_texture_conversion.rs => image/image_conversion.rs} (95%) rename pipelined/bevy_render2/src/{texture/image_texture_loader.rs => image/image_loader.rs} (86%) rename pipelined/bevy_render2/src/{texture => image}/mod.rs (59%) rename pipelined/bevy_render2/src/{texture => render_resource}/texture_cache.rs (87%) rename pipelined/bevy_sprite2/src/{dynamic_texture_atlas_builder.rs => dynamic_image_atlas_builder.rs} (51%) create mode 100644 pipelined/bevy_sprite2/src/image_atlas.rs create mode 100644 pipelined/bevy_sprite2/src/image_atlas_builder.rs delete mode 100644 pipelined/bevy_sprite2/src/texture_atlas.rs delete mode 100644 pipelined/bevy_sprite2/src/texture_atlas_builder.rs diff --git a/Cargo.toml b/Cargo.toml index 6bb9d5c9407e6..b8150342bcc10 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -148,8 +148,8 @@ name = "texture_atlas" path = "examples/2d/texture_atlas.rs" [[example]] -name = "pipelined_texture_atlas" -path = "examples/2d/pipelined_texture_atlas.rs" +name = "pipelined_image_atlas" +path = "examples/2d/pipelined_image_atlas.rs" # 3D Rendering [[example]] diff --git a/examples/2d/pipelined_image_atlas.rs b/examples/2d/pipelined_image_atlas.rs new file mode 100644 index 0000000000000..ec658c699c4be --- /dev/null +++ b/examples/2d/pipelined_image_atlas.rs @@ -0,0 +1,98 @@ +use bevy::{ + asset::LoadState, + math::Vec3, + prelude::{ + App, AssetServer, Assets, Commands, HandleUntyped, Res, ResMut, State, SystemSet, Transform, + }, + render2::{camera::OrthographicCameraBundle, image::Image}, + sprite2::{ + AtlasSprite, ImageAtlas, ImageAtlasBuilder, PipelinedAtlasSpriteBundle, + PipelinedSpriteBundle, + }, + PipelinedDefaultPlugins, +}; + +/// In this example we generate a new [`ImageAtlas`] (sprite sheet) from a folder containing +/// individual images. +fn main() { + App::new() + .init_resource::() + .add_plugins(PipelinedDefaultPlugins) + .add_state(AppState::Setup) + .add_system_set(SystemSet::on_enter(AppState::Setup).with_system(load_images)) + .add_system_set(SystemSet::on_update(AppState::Setup).with_system(check_images)) + .add_system_set(SystemSet::on_enter(AppState::Finished).with_system(setup)) + .run(); +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +enum AppState { + Setup, + Finished, +} + +#[derive(Default)] +struct RpgImageHandles { + handles: Vec, +} + +fn load_images(mut rpg_sprite_handles: ResMut, asset_server: Res) { + rpg_sprite_handles.handles = asset_server.load_folder("textures/rpg").unwrap(); +} + +fn check_images( + mut state: ResMut>, + rpg_image_handles: ResMut, + asset_server: Res, +) { + if let LoadState::Loaded = + asset_server.get_group_load_state(rpg_image_handles.handles.iter().map(|handle| handle.id)) + { + state.set(AppState::Finished).unwrap(); + } +} + +fn setup( + mut commands: Commands, + rpg_image_handles: Res, + asset_server: Res, + mut image_atlases: ResMut>, + mut images: ResMut>, +) { + let mut atlas_builder = ImageAtlasBuilder::default(); + for handle in rpg_image_handles.handles.iter() { + let image = images.get(handle).unwrap(); + atlas_builder.add_image(handle.clone_weak().typed::(), image); + } + + let image_atlas = atlas_builder.finish(&mut images).unwrap(); + let image_atlas_source = image_atlas.source_image.clone(); + let vendor_handle = asset_server.get_handle("textures/rpg/chars/vendor/generic-rpg-vendor.png"); + let vendor_index = image_atlas.get_region_index(&vendor_handle).unwrap(); + let atlas_handle = image_atlases.add(image_atlas); + + // set up a scene to display our texture atlas + commands.spawn_bundle(OrthographicCameraBundle::new_2d()); + // draw a sprite from the atlas + commands.spawn_bundle(PipelinedAtlasSpriteBundle { + transform: Transform { + translation: Vec3::new(150.0, 0.0, 0.0), + scale: Vec3::splat(4.0), + ..Default::default() + }, + sprite: AtlasSprite { + region_index: vendor_index as u32, + color: Default::default(), + flip_x: true, + flip_y: true, + }, + image_atlas: atlas_handle, + ..Default::default() + }); + // draw the atlas itself + commands.spawn_bundle(PipelinedSpriteBundle { + image: image_atlas_source, + transform: Transform::from_xyz(-300.0, 0.0, 0.0), + ..Default::default() + }); +} diff --git a/examples/2d/pipelined_texture_atlas.rs b/examples/2d/pipelined_texture_atlas.rs deleted file mode 100644 index a11bad5e7e3ee..0000000000000 --- a/examples/2d/pipelined_texture_atlas.rs +++ /dev/null @@ -1,94 +0,0 @@ -use bevy::{ - asset::LoadState, - math::Vec3, - prelude::{ - App, AssetServer, Assets, Commands, HandleUntyped, IntoSystem, Res, ResMut, State, - SystemSet, Transform, - }, - render2::{camera::OrthographicCameraBundle, texture::Image}, - sprite2::{ - PipelinedSpriteBundle, PipelinedSpriteSheetBundle, TextureAtlas, TextureAtlasBuilder, - TextureAtlasSprite, - }, - PipelinedDefaultPlugins, -}; - -/// In this example we generate a new texture atlas (sprite sheet) from a folder containing -/// individual sprites -fn main() { - App::new() - .init_resource::() - .add_plugins(PipelinedDefaultPlugins) - .add_state(AppState::Setup) - .add_system_set(SystemSet::on_enter(AppState::Setup).with_system(load_textures.system())) - .add_system_set(SystemSet::on_update(AppState::Setup).with_system(check_textures.system())) - .add_system_set(SystemSet::on_enter(AppState::Finished).with_system(setup.system())) - .run(); -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -enum AppState { - Setup, - Finished, -} - -#[derive(Default)] -struct RpgSpriteHandles { - handles: Vec, -} - -fn load_textures(mut rpg_sprite_handles: ResMut, asset_server: Res) { - rpg_sprite_handles.handles = asset_server.load_folder("textures/rpg").unwrap(); -} - -fn check_textures( - mut state: ResMut>, - rpg_sprite_handles: ResMut, - asset_server: Res, -) { - if let LoadState::Loaded = - asset_server.get_group_load_state(rpg_sprite_handles.handles.iter().map(|handle| handle.id)) - { - state.set(AppState::Finished).unwrap(); - } -} - -fn setup( - mut commands: Commands, - rpg_sprite_handles: Res, - asset_server: Res, - mut texture_atlases: ResMut>, - mut textures: ResMut>, -) { - let mut texture_atlas_builder = TextureAtlasBuilder::default(); - for handle in rpg_sprite_handles.handles.iter() { - let texture = textures.get(handle).unwrap(); - texture_atlas_builder.add_texture(handle.clone_weak().typed::(), texture); - } - - let texture_atlas = texture_atlas_builder.finish(&mut textures).unwrap(); - let texture_atlas_texture = texture_atlas.texture.clone(); - let vendor_handle = asset_server.get_handle("textures/rpg/chars/vendor/generic-rpg-vendor.png"); - let vendor_index = texture_atlas.get_texture_index(&vendor_handle).unwrap(); - let atlas_handle = texture_atlases.add(texture_atlas); - - // set up a scene to display our texture atlas - commands.spawn_bundle(OrthographicCameraBundle::new_2d()); - // draw a sprite from the atlas - commands.spawn_bundle(PipelinedSpriteSheetBundle { - transform: Transform { - translation: Vec3::new(150.0, 0.0, 0.0), - scale: Vec3::splat(4.0), - ..Default::default() - }, - sprite: TextureAtlasSprite::new(vendor_index as u32), - texture_atlas: atlas_handle, - ..Default::default() - }); - // draw the atlas itself - commands.spawn_bundle(PipelinedSpriteBundle { - texture: texture_atlas_texture, - transform: Transform::from_xyz(-300.0, 0.0, 0.0), - ..Default::default() - }); -} diff --git a/examples/README.md b/examples/README.md index fdaf892a3cdf5..c9cbdc479f17b 100644 --- a/examples/README.md +++ b/examples/README.md @@ -85,7 +85,7 @@ Example | File | Description `contributors` | [`2d/contributors.rs`](./2d/contributors.rs) | Displays each contributor as a bouncy bevy-ball! `many_sprites` | [`2d/many_sprites.rs`](./2d/many_sprites.rs) | Displays many sprites in a grid arragement! Used for performance testing. `mesh` | [`2d/mesh.rs`](./2d/mesh.rs) | Renders a custom mesh -`pipelined_texture_atlas` | [`2d/pipelined_texture_atlas.rs`](./2d/pipelined_texture_atlas.rs) | Generates a texture atlas (sprite sheet) from individual sprites +`pipelined_image_atlas` | [`2d/pipelined_image_atlas.rs`](./2d/pipelined_image_atlas) | Generates a image atlas (sprite sheet) from individual images. `sprite` | [`2d/sprite.rs`](./2d/sprite.rs) | Renders a sprite `sprite_sheet` | [`2d/sprite_sheet.rs`](./2d/sprite_sheet.rs) | Renders an animated sprite `text2d` | [`2d/text2d.rs`](./2d/text2d.rs) | Generates text in 2d diff --git a/examples/shader/custom_shader_pipelined.rs b/examples/shader/custom_shader_pipelined.rs index 9fb9d118e4034..eecdd2c43cb7d 100644 --- a/examples/shader/custom_shader_pipelined.rs +++ b/examples/shader/custom_shader_pipelined.rs @@ -21,7 +21,7 @@ use bevy::{ render_resource::*, renderer::RenderDevice, shader::Shader, - texture::BevyDefault, + image::BevyDefault, view::ExtractedView, RenderApp, RenderStage, }, diff --git a/examples/tools/bevymark_pipelined.rs b/examples/tools/bevymark_pipelined.rs index f42969bc174d5..b026f2fb0ecca 100644 --- a/examples/tools/bevymark_pipelined.rs +++ b/examples/tools/bevymark_pipelined.rs @@ -5,7 +5,7 @@ use bevy::{ input::Input, math::Vec3, prelude::{App, AssetServer, Handle, MouseButton, Transform}, - render2::{camera::OrthographicCameraBundle, color::Color, texture::Image}, + render2::{camera::OrthographicCameraBundle, color::Color, image::Image}, sprite2::PipelinedSpriteBundle, window::WindowDescriptor, PipelinedDefaultPlugins, @@ -62,7 +62,7 @@ fn main() { .run(); } -struct BirdTexture(Handle); +struct BirdImage(Handle); fn setup( mut commands: Commands, @@ -70,7 +70,7 @@ fn setup( mut counter: ResMut, asset_server: Res, ) { - let texture = asset_server.load("branding/icon.png"); + let image = asset_server.load("branding/icon.png"); if let Some(initial_count) = std::env::args() .nth(1) .and_then(|arg| arg.parse::().ok()) @@ -80,7 +80,7 @@ fn setup( &window, &mut counter, initial_count, - texture.clone_weak(), + image.clone_weak(), ); } commands.spawn_bundle(OrthographicCameraBundle::new_2d()); @@ -135,7 +135,7 @@ fn setup( // ..Default::default() // }); - commands.insert_resource(BirdTexture(texture)); + commands.insert_resource(BirdImage(image)); } #[allow(clippy::too_many_arguments)] @@ -145,7 +145,7 @@ fn mouse_handler( time: Res