mirror of
https://github.com/bevyengine/bevy
synced 2024-11-10 07:04:33 +00:00
89217171b4
OK, here's my attempt at sprite flipping. There are a couple of points that I need review/help on, but I think the UX is about ideal: ```rust .spawn(SpriteBundle { material: materials.add(texture_handle.into()), sprite: Sprite { // Flip the sprite along the x axis flip: SpriteFlip { x: true, y: false }, ..Default::default() }, ..Default::default() }); ``` Now for the issues. The big issue is that for some reason, when flipping the UVs on the sprite, there is a light "bleeding" or whatever you call it where the UV tries to sample past the texture boundry and ends up clipping. This is only noticed when resizing the window, though. You can see a screenshot below. ![image](https://user-images.githubusercontent.com/25393315/107098172-397aaa00-67d4-11eb-8e02-c90c820cd70e.png) I am quite baffled why the texture sampling is overrunning like it is and could use some guidance if anybody knows what might be wrong. The other issue, which I just worked around, is that I had to remove the `#[render_resources(from_self)]` annotation from the Spritesheet because the `SpriteFlip` render resource wasn't being picked up properly in the shader when using it. I'm not sure what the cause of that was, but by removing the annotation and re-organizing the shader inputs accordingly the problem was fixed. I'm not sure if this is the most efficient way to do this or if there is a better way, but I wanted to try it out if only for the learning experience. Let me know what you think!
441 lines
8.9 KiB
TOML
441 lines
8.9 KiB
TOML
[package]
|
|
name = "bevy"
|
|
version = "0.4.0"
|
|
edition = "2018"
|
|
authors = [
|
|
"Bevy Contributors <bevyengine@gmail.com>",
|
|
"Carter Anderson <mcanders1@gmail.com>",
|
|
]
|
|
categories = ["game-engines", "graphics", "gui", "rendering"]
|
|
description = "A refreshingly simple data-driven game engine and app framework"
|
|
exclude = ["assets/**/*", "tools/**/*", ".github/**/*", "crates/**/*"]
|
|
homepage = "https://bevyengine.org"
|
|
keywords = ["game", "engine", "gamedev", "graphics", "bevy"]
|
|
license = "MIT"
|
|
readme = "README.md"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
|
|
[workspace]
|
|
exclude = ["benches"]
|
|
members = ["crates/*", "examples/ios", "tools/ci"]
|
|
|
|
[features]
|
|
default = [
|
|
"bevy_audio",
|
|
"bevy_dynamic_plugin",
|
|
"bevy_gilrs",
|
|
"bevy_gltf",
|
|
"bevy_wgpu",
|
|
"bevy_winit",
|
|
"render",
|
|
"png",
|
|
"hdr",
|
|
"mp3",
|
|
"x11",
|
|
]
|
|
|
|
# Force dynamic linking, which improves iterative compile times
|
|
dynamic = ["bevy_dylib"]
|
|
|
|
# Rendering support
|
|
render = ["bevy_internal/bevy_pbr", "bevy_internal/bevy_render", "bevy_internal/bevy_sprite", "bevy_internal/bevy_text", "bevy_internal/bevy_ui"]
|
|
|
|
# Optional bevy crates
|
|
bevy_audio = ["bevy_internal/bevy_audio"]
|
|
bevy_dynamic_plugin = ["bevy_internal/bevy_dynamic_plugin"]
|
|
bevy_gilrs = ["bevy_internal/bevy_gilrs"]
|
|
bevy_gltf = ["bevy_internal/bevy_gltf"]
|
|
bevy_wgpu = ["bevy_internal/bevy_wgpu"]
|
|
bevy_winit = ["bevy_internal/bevy_winit"]
|
|
|
|
trace_chrome = ["bevy_internal/trace_chrome"]
|
|
trace = ["bevy_internal/trace"]
|
|
wgpu_trace = ["bevy_internal/wgpu_trace"]
|
|
|
|
# Image format support for texture loading (PNG and HDR are enabled by default)
|
|
hdr = ["bevy_internal/hdr"]
|
|
png = ["bevy_internal/png"]
|
|
dds = ["bevy_internal/dds"]
|
|
tga = ["bevy_internal/tga"]
|
|
jpeg = ["bevy_internal/jpeg"]
|
|
bmp = ["bevy_internal/bmp"]
|
|
|
|
# Audio format support (MP3 is enabled by default)
|
|
flac = ["bevy_internal/flac"]
|
|
mp3 = ["bevy_internal/mp3"]
|
|
vorbis = ["bevy_internal/vorbis"]
|
|
wav = ["bevy_internal/wav"]
|
|
|
|
serialize = ["bevy_internal/serialize"]
|
|
|
|
# Display server protocol support (X11 is enabled by default)
|
|
wayland = ["bevy_internal/wayland"]
|
|
x11 = ["bevy_internal/x11"]
|
|
|
|
# enable rendering of font glyphs using subpixel accuracy
|
|
subpixel_glyph_atlas = ["bevy_internal/subpixel_glyph_atlas"]
|
|
|
|
[dependencies]
|
|
bevy_dylib = {path = "crates/bevy_dylib", version = "0.4.0", default-features = false, optional = true}
|
|
bevy_internal = {path = "crates/bevy_internal", version = "0.4.0", default-features = false}
|
|
|
|
[dev-dependencies]
|
|
anyhow = "1.0"
|
|
rand = "0.8.0"
|
|
ron = "0.6.2"
|
|
serde = {version = "1", features = ["derive"]}
|
|
|
|
[[example]]
|
|
name = "hello_world"
|
|
path = "examples/hello_world.rs"
|
|
|
|
# 2D Rendering
|
|
[[example]]
|
|
name = "contributors"
|
|
path = "examples/2d/contributors.rs"
|
|
|
|
[[example]]
|
|
name = "sprite"
|
|
path = "examples/2d/sprite.rs"
|
|
|
|
[[example]]
|
|
name = "sprite_flipping"
|
|
path = "examples/2d/sprite_flipping.rs"
|
|
|
|
[[example]]
|
|
name = "sprite_sheet"
|
|
path = "examples/2d/sprite_sheet.rs"
|
|
|
|
[[example]]
|
|
name = "text2d"
|
|
path = "examples/2d/text2d.rs"
|
|
|
|
[[example]]
|
|
name = "texture_atlas"
|
|
path = "examples/2d/texture_atlas.rs"
|
|
|
|
# 3D Rendering
|
|
[[example]]
|
|
name = "3d_scene"
|
|
path = "examples/3d/3d_scene.rs"
|
|
|
|
[[example]]
|
|
name = "load_gltf"
|
|
path = "examples/3d/load_gltf.rs"
|
|
|
|
[[example]]
|
|
name = "msaa"
|
|
path = "examples/3d/msaa.rs"
|
|
|
|
[[example]]
|
|
name = "orthographic"
|
|
path = "examples/3d/orthographic.rs"
|
|
|
|
[[example]]
|
|
name = "parenting"
|
|
path = "examples/3d/parenting.rs"
|
|
|
|
[[example]]
|
|
name = "spawner"
|
|
path = "examples/3d/spawner.rs"
|
|
|
|
[[example]]
|
|
name = "texture"
|
|
path = "examples/3d/texture.rs"
|
|
|
|
[[example]]
|
|
name = "update_gltf_scene"
|
|
path = "examples/3d/update_gltf_scene.rs"
|
|
|
|
[[example]]
|
|
name = "z_sort_debug"
|
|
path = "examples/3d/z_sort_debug.rs"
|
|
|
|
# Application
|
|
[[example]]
|
|
name = "custom_loop"
|
|
path = "examples/app/custom_loop.rs"
|
|
|
|
[[example]]
|
|
name = "drag_and_drop"
|
|
path = "examples/app/drag_and_drop.rs"
|
|
|
|
[[example]]
|
|
name = "empty"
|
|
path = "examples/app/empty.rs"
|
|
|
|
[[example]]
|
|
name = "empty_defaults"
|
|
path = "examples/app/empty_defaults.rs"
|
|
|
|
[[example]]
|
|
name = "headless"
|
|
path = "examples/app/headless.rs"
|
|
|
|
[[example]]
|
|
name = "logs"
|
|
path = "examples/app/logs.rs"
|
|
|
|
[[example]]
|
|
name = "plugin"
|
|
path = "examples/app/plugin.rs"
|
|
|
|
[[example]]
|
|
name = "plugin_group"
|
|
path = "examples/app/plugin_group.rs"
|
|
|
|
[[example]]
|
|
name = "return_after_run"
|
|
path = "examples/app/return_after_run.rs"
|
|
|
|
[[example]]
|
|
name = "thread_pool_resources"
|
|
path = "examples/app/thread_pool_resources.rs"
|
|
|
|
# Assets
|
|
[[example]]
|
|
name = "asset_loading"
|
|
path = "examples/asset/asset_loading.rs"
|
|
|
|
[[example]]
|
|
name = "custom_asset"
|
|
path = "examples/asset/custom_asset.rs"
|
|
|
|
[[example]]
|
|
name = "custom_asset_io"
|
|
path = "examples/asset/custom_asset_io.rs"
|
|
|
|
[[example]]
|
|
name = "hot_asset_reloading"
|
|
path = "examples/asset/hot_asset_reloading.rs"
|
|
|
|
# Audio
|
|
[[example]]
|
|
name = "audio"
|
|
path = "examples/audio/audio.rs"
|
|
|
|
# Diagnostics
|
|
[[example]]
|
|
name = "log_diagnostics"
|
|
path = "examples/diagnostics/log_diagnostics.rs"
|
|
|
|
[[example]]
|
|
name = "custom_diagnostic"
|
|
path = "examples/diagnostics/custom_diagnostic.rs"
|
|
|
|
# ECS (Entity Component System)
|
|
[[example]]
|
|
name = "ecs_guide"
|
|
path = "examples/ecs/ecs_guide.rs"
|
|
|
|
[[example]]
|
|
name = "change_detection"
|
|
path = "examples/ecs/change_detection.rs"
|
|
|
|
[[example]]
|
|
name = "event"
|
|
path = "examples/ecs/event.rs"
|
|
|
|
[[example]]
|
|
name = "fixed_timestep"
|
|
path = "examples/ecs/fixed_timestep.rs"
|
|
|
|
[[example]]
|
|
name = "hierarchy"
|
|
path = "examples/ecs/hierarchy.rs"
|
|
|
|
[[example]]
|
|
name = "parallel_query"
|
|
path = "examples/ecs/parallel_query.rs"
|
|
|
|
[[example]]
|
|
name = "removal_detection"
|
|
path = "examples/ecs/removal_detection.rs"
|
|
|
|
[[example]]
|
|
name = "startup_system"
|
|
path = "examples/ecs/startup_system.rs"
|
|
|
|
[[example]]
|
|
name = "state"
|
|
path = "examples/ecs/state.rs"
|
|
|
|
[[example]]
|
|
name = "system_chaining"
|
|
path = "examples/ecs/system_chaining.rs"
|
|
|
|
[[example]]
|
|
name = "system_param"
|
|
path = "examples/ecs/system_param.rs"
|
|
|
|
[[example]]
|
|
name = "timers"
|
|
path = "examples/ecs/timers.rs"
|
|
|
|
# Games
|
|
[[example]]
|
|
name = "alien_cake_addict"
|
|
path = "examples/game/alien_cake_addict.rs"
|
|
|
|
[[example]]
|
|
name = "breakout"
|
|
path = "examples/game/breakout.rs"
|
|
|
|
# Input
|
|
[[example]]
|
|
name = "char_input_events"
|
|
path = "examples/input/char_input_events.rs"
|
|
|
|
[[example]]
|
|
name = "gamepad_input"
|
|
path = "examples/input/gamepad_input.rs"
|
|
|
|
[[example]]
|
|
name = "gamepad_input_events"
|
|
path = "examples/input/gamepad_input_events.rs"
|
|
|
|
[[example]]
|
|
name = "keyboard_input"
|
|
path = "examples/input/keyboard_input.rs"
|
|
|
|
[[example]]
|
|
name = "keyboard_input_events"
|
|
path = "examples/input/keyboard_input_events.rs"
|
|
|
|
[[example]]
|
|
name = "mouse_input"
|
|
path = "examples/input/mouse_input.rs"
|
|
|
|
[[example]]
|
|
name = "mouse_input_events"
|
|
path = "examples/input/mouse_input_events.rs"
|
|
|
|
[[example]]
|
|
name = "touch_input"
|
|
path = "examples/input/touch_input.rs"
|
|
|
|
[[example]]
|
|
name = "touch_input_events"
|
|
path = "examples/input/touch_input_events.rs"
|
|
|
|
# Reflection
|
|
[[example]]
|
|
name = "reflection"
|
|
path = "examples/reflection/reflection.rs"
|
|
|
|
[[example]]
|
|
name = "generic_reflection"
|
|
path = "examples/reflection/generic_reflection.rs"
|
|
|
|
[[example]]
|
|
name = "reflection_types"
|
|
path = "examples/reflection/reflection_types.rs"
|
|
|
|
[[example]]
|
|
name = "trait_reflection"
|
|
path = "examples/reflection/trait_reflection.rs"
|
|
|
|
# Scene
|
|
[[example]]
|
|
name = "scene"
|
|
path = "examples/scene/scene.rs"
|
|
|
|
# Shaders
|
|
[[example]]
|
|
name = "array_texture"
|
|
path = "examples/shader/array_texture.rs"
|
|
|
|
[[example]]
|
|
name = "hot_shader_reloading"
|
|
path = "examples/shader/hot_shader_reloading.rs"
|
|
|
|
[[example]]
|
|
name = "mesh_custom_attribute"
|
|
path = "examples/shader/mesh_custom_attribute.rs"
|
|
|
|
[[example]]
|
|
name = "shader_custom_material"
|
|
path = "examples/shader/shader_custom_material.rs"
|
|
|
|
[[example]]
|
|
name = "shader_defs"
|
|
path = "examples/shader/shader_defs.rs"
|
|
|
|
# Tools
|
|
[[example]]
|
|
name = "bevymark"
|
|
path = "examples/tools/bevymark.rs"
|
|
|
|
# UI (User Interface)
|
|
[[example]]
|
|
name = "button"
|
|
path = "examples/ui/button.rs"
|
|
|
|
[[example]]
|
|
name = "font_atlas_debug"
|
|
path = "examples/ui/font_atlas_debug.rs"
|
|
|
|
[[example]]
|
|
name = "text"
|
|
path = "examples/ui/text.rs"
|
|
|
|
[[example]]
|
|
name = "text_debug"
|
|
path = "examples/ui/text_debug.rs"
|
|
|
|
[[example]]
|
|
name = "ui"
|
|
path = "examples/ui/ui.rs"
|
|
|
|
# Window
|
|
[[example]]
|
|
name = "clear_color"
|
|
path = "examples/window/clear_color.rs"
|
|
|
|
[[example]]
|
|
name = "multiple_windows"
|
|
path = "examples/window/multiple_windows.rs"
|
|
|
|
[[example]]
|
|
name = "scale_factor_override"
|
|
path = "examples/window/scale_factor_override.rs"
|
|
|
|
[[example]]
|
|
name = "window_settings"
|
|
path = "examples/window/window_settings.rs"
|
|
|
|
# WASM
|
|
[[example]]
|
|
name = "hello_wasm"
|
|
path = "examples/wasm/hello_wasm.rs"
|
|
required-features = []
|
|
|
|
[[example]]
|
|
name = "assets_wasm"
|
|
path = "examples/wasm/assets_wasm.rs"
|
|
required-features = ["bevy_winit"]
|
|
|
|
[[example]]
|
|
name = "headless_wasm"
|
|
path = "examples/wasm/headless_wasm.rs"
|
|
required-features = []
|
|
|
|
[[example]]
|
|
name = "winit_wasm"
|
|
path = "examples/wasm/winit_wasm.rs"
|
|
required-features = ["bevy_winit"]
|
|
|
|
# Android
|
|
[[example]]
|
|
crate-type = ["cdylib"]
|
|
name = "android"
|
|
path = "examples/android/android.rs"
|
|
|
|
[package.metadata.android]
|
|
apk_label = "Bevy Example"
|
|
assets = "assets"
|
|
res = "assets/android-res"
|
|
icon = "@mipmap/ic_launcher"
|
|
build_targets = ["aarch64-linux-android", "armv7-linux-androideabi"]
|
|
min_sdk_version = 16
|
|
target_sdk_version = 29
|