Skip to content

Latest commit

 

History

History
853 lines (849 loc) · 32.7 KB

todo.md

File metadata and controls

853 lines (849 loc) · 32.7 KB

Refs

TODO

  • fix memory leak

  • solve lexical scope for with-each

  • fix already closed issue

  • solve lexical scope for with-system

  • call sclang

    • so we can use pseudo ugens easily and create synthdefs from it
    • it's meant to be used only in dev time
    • compile synthdef
      • transpile from clj into SC
      • save
    • plot
    • read byte stream
    • help (.help)
  • caching for sclang synthdefs so we can use it transparently

  • make sclang-path more flexible

  • general cpp plugin that allow us to dynamically change a ugen

    • [-] maybe using jank?
      • no as it's changing its internals
    • can we start a REPL from a JVM started from C++?
    • load generated lib dynamically so we can call it in clojure
      • call defn* as normal function
    • [-] janet
    • call flecs from a native VybeCFn
      • make world
        • set pointer to jextract function globally
          • don't expand jextract macros
          • create global struct that stores function pointers
            • globals
            • init fn
              • set global struct call
          • call ctor function when loading vc/defn*
            • fix bug
        • [-] refer to the dyn lib
        • [-] call it from a standalone (or SC plugin)
        • indirect macro usage
        • support fnc
          • create clj function upcall
          • use it in C
        • println
    • test raylib
    • debug tools
      • tap>
        • tap value back to the jvm
        • add line as metadata?
        • tap compiler/analyzer errors
        • debug sizeof padding
      • portal
  • use const by default

    • const
    • :mut
    • fn args
    • run tests
  • fix dangling keywords

  • VybeC

    • use dynamic fns by default, even for generated C code (so compilation is faster and we can have a tool for hot reloading)
      • fix var name
      • fix types
      • fix npe
      • hot reload
        • watch vars
        • remove old watchers
          • cache the watchers somewhere
          • remove
        • test
    • standalone mode (for shared libs) whree you don't use dynamic C fns
  • anim

    • always flag from blender
  • debug

    • systems/queries/observers
      • query where terms are being used
        • function which returns components/tags used in a given term
        • make it work for pairs
        • [-] create a debug observer that watches new/updated system so we can update some cache
        • fix anim
        • ecs_query_get
  • physics

    • trigger event when touching
  • passthrough render

    • shader
      • portion of the window
      • only when cube clicked
      • LPF when enabled
      • 2 worlds
        • different objects
          • disable/enable object
          • render to another RT
          • shader to mix the RTs
      • transition from a blob
        • square
        • circle
      • animate blob
  • gltf loading test

    • remove need for raylib for testing
  • VybeC

    • move existing system into VybeC from C
      • direct translation
        • compile
        • fix "mismatch between term.id and term.first" error
      • fix windows test
      • defsystem
        • macro
        • set components automatically
      • fix string tap
      • fix leo game using vybe-transform
      • defsystem-c
      • check vybe-games using it
        • resources should be in the jar
    • [-] read from source if some function has a inline (or not) metadata telling us the fn spec
    • upgrade Flecs
    • eval
      • macro to quickly evaluate stuff
      • [-] REPL plugin like portal does for cljs?
  • #4

  • try to VybeC animation-node-player

  • move update-physics system

    • [-] support anon functions using clang blocks
      • __auto_type dddd = ^ void () { printf("test"); } ; dddd();
      • it doesn't work in windows/linux
    • let :keys destructuring
    • anon functions without blocks?
      • I've used macros
  • move animation-controller system

  • built-in models

    • minimal
  • first person camera

    • position
    • left/right rotation
  • basilisp

    • https://github.com/leukbaars/EasyBake/blob/master/EasyBake.py
    • operator for baking
    • select objects
    • use cycles so it's faster
      • it was already like this
    • [-] name convention for object selection automation
      • [-] or maybe we can leverage vybe metadata for it (integrated with Vybe?)
    • select object (and children), and for each
      • rename appending ".original" or something like this
      • clone object into a baked one and use the original name
      • remove materials from baked
      • new material
      • create texture image
      • TAB, select all and unwrap + smart UV
      • select both objects
      • connect color node
      • run bake
      • save bake image
      • hide original
      • save blender
    • make sure above works for all selected objects
    • make it work for existing .__original
    • fix objs with children
      • move baked children into orig
      • move orig children into backed
      • make all .__original objs renderable/visible so we can have correct baking (e.g. for emissive objs)
  • vybe.blender

    • set renderer configuration
      • to cycles GPU
      • samples
      • denoise
    • like portal, be able to switch between nREPLs (middleware)
    • call basilisp like VybeC
      • try to start JVM from blender
      • run vybe in a non-blocking way
      • get pointer for location
      • how can we obtain the offset
        • use jextract
      • sync from Blender to Vybe
        • run basilisp code without nREPL
        • access Blender pointer from the JVM
        • show it as text
        • show it in real time with a moving cube for Cube.001
      • better way to eval python functions
      • fix bake script
      • run bake from the JVM (fix seg fault)
      • toggle to show original only
      • select object and all children
      • fix macroexpansion when using ->
      • fix origin position from blender to Vybe
      • add function to update Blender->Vybe
        • translation
        • scale
        • rotation
          • [-] euler mode
          • quat mode
            • no parent rotation/scaling
            • parent rotation/scaling
              • reconstruct parent transforms (until root) so we can account for shearing/non-uniform scaling
        • [-] constraint so original can follow baked (and vice-versa)
        • set quaternion rotation mode
        • when saving, switch to baked mode and then to the orig mode (if that was the set ofc)
        • fix transform when syncing 2 entities (one is parent of the other)
          • we just needed to use the initial transform
          • [-] check applying normal inv transform
          • [-] we shouldn't invert the matrix
          • [-] ok, seems to be an origin issue, fix it
        • update all
    • [-] reify operators (create vars)?
    • [-] fix camera syncing
      • we just don't sync it
    • command so we toggle between the originals and the baked ones
  • vybe.flecs dep

    • local test
      • remove non-flecs native libs
    • CI build
    • add instructions to README
    • add profile to vybe-games
    • update Flecs PR
  • minigame

    • bake in Blender
    • try to render https://passivestar.xyz/posts/how-to-light-scenes/
      • fix redness on emissive lights
        • used a white BG
      • simple
        • emission
      • outdoor
      • lightmap
    • fix baking when drawing lights
    • [-] point light?
    • room
      • why is table color different?
    • syncing light
      • fix opposite direction issue
      • fix shadow
      • ortographic?
    • room
      • fix blender sync
      • bake
    • update clojars token
    • add new objs without exploding
    • screen
      • blender screen
      • render to texture
        • when saving blender, iterate over all scenes to hide/show the correct objects
        • fix transforms of track_scene
      • move tv method to vg
      • race
    • first take on UI
      • fix RT so there isn't conflict with other draws in the context of a with-drawing call
        • above isn't working, even if we flush the drawings
        • [-] create different shaders to see if issue is solved
          • even with different shader files (with different uniform names), it doesn't work!!
        • check render textures
      • message following a pilot
    • fix billboard for RTs
      • update camera up
    • colliders
    • apply less dither shader when near the TV
    • fix nested baking
    • UI
      • select objects
      • turn off/on TV
      • use new model
        • screen with race
        • fix screen size
        • remaining walls/ceil
      • fix jdk24 issue
      • full screen
        • fix sizes
        • fix message position
      • dialogue
        • no effects for text
          • "turn on/off"
            • effect is affecting other draws
              • seems to be the temp RTs from with-fx
          • TV screen
            • draw ID colors
              • set colDiffuse
              • draw it to a RT
              • use RT
            • use ID colors to ignore/enable application in 2d shaders
        • support clicking Z to copy the entity path under the mousr cursor to the clipboard
          • use the colored id texture
            • write things to a very small texture so we can read from the CPU
          • copy to clipboard
        • simple interaction
          • TV is off
          • bypass TV message for a shader
            • fix resolution for bypass
            • fix shader resolution uniform
          • use flowstorm to store shader / texture images
            • one-off gl pixels to pixel writer
            • store whole texture
            • save texture to file for caching and memory purposes
              • cache
              • [-] store in a compact movie format?
              • [-] diffs between snapshots?
            • [-] check if we can fix shader issue when snapshotting
          • improve bypass API
            • remove most RT-related with macro
            • remove bypass function from noel
            • bind :use-color-ids param
              • accept identifiers and entities in with-fx
              • ability to set RT for a shader step
              • for non entities, try to attach some info to the RT
                • with-fx as an entity
                  • rt
                  • color
            • shaders as entities/identifiers
            • fix turned off TV
            • check leo and minimal
              • minimal
              • leo
                • fix dither shader
        • make alias for model entities
        • can't write synthdef
        • initial dialogue
          • no TV interaction
          • audiobox starts to blink
          • click on audiobox
          • sound
            • window 1
            • audiobox beep
              • multiple overtone sounds
              • play only when blinking
              • sync with blink
            • window 2
            • click
            • fix standalone song
            • fix click sound when hot reloading
          • welcome
            • [ ]
        • "audio" visual warning that you need to help someone
          • turning on/off tv sound
        • pilot message
    • changing var for same sound source
      • use pair?
    • music
      • static for the TV + narration (French)
    • steps sound
    • create another room
    • space to interact with objects
    • race
      • slower velocity
    • depth of field
    • generic * for matrix/quaternions/vectors etc
    • fix resolutions in shaders?
  • glsl/shader

    • lygia or any other GLSL file could be just vars using the same approach we use for the native libs
    • tap>
    • VybeShader
  • flowstorm

    • audio
    • shader
  • option for easily using the colored identifiers RT :shaders in a shader

  • pfeodrippe/vybe-games#1

    • main
      • download it from somewhere
    • talk about the AVX2less lib for jolt
  • multiple worlds, render twice?

    • 2-player where you pass one object to the other?
    • 3d?
    • mechanic
    • one in english, another in french?
  • ambisonics

    • 2 sources
    • system
    • directional
  • blender

    • apply modifiers for the baked when baking
    • support XYZ euler rot mode
    • UI controls from the game to Blender
    • call clj cmd so we can get the classpath + other arguments for starting the JVM
    • remove extra materials/textures from the baking process
    • UI to start JVM from Blender
    • hiccup-like UI for Blender
    • support vectors/lists from/to basilisp
    • select in Blender and show UI in Vybe
    • when saving, maintain selection
    • mesh syncing
    • support adding children while syncing
    • add/remove tags dynamically
    • use something else other than .__original as Blender has a character limit for an object's name
    • rewrite existing vybe python script
    • make texture image size configurable per object
    • pass C function to Python
      • call C function
    • show hover in Vybe
    • show hover in Blender
    • sync from Vybe to Blender
    • check https://github.com/hugemenace/nd
  • docs

    • flecs docs
      • clone flecs docs and add clojure to it
        • quickstart
        • change only one to examine the output
        • complete
      • see if we need to create a standalone vybe.flecs dep
    • let's use mkdocs for simplicity
    • [-] bookdown (?)
    • local test render
    • publish test
    • talk about the issues at #4
    • framework
      • start with minimal example
      • by concept?
      • panama
        • component
          • vp/defcomp
          • vp/make-component
          • primitives
          • pointers
          • structs
          • padding
          • datafy
          • aliases
        • pmap
          • memory segments
          • datafy
          • vp/as
        • pseq
          • vp/arr
          • set
          • get
        • fcn
          • usage in components
        • arena
        • jextract
          • wrapping libs
      • flecs
        • world
        • entities
          • naming
          • vp/ent
          • vp/eid
        • components
        • tags
        • pairs
        • merge
        • mutability
        • hierarchy
          • parent
          • children
        • queries
          • DSL
        • systems
        • observers
          • sending events
          • listening events
        • enabling components/entities
      • sample
      • blender
        • hierarchy
        • scenes
        • physics
        • animation
      • raylib
      • jolt
      • network
      • audio
        • overtone
      • game ns
    • vybe.blender
    • VybeC
      • introduction
      • flags
      • C semantics
      • const by default
        • :mut
    • videos?
  • trailer

  • abstraction for dsps?

  • don't store test resources in the jar

  • incremental compilationg

    • each vc/defn* is compiled independently (already done today) and one refers to the other using dyn libs (when in :debug or some other mode)
    • in the background, we can compile the full version so it's used next time!
  • write docs like https://beej.us/guide/bgc/html/split/ ?

  • create clang plugin to improve analysis?

  • clerk viewer for overtone synths

    • how to get info about existing synthdefs?
    • show in clerk
    • create synthdef out of it
    • show nodes
      • we have synthdef-decompile in overtone, can use it as the base
      • binary op, how to show the used op?
      • loaded synthdefs
    • show args
    • play example
    • show the ugens in multiple steps so the user can play the step they need
    • you can hear, viz plots and call other ops on them (e.g. FFT)
    • choose input (sawtooth, sine, any)
  • 3d sound application

    • charts in TVs
    • press button
      • GUI sound
  • more complex built-in model

  • use portal

    • memory segment
    • component
    • pmap
    • synth
    • flecs world
    • flecs entity
    • flecs system
  • tap from C into portal

  • VybeC

    • show line/column error correctly for an error before calling the compiler
    • merge to Flecs w
    • better way to jump to definition
    • allocator setting
    • comptime
    • exe mode
      • check that we don't have unitialized resources in the init function if in this mode
    • use generics for a vp/mem equivalent in VybeC
    • share matrix-transform code
    • make @, vp/& etc better
      • create a merge or reset! "protocol" leveraging C generics
    • make recompilation work with an indirection?
    • :vf/entity should return a struct?
    • consider making systems always by default
    • def to a var from C?
    • Remove variables starting with a _ in a let (just do the side-effect)
    • optimization (-O3)?
    • how to represent nil properly?
      • maybe with nullable
    • should have slices? (support for count, first, last, nth, iteration)
    • map/filter (reduce behind the scenes)
      • the ->> macro could optimize and join map and filters
  • make it easy to DSP in the frequency domain

  • create filters in realtime from clerk

  • wasm

  • debug

    • animations
      • trigger events
      • run once
      • disable/enable
    • blender
      • scenes
      • quantity of objects
      • objects
      • ability to modify blender from clj?
      • tap> on reload
  • check SDL3 https://github.com/TheSpydog/SDL_gpu_examples

  • show how you can call the Flecs API with the REPL

  • deploy to clojars

    • vybe
  • compile libs to targets

    • windows
    • linux
    • osx
      • universal?
  • Use https://github.com/zeux/meshoptimizer?

  • debug arena by tracing calls (for memory leak)

  • ability to apply locks when creating an VybeFlecsSetEntity

  • supercollider/native/C

    • reimplement delay filters (e.g. ShiftPitch ugen)
    • put the plugin at the end of the bus
    • map one index to one lib and receive an id to switch between the function pointers
    • defdsp could watch the used vars so it can compile itself automatically (only :the-var)
    • a defn* coukd test itself and check that it has the same results as the clojure one?
    • ability to load vars dynamically (using dlopen) so it speeds up compilation (and enables hot reloading (using some trickery))?
  • blogpost about vybesc

    • what's a SC ugen?
    • graph
    • real time processing with dyn lib
    • control ugen parameters from clerk