Skip to content
Steven Johnson edited this page Jun 7, 2024 · 12 revisions

librtt.zip

The above is a snapshot of recent work. It predates recent major Linux work and probably some other things, so merges might be difficult.

This incorporates PRs #1-4 and has "STEVE CHANGE", "/STEVE CHANGE", and "<- STEVE CHANGE" comments denoting blocks or lines switched during "PR #5" development.

Some of this would stomp on, say, the Vulkan repo, if that were sync'd first.

platform/apple/Rtt_ApplePlatform.mm also has the following swath:

        // STEVE CHANGE removed end clear ops, frame ops, RendererDo
        
        (void*)CoronaRendererInvalidate,
    // STEVE CHANGE
        (void*)CoronaRendererRegisterStateBlock,
        (void*)CoronaRendererReadStateBlock,
        (void*)CoronaRendererWriteStateBlock,
    // /STEVE CHANGE

platform/windows/Corona.Simulator.Native.Library.Win32/Main.cpp needs similar changes.


Some stuff in some shape or another (a few have been submitted but not pulled):

  • Secondary image fill, to use composite effects with objects having a fixed image, such as images and sprites
  • Converting polygons to tri-strips (extend to meshes)
  • TODO: look into how aggressively data was being updated
  • Writers, for text and particles (might also have implications for vertex compression)
  • Some optimization with deformed rects when switching shader variant
  • Non-image masks
  • Wuffs support for image loading (seems to offer some speedup, at least on Windows)
  • Similar for Android? (not sure where this is at)
  • Tuning the GC, in particular when doing captures (ditto)
  • Minor capture fixes
  • Also for some image loading
  • Also something related to how outlines respected byte order... forgot the finer details :D
  • And the GL packing thing
  • Some depth and stencil stuff to revive
  • NaN-boxing is basically functional (original 32-bit patch + 64-bit version), bar some light userdata corner case testing
  • Integer patch seems to be functional too (want to eventually integrate NaN-boxing and do something like light userdata approach, too)
  • Custom build.settings callbacks seem to be functional and so far implemented on Windows→Windows builds

Idea-land:

  • Redesign shell transforms around a shell generator, that would be regression-tested to produce the current versions available now

    Less finicky (order of operations; preprocessor assumptions; etc.) than current text substitution scheme. Vulkan would benefit as well, as it also needs to do this even with standard shell, due to transform from old GLSL.

  • Add support for mods and such with Armoda.

    Armoda falls down on some songs—ones provided with https://github.com/binji/raw-wasm, for example—so probably not worth integrating... but now have a test case for a CoronaGraphics-ish audio thing

  • WASM as a plugin backend... sort of ties into the native compilers feature

    Quite robust test with aforemention raw-wasm and also quickjs-ng + WASM3 + libopenmpt

    Exploring OVM from Onyx, too, e.g. via build.settings idea

  • Atlasing at run-time for acceptable textures... want to rebase texCoord rect; could use some hybrid approach: vertex userdata if free, else store index there and use swath of vertex uniforms... else? (e.g. since these are useful for other things)

  • Could, say, normal maps be repurposed to use vertex uniforms?

  • Some sort of "inline function" syntax for above-mentioned build.settings logic to allow embedding non-Lua 5.1 code

  • Explore polar stroking

  • Indexed meshes currently always must be on GPU, but should be possible to provide normally (obviously complicates batching, though)

  • For that matter, sub-mesh (or sub-texture) updates

  • More stuff