GithubHelp home page GithubHelp logo

chiptunecafe / rawrscope Goto Github PK

View Code? Open in Web Editor NEW
16.0 6.0 3.0 1.81 MB

High performance oscilloscope generation for everyone

License: GNU General Public License v3.0

Rust 97.46% GLSL 2.54%
rust audio visualization wgpu

rawrscope's Introduction

rawrscope

rawrscope is a fast, user-friendly, and cross-platform tool for creating oscilloscope visualizations of audio, typically chiptune.

Build Status

TODO: somehow have separate badges for each os

Features

* = unimplemented

  • *Intuitive interface
  • Realtime editor and preview
  • Antialiased, GPU accelerated line rendering
  • Many centering algorithms
    • Zero Crossing
    • *Peak Speed
    • Fundamental Phase
    • *External Trigger
  • *High-quality trigger generator for external trigger mode
  • Audio manipulation tools (*trim, fade in/out)
  • *Node-based audio routing interface
    • Automatic master audio generation
    • Stereo upmixing/downmixing
  • *Visual templates and presets for a quicker workflow
  • *Built-in video export
  • *Arbitrary post-processing shaders
  • *Command line interface
  • Written in Rust :)

Installation

From CI

View the CI runs here, select the latest successful run, and download the appropriate ZIP file from the "Artifacts" tab in the top right. Then, just extract the archive.

From source

Clone the repository and run cargo build --release.

CMake, Ninja, and Python are required for building dependencies.

Note: The dev profile still has optimizations enabled, if you would like to skip optimizations, build with the test profile

Tutorial

TODO

Contributing

Any help resolving issues is appreciated, issues tagged X=help needed are likely a good place to start. If coding isn't your thing, then issues tagged X=feedback wanted could still use your help.

All code contributed should be formatted with rustfmt before being merged.

rawrscope is licenced under GPLv3+, see COPYING for details.

Future Roadmap

  • Multi-song projects

rawrscope's People

Contributors

opna2608 avatar rastertail avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

rawrscope's Issues

Panic on launch: "assertion failed: `(left == right)`"

When I try to run cargo run --release, a blank rawrscope windows, followed by a panic in the terminal:

  WARN@wgpu_core::instance  Missing features: VERTEX_STORES_AND_ATOMICS | FRAGMENT_STORES_AND_ATOMICS
  WARN@wgpu_core::instance  max_bind_groups limit is missing
  WARN@wgpu_core::device  Surface does not support present mode: IMMEDIATE, falling back to FIFO
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `1`,
 right: `0`', <::std::macros::panic macros>:5:6
stack backtrace:
   0: backtrace::backtrace::dbghelp::trace
             at C:\Users\VssAdministrator\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.44\src\backtrace\dbghelp.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at C:\Users\VssAdministrator\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.44\src\backtrace\mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:78
   3: std::sys_common::backtrace::_print::{{impl}}::fmt
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:59
   4: core::fmt::write
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libcore\fmt\mod.rs:1063
   5: std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\io\mod.rs:1426
   6: std::sys_common::backtrace::_print
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:62
   7: std::sys_common::backtrace::print
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:204
   9: std::panicking::default_hook
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:224
  10: panic_unwind::imp::exception_copy
  11: std::panicking::rust_panic_with_hook
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:474
  12: std::panicking::begin_panic_handler
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:378
  13: std::panicking::begin_panic_fmt
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:332
  14: core::ptr::drop_in_place<core::result::Result<alloc::vec::Vec<u16>, std::io::error::Error>>
  15: core::ptr::drop_in_place<core::result::Result<alloc::vec::Vec<u16>, std::io::error::Error>>
  16: __mb_cur_max
  17: main
  18: panic_unwind::imp::exception_copy
  19: main
  20: invoke_main
             at d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  21: __scrt_common_main_seh
             at d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  22: BaseThreadInitThunk
  23: RtlUserThreadStart
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

A dialog box opens up with the same information.

  • Windows 10 x64 1909
  • AMD Radeon(TM) RX Vega 10 Graphics
  • rustc 1.43.0 (4fb7144ed 2020-04-20)

Running in the vscode CodeLLDB debugger implicates wgpu and DX12.

Specifically, this line in rawrscope crashes:

rawrscope/src/render.rs

Lines 104 to 114 in b86f3f5

let line_ssbo_bind = device.create_bind_group(&wgpu::BindGroupDescriptor {
layout: &line_ssbo_bind_layout,
bindings: &[wgpu::Binding {
binding: 0,
resource: wgpu::BindingResource::Buffer {
buffer: &line_ssbo,
range: 0..1,
},
}],
label: Some("scope line ssbo bind group"),
});

And this line in wgpu:

https://github.com/gfx-rs/wgpu/blob/bc065e4abc24e82a2c92403740ffe8d7e6643243/wgpu-core/src/device/mod.rs#L1219

Which calls function https://github.com/gfx-rs/gfx/blob/fdfe887f5afab7ca057e3e824817d0bcdcf794ba/src/backend/dx12/src/device.rs#L2816 (but with no debug symbols)

I'll report an upstream bug soon.

OS compatibility

Report issues with compiling or running on any supported operating systems (Windows, macOS, Linux) here

[WIN10] Undefined Error

Tried to test out rawrscope today, but trying to run the executable gives this:
Image Of Error

"rawrscope encountered an unrecoverable error. no additional information."

Actually fix presentation logic

(Extension of #7)

Right now it's very scuffed, relying on a weird timer system. The new/final system should:

  • Continue using a timer to redraw the scope preview
  • Not use ControlFlow::Poll
  • Use Event::RedrawRequested
  • Use ControlFlow::WaitUntil during playback to redraw when scopes update
  • Triple-buffer final frames (requires upstream implementation)

Stuttering / tearing with new presentation logic

a4bccbd introduces a new issue where the uncapped framerate may not be in sync with the target framerate, which will often be 60fps and match the user's display. On Windows and certain Linux desktops where there is VSync over everything, this results in stutters in the preview. On macOS this results in tearing. The tearing could be fixed by implementing triple-buffering upstream in wgpu, but that would just make the stuttering consistent across every platform. I think that may have to be the only solution though since there doesn't seem to be a single way to query when a frame has truly been presented when triple-buffering.

Doesn't compile

error: failed to load source for a dependency on `rayon`

Caused by:
  Unable to update https://github.com/nikomatsakis/rayon/tree/latch-target-thread

Caused by:
  failed to fetch into /Users/adamnemecek/.cargo/git/db/latch-target-thread-851c3b72e4df58e4

Caused by:
  unexpected HTTP status code: 404; class=Net (12)

Crash when resizing window

Git: master b3316d7
OS: Windows 10 x64

When I try to resize the window, I get panic messages from several threads:

PS C:\Users\nyanpasu\src\rawrscope> .\target\debug\rawrscope.exe
  WARN@wgpu_core::instance  Missing features: VERTEX_STORES_AND_ATOMICS | FRAGMENT_STORES_AND_ATOMICS
  WARN@wgpu_core::instance  max_bind_groups limit is missing
  WARN@wgpu_core::device  Surface does not support present mode: IMMEDIATE, falling back to FIFO
thread 'main' panicked at 'redraw event in non-redraw phase', <::std::macros::panic macros>:2:4
stack backtrace:
   0: backtrace::backtrace::trace_unsynchronized
             at C:\Users\VssAdministrator\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.44\src\backtrace\mod.rs:66
   1: std::sys_common::backtrace::_print_fmt
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:78
   2: std::sys_common::backtrace::_print::{{impl}}::fmt
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:59
   3: core::fmt::write
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libcore\fmt\mod.rs:1063
   4: std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\io\mod.rs:1426
   5: std::sys_common::backtrace::_print
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:62
   6: std::sys_common::backtrace::print
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:49
   7: std::panicking::default_hook::{{closure}}
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:204
   8: std::panicking::default_hook
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:224
   9: alloc::boxed::{{impl}}::call
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\src\liballoc\boxed.rs:1031
  10: rawrscope::panic::dialog::{{closure}}
             at .\src\panic.rs:9
  11: std::panicking::rust_panic_with_hook
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:474
  12: std::panicking::begin_panic<str*>
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\src\libstd\panicking.rs:397
  13: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<()>::process_event<()>
             at <::std::macros::panic macros>:2
  14: winit::platform_impl::platform::event_loop::runner::ELRShared<()>::send_event_unbuffered
             at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop\runner.rs:161
  15: winit::platform_impl::platform::event_loop::runner::ELRShared<()>::send_event<()>
             at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop\runner.rs:150
  16: winit::platform_impl::platform::event_loop::SubclassInput<()>::send_event
             at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop.rs:104
  17: winit::platform_impl::platform::event_loop::public_window_callback<()>
             at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop.rs:680
  18: DefSubclassProc
  19: DefSubclassProc
  20: CallWindowProcW
  21: DispatchMessageW
  22: IsWindowVisible
  23: KiUserCallbackDispatcher
  24: NtUserMessageCall
  25: GetWindowTextW
  26: MapWindowPoints
  27: IsCompositionActive
  28: Ordinal96
  29: IsCompositionActive
  30: IsCompositionActive
  31: GetWindowTextW
  32: DefSubclassProc
  33: DefSubclassProc
  34: CallWindowProcW
  35: DispatchMessageW
  36: IsWindowVisible
  37: KiUserCallbackDispatcher
  38: NtUserMessageCall
  39: GetWindowTextW
  40: MapWindowPoints
  41: IsCompositionActive
  42: Ordinal96
  43: IsCompositionActive
  44: IsCompositionActive
  45: GetWindowTextW
  46: CallWindowProcW
  47: CallWindowProcW
  48: DefSubclassProc
  49: DefSubclassProc
  50: DefSubclassProc
  51: DefSubclassProc
  52: CallWindowProcW
  53: DispatchMessageW
  54: winit::platform_impl::platform::event_loop::EventLoop<()>::run_return
             at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop.rs:235
  55: winit::platform_impl::platform::event_loop::EventLoop<()>::run<(),closure-0>
             at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop.rs:192
  56: winit::event_loop::EventLoop<()>::run<(),closure-0>
             at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\event_loop.rs:148
  57: rawrscope::commands::app::_run
             at .\src\commands\app.rs:196
  58: rawrscope::commands::app::run
             at .\src\commands\app.rs:466
  59: rawrscope::main
             at .\src\main.rs:38
  60: std::rt::lang_start::{{closure}}<()>
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\src\libstd\rt.rs:67
  61: std::rt::lang_start_internal::{{closure}}
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\rt.rs:52
  62: std::panicking::try::do_call<closure-0,i32>
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:303
  63: panic_unwind::__rust_maybe_catch_panic
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libpanic_unwind\lib.rs:86
  64: std::panicking::try
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:281
  65: std::panic::catch_unwind
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panic.rs:394
  66: std::rt::lang_start_internal
             at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\rt.rs:51
  67: main
  68: invoke_main
             at d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  69: __scrt_common_main_seh
             at d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  70: BaseThreadInitThunk
  71: RtlUserThreadStart
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'main' panicked at 'already mutably borrowed: BorrowError', /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\src\libcore\cell.rs:798:9
stack backtrace:
   0:     0x7ff60ab374bf - backtrace::backtrace::trace_unsynchronized
                               at C:\Users\VssAdministrator\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.44\src\backtrace\mod.rs:66
   1:     0x7ff60ab374bf - std::sys_common::backtrace::_print_fmt
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:78
   2:     0x7ff60ab374bf - std::sys_common::backtrace::_print::{{impl}}::fmt
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:59
   3:     0x7ff60ab4eadb - core::fmt::write
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libcore\fmt\mod.rs:1063
   4:     0x7ff60ab33c1c - std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\io\mod.rs:1426
   5:     0x7ff60ab3ab2c - std::sys_common::backtrace::_print
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:62
   6:     0x7ff60ab3ab2c - std::sys_common::backtrace::print
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\sys_common\backtrace.rs:49
   7:     0x7ff60ab3ab2c - std::panicking::default_hook::{{closure}}
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:204
   8:     0x7ff60ab3a77f - std::panicking::default_hook
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:224
   9:     0x7ff60a7eb91a - alloc::boxed::{{impl}}::call
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\src\liballoc\boxed.rs:1031
  10:     0x7ff60a7eb91a - rawrscope::panic::dialog::{{closure}}
                               at C:\Users\nyanpasu\src\rawrscope\src\panic.rs:9
  11:     0x7ff60ab3b338 - std::panicking::rust_panic_with_hook
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:474
  12:     0x7ff60ab3ae8f - std::panicking::begin_panic_handler
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:378
  13:     0x7ff60ab4c750 - core::panicking::panic_fmt
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libcore\panicking.rs:85
  14:     0x7ff60ab4c593 - core::option::expect_none_failed
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libcore\option.rs:1211
  15:     0x7ff60a81983e - core::result::Result<core::cell::Ref<core::option::Option<winit::platform_impl::platform::event_loop::runner::EventLoopRunner<()>>>, core::cell::BorrowError>::expect
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\src\libcore\result.rs:961
  16:     0x7ff60a81983e - core::cell::RefCell<core::option::Option<winit::platform_impl::platform::event_loop::runner::EventLoopRunner<()>>>::borrow
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\src\libcore\cell.rs:798
  17:     0x7ff60a81983e - winit::platform_impl::platform::event_loop::runner::ELRShared<()>::send_event<()>
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop\runner.rs:133
  18:     0x7ff60a7bdae0 - winit::platform_impl::platform::event_loop::SubclassInput<()>::send_event
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop.rs:104
  19:     0x7ff60a7bdae0 - winit::platform_impl::platform::event_loop::public_window_callback<()>
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop.rs:1367
  20:     0x7ff873a8b762 - DefSubclassProc
  21:     0x7ff873a8b625 - DefSubclassProc
  22:     0x7ff888955c0d - CallWindowProcW
  23:     0x7ff8889557dc - DispatchMessageW
  24:     0x7ff888961f73 - IsWindowVisible
  25:     0x7ff8894bfde4 - KiUserCallbackDispatcher
  26:     0x7ff886e38024 - NtUserCallHwndParamLockSafe
  27:     0x7ff88896bc77 - DialogBoxIndirectParamAorW
  28:     0x7ff8889b2f99 - SoftModalMessageBox
  29:     0x7ff8889b19d5 - DrawStateA
  30:     0x7ff8889b2712 - MessageBoxTimeoutW
  31:     0x7ff8889b279e - MessageBoxW
  32:     0x7ff60ac24654 - tinyfd_messageBoxW
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\tinyfiledialogs-3.3.9\libtinyfiledialogs\tinyfiledialogs.c:981
  33:     0x7ff60ac24654 - messageBoxWinGui8
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\tinyfiledialogs-3.3.9\libtinyfiledialogs\tinyfiledialogs.c:1015
  34:     0x7ff60ac2646b - tinyfd_messageBox
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\tinyfiledialogs-3.3.9\libtinyfiledialogs\tinyfiledialogs.c:2815
  35:     0x7ff60aa8949e - tinyfiledialogs::message_box
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\tinyfiledialogs-3.3.9\src\lib.rs:60
  36:     0x7ff60aa89851 - tinyfiledialogs::message_box_ok
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\tinyfiledialogs-3.3.9\src\lib.rs:88
  37:     0x7ff60a7eba1d - rawrscope::panic::dialog::{{closure}}
                               at C:\Users\nyanpasu\src\rawrscope\src\panic.rs:22
  38:     0x7ff60ab3b338 - std::panicking::rust_panic_with_hook
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:474
  39:     0x7ff60a80ef8d - std::panicking::begin_panic<str*>
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\src\libstd\panicking.rs:397
  40:     0x7ff60a81cc21 - winit::platform_impl::platform::event_loop::runner::EventLoopRunner<()>::process_event<()>
                               at <::std::macros::panic macros>:2
  41:     0x7ff60a8195e7 - winit::platform_impl::platform::event_loop::runner::ELRShared<()>::send_event_unbuffered
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop\runner.rs:161
  42:     0x7ff60a8195e7 - winit::platform_impl::platform::event_loop::runner::ELRShared<()>::send_event<()>
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop\runner.rs:150
  43:     0x7ff60a7be1f5 - winit::platform_impl::platform::event_loop::SubclassInput<()>::send_event
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop.rs:104
  44:     0x7ff60a7be1f5 - winit::platform_impl::platform::event_loop::public_window_callback<()>
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop.rs:680
  45:     0x7ff873a8b762 - DefSubclassProc
  46:     0x7ff873a8b625 - DefSubclassProc
  47:     0x7ff888955c0d - CallWindowProcW
  48:     0x7ff8889557dc - DispatchMessageW
  49:     0x7ff888961f73 - IsWindowVisible
  50:     0x7ff8894bfde4 - KiUserCallbackDispatcher
  51:     0x7ff886e31184 - NtUserMessageCall
  52:     0x7ff88895436a - GetWindowTextW
  53:     0x7ff888953aff - MapWindowPoints
  54:     0x7ff8840d984e - IsCompositionActive
  55:     0x7ff8840f25f2 - Ordinal96
  56:     0x7ff8840dc50f - IsCompositionActive
  57:     0x7ff8840dbff1 - IsCompositionActive
  58:     0x7ff88895403f - GetWindowTextW
  59:     0x7ff873a8b762 - DefSubclassProc
  60:     0x7ff873a8b625 - DefSubclassProc
  61:     0x7ff888955c0d - CallWindowProcW
  62:     0x7ff8889557dc - DispatchMessageW
  63:     0x7ff888961f73 - IsWindowVisible
  64:     0x7ff8894bfde4 - KiUserCallbackDispatcher
  65:     0x7ff886e31184 - NtUserMessageCall
  66:     0x7ff88895436a - GetWindowTextW
  67:     0x7ff888953aff - MapWindowPoints
  68:     0x7ff8840d984e - IsCompositionActive
  69:     0x7ff8840f2547 - Ordinal96
  70:     0x7ff8840dc50f - IsCompositionActive
  71:     0x7ff8840dbff1 - IsCompositionActive
  72:     0x7ff88895403f - GetWindowTextW
  73:     0x7ff888955c0d - CallWindowProcW
  74:     0x7ff8889558de - CallWindowProcW
  75:     0x7ff873a8b762 - DefSubclassProc
  76:     0x7ff873a8b51c - DefSubclassProc
  77:     0x7ff873a8b762 - DefSubclassProc
  78:     0x7ff873a8b625 - DefSubclassProc
  79:     0x7ff888955c0d - CallWindowProcW
  80:     0x7ff888955602 - DispatchMessageW
  81:     0x7ff60a7bcfcb - winit::platform_impl::platform::event_loop::EventLoop<()>::run_return
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop.rs:235
  82:     0x7ff60a7bcfcb - winit::platform_impl::platform::event_loop::EventLoop<()>::run<(),closure-0>
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\platform_impl\windows\event_loop.rs:192
  83:     0x7ff60a793962 - winit::event_loop::EventLoop<()>::run<(),closure-0>
                               at C:\Users\nyanpasu\.cargo\registry\src\github.com-1ecc6299db9ec823\winit-0.21.0\src\event_loop.rs:148
  84:     0x7ff60a7954f1 - rawrscope::commands::app::_run
                               at C:\Users\nyanpasu\src\rawrscope\src\commands\app.rs:196
  85:     0x7ff60a7954f1 - rawrscope::commands::app::run
                               at C:\Users\nyanpasu\src\rawrscope\src\commands\app.rs:466
  86:     0x7ff60a7c329d - rawrscope::main
                               at C:\Users\nyanpasu\src\rawrscope\src\main.rs:38
  87:     0x7ff60a7d5506 - std::rt::lang_start::{{closure}}<()>
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\src\libstd\rt.rs:67
  88:     0x7ff60ab3ad27 - std::rt::lang_start_internal::{{closure}}
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\rt.rs:52
  89:     0x7ff60ab3ad27 - std::panicking::try::do_call<closure-0,i32>
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:303
  90:     0x7ff60ab3eb42 - panic_unwind::__rust_maybe_catch_panic
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libpanic_unwind\lib.rs:86
  91:     0x7ff60ab3b648 - std::panicking::try
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panicking.rs:281
  92:     0x7ff60ab3b648 - std::panic::catch_unwind
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\panic.rs:394
  93:     0x7ff60ab3b648 - std::rt::lang_start_internal
                               at /rustc/4fb7144ed159f94491249e86d5bbd033b5d60550\/src\libstd\rt.rs:51
  94:     0x7ff60a7c3507 - main
  95:     0x7ff60ac27774 - invoke_main
                               at d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  96:     0x7ff60ac27774 - __scrt_common_main_seh
                               at d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  97:     0x7ff8886c7bd4 - BaseThreadInitThunk
  98:     0x7ff88948ce51 - RtlUserThreadStart
thread panicked while processing panic. aborting.
PS C:\Users\nyanpasu\src\rawrscope>

Throttle master audio submission

Right now the master audio "buffer" can build up endlessly, resulting in massive audio desync if the submissions from the main thread are too large. Ideally, submission should block if there is too much audio data queued up, but I'm not sure how to implement that yet.

Investigate line antialiasing

Right now I'm pretty sure the antialiasing algorithm used for line rendering is just an approximation; it would be nice to compute the exact value based on the trapezoidal coverage of the pixel. I'm almost certain it's possible, but i looked at it a while ago and wasn't able to work through the math. I doubt there would really be much of a noticeable difference, so this would probably be an opt-in feature.

Lag when dragging UI elements around in debug builds

Git: master b3316d7
OS: Windows 10 x64

When I run a debug build of rawrscope, then drag a UI element (nested subwindow), it lags behind the cursor. The longer I keep dragging, the further the subwindow falls behind. During the process, rawrscope only eats around half a core of CPU (due to GPU sync?) and other UI elements don't respond. This does not occur in release mode.

Is this an imgui issue? Does it occur on slower computers or just in debug mode? Not sure how relevant this is.

Recording at https://youtu.be/vqDJuCj_Q7E

Missing dependencies for compilation (ninja)

Windows 10 x64.

ninja

error: failed to run custom build command for `shaderc-sys v0.6.1 (https://github.com/google/shaderc-rs#b6a23455)`

Caused by:
  process didn't exit successfully: `C:\Users\nyanpasu\src\rawrscope\target\release\build\shaderc-sys-8f818dc6df5a1da9\build-script-build` (exit code: 101)
--- stdout
cargo:warning=System installed library not found.  Falling back to build from source

--- stderr
thread 'main' panicked at '

couldn't find required command: "ninja"

Solution: choco install ninja.

There might be other undocumented dependencies I have installed so didn't catch. No clue.

Write tests

Should cover most of the codebase, no idea what the target % should be.

1 frame lag in UI with VSync enabled

This may be resolvable, but it might also just be a fundamental flaw in imgui. Need more research or someone else's input. VSync is required for audio sync.

Clean up dependencies

There are currently a lot of unnecessary (convenience) dependencies that are inflating build times and likely executable size too.

Running from terminal in Mint 20 gives error

Error:

Oct 13 12:52:06.886 ERROR gfx_backend_vulkan: Could not enumerate physical devices! Initialization of a object has failed
Oct 13 12:52:06.887 ERROR rawrscope::commands::app: No sufficient graphics card available!

Line rendering without geometry shaders?

Some old hardware may not support geometry shaders, which are currently required for line rendering. It is possible to implement it without geometry shaders, however it is at the expense of generating more verts on the CPU and using a bit more memory bandwidth every frame. It may not even be worth it to support devices this old, especially depending on what the overall performance cost will be.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.