Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Perf improvements #325

Draft
wants to merge 1,234 commits into
base: main
Choose a base branch
from
Draft

Perf improvements #325

wants to merge 1,234 commits into from

Conversation

xian
Copy link
Member

@xian xian commented Nov 20, 2020

  • ActiveSet -> RenderPlans should be cached.
  • LiveShaderInstance -> GlslPrograms should be cached.
  • Change of show should expire caches.
  • Keep track of resource use?

xian added 30 commits July 31, 2020 18:22
A patch is composed of _n_ shader instances, which each hold their incoming links.
Shader instances may be assigned to roles. High-level patch wiring will be determined by well-known roles.
Shaders have one and only one output port (which could be a struct).
Rework how patches are represented
…atch.

* Implemented patch layering: shaders from multiple patches can be assembled in
  extremely flexible ways to create sophisticated effects.
* Implemented filter shaders; added Brightness and Saturation to demo show.
* Implemented shader channels for specifying late-resolved links between shaders.
* OpenShow/Patch/LiveShaderInstance/etc. now use all live object relations, not
  id lookups.
* Shows and scenes now have associated patches; show patches are always enabled,
  scene patches are enabled whenever the scene is selected.
* New shows can be created blank or from a template.
* Added current generated GLSL to bottom of simulator console (scroll down).
New shaders can be added to a patch.
Shader types provide templates.
Patch editor now has an inline shader editor.
Store shaders with title and type info outside of glsl source
Shader editor has priority and channel inputs.
Some work toward editing projection shaders in-app.
Kill old shader editor window.
Rework patch editor ui. Not quite baked but good enough for demo
Add headers to PatchHolderEditor.
* Refactored shader preview compilation and views. ShaderPreview now handles all previews.
* Added GLSL error info on shader previews when build fails.
* Implemented preview for filter shaders. Gadgets are manipulated in the preview.
* Added SMPTE test pattern for non-paint shader previews.
* Fixed ace editor GLSL mode and theme.
* Nicer interface for observing Observables.
* Extracted LinkSourceEditor.
* Added xComponent(isPure: Boolean). Props equality test uses kotlin's equality semantics, not JS's.
* All xComponent watched values now use kotlin's equality semantics, not JS's.
* Extracted TextEditor with internal change debouncing.
PatchEditor hierarchy render optimization
* Initialize color vec4's with a=1.0.
* Clean up how resolution is managed in preview. The `resolution`/`iResolution` uniform will now always be (1,1).
xian and others added 28 commits November 9, 2020 12:21
* Feeds now create per-engine and per-program contexts. Renamed Binding to ProgramFeed.
* Feeds can advertise themselves as updating once, per frame, or per fixture.
* RenderEngine and GlslProgram call feeds appropriately to update as requested.
* RenderEngine now has subclasses for rendering a 3d model and a 2d preview (quad).
* New spec for ModelRenderEngine.
* Better introspection for textures in FakeGlContext/FakeKgl.
* FakeKgl now checks that every OpenGL call is run within a GL context.
* FakeKgl now records uniform and texture state at every render call.
* Values from render are sent out over DMX.
* Move BAAAHS' eyes to the right spots.
* Double cones in visualizer.
Lots of refactoring toward controlling moving heads from GLSL shaders
* Less naive handling mapping of shaders to device types.
* Surfaces matchers are now inclusive/additive.
* MoverShaders can currently control pan and tilt.
* DeviceTypes declare their own guru meditation error shaders.
* Beginning to tease apart ShaderType from wiring decisions.
* Show GLSL for all device types in floating palette in simulator.
Moving heads can be controlled from shaders
* Kill getTimeMillis().
* Plugins are now built with PluginBuilder, which takes a PluginContext, which has a Clock.
* New Control menu items enumerated from plugins.
* Control serialization provided by plugins.
* Started implementing BeatLink control.
Add placeable BeatLink control
kotlinx-serialization-core:1.0.0-RC -> kotlinx-serialization-json:1.0.1
kotlinx-coroutines:1.3.9 -> 1.4.1
ktor:1.4.0 -> 1.4.1.
wrappers: pre.110 -> pre.121.
styled-components 4.4.1 -> 5.2.0.
kotlinmaterialui:0.5.0 -> 0.5.3.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant