From 90c9447f72ae6f898d0f54df3a8a96d4d3f0fcfc Mon Sep 17 00:00:00 2001 From: Nova Date: Thu, 16 Jan 2025 13:40:04 -0800 Subject: [PATCH] refactor: clean up code --- src/main.rs | 24 ++- src/nodes/audio.rs | 2 +- .../drawable/assets}/FiraMono-subset.ttf | Bin .../shaders/shader_unlit_gamma.hlsl.sks | Bin 14561 -> 0 bytes .../shaders/shader_unlit_simula.hlsl.sks | Bin 30232 -> 0 bytes src/nodes/drawable/mod.rs | 4 - src/nodes/drawable/model.rs | 77 +++++----- src/nodes/drawable/shader_manipulation.rs | 137 ------------------ src/nodes/drawable/shaders.rs | 5 - .../shaders_src/shader_unlit_gamma.hlsl | 39 ----- .../shaders_src/shader_unlit_simula.hlsl | 119 --------------- src/nodes/drawable/text.rs | 10 +- src/objects/mod.rs | 6 +- src/oxr_render_plugin.rs | 5 +- 14 files changed, 56 insertions(+), 372 deletions(-) rename src/{ => nodes/drawable/assets}/FiraMono-subset.ttf (100%) delete mode 100644 src/nodes/drawable/assets/shaders/shader_unlit_gamma.hlsl.sks delete mode 100644 src/nodes/drawable/assets/shaders/shader_unlit_simula.hlsl.sks delete mode 100644 src/nodes/drawable/shader_manipulation.rs delete mode 100644 src/nodes/drawable/shaders.rs delete mode 100644 src/nodes/drawable/shaders_src/shader_unlit_gamma.hlsl delete mode 100644 src/nodes/drawable/shaders_src/shader_unlit_simula.hlsl diff --git a/src/main.rs b/src/main.rs index 2a2feb5..21eb8e0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,11 +10,11 @@ mod wayland; use crate::core::destroy_queue; // use crate::nodes::items::camera; -use crate::nodes::{audio, drawable, input}; +use crate::nodes::input; use bevy::a11y::AccessibilityPlugin; use bevy::app::{ - App, AppExit, PluginGroup, PluginsState, PostUpdate, ScheduleRunnerPlugin, Startup, + App, AppExit, PluginGroup, PostUpdate, ScheduleRunnerPlugin, Startup, TerminalCtrlCHandlerPlugin, Update, }; use bevy::asset::{load_internal_binary_asset, AssetApp as _, AssetPlugin, AssetServer, Handle}; @@ -27,9 +27,8 @@ use bevy::image::Image; use bevy::input::InputPlugin; use bevy::pbr::PbrPlugin; use bevy::prelude::{ - on_event, resource_added, Camera3d, ClearColor, Commands, Entity, EventReader, HierarchyPlugin, - ImagePlugin, IntoSystemConfigs, Local, Query, Res, ResMut, Resource, Transform, - TransformPlugin, With, World, + on_event, Camera3d, ClearColor, Commands, Entity, EventReader, HierarchyPlugin, ImagePlugin, + IntoSystemConfigs, Local, Query, Res, ResMut, Resource, TransformPlugin, With, World, }; use bevy::render::pipelined_rendering::PipelinedRenderingPlugin; use bevy::render::RenderPlugin; @@ -37,8 +36,8 @@ use bevy::scene::ScenePlugin; use bevy::text::{Font, FontLoader}; use bevy::time::Time; use bevy::window::WindowPlugin; -use bevy::winit::{EventLoopProxyWrapper, WakeUp, WinitPlugin}; -use bevy::{DefaultPlugins, MinimalPlugins}; +use bevy::winit::{WakeUp, WinitPlugin}; +use bevy::MinimalPlugins; use bevy_mod_meshtext::MeshTextPlugin; use bevy_mod_openxr::action_set_syncing::{OxrActionSyncingPlugin, OxrSyncActionSet}; use bevy_mod_openxr::exts::OxrExtensions; @@ -55,7 +54,6 @@ use bevy_mod_xr::spaces::XrPrimaryReferenceSpace; use bevy_plugin::{DbusConnection, DummyPbrPlugin, InputUpdate, StardustBevyPlugin, StardustFirst}; use bevy_sk::skytext::SphericalHarmonicsPlugin; use clap::Parser; -use color_eyre::eyre::eyre; use core::client::Client; use core::task; use directories::ProjectDirs; @@ -77,7 +75,6 @@ use std::path::PathBuf; use std::sync::Arc; use tokio::net::UnixListener; use tokio::sync::Notify; -use tracing::level_filters::LevelFilter; use tracing::{debug_span, error, info, warn}; use tracing_subscriber::{fmt, prelude::*, EnvFilter}; use zbus::fdo::ObjectManager; @@ -293,6 +290,7 @@ fn bevy_loop( .add(CorePipelinePlugin) // very unsure what is needed here .add(PbrPlugin { + // hoping that there is very little overdraw in stardust prepass_enabled: false, add_default_deferred_lighting_plugin: false, use_gpu_instance_buffer_builder: false, @@ -366,7 +364,7 @@ fn bevy_loop( load_internal_binary_asset!( bevy_app, Handle::default(), - "FiraMono-subset.ttf", + "nodes/drawable/assets/FiraMono-subset.ttf", |bytes: &[u8], _path: String| { Font::try_from_bytes(bytes.to_vec()).unwrap() } ); #[derive(Resource)] @@ -452,7 +450,7 @@ fn bevy_loop( sk_ready_notifier.notify_waiters(); info!("Stardust ready!"); - let mut objects = ServerObjects::new(dbus_connection.clone()); + let objects = ServerObjects::new(dbus_connection.clone()); fn sync_sets(session: Res, mut events: EventReader) { let sets = events .read() @@ -490,7 +488,7 @@ fn bevy_loop( .run_system_cached(openxr_session_running) .unwrap_or(true) { - world.run_system_cached(sync_sets); + let _ = world.run_system_cached(sync_sets); } let thread = world .run_system_cached(should_run_frame_loop) @@ -525,7 +523,7 @@ fn bevy_loop( } #[cfg(feature = "wayland")] wayland.update(); - }; + } bevy_app.add_systems(StardustFirst, bevy_step); let out = bevy_app.run(); diff --git a/src/nodes/audio.rs b/src/nodes/audio.rs index 990b4c3..4983d2e 100644 --- a/src/nodes/audio.rs +++ b/src/nodes/audio.rs @@ -49,7 +49,7 @@ fn spawn_sounds(reader: Res, mut cmds: Commands, asset_server: }, )) .id(); - sound.entity.set(e); + let _ = sound.entity.set(e); } } diff --git a/src/FiraMono-subset.ttf b/src/nodes/drawable/assets/FiraMono-subset.ttf similarity index 100% rename from src/FiraMono-subset.ttf rename to src/nodes/drawable/assets/FiraMono-subset.ttf diff --git a/src/nodes/drawable/assets/shaders/shader_unlit_gamma.hlsl.sks b/src/nodes/drawable/assets/shaders/shader_unlit_gamma.hlsl.sks deleted file mode 100644 index a38499d3c80f0d46ef127e6f9f51ace119ef0cad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14561 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 diff --git a/src/nodes/drawable/assets/shaders/shader_unlit_simula.hlsl.sks b/src/nodes/drawable/assets/shaders/shader_unlit_simula.hlsl.sks deleted file mode 100644 index 707dfedca42ff6ee7e8088345a58d29bf54ce30b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30232 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 match parameter_name { - name => { - if let Some(field) = material.get_field_mut::(name) { - *field = *val; - } else { - warn!("unknown bool material parameter name: {name}"); - } + MaterialParameter::Bool(val) => { + let name = parameter_name; + if let Some(field) = material.get_field_mut::(name) { + *field = *val; + } else { + warn!("unknown bool material parameter name: {name}"); } - }, - MaterialParameter::Int(val) => match parameter_name { - name => { - if let Some(field) = material.get_field_mut::(name) { - *field = *val; - } else { - warn!("unknown i32 material parameter name: {name}"); - } + } + MaterialParameter::Int(val) => { + if let Some(field) = material.get_field_mut::(parameter_name) { + *field = *val; + } else { + warn!("unknown i32 material parameter name: {parameter_name}"); } - }, - MaterialParameter::UInt(val) => match parameter_name { - name => { - if let Some(field) = material.get_field_mut::(name) { - *field = *val; - } else { - warn!("unknown u32 material parameter name: {name}"); - } + } + MaterialParameter::UInt(val) => { + if let Some(field) = material.get_field_mut::(parameter_name) { + *field = *val; + } else { + warn!("unknown u32 material parameter name: {parameter_name}"); } - }, + } MaterialParameter::Float(val) => match parameter_name { "cutoff" => { // should this only set the value if AlphaMode is already AlphaMode::Mask? @@ -89,24 +84,20 @@ impl MaterialParameter { } } }, - MaterialParameter::Vec2(val) => match parameter_name { - name => { - if let Some(field) = material.get_field_mut::(name) { - *field = (*val).into(); - } else { - warn!("unknown vec2 material parameter name: {name}"); - } + MaterialParameter::Vec2(val) => { + if let Some(field) = material.get_field_mut::(parameter_name) { + *field = (*val).into(); + } else { + warn!("unknown vec2 material parameter name: {parameter_name}"); } - }, - MaterialParameter::Vec3(val) => match parameter_name { - name => { - if let Some(field) = material.get_field_mut::(name) { - *field = (*val).into(); - } else { - warn!("unknown vec3 material parameter name: {name}"); - } + } + MaterialParameter::Vec3(val) => { + if let Some(field) = material.get_field_mut::(parameter_name) { + *field = (*val).into(); + } else { + warn!("unknown vec3 material parameter name: {parameter_name}"); } - }, + } MaterialParameter::Color(val) => match parameter_name { "color" => { material.color = Srgba::new(val.c.r, val.c.g, val.c.b, val.a).into() @@ -176,7 +167,7 @@ pub struct StardustModelPlugin; impl Plugin for StardustModelPlugin { fn build(&self, app: &mut bevy::prelude::App) { let (tx, rx) = crossbeam_channel::unbounded(); - LOAD_MODEL_SENDER.set(tx); + let _ = LOAD_MODEL_SENDER.set(tx); app.insert_resource(LoadModelReader(rx)); app.add_systems(Update, create_model_parts_for_loaded_models); app.add_systems(PreUpdate, load_models); @@ -214,7 +205,7 @@ fn load_models(rx: Res, mut cmds: Commands, asset_server: Res Result { - let shader = gl.CreateShader(variant); - if shader == 0 { - return Err(GlesError::CreateShaderObject); - } - - gl.ShaderSource( - shader, - 1, - &src.as_ptr() as *const *const u8 as *const *const ffi::types::GLchar, - &(src.len() as i32) as *const _, - ); - gl.CompileShader(shader); - - let mut status = ffi::FALSE as i32; - gl.GetShaderiv(shader, ffi::COMPILE_STATUS, &mut status as *mut _); - if status == ffi::FALSE as i32 { - let mut max_len = 0; - gl.GetShaderiv(shader, ffi::INFO_LOG_LENGTH, &mut max_len as *mut _); - - let mut error = Vec::with_capacity(max_len as usize); - let mut len = 0; - gl.GetShaderInfoLog( - shader, - max_len as _, - &mut len as *mut _, - error.as_mut_ptr() as *mut _, - ); - error.set_len(len as usize); - - error!( - "[GL] {}", - std::str::from_utf8(&error).unwrap_or("") - ); - - gl.DeleteShader(shader); - return Err(GlesError::ShaderCompileError); - } - - Ok(shader) -} - -unsafe fn link_program( - gl: &ffi::Gles2, - vert: ffi::types::GLuint, - frag: ffi::types::GLuint, -) -> Result { - let program = gl.CreateProgram(); - gl.AttachShader(program, vert); - gl.AttachShader(program, frag); - gl.LinkProgram(program); - // gl.DetachShader(program, vert); - // gl.DetachShader(program, frag); - // gl.DeleteShader(vert); - // gl.DeleteShader(frag); - - let mut status = ffi::FALSE as i32; - gl.GetProgramiv(program, ffi::LINK_STATUS, &mut status as *mut _); - if status == ffi::FALSE as i32 { - let mut max_len = 0; - gl.GetProgramiv(program, ffi::INFO_LOG_LENGTH, &mut max_len as *mut _); - - let mut error = Vec::with_capacity(max_len as usize); - let mut len = 0; - gl.GetProgramInfoLog( - program, - max_len as _, - &mut len as *mut _, - error.as_mut_ptr() as *mut _, - ); - error.set_len(len as usize); - - error!( - "[GL] {}", - std::str::from_utf8(&error).unwrap_or("") - ); - - gl.DeleteProgram(program); - return Err(GlesError::ProgramLinkError); - } - - Ok(program) -} - -pub unsafe fn shader_inject( - c: &Gles2, - sk_shader: &mut Shader, - vert_str: &str, - frag_str: &str, -) -> Result<(), GlesError> { - let gl_vert = compile_shader(c, VERTEX_SHADER, vert_str)?; - let gl_frag = compile_shader(c, FRAGMENT_SHADER, frag_str)?; - let gl_prog = link_program(c, gl_vert, gl_frag)?; - - let shader = sk_shader.0.as_mut() as *mut _ShaderT as *mut FfiShader; - if let Some(shader) = shader.as_mut() { - shader.shader.vertex = gl_vert; - shader.shader.pixel = gl_frag; - shader.shader.program = gl_prog; - } - - Ok(()) -} diff --git a/src/nodes/drawable/shaders.rs b/src/nodes/drawable/shaders.rs deleted file mode 100644 index 2021453..0000000 --- a/src/nodes/drawable/shaders.rs +++ /dev/null @@ -1,5 +0,0 @@ -// Simula shader with fancy lanzcos sampling -pub const UNLIT_SHADER_BYTES: &[u8] = include_bytes!("assets/shaders/shader_unlit_gamma.hlsl.sks"); - -// Simula shader with fancy lanzcos sampling -pub const PANEL_SHADER_BYTES: &[u8] = include_bytes!("assets/shaders/shader_unlit_simula.hlsl.sks"); diff --git a/src/nodes/drawable/shaders_src/shader_unlit_gamma.hlsl b/src/nodes/drawable/shaders_src/shader_unlit_gamma.hlsl deleted file mode 100644 index 3e63104..0000000 --- a/src/nodes/drawable/shaders_src/shader_unlit_gamma.hlsl +++ /dev/null @@ -1,39 +0,0 @@ -#include "stereokit.hlsli" - -//--name = sk/unlit -//--diffuse = white -//--uv_offset = 0.0, 0.0 -//--uv_scale = 1.0, 1.0 -Texture2D diffuse : register(t0); -SamplerState diffuse_s : register(s0); -float2 uv_scale; -float2 uv_offset; - -struct vsIn { - float4 pos : SV_Position; - float3 norm : NORMAL0; - float2 uv : TEXCOORD0; -}; -struct psIn { - float4 pos : SV_POSITION; - float2 uv : TEXCOORD0; - uint view_id : SV_RenderTargetArrayIndex; -}; - -psIn vs(vsIn input, uint id : SV_InstanceID) { - psIn o; - o.view_id = id % sk_view_count; - id = id / sk_view_count; - - float3 world = mul(float4(input.pos.xyz, 1), sk_inst[id].world).xyz; - o.pos = mul(float4(world, 1), sk_viewproj[o.view_id]); - - o.uv = (input.uv + uv_offset) * uv_scale; - return o; -} -float4 ps(psIn input) : SV_TARGET { - float4 col = diffuse.Sample(diffuse_s, input.uv); - col.rgb = pow(col.rgb, float3(2.2)); - - return col; -} diff --git a/src/nodes/drawable/shaders_src/shader_unlit_simula.hlsl b/src/nodes/drawable/shaders_src/shader_unlit_simula.hlsl deleted file mode 100644 index f68a4ba..0000000 --- a/src/nodes/drawable/shaders_src/shader_unlit_simula.hlsl +++ /dev/null @@ -1,119 +0,0 @@ -#include "stereokit.hlsli" - -// Port of https://github.com/SimulaVR/Simula/blob/master/addons/godot-haskell-plugin/TextShader.tres to StereoKit and HLSL. - -//--name = stardust/text_shader -//--diffuse = white -//--uv_offset = 0.0, 0.0 -//--uv_scale = 1.0, 1.0 -//--fcFactor = 1.0 -//--ripple = 4.0 -//--alpha_min = 0.0 -//--alpha_max = 1.0 -Texture2D diffuse : register(t0); -SamplerState diffuse_s : register(s0); -float4 diffuse_i; -float2 uv_scale; -float2 uv_offset; -float fcFactor; -float ripple; -float alpha_min; -float alpha_max; - -struct vsIn { - float4 pos : SV_Position; - float3 norm : NORMAL0; - float2 uv : TEXCOORD0; -}; -struct psIn { - float4 pos : SV_POSITION; - float2 uv : TEXCOORD0; - uint view_id : SV_RenderTargetArrayIndex; -}; - -psIn vs(vsIn input, uint id : SV_InstanceID) { - psIn o; - o.view_id = id % sk_view_count; - id = id / sk_view_count; - - float3 world = mul(float4(input.pos.xyz, 1), sk_inst[id].world).xyz; - o.pos = mul(float4(world, 1), sk_viewproj[o.view_id]); - - o.uv = (input.uv + uv_offset) * uv_scale; - return o; -} - -float map(float value, float min1, float max1, float min2, float max2) { - return min2 + (value - min1) * (max2 - min2) / (max1 - min1); -} - -// float gaussian(float x, float t) { -// float PI = 3.14159265358; -// return exp(-x*x/(2.0 * t*t))/(sqrt(2.0*PI)*t); -// } - -float besselI0(float x) { - return 1.0 + pow(x, 2.0) * (0.25 + pow(x, 2.0) * (0.015625 + pow(x, 2.0) * (0.000434028 + pow(x, 2.0) * (6.78168e-6 + pow(x, 2.0) * (6.78168e-8 + pow(x, 2.0) * (4.7095e-10 + pow(x, 2.0) * (2.40281e-12 + pow(x, 2.0) * (9.38597e-15 + pow(x, 2.0) * (2.8969e-17 + 7.24226e-20 * pow(x, 2.0)))))))))); -} - -float kaiser(float x, float alpha) { - if (x > 1.0) { - return 0.0; - } - return besselI0(alpha * sqrt(1.0-x*x)); -} - -float4 lowpassFilter(Texture2D tex, sampler2D texSampler, float2 uv, float alpha) { - float PI = 3.14159265358; - - float4 q = float4(0.0); - - float2 dx_uv = ddx(uv); - float2 dy_uv = ddy(uv); - //float width = sqrt(max(dot(dx_uv, dx_uv), dot(dy_uv, dy_uv))); - float2 width = abs(float2(dx_uv.x, dy_uv.y)); - - float2 pixelWidth = floor(width * diffuse_i.xy); - float2 aspectRatio = normalize(pixelWidth); - - float2 xyf = uv * diffuse_i.xy; - int2 xy = int2(xyf); - - pixelWidth = clamp(pixelWidth, float2(1.0), float2(2.0)); - - int2 start = xy - int2(pixelWidth); - int2 end = xy + int2(pixelWidth); - - float4 outColor = float4(0.0); - - float qSum = 0.0; - - for (int v = start.y; v <= end.y; v++) { - for (int u = start.x; u <= end.x; u++) { - float kx = fcFactor * (xyf.x - float(u))/pixelWidth.x; - float ky = fcFactor * (xyf.y - float(v))/pixelWidth.y; - - //float lanczosValue = gaussian(kx, fcx); - float lanczosValue = kaiser(sqrt(kx*kx + ky*ky), alpha); - - q += tex.Sample(texSampler, (float2(u, v)+float2(0.5))/diffuse_i.xy) * lanczosValue; - // q += tex.Load(int3(u, v, 0)) * lanczosValue; - qSum += lanczosValue; - } - } - - return q/qSum; -} - -float4 ps(psIn input) : SV_TARGET { - float gamma = 2.2; - // float4 col = diffuse.Sample(diffuse_s, input.uv); - - // float4 col = lowpassFilter(diffuse, diffuse_s, diffuse_i.xy, float2(1.0 - input.uv.x, input.uv.y), ripple); - float4 col = lowpassFilter(diffuse, diffuse_s, input.uv, ripple); - // float4 col = diffuse.Sample(diffuse_s, input.uv); - col.rgb = pow(col.rgb, float3(gamma)); - col.a = map(col.a, 0, 1, alpha_min, alpha_max); - - return col; -} diff --git a/src/nodes/drawable/text.rs b/src/nodes/drawable/text.rs index 061fbe6..e20942f 100644 --- a/src/nodes/drawable/text.rs +++ b/src/nodes/drawable/text.rs @@ -51,9 +51,9 @@ impl Plugin for StardustTextPlugin { } } -fn update_text(mut surface_query: Query<(&mut Transform)>) { +fn update_text(mut surface_query: Query<&mut Transform>) { for text in TEXT_REGISTRY.get_valid_contents() { - let Some((mut transform)) = text + let Some(mut transform) = text .entity .get() .and_then(|v| surface_query.get_mut(*v).ok()) @@ -105,7 +105,7 @@ fn spawn_text( let entity = text_entity.id(); let _span = info_span!("setting OneCells").entered(); - text.entity.set(entity); + let _ = text.entity.set(entity); } } static SPAWN_TEXT_SENDER: OnceCell>> = OnceCell::new(); @@ -133,7 +133,7 @@ impl Text { }); node.add_aspect_raw(text.clone()); if let Some(sender) = SPAWN_TEXT_SENDER.get() { - sender.send(text.clone()); + let _ = sender.send(text.clone()); } Ok(text) @@ -159,7 +159,7 @@ impl TextAspect for Text { impl Drop for Text { fn drop(&mut self) { if let Some(e) = self.entity.get() { - DESTROY_ENTITY.send(*e); + let _ = DESTROY_ENTITY.send(*e); } TEXT_REGISTRY.remove(self); } diff --git a/src/objects/mod.rs b/src/objects/mod.rs index 65fed3a..66ad532 100644 --- a/src/objects/mod.rs +++ b/src/objects/mod.rs @@ -199,9 +199,9 @@ impl ServerObjects { // controller_right.update(token); // hand_left.update(sk, token); // hand_right.update(sk, token); - if let Some(eye_pointer) = eye_pointer { - eye_pointer.update(); - } + // if let Some(eye_pointer) = eye_pointer { + // eye_pointer.update(); + // } } Some(Inputs::MousePointer(mouse_pointer)) => {} // Inputs::Controllers((left, right)) => { diff --git a/src/oxr_render_plugin.rs b/src/oxr_render_plugin.rs index ccac1ff..a3ecee8 100644 --- a/src/oxr_render_plugin.rs +++ b/src/oxr_render_plugin.rs @@ -1,6 +1,5 @@ use bevy::{ - app::{App, MainScheduleOrder, Plugin, PostUpdate}, - ecs::schedule::ScheduleLabel, + app::{App, Plugin, PostUpdate}, prelude::{resource_added, IntoSystemConfigs as _, TransformSystem}, render::{ extract_resource::ExtractResourcePlugin, pipelined_rendering::PipelinedRenderingPlugin, @@ -19,7 +18,7 @@ use bevy_mod_openxr::{ }, session::OxrSession, }; -use bevy_mod_xr::session::{XrFirst, XrPreDestroySession, XrRenderSet, XrSessionCreated}; +use bevy_mod_xr::session::{XrPreDestroySession, XrRenderSet, XrSessionCreated}; pub struct StardustOxrRenderPlugin;