Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit 8c71da3
Author: Antoine C <mixxx@acolombier.dev>
Date:   Tue Oct 22 23:45:01 2024 +0100

    feat: add scrolling waveform in QML using scenegraph

commit 7582045
Author: m0dB <m0dB@mixxx.org>
Date:   Fri Nov 1 21:06:30 2024 +0100

    merged from rendergraph, connect m_marks signals in init (after m_marks has been setup, fixes rendering), removed isSubtreeBlocked from end of track, force ST_TIMER for QML (to call VisualsManager), various cleanups and minor fixes.

commit bdaacee
Author: m0dB <m0dB@mixxx.org>
Date:   Tue Oct 22 23:44:25 2024 +0100

    scrolling qml waveformdisplay working

commit f3deb03
Author: Antoine C <mixxx@acolombier.dev>
Date:   Mon Oct 21 23:31:12 2024 +0100

    fix: prevent use-after-free with a texture buffer deepcopy

commit f409455
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Nov 2 15:19:53 2024 +0100

    reduce delta with qml-rendergraph-fixes

commit c7a3c7a
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Nov 2 15:10:36 2024 +0100

    use std::erase

commit a57b823
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Nov 2 15:03:10 2024 +0100

    cleanup and comments

commit 8b25d13
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Nov 2 15:02:43 2024 +0100

    improved attributeset from niko

commit c2d6c44
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Nov 2 14:41:45 2024 +0100

    various cleanup, acting on review

commit d12d463
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Nov 2 13:48:00 2024 +0100

    typo

commit 2de8ded
Author: m0dB <m0dB@mixxx.org>
Date:   Fri Nov 1 20:44:05 2024 +0100

    missing file

commit 3c76b1b
Author: m0dB <m0dB@mixxx.org>
Date:   Fri Nov 1 20:42:09 2024 +0100

    merge changes from acolombier, clear and set owned by parent flag, more clear transfer of waveformrendermarknode

commit b8f2268
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Oct 20 23:11:19 2024 +0200

    some cleanup

commit 5220b39
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Oct 20 21:18:05 2024 +0200

    reduced delta with feat/qml-scrolling-waveform-with-sg-and-rendergraph

commit cf17f15
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Oct 20 21:02:42 2024 +0200

    reduce delta with feat/qml-scrolling-waveform-with-sg-and-rendergraph

commit 1a38137
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Oct 20 21:01:57 2024 +0200

    reduce delta with feat/qml-scrolling-waveform-with-sg-and-rendergraph

commit 6b2442d
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Oct 20 20:50:56 2024 +0200

    add nodeinterface for unique_ptr ownership methods

commit 8011f61
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Oct 20 18:10:13 2024 +0200

    remove treenode

commit 1e57aae
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Oct 19 04:15:45 2024 +0200

    let matrix be handled by qt scenegraph or by the opengl engine, removed engine class from scenegraph, get context from m_waveformRenderer, various cleanups

commit bf7ed15
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Oct 6 04:08:29 2024 +0200

    wip

commit ca5f780
Author: m0dB <m0dB@mixxx.org>
Date:   Fri Sep 27 23:24:40 2024 +0200

    also use rendergraph::Engine in scenegraph to initialize and resize nodes, add GeometryNode::markDirtyGeometry() and GeometryNode::markDirtyMaterial()

commit 1f10725
Author: m0dB <m0dB@mixxx.org>
Date:   Fri Sep 27 22:26:47 2024 +0200

    remove generated file

commit 941f0cc
Author: m0dB <m0dB@mixxx.org>
Date:   Wed Sep 25 11:02:32 2024 +0200

    put rendergraph_sg and rendergraph_gl in different namespaces

commit 0e870dd
Author: m0dB <m0dB@mixxx.org>
Date:   Tue Sep 24 19:01:02 2024 +0200

    comment

commit b817d6c
Author: m0dB <m0dB@mixxx.org>
Date:   Tue Sep 24 18:55:08 2024 +0200

    removed class Attribute and use BaseGeometry::Attribute to reduce delta between opengl and scenegraph

commit b24e9ba
Author: m0dB <m0dB@mixxx.org>
Date:   Mon Sep 23 16:33:50 2024 +0200

    ported waveformrendererrgb to rendergraph, hurray!

commit 07d1f6a
Author: m0dB <m0dB@mixxx.org>
Date:   Mon Sep 23 16:32:53 2024 +0200

    moved vertexupdaters

commit 8e5128f
Author: m0dB <m0dB@mixxx.org>
Date:   Mon Sep 23 16:24:18 2024 +0200

    moved rendergraph::OpenGLNode to derived

commit 92cd753
Author: m0dB <m0dB@mixxx.org>
Date:   Mon Sep 23 16:22:57 2024 +0200

    fix typo

commit c6cdb34
Author: m0dB <m0dB@mixxx.org>
Date:   Mon Sep 23 15:38:05 2024 +0200

    moved opengl node as baseclass for waveform renderers to derived class, so i can start porting some to geometrynode

commit 2f8e548
Author: m0dB <m0dB@mixxx.org>
Date:   Mon Sep 23 15:23:08 2024 +0200

    improved/added asserts

commit 9c607c1
Author: m0dB <m0dB@mixxx.org>
Date:   Mon Sep 23 01:44:47 2024 +0200

    updated READMEs

commit 0a691ad
Author: m0dB <m0dB@mixxx.org>
Date:   Mon Sep 23 01:37:01 2024 +0200

    avoid adding entire src dir to include paths

commit eeae3ea
Author: m0dB <m0dB@mixxx.org>
Date:   Mon Sep 23 01:36:19 2024 +0200

    use qshader to load qsb files for opengl Qt >= 6.6

commit bc32a9c
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Sep 22 21:50:24 2024 +0200

    use string literal

commit 86e5f09
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Sep 22 21:43:21 2024 +0200

    added some DEBUG_ASSERTs and some vector.reserve calls

commit ec3f816
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Sep 22 20:35:01 2024 +0200

    use a generic Material::compare

commit c5444fc
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Sep 22 19:06:27 2024 +0200

    added comment to explain return value of remove node functions

commit 2a4a7d1
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Sep 22 18:57:19 2024 +0200

    removed backend:: namespace, minor changes based on reviews

commit 6ebc9d5
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Sep 22 13:18:47 2024 +0200

    removed accidental commit

commit c713d6a
Author: m0dB <79429057+m0dB@users.noreply.github.com>
Date:   Sun Sep 22 14:30:12 2024 +0200

    Update src/rendergraph/common/rendergraph/attribute.h

    simplify attribute constructor.

    Co-authored-by: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>

commit dff3a31
Author: m0dB <79429057+m0dB@users.noreply.github.com>
Date:   Sun Sep 22 13:20:07 2024 +0200

    Update src/rendergraph/opengl/backend/shadercache.h

    direct conversion from unique_ptr to shader_ptr

    Co-authored-by: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>

commit afdc0ed
Author: m0dB <79429057+m0dB@users.noreply.github.com>
Date:   Sun Sep 22 13:15:42 2024 +0200

    Update res/shaders/rendergraph/unicolor.frag

    Co-authored-by: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>

commit 390dd0e
Author: m0dB <79429057+m0dB@users.noreply.github.com>
Date:   Sun Sep 22 12:49:28 2024 +0200

    Update src/rendergraph/common/rendergraph/material/rgbamaterial.cpp

    Co-authored-by: Daniel Schürmann <daschuer@mixxx.org>

commit 319ffb0
Author: m0dB <79429057+m0dB@users.noreply.github.com>
Date:   Sun Sep 22 12:49:06 2024 +0200

    Update src/rendergraph/common/rendergraph/material/patternmaterial.h

    un-name unused argument

    Co-authored-by: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>

commit b8bcb19
Author: m0dB <m0dB@mixxx.org>
Date:   Thu Sep 19 19:13:52 2024 +0200

    reorganized the code, with a public common API that is derived from the opengl or the scenegraph backend.

commit 88013d4
Author: m0dB <m0dB@mixxx.org>
Date:   Thu Sep 19 12:57:46 2024 +0200

    remove nodebase, use encapsulation for scenegraph Node

commit 1967817
Author: m0dB <m0dB@mixxx.org>
Date:   Thu Sep 19 01:58:57 2024 +0200

    cleanup and moved common rendergraph files to common/rendergraph

commit 18fa2c4
Author: m0dB <m0dB@mixxx.org>
Date:   Thu Sep 19 00:42:46 2024 +0200

    removed pimpl from rendergraph scenegraph

commit a0df59e
Author: m0dB <m0dB@mixxx.org>
Date:   Sun Sep 1 20:51:08 2024 +0200

    removed pimpl from rendergraph opengl

commit 507a465
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Aug 31 22:43:26 2024 +0200

    draw marks with rendergraph

commit 3dcf907
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Aug 31 17:04:21 2024 +0200

    digitsrenderer with rendergraph

commit 8032b38
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Aug 31 16:24:15 2024 +0200

    keep track of material that modified the shader uniforms, fix scenegraph

commit 058f5ec
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Aug 31 15:23:32 2024 +0200

    reuse materialshaders

commit 1e4d04b
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Aug 31 13:49:14 2024 +0200

    draw playpos with rendergraph

commit 9eb2938
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Aug 31 12:41:29 2024 +0200

    towards digits renderer as node

commit 9a01213
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Aug 31 12:18:42 2024 +0200

    make linked list handling part of rendergraph::Node

commit 8014163
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Aug 31 03:58:14 2024 +0200

    mark range with dynamic nodes

commit 1dc16a5
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Aug 31 01:48:10 2024 +0200

    fix teardown order

commit 4ad583c
Author: m0dB <m0dB@mixxx.org>
Date:   Sat Aug 31 01:25:58 2024 +0200

    node iterator, fixed examples

commit c2fffea
Author: m0dB <m0dB@mixxx.org>
Date:   Fri Aug 30 23:28:11 2024 +0200

    preroll/postroll using rendergraph

commit d3a69bb
Author: m0dB <m0dB@mixxx.org>
Date:   Tue Aug 27 11:31:01 2024 +0200

    waveformrenderbeat with rendergraph, various fixes, use same shaders and material for mixxx and rendergraph examples

commit 280fcf7
Author: m0dB <m0dB@mixxx.org>
Date:   Fri Aug 23 20:46:13 2024 +0200

    using rendergraph for allshader waveforms, with rendergraph::GeometryNode for end of track
  • Loading branch information
acolombier committed Nov 25, 2024
1 parent e14df23 commit f98dc08
Show file tree
Hide file tree
Showing 202 changed files with 6,713 additions and 927 deletions.
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ repos:
rev: v0.14.0
hooks:
- id: markdownlint-cli2
language_version: lts
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.29.4
hooks:
Expand Down
42 changes: 40 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1503,6 +1503,7 @@ else()
)
endif()
if(QOPENGL)
target_compile_definitions(mixxx-lib PRIVATE __RENDERGRAPH_IS_OPENGL)
target_sources(mixxx-lib PRIVATE
src/shaders/endoftrackshader.cpp
src/shaders/slipmodeshader.cpp
Expand All @@ -1515,7 +1516,6 @@ if(QOPENGL)
src/shaders/vinylqualityshader.cpp
src/util/opengltexture2d.cpp
src/waveform/renderers/allshader/digitsrenderer.cpp
src/waveform/renderers/allshader/matrixforwidgetgeometry.cpp
src/waveform/renderers/allshader/waveformrenderbackground.cpp
src/waveform/renderers/allshader/waveformrenderbeat.cpp
src/waveform/renderers/allshader/waveformrenderer.cpp
Expand Down Expand Up @@ -1772,7 +1772,7 @@ if(QT6)
# below that takes care of the correct object order in the resulting binary
# According to https://doc.qt.io/qt-6/qt-finalize-target.html it is importand for
# builds with Qt < 3.21
qt_add_executable(mixxx WIN32 src/main.cpp MANUAL_FINALIZATION)
qt_add_executable(mixxx WIN32 MACOSX_BUNDLE src/main.cpp MANUAL_FINALIZATION)
else()
find_package(Qt5 COMPONENTS Core) # For Qt Core cmake functions
# This is the first package form the environment, if this fails give hints how to install the environment
Expand Down Expand Up @@ -2776,9 +2776,11 @@ if(QML)
res/qml/Mixxx/Controls/WaveformOverviewHotcueMarker.qml
res/qml/Mixxx/Controls/WaveformOverviewMarker.qml
res/qml/Mixxx/Controls/WaveformOverview.qml
res/qml/Mixxx/Controls/WaveformDisplay.qml
)
target_link_libraries(mixxx-qml-lib PRIVATE mixxx-qml-mixxxcontrolsplugin)

target_compile_definitions(mixxx-qml-lib PRIVATE __RENDERGRAPH_IS_SCENEGRAPH)
target_sources(mixxx-qml-lib PRIVATE
src/qml/asyncimageprovider.cpp
src/qml/qmlapplication.cpp
Expand All @@ -2799,6 +2801,22 @@ if(QML)
src/qml/qmlchainpresetmodel.cpp
src/qml/qmlwaveformoverview.cpp
src/qml/qmlmixxxcontrollerscreen.cpp
src/qml/qmlwaveformdisplay.cpp
src/qml/qmlwaveformrenderer.cpp
src/waveform/renderers/allshader/digitsrenderer.cpp
src/waveform/renderers/allshader/waveformrenderbeat.cpp
src/waveform/renderers/allshader/waveformrenderer.cpp
src/waveform/renderers/allshader/waveformrendererendoftrack.cpp
src/waveform/renderers/allshader/waveformrendererpreroll.cpp
src/waveform/renderers/allshader/waveformrendererrgb.cpp
src/waveform/renderers/allshader/waveformrenderersignalbase.cpp
src/waveform/renderers/allshader/waveformrendermark.cpp
src/waveform/renderers/allshader/waveformrendermarkrange.cpp
# FIXME depends on rendergraph/openglnode.h
# src/waveform/renderers/allshader/waveformrendererslipmode.cpp
# src/waveform/renderers/allshader/waveformrendererfiltered.cpp
# src/waveform/renderers/allshader/waveformrendererhsv.cpp
# src/waveform/renderers/allshader/waveformrenderersimple.cpp
# The following sources need to be in this target to get QML_ELEMENT properly interpreted
src/control/controlmodel.cpp
src/control/controlsortfiltermodel.cpp
Expand Down Expand Up @@ -3492,6 +3510,7 @@ if (STEM)
if(QML)
target_compile_definitions(mixxx-qml-lib PUBLIC __STEM__)
target_sources(mixxx-qml-lib PRIVATE
src/waveform/renderers/allshader/waveformrendererstem.cpp
src/qml/qmlstemsmodel.cpp
)
endif()
Expand Down Expand Up @@ -3821,6 +3840,25 @@ if(VINYLCONTROL)
target_link_libraries(mixxx-lib PRIVATE mixxx-xwax)
endif()

# rendergraph
add_subdirectory(src/rendergraph/opengl)
add_subdirectory(res/shaders/rendergraph)
target_compile_definitions(rendergraph_gl PUBLIC
$<$<CONFIG:Debug>:MIXXX_DEBUG_ASSERTIONS_ENABLED>
)
target_link_libraries(mixxx-lib PUBLIC rendergraph_gl)
target_compile_definitions(mixxx-lib PRIVATE rendergraph=rendergraph_gl)
target_compile_definitions(mixxx-lib PRIVATE allshader=allshader_gl)
if(QML)
add_subdirectory(src/rendergraph/scenegraph)
target_compile_definitions(rendergraph_sg PUBLIC
$<$<CONFIG:Debug>:MIXXX_DEBUG_ASSERTIONS_ENABLED>
)
target_link_libraries(mixxx-qml-lib PRIVATE rendergraph_sg)
target_compile_definitions(mixxx-qml-lib PRIVATE rendergraph=rendergraph_sg)
target_compile_definitions(mixxx-qml-lib PRIVATE allshader=allshader_sg)
endif()

# WavPack audio file support
find_package(wavpack)
default_option(WAVPACK "WavPack audio file support" "wavpack_FOUND")
Expand Down
4 changes: 4 additions & 0 deletions res/mixxx.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -96,5 +96,9 @@
<file>shaders/passthrough.vert</file>
<file>shaders/rgbsignal.frag</file>
<file>shaders/stackedsignal.frag</file>
<file>shaders/rendergraph/endoftrack.frag.gl</file>
<file>shaders/rendergraph/endoftrack.vert.gl</file>
<file>shaders/rendergraph/texture.frag.gl</file>
<file>shaders/rendergraph/texture.vert.gl</file>
</qresource>
</RCC>
48 changes: 48 additions & 0 deletions res/qml/Deck.qml
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,54 @@ Item {
activeColor: Theme.deckActiveColor
}

Row {
anchors.left: playButton.right
anchors.leftMargin: 10
anchors.bottom: playButton.bottom
anchors.topMargin: 5
spacing: -1

Skin.IntroOutroButton {
keyPrefix: "intro_start"
group: root.group

text: "Intro\nStart"

width: playButton.height * 2 - 1
height: playButton.height
}

Skin.IntroOutroButton {
keyPrefix: "intro_end"
group: root.group

text: "Intro\nEnd"

width: playButton.height * 2 - 1
height: playButton.height
}

Skin.IntroOutroButton {
keyPrefix: "outro_start"
group: root.group

text: "Outro\nStart"

width: playButton.height * 2 - 1
height: playButton.height
}

Skin.IntroOutroButton {
keyPrefix: "outro_end"
group: root.group

text: "Outro\nEnd"

width: playButton.height * 2 - 1
height: playButton.height
}
}

Row {
anchors.left: cueButton.right
anchors.top: parent.top
Expand Down
45 changes: 45 additions & 0 deletions res/qml/IntroOutroButton.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import "." as Skin
import Mixxx 1.0 as Mixxx
import QtQuick 2.12

import "Theme"

Skin.Button {
id: root

required property string keyPrefix
required property string group

activeColor: Theme.deckActiveColor
highlight: enabledControl.value

Mixxx.ControlProxy {
id: control

group: root.group
key: `${root.keyPrefix}_activate`
value: root.down
}

Mixxx.ControlProxy {
id: enabledControl

group: root.group
key: `${root.keyPrefix}_enabled`
}

Mixxx.ControlProxy {
id: cleanControl

group: root.group
key: `${root.keyPrefix}_clear`
value: mousearea.pressed && enabledControl.value
}

MouseArea {
id: mousearea

anchors.fill: parent
acceptedButtons: Qt.RightButton
}
}
7 changes: 7 additions & 0 deletions res/qml/Mixxx/Controls/WaveformDisplay.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import Mixxx 1.0 as Mixxx

Mixxx.WaveformDisplay {
id: root

player: Mixxx.PlayerManager.getPlayer(root.group)
}
Loading

0 comments on commit f98dc08

Please sign in to comment.