Code Monkey home page Code Monkey logo

rmeditor's People

Contributors

lamogui avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

rmeditor's Issues

Remake timeline widget

Features to keep in mind

  • Zooming vertical / horizontal

Try to avoid QGraphicsScene/QGraphicsItems as it doesn't handle zoom properly for our usage

Make a Binary format for project

  • Create a function to save the actual xml format to binary .prout (with a file version)
  • Save all the old projects to this binary format
  • Create the load function and verify it works...
  • Delete the xml !!!

Network edition of the demo

after #5 and #19 Let's try to make undo-redo networkable

  • Setup a tcp-ip connection

Since the text editor undo redo is done by text editor, don't try to override it...

  • When there are multiple client lock the shader edition on other client when a client edit it
  • Push a new version of the shader when the client that which was editing the shader save / compile it
  • Add a timer that automatically push the shader if compiling and unlock the shader edition

Ressource replication

  • When a client is connecting all the resources are replicated to a local folder, using modification date to avoid unecessary download
  • When a client add / change a resource file, it is replicated to the server and then to other clients...

Widgets / Timeline replication

  • Separate UI setters, controller setters (called by undo-redo) and no-check setters
  • Make the UI setter send a message to the server to create / activate an undo redo command
  • Make the controller setter called from the undo redo command on the server propagate the changes to every clients

Switch to Prout Studio as a name for rmeditor

  • Rename the repository and projects to ProutStudio
  • rename rmeditor to ProutStudio everywhere in the code
  • Delete the actual skin
  • Change the icon with the laboratoir prout icon

Nice to do:

  • Start a new skin or make an issue about it

Configure the right openGL version

Once we will be able to open a project again, smart select the right version of opengl to compile latest glsl version of fragment shader and no more for the moment

Refactor log widget

  • Create a LogManager singleton
  • Remove all qDebug()
  • Remove all LogWidget reference to keep only a connection with the LogManager

Fast as hell video rendering

  • render the timeline inside PBO
  • Double buffer the PBO being carefull with the audio sync and ffmpeg start / end condition...

Globalize QFileSystemWatcher

Make all media files reload themself when QFileSystemWatcher notify
This should be done by widget and not data !

  • put a single QFileSystemWatcher in global (maybe add a mutex for thread safety ?)
  • Make media files widgets watch the file and trigger a reload (with an alert if needed)

Temporal Anti Aliasing

Add a post process pass

  • Add automatic jitter in camera
  • Do the TAA post process shader

Post process pass(e)s

after #15 we may want to introduce at least a post process pass per demo or better a timeline of post process pass(e)s

Add resources actions / widgets

After #5 we will need to have additionnal action in order to

  • Create a project from a music file
  • Add a framework shader
  • Add a raymarching scene shader
  • Add a gif image
  • Edit the content of a camera keyframe

Ogg theora video export without ffmpeg

Once #12 and #13 are done try to support natively the OggTheora format

  • Add Ogg theora library as a submodule
  • Have a shader that output in Yuv
  • Add a widget for video export to select resolution, format and quality
  • Make the code for the ogg theora export

Refactor jassert and log

  • rename jassert in passert and jassertfalse in passertfalse
  • make passert also break in debug
  • remove all LogWidget get parent shit etc etc,
  • make an abstract class log which have no deal with any widget (no Qt in .h)
  • add a global instatiation of this class
  • add a message in passert and reoprt it in the log
  • add a filter parameter in assert and log class
  • also add a void* or something like this to get the origin
  • make all the error shit etc thread safe
  • Make a dedicated error widget that select the concerned widget when clicking on error... delayed in #26

Make CMake compile again

Could be cool to see if CMake is still compiling and try to continue to support it...
Note that may be required for compile a static version of Qt #8

Support Undo-Redo

once the #5 and #18 is done

  • Override the QUndoRedo class in order to be ready for network edition
  • Make all action in the editor use Undo-Redo
  • Separate the undo redo linked to shader code edition

Precache audio

  • When creating a project or when the source audio file change, automatically render a cache of the music into a ogg high quality file, don't do that only if the source is already ogg...
  • always perform audio sync using a uncompressed buffer and setuping the correct sampleRate...
  • Precache other textures values (notes velocities, bass lvl, noise lvl etc) based on configured refresh rate when the source or refresh rate change this precaching should be done async as we already know the length of the music
  • Use the cached ogg with ffmpeg instead of not really working dual tcp connection

Generic widgets for media files

  • Introduce MediaFileEditorWidget
  • Make TextEditor inherit from MediaFileEditorWidget
  • Make MediaFilesEditorWidget instantiate most appropriate widget using MediaFile metaObject

Dedicated Log::Entry widget

Following #23
This widget allow

  • display multiple Log::Entry with beautifull widgets
  • filtering by category
  • filtering by type
  • tooltip code location indication
  • double click -> contextual widget selection
  • for shaders go to concerned line !
  • clear the entry list

Make the *.pro compile the dependencies

  • Make the .pro compile the ogg submodule
  • Make the .pro compile the vorbis submodule
  • Make the .pro compile the rtAudio submodule
  • Put the tunefish into the dependency folder (not as submodule)

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.