From 405d187a29a13446b78541ceac59a13dcb304b51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=C3=81NCZOS=20Vilmos=20Zsombor?= Date: Sat, 31 May 2025 23:05:05 +0200 Subject: [PATCH] refactor camera and mandelbulb to separate modules --- .../{material.wgsl => mandelbulb.wgsl} | 0 src/camera.rs | 12 +++ src/main.rs | 84 +++---------------- src/mandelbulb.rs | 79 +++++++++++++++++ 4 files changed, 103 insertions(+), 72 deletions(-) rename assets/shaders/{material.wgsl => mandelbulb.wgsl} (100%) create mode 100644 src/camera.rs create mode 100644 src/mandelbulb.rs diff --git a/assets/shaders/material.wgsl b/assets/shaders/mandelbulb.wgsl similarity index 100% rename from assets/shaders/material.wgsl rename to assets/shaders/mandelbulb.wgsl diff --git a/src/camera.rs b/src/camera.rs new file mode 100644 index 0000000..55c6655 --- /dev/null +++ b/src/camera.rs @@ -0,0 +1,12 @@ +use bevy::prelude::*; + +pub fn plugin(app: &mut App) { + app.add_systems(Startup, setup); +} + +fn setup(mut commands: Commands) { + commands.spawn(( + Camera3d::default(), + Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y), + )); +} diff --git a/src/main.rs b/src/main.rs index 4f08275..e3a47ef 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,32 +1,27 @@ -use bevy::{ - color::palettes::css::RED, - pbr::{ExtendedMaterial, MaterialExtension}, - prelude::*, - render::{render_resource::*, storage::ShaderStorageBuffer}, -}; +use bevy::{color::palettes::css::RED, prelude::*, render::storage::ShaderStorageBuffer}; +use mandelbulb::{MandelbulbExtension, MandelbulbMaterial, MandelbulbStorage}; -const SHADER_ASSET_PATH: &str = "shaders/material.wgsl"; - -type VoluMaterial = ExtendedMaterial; +mod camera; +mod mandelbulb; fn main() { App::new() .add_plugins(DefaultPlugins) - .add_plugins(MaterialPlugin::::default()) + .add_plugins((camera::plugin, mandelbulb::plugin)) .add_systems(Startup, setup) - .add_systems(Update, (rotate_things, update_volu_material)) + .add_systems(Update, (rotate_things,)) .run(); } fn setup( mut commands: Commands, mut meshes: ResMut>, - mut materials: ResMut>, + mut materials: ResMut>, mut buffers: ResMut>, ) { let transform = Transform::from_xyz(0.0, 0.0, 0.0); - let storage = buffers.add(ShaderStorageBuffer::from(VoluStorage { + let storage = buffers.add(ShaderStorageBuffer::from(MandelbulbStorage { mesh_translation: transform.translation, sphere_radius: 1.0, color: Vec4::default(), @@ -37,14 +32,14 @@ fn setup( commands.spawn(( Mesh3d(meshes.add(Cuboid::new(2.0, 2.0, 2.0))), - MeshMaterial3d(materials.add(ExtendedMaterial { - base: StandardMaterial { + MeshMaterial3d(materials.add(MandelbulbExtension::create_material( + StandardMaterial { base_color: RED.into(), alpha_mode: AlphaMode::Blend, ..default() }, - extension: VoluExtension { storage }, - })), + storage, + ))), transform, Rotate, )); @@ -54,11 +49,6 @@ fn setup( Transform::from_xyz(1.0, 1.0, 1.0).looking_at(Vec3::ZERO, Vec3::Y), Rotate, )); - - commands.spawn(( - Camera3d::default(), - Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y), - )); } #[derive(Component)] @@ -69,53 +59,3 @@ fn rotate_things(mut q: Query<&mut Transform, With>, time: Res