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

🔧 GLSL array support #393

Draft
wants to merge 2,453 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2453 commits
Select commit Hold shift + click to select a range
cd1a89e
Bump kotlin wrappers to 390.
xian Sep 21, 2022
64f8568
Merge pull request #469 from baaahs/kotlin-1.7.0
merge-when-green[bot] Sep 22, 2022
2003b82
Allow direct loading of patch editor in dev environment at /patch-edi…
xian Sep 22, 2022
76a72dd
Rearrange patch editor layout to give more vertical space to text edi…
xian Sep 22, 2022
478ac87
Merge pull request #497 from baaahs/patch-editor-cleanup
merge-when-green[bot] Sep 22, 2022
35a1ba8
Don't auto-adjust gadgets by default in the patch editor.
xian Sep 23, 2022
c0a613a
Patch editor tidying.
xian Sep 23, 2022
7dcb8fb
Fix ShaderToyShaderDialect title.
xian Sep 23, 2022
202e0d5
Merge pull request #498 from baaahs/patch-editor-cleanup
merge-when-green[bot] Sep 23, 2022
2d56b39
Optimize show reopens with better shader analysis caching.
xian Sep 23, 2022
8b77f3c
Pinky doesn't need to notify observers on every frame.
xian Sep 23, 2022
efe0db0
When dragging grid items, only commit a show change when finished dra…
xian Sep 23, 2022
4e16ff0
GridLayout: Refactor Layout to know its max column and row count.
xian Sep 23, 2022
69074cf
GridLayout: Move Layout.collides to LayoutItem.collidesWith.
xian Sep 24, 2022
c7fb39a
Quiet a spurious UI error message.
xian Sep 24, 2022
65c60fc
GridLayout: Fix some bugs in port from react-grid-layout.
xian Sep 25, 2022
265be05
Make DAG edges curvy.
xian Sep 25, 2022
0a4ccf4
Switch off extra debug logging.
xian Sep 25, 2022
deb0b5a
Merge pull request #499 from baaahs/grid-fixes
merge-when-green[bot] Sep 25, 2022
b36046a
Kill a spurious React warning.
xian Sep 26, 2022
d82f32d
Rename "Wobble" shader to "Ripple".
xian Sep 26, 2022
d1bc114
Cleanups.
xian Sep 26, 2022
82f99d8
Merge pull request #500 from baaahs/shader-cleanup
merge-when-green[bot] Sep 26, 2022
0922b94
Fixed a bunch of bugs in moving items in a grid layout; added some sp…
xian Sep 30, 2022
8365b06
Merge pull request #503 from baaahs/grid-fixes
merge-when-green[bot] Sep 30, 2022
64dd627
Grid layout cleanup.
xian Oct 1, 2022
30f547e
Optimize MovingHeadPreview and ProjectionPreview to select async resu…
xian Oct 1, 2022
4fb1190
Toolchain optimization.
xian Oct 1, 2022
6cff0b5
Add "Developer Mode" UI setting and client toolchain stats display.
xian Oct 1, 2022
f0fb771
Merge pull request #504 from baaahs/grid-fixes
merge-when-green[bot] Oct 1, 2022
605da53
Fix a few bugs.
xian Oct 2, 2022
13a290d
Merge branch 'grid-fixes'
xian Oct 2, 2022
8980047
Merge remote-tracking branch 'mini/playa2022'
xian Oct 6, 2022
3c306e6
Changes to show from BRC 2022.
xian Oct 6, 2022
c619de3
Update Ben's Show template with final BRC 2022 show changes.
xian Oct 6, 2022
4c11acf
Merge remote-tracking branch 'mini/playa2022' into playa-2022
xian Oct 6, 2022
576fd6f
Merge remote-tracking branch 'mini/patchmod-scale' into playa-2022
xian Oct 6, 2022
2efd23e
Merge branch 'playa-2022'
xian Oct 6, 2022
6944340
Pull OpenShowVisitor out of OpenShow.kt.
xian Oct 6, 2022
8056ff1
Fix OpenShowVisitor to visit patches within grid layouts.
xian Oct 6, 2022
b214da2
Merge pull request #505 from baaahs/fix-app-problems
merge-when-green[bot] Oct 6, 2022
a267ce0
Bump from Kotlin 1.7.10 to 1.7.20.
xian Oct 7, 2022
db95ef7
Migrate code for ktor 2.x.
xian Oct 7, 2022
fcafe1e
Merge pull request #506 from baaahs/kotlin-1.7.20
merge-when-green[bot] Oct 7, 2022
306475a
Visualizers take model unit scale into account.
xian Oct 11, 2022
2b8de01
Visualizers take model unit scale into account.
xian Oct 11, 2022
bb65166
Merge pull request #507 from baaahs/visualizers-honor-model-scale
merge-when-green[bot] Oct 12, 2022
29f2d9a
Hack to make visualizer pixels look right for BAAAHS and grids.
xian Oct 12, 2022
b844297
Merge pull request #509 from baaahs/fix-pixel-pitch
merge-when-green[bot] Nov 5, 2022
8608dc8
Direct URL for mapper is no longer used.
xian Oct 18, 2022
f5235de
Refactor PinkyMain for clarity/DRY.
xian Oct 18, 2022
b93921c
Update link in comment.
xian Oct 18, 2022
f39ecea
Imported shaders could take their title from the containing file's name.
xian Oct 22, 2022
cf6a118
Refactoring ShaderDialect to return intermediate Analyzer object.
xian Oct 23, 2022
606f6a6
Refactored ShaderDialect to return intermediate ShaderAnalyzer object…
xian Oct 24, 2022
5669ddd
More refactoring after ShaderDialect/ShaderAnalysis split.
xian Oct 24, 2022
617fae8
ShaderDialect can hold wellKnownShaderPorts, for UI/help system expos…
xian Oct 24, 2022
14ddf10
Case-insensitive shader library matching.
xian Oct 25, 2022
53380cc
Add Earth-like planet preview shader, unusued.
xian Oct 27, 2022
1b95a61
Use KeyboardEvent.code instead of KeyboardEvent.key to distinguish sh…
xian Oct 27, 2022
e871b04
Changes to Shader Library.
xian Oct 27, 2022
dea7212
Pull out Tokenizer from GlslParser.Context.
xian Oct 29, 2022
3bdc8f5
Simplify GlslParser tokenization logic.
xian Oct 29, 2022
8d97a4c
Refactor GLSL function body rewriting to use improved token parser.
xian Oct 29, 2022
0487a90
Merge pull request #510 from baaahs/isf-shader-library-prep
merge-when-green[bot] Nov 5, 2022
46325e8
Bump to Kotlin 1.7.21.
xian Nov 9, 2022
077e5c3
Use circleci medium+ resource class for more RAM (6g > 4g).
xian Nov 9, 2022
3c24e8d
Merge pull request #511 from baaahs/kotlin-1.7.21
merge-when-green[bot] Nov 9, 2022
12735bf
Fix circleci test results.
xian Nov 10, 2022
5e936c6
Bump circleci image to JDK 18.
xian Nov 10, 2022
322d71b
Merge pull request #512 from baaahs/circleci-bump-docker-img
merge-when-green[bot] Nov 10, 2022
9d8e8e4
Remove debug output.
xian Nov 14, 2022
72226e6
Initial support for #if/elif directives in glsl.
xian Nov 14, 2022
edd21c0
Support #if/elif condition evaluation in GLSL.
xian Nov 15, 2022
e2e70ee
Merge pull request #513 from baaahs/if-directive
merge-when-green[bot] Nov 15, 2022
d0fbf49
Fix patch-editor.html.
xian Nov 15, 2022
eebed75
Change views in baaahs.app.ui to match *View convention.
xian Nov 10, 2022
1f8f29c
Move DOT/DAG support to common.
xian Nov 10, 2022
a93173a
Fix LinkedProgram.linkNodes mutability.
xian Nov 6, 2022
76885eb
Shader preview isn't built unless/until its view is visible.
xian Nov 14, 2022
678ba42
Support precision modifiers in GLSL function declarations.
xian Nov 13, 2022
384626e
Merge pull request #514 from baaahs/pre-isf
merge-when-green[bot] Nov 15, 2022
1ad1ea1
DRY creating control add menu items.
xian Nov 23, 2022
da89467
Theme and app toolbar styling cleanup.
xian Nov 24, 2022
5053fc6
Fix button group internal grid layout editing.
xian Nov 24, 2022
6079a03
Fix button group internal grid layout's Match Parent behavior.
xian Nov 24, 2022
763d974
Fix Ben's Show internal grids that shouldn't have been matching parent.
xian Nov 24, 2022
6a52ac2
"Edit" button in app toolbar is always visible.
xian Nov 24, 2022
75e4395
Merge pull request #517 from baaahs/fix-button-group-inner-grid
merge-when-green[bot] Nov 24, 2022
8f15289
Less jarring beatlink control.
xian Nov 24, 2022
87b9413
Merge pull request #518 from baaahs/prettier-beatlink-glsl
merge-when-green[bot] Nov 24, 2022
4c7b34c
Optimize initial layout/render of grids.
xian Nov 25, 2022
d1215ee
Optimize initial layout/render of visualizer control.
xian Nov 25, 2022
0abb659
DRY grid background.
xian Nov 25, 2022
1de4c3d
Tweaks to grid button layout at compact scales to fix overflow.
xian Nov 26, 2022
0c3163d
Show circular progress while shader previews are built.
xian Nov 26, 2022
c5e52d3
Merge pull request #519 from baaahs/ui-optimizations
merge-when-green[bot] Nov 26, 2022
d2c6ece
First render optimizations.
xian Nov 26, 2022
e1b8ebc
If a button is less than twice the height of a line of text, reduce l…
xian Nov 26, 2022
bfdde73
Merge pull request #520 from baaahs/ui-optimizations
xian Nov 26, 2022
543baa1
Bump kotlin-wrappers to 1.0.0.pre.451.
xian Nov 27, 2022
ff1108e
Merge pull request #521 from baaahs/kotlin-wrappers-pre-451
merge-when-green[bot] Nov 27, 2022
a67a30e
Remove 1.25mb, Peter Thiel, and blueprintjs from client.
xian Nov 27, 2022
5719409
Condense simulator layout a bit.
xian Nov 29, 2022
bffd8ef
Merge pull request #522 from baaahs/condense-sim-ui
merge-when-green[bot] Nov 30, 2022
92a3624
Rename "Feed" to "FeedContext".
xian Dec 6, 2022
4595931
Rename "EngineFeed" and "ProgramFeed" to "EngineFeedContext" and "Pro…
xian Dec 17, 2022
2a786af
Rename "DataSource" to "Feed", et al.
xian Dec 17, 2022
891044d
Rename more DataSource-related things.
xian Dec 17, 2022
36c866a
Rename even more DataSource-related things.
xian Dec 17, 2022
eabe06c
Rename still more DataSource-related things.
xian Dec 17, 2022
e90f439
Rename baaahs.plugin.core.datasource package to feed.
xian Dec 17, 2022
bb99feb
Rename yet more DataSource-related things.
xian Dec 17, 2022
af6eabb
Migrate show JSON from data sources to feeds.
xian Dec 17, 2022
f28e582
Fix tests.
xian Dec 17, 2022
acdc31a
Merge pull request #523 from baaahs/data-sources-are-feeds
xian Dec 17, 2022
6faaec7
Bump kgl to 1.6.1.
xian Dec 19, 2022
90bb527
Merge pull request #524 from baaahs/kgl-1.6.1
xian Dec 20, 2022
a6f9fa2
Bump to ace-builds 1.14.0. Regenerate stubs.
xian Dec 20, 2022
594b3c8
It's possible that both `shader` and `previewShaderBuilder` will be n…
xian Dec 28, 2022
82d6a54
Switch to JS IR backend. Fix some external lib issues.
xian Dec 28, 2022
0b5f424
Merge pull request #409 from baaahs/js-ir
xian Dec 29, 2022
3b71a77
Simulator styling.
xian Dec 30, 2022
38461ee
Extract `type` property for migrations.
xian Feb 6, 2023
1e13ce5
Draw line connecting segments of light bar models.
xian Feb 6, 2023
6aa5991
Invert sense of Grid's ColumnsThenRows/RowsThenColumns. Grid defaults…
xian Feb 7, 2023
9b80b23
Grids may have a stagger period, which causes rows or columns to be s…
xian Feb 7, 2023
d89de6b
Reimplement numberTextField as a component, allowing error states.
xian Feb 8, 2023
7c82d15
Merge pull request #525 from baaahs/grid-swap-and-stagger
xian Feb 12, 2023
6c47237
Bump to Kotlin 1.8.0.
xian Dec 29, 2022
a15171e
Fixes for Kotlin 1.8.0.
xian Dec 30, 2022
0465f39
Upgrade to Gradle 8.0.2.
xian Mar 11, 2023
f126d03
Upgrade to Kotlin 8.10.
xian Mar 11, 2023
14bfe97
Fix build task deps vs gradle 8.
xian Mar 12, 2023
de1a887
Fix compile error in tests.
xian Mar 12, 2023
e23444d
Back to Gradle 7.5.1 cuz build time was up 133% ouch.
xian Mar 12, 2023
3251bcf
Merge pull request #526 from baaahs/kotlin-1.8
xian Mar 12, 2023
9749c25
Kotlin 1.8 upgrade wasn't fully baked, revert for now.
xian Mar 31, 2023
54829ed
Add 7-channel DMX mapping for Rockpar Tris.
xian Mar 23, 2023
ad07810
Fix light bar visualization when row/column gap is negative.
xian Mar 23, 2023
c08ac1f
Fix JS executable serving.
xian Mar 23, 2023
4564dfd
Include Roboto font locally.
xian Mar 23, 2023
d181489
Add server-side gamma correction.
xian Mar 23, 2023
185c3de
Fix bug in Pasture Bedtime template.
xian Mar 31, 2023
e2d60e6
Change exception when a layout is missing from fatal to error log.
xian Mar 31, 2023
7b3b660
Oops, new grid entities should default to zigZag=true.
xian Mar 31, 2023
c845283
Add Eve Rafters show template. <3
xian Mar 31, 2023
8bc8f38
Merge pull request #527 from baaahs/eve-rafters-fixes
xian Mar 31, 2023
784ece4
ESP-IDF update to version 5.0.1! Yay! It works (probably. I mean it s…
tomseago Apr 4, 2023
aaa8c6b
Fix bug causing scene editor objects to disappear after each edit.
xian Apr 23, 2023
e177689
Don't refit scene editor camera after every edit, just on first render.
xian Apr 23, 2023
186ae1d
Merge pull request #528 from baaahs/fix-scene-editor
xian Apr 24, 2023
ed9993f
Fix control sizing in vacuity.
xian Mar 31, 2023
fd0fa71
Prevent long-press on iOS from selecting things.
xian Mar 31, 2023
d67a31a
Merge branch 'ever-afters'
xian Apr 24, 2023
c46089a
Fix disabling of incorrect file types in Open Show/Open Scene dialogs.
xian Apr 25, 2023
04405a5
Apply gamma correction to shaded pixels.
xian Jun 18, 2023
1adf481
Apply gamma correction to UI LEDs.
xian Jun 18, 2023
6572962
Ugh. Closer?
xian Jun 18, 2023
bcbe163
Minor syntax tweaks to make the build go
tomseago Jun 19, 2023
9b8fa95
MonitorUI should have its own scoped Visualizer which doesn't collide…
xian Jun 22, 2023
f3a87d2
Mark PortRef as polymorphic for serialization.
xian Jun 23, 2023
e2b36f3
Refactor fixtures.
xian Oct 12, 2022
72bdf76
Cleanup.
xian Jun 24, 2023
4cb4606
Fix some weird color warnings.
xian Oct 12, 2022
dcdc92a
Don't impose Fixture fixtureType rule yet.
xian Jun 24, 2023
6367a9d
Merge pull request #516 from baaahs/collapse-fixtures
merge-when-green[bot] Jun 24, 2023
5ecfae0
Merge pull request #533 from baaahs/brain-gamma
xian Jul 17, 2023
d61e2e7
Fix favicon.
xian Jul 25, 2023
9422fe9
Fix favicon. Better.
xian Jul 25, 2023
d1a7405
Merge pull request #536 from baaahs/favicon
xian Jul 25, 2023
4a86a17
Fix editor for DmxTransportConfig.fixtureStartsInFreshUniversel
xian Aug 1, 2023
95256e4
Fix bug causing incorrect (all-zero) light bar pixel locations. Thank…
xian Aug 1, 2023
bf1050e
Light bar and ring pixels are visible on both front and back.
xian Aug 1, 2023
f1f6ba1
Increase size of pixels for Light bar and ring simulations, for bette…
xian Aug 1, 2023
429e5ee
Improve light bar visualization.
xian Aug 1, 2023
85bba9b
Add Club Six scene as a template.
xian Aug 1, 2023
1941ed5
Include JNI libs for lwjgl for all supported platforms.
xian Aug 1, 2023
a2f078f
Add explicit resource for serving sparklemotion.js.
xian Aug 1, 2023
1272130
Merge pull request #539 from baaahs/clubsix
xian Aug 1, 2023
426a4a6
sim::image use html input instead of dropzone
kcking Aug 4, 2023
9d5d3b3
Merge pull request #541 from kcking/imageupload
xian Aug 4, 2023
e7c70dd
Add Moving head Shaders and Filters (#546)
synox Aug 7, 2023
0f9da29
Create Visual preview for Moving Heads #548
synox Aug 8, 2023
ef40837
Allow an initial viewing angle to be specified for a scene.
xian Aug 8, 2023
5c00d88
Don't render a box around entity groups except in the scene editor.
xian Aug 8, 2023
bb4f701
Add updated BAAAHS model and show for 2023.
xian Aug 8, 2023
b9b1b84
Add DJ booth lightbox.
xian Aug 8, 2023
d33072c
Add Boryli dmx channel layout
kcking Aug 6, 2023
6735551
Clarify x86 jdk requirement in README.
kcking Aug 8, 2023
c93f7b5
Merge pull request #550 from kcking/readme
kcking Aug 8, 2023
fa905d9
Merge pull request #544 from kcking/boryli-dmx
xian Aug 8, 2023
e1c5326
add shadertoy mockups for beatInfo struct
bencbartlett Aug 9, 2023
481f7f4
add sheep shrooms shader
bencbartlett Aug 9, 2023
eb9e38a
Lift GlslType output code generation to member fun
kcking Aug 6, 2023
81d3c3e
Add `prism` and `prismRotation` fields to `MovingHeadParams`.
kcking Aug 6, 2023
f8cda0a
Update to IDF v5.1(stable) although untested on hardware
tomseago Aug 9, 2023
a13d79b
Merge pull request #551 from baaahs/baaahs-2023
xian Aug 9, 2023
68050b7
add new logo drawing functions
bencbartlett Aug 9, 2023
161cc3d
Merge branch 'baaahs:main' into main
bencbartlett Aug 9, 2023
85b22c3
updates to logo drawing; added pulsing effect
bencbartlett Aug 9, 2023
eb4eeef
Merge remote-tracking branch 'origin/main'
bencbartlett Aug 9, 2023
9fcedfd
updates
bencbartlett Aug 9, 2023
635286e
add wobbly lines shader yay
bencbartlett Aug 9, 2023
0eb3dcb
updates
bencbartlett Aug 9, 2023
3c9a378
add new distortion shader - Moire's bad trip
bencbartlett Aug 11, 2023
211b9a2
Merge pull request #554 from baaahs/update-to-5.1
tomseago Aug 12, 2023
e2ad145
Fix moving head tests.
xian Aug 9, 2023
45a51aa
Merge pull request #555 from baaahs/fix-moving-head-tests
xian Aug 15, 2023
61e9877
enable VideoInPlugin
kcking Aug 4, 2023
1c0cd47
Add native webcam capture
kcking Aug 4, 2023
25d536e
fix CI
kcking Aug 16, 2023
69ab416
Merge pull request #561 from baaahs/kevin-nativewebcam
xian Aug 16, 2023
1b72c61
Fix mapping software
kcking Aug 13, 2023
6b11a50
Add kevin's mapping of F3D
kcking Aug 13, 2023
25c54cf
Reapply kotlin-1.8 upgrade.
xian Mar 31, 2023
53e7089
Revert "Kotlin 1.8 upgrade wasn't fully baked, revert for now."
xian Jul 13, 2023
6670ac3
Update to Kotlin 1.8.22.
xian Jul 13, 2023
3bea905
Update to Kotlin 1.9.0.
xian Jul 13, 2023
53a80fc
Update to kotlin-wrappers 1.0.0-pre.565.
xian Jul 14, 2023
f7a99eb
Update to kotlin-wrappers 1.0.0-pre.596, kotlinx-html 0.9.1, coroutin…
xian Jul 14, 2023
c86c910
Update to gradle 8.2.1.
xian Jul 17, 2023
ad1a047
Quiet show migration spew.
xian Jul 17, 2023
b8bc2cb
Remove dead jcenter.
xian Jul 17, 2023
c78eabb
Switch to using application gradle plugin; clean up routing and build.
xian Jul 18, 2023
3c0cb5a
Bump to logback 1.3.11.
xian Aug 16, 2023
731337a
Deprecate `runPinkyJvm` gradle task.
xian Aug 16, 2023
429ba1d
Fix gh-pages deploy.
xian Aug 16, 2023
8fc0624
Fix grid visualizer offset bug.
xian Aug 16, 2023
8173018
Merge pull request #563 from baaahs/fix-grid-visualizer-offset
xian Aug 16, 2023
b496f49
Merge pull request #562 from baaahs/kotlin-1.9
xian Aug 16, 2023
979f9c5
Fix image upload.
xian Aug 16, 2023
5a53ae8
Add JDK <20 requirement to README
kcking Aug 16, 2023
2d74fa4
Add generated data to SoundAnalysisPlugin on simulator
kcking Aug 10, 2023
abe6abd
Update FileUploadView.kt
xian Aug 16, 2023
66700aa
Merge pull request #564 from baaahs/fix-image-upload-dropzone
xian Aug 16, 2023
de8e91c
update library index, bugfixes, add beat responsiveness from mockups
bencbartlett Aug 18, 2023
da18a80
Merge pull request #553 from bencbartlett/main
bencbartlett Aug 18, 2023
17fe97c
Merge pull request #556 from bencbartlett/wobby_lines_shaders
bencbartlett Aug 18, 2023
7550ac4
Merge pull request #558 from bencbartlett/moires_bad_trip
bencbartlett Aug 18, 2023
2fd9766
bump idf to v5.1 in sync-idf.sh
tgvarik Aug 18, 2023
512fb52
Merge pull request #566 from baaahs/fix/sync-idf-v5_1
xian Aug 18, 2023
ad6b71a
Bump to kgl 0.6.2.
xian Aug 20, 2023
51f73a5
Merge pull request #567 from baaahs/kgl-0.6.2
xian Aug 20, 2023
5b07ed3
Create typesafe wrappers for interacting with uniforms in feeds.
xian Sep 13, 2023
3a0bb98
Use typesafe uniform wrappers in most feeds.
xian Sep 13, 2023
09b672e
Refactor SingleUniformFeedContext to eliminate some boilerplate.
xian Sep 13, 2023
baeaabf
More cleanup of single-uniform feed context helper.
xian Sep 14, 2023
5259fec
Add support for GLSL arrays.
xian Sep 13, 2023
8b090e8
WIP: Idiomatic declaration and access to struct members.
xian Sep 13, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
93 changes: 93 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
version: 2
jobs:
build:
branches:
ignore: gh-pages

docker:
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
- image: cimg/openjdk:18.0.2-node

resource_class: medium+

working_directory: ~/repo

environment:
NO_GPU: "true"

steps:
- checkout

- run:
name: Checkout Submodules
command: |
git submodule update --init

- run:
name: Install Native Webcam Driver
comment: can be removed pending https://github.com/eduramiba/webcam-capture-driver-native/issues/15
command: |
pushd webcam-capture-driver-native && mvn install && popd

- restore_cache:
keys:
- v1-dependencies-{{ checksum "build.gradle.kts" }}
- v1-dependencies-

- run:
name: Prefetch Dependencies
command: |
./gradlew model -PisProduction

- save_cache:
paths:
- ~/.gradle
key: v1-dependencies-{{ checksum "build.gradle.kts" }}

- run:
name: Build
command: |
./gradlew build -PisProduction -xjsBrowserTest --stacktrace --no-daemon --no-parallel --info

- add_ssh_keys:
fingerprints:
- "e6:55:46:24:0b:66:40:62:f9:72:10:00:de:41:37:e6"

- run:
name: Save test results
command: |
mkdir -p build/test-results-circleci
find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} build/test-results-circleci/ \;
when: always

- store_test_results:
path: build/test-results

- store_artifacts:
path: build/processedResources/js/main

- store_artifacts:
path: build/reports

- run:
name: Deploy to gh-pages
command: |
if [ "${CIRCLE_BRANCH}" == "main" ]; then
mkdir -p build/gh-pages/.circleci
cp .circleci/gh-pages-config.yml build/gh-pages/.circleci/config.yml

cp -r build/dist/js/productionExecutable/* build/gh-pages

# don't ignore files starting with _
touch build/gh-pages/.nojekyll

echo "Build ${CIRCLE_BUILD_NUM:-unknown} at `date`." > build/gh-pages/BUILT.txt

git config --global user.email "[email protected]"
git config --global user.name "CI Builder"

mkdir -p deploy/node_modules
npm install --prefix deploy --silent [email protected]
`npm bin --prefix deploy`/gh-pages --dotfiles --message "Auto deploy" --dist build/gh-pages
fi
5 changes: 5 additions & 0 deletions .circleci/gh-pages-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
version: 2
jobs:
build:
branches:
ignore: gh-pages # prevent gh-pages from triggering circleci
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
build
.idea
.gradle
node_modules
.DS_Store
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "webcam-capture-driver-native"]
path = webcam-capture-driver-native
url = https://github.com/eduramiba/webcam-capture-driver-native
306 changes: 306 additions & 0 deletions CMakeLists.txt

Large diffs are not rendered by default.

91 changes: 91 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# BAAAHS Code of Conduct

## 1. Purpose

A primary goal of BAAAHS (Big-Ass Amazingly Awesome Homosexual Sheep) is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of age, gender, sexual orientation, sexual position (top, bottom, versatile), ability, ethnicity, socioeconomic status, technical ability, fashion-sense, and religion (or lack thereof).

This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.

We invite all those who participate in BAAAHS to help us create safe and positive experiences for everyone.

## 2. Open Culture Citizenship

A supplemental goal of this Code of Conduct is to increase open culture citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.

Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.

If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.

## 3. Expected Behavior

The following behaviors are expected and requested of all community members:

* Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
* Exercise consideration and respect in your speech and actions.
* Attempt collaboration before conflict.
* Refrain from demeaning, discriminatory, or harassing behavior and speech.
* Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
* Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.

## 4. Unacceptable Behavior

The following behaviors are considered harassment and are unacceptable within our community:

* Violence, threats of violence or violent language directed against another person.
* Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
* Posting or displaying violent material.
* Posting or threatening to post other people's personally identifying information ("doxing").
* Personal insults, particularly those related to gender, sexual orientation, sexual position, race, religion, or disability.
* Inappropriate photography or recording.
* Inappropriate physical contact. You should have someone's consent before touching them.
* Unwelcome sexual attention. This includes, inappropriate touching, groping, and unwelcomed sexual advances without consent.
* Deliberate intimidation, stalking or following (online or in person).
* Advocating for, or encouraging, any of the above behavior.
* Sustained disruption of community events, including talks, presentations, and parties.

## 5. Weapons Policy

No weapons will be allowed at BAAAHS events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives, and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter.

## 6. Consequences of Unacceptable Behavior

Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.

Anyone asked to stop unacceptable behavior is expected to comply immediately.

If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).

## 7. Reporting Guidelines

If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. Use our email: [email protected]

Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.

## 8. Addressing Grievances

If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify [email protected] with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.


## 9. Scope

We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business.

This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.

## 10. Contact info

[email protected]

## 11. License and attribution

The BAAAHS Code of Conduct is a fork of the Citizen Code of Conduct. The Citizen Code of Conduct is distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).

Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).

_Revision 2.3. Posted 6 March 2017._

_Revision 2.2. Posted 4 February 2016._

_Revision 2.1. Posted 23 June 2014._

_Revision 2.0, adopted by the [Stumptown Syndicate](http://stumptownsyndicate.org) board on 10 January 2013. Posted 17 March 2013._
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
The MIT License

Copyright (c) 2013-2019 BAAAHS

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
159 changes: 156 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,159 @@
# BAAAHS Simulator 2
# Sparkle Motion

[![CircleCI:main](https://circleci.com/gh/baaahs/sparklemotion.svg?style=svg)](https://circleci.com/gh/baaahs/sparklemotion)

Sparkle Motion is the system used to control the lights on [BAAAHS](http://baaahs.org), but it's
designed so it could be applied to pretty much any lighting project. It includes a browser-based
light show designer and performance interface, 3D light mapping, IP-based control protocol, and
custom LED control hardware and firmware. We designed it all pretty much from scratch, because
we're nerds. We hope you'll have some fun with it and maybe find it useful.

| ![SparkleMotionDemo-20220308](https://user-images.githubusercontent.com/40298/157351650-5b3338b7-757a-4e76-bfe2-743a06bb2891.gif) | <img src="/brc-2019.gif" alt="BAAAHS at BRC 2019" width="400"> |
| --- | --- |
| The Sparkle Motion [Simulator](https://baaahs.github.io/sparklemotion) | BAAAHS at Black Rock City, 2019 |


> **tl;dr:**
>
> Shows are built out of small scripts called shaders, which are written in
> [GLSL](https://www.khronos.org/opengl/wiki/Core_Language_(GLSL)). Lots of [awesome](http://glslsandbox.com/)
> [free](https://www.shadertoy.com/) shaders and [dev](https://github.com/radixzz/awesome-glsl)
> [tools](https://shaderfrog.com/) already exist on the internet. In the show designer, you can create or
> import shaders, and attach them to buttons or sliders in a customizable performance UI. Shaders can be
> combined in interesting ways to create new effects. You can make shows reactive to the environment by
> connecting external sensor data—like a beat detector, midi controller, sound spectral analysis, or a
> webcam—to shader variables.
>
> Sparkle Motion can control LED strips using
> [sACN](https://artisticlicenceintegration.com/technology-brief/technology-resource/sacn-and-art-net/)
> or our custom IP protocol, and Sharpy-style moving heads
> over DMX, but it could be extended to control pretty much any kind of device. Lights can be mapped to a
> 3D model using computer vision. Individual lighting fixtures, or groups of fixtures, can be controlled
> separately. All types of lights are controlled using the same language and idioms.
>
> On the hardware side, Sparkle Motion includes specs for an ESP32-based controller which you could build
> (or [buy from us](mailto:[email protected])!) managing WS2812-family LEDs, which is controlled over
> Ethernet or WiFi.

----

## Show Designer

A _show_ is a collection of shaders, attached to UI elements, which can be arbitrarily combined and made reactive to the
environment using sensors,

(more TK)

## Scene Configuration

Sparkle Motion shows may be designed with a specific model and display fixtures in mind, but most shows can be applied to any model and fixtures.

To facilitate this, Sparkle Motion separates configuration of scene elements (the physical model and fixtures) from visuals and the performance interface.

| Term | Definition |
| --- | --- |
| **Driver** | A pluggable software component that can talk to specific types of display controller hardware, e.g. Brains, WLED, or DMX USB dongles. |
| **Controller** | A physical component directly connected to display hardware, e.g. a Sparkle Motion Brain, a WLED controller, or a DMX USB dongle. One or more fixtures may be associated with a controller. |
| **Fixture** | A physical display device, e.g. a moving head, a pixel array surface (a.k.a. panel), an LED bar, etc. |
| **Scene/Stage?** | The collection of fixtures under control of Sparkle Motion, which may be identified as model entities, or anonymous. |
| **Geometry** | The physical shape of a pixel array fixture. |
| **Model** | A 3-dimensional model to which fixtures may be mapped. Models may be composed of OBJ files and explicitly placed entities. |
| **Entity** | An object within the model, e.g. a sheep panel or eye. |

Note that in some cases a single controller may control multiple fixtures. Commonly, a physical DMX USB dongle may have
multiple moving heads attached. It's possible (but less common) for a single brain or WLED controller to be attached to
multiple physical lighting fixtures.

Also, it's possible for a DMX controller to manage multiple DMX universes, e.g. in the case of a WLED controller
managing more than 170 pixels.

ERD:

Driver <->* Controller <->* Fixture <->? Entity *<--> Model

A fixture may be *identified* or *anomnymous*.

Identified fixtures are associated with an entity in the model, and therefore have a known position and geometry.

Anonymous fixtures are mostly for stuff like bikers-by. They are randomly placed within the model. Pixel arrays are assumed to be linear.

## Mapper

Sparkle Morton's mapper lets you detect arbitrarily-placed lights on a 2D or 3D model using just a camera
connected to a laptop.

(more TK)

## Hardware

(more TK)

[More here](brain/sw/README.md).

## Simulator

The entire system can be run within a web browser in simulation mode. Every component is modeled in software
so you can see how it will behave in the real world.


-->

## Old Documentation
* [Show API](show_api.md) (outdated)
* [API docs](https://baaahs.github.io/sparklemotion/doc/sparklemotion/) (outdated)

## Prerequisites

1. Install [Java](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html) and `maven`
- If using an arm64 mac, DMX device support for the native build of sparklemotion requires an x86 jdk which can be
downloaded [here](https://jdk.java.net/archive/).
- Make sure to pick a JDK < version 20 as [gradle does not currently
support
it](https://youtrack.jetbrains.com/issue/KT-57669/Add-Java-20-to-JvmTarget).
1. Checkout submodules
```bash
git submodule update --init
```
1. Manually install `webcam-native-capture driver`
```bash
cd webcam-capture-driver-native && mvn install
```
1. Open as a gradle project with [IntelliJ](https://www.jetbrains.com/idea/download/)

## Running from source

* Open as a gradle project with [IntelliJ](https://www.jetbrains.com/idea/download/)
* Open `src/jsMain/resources/index.html` using "Open in Browser -> Chrome" from IntelliJ context menu
### Simulator Mode

In simulator mode, most of Sparkle Motion runs within a web browser.

Run this in a shell window; a browser window will open with the simulator:

./gradlew --continuous jsRun

### Production Mode

In production mode, Sparkle Motion runs in a JVM process and talks to real hardware.

To start it, run:

./gradlew run

If you don't have a Brain running locally, do this too:

./gradlew runBrainJvm

When running in this mode you should be able to access the UI at http://localhost:8004

### Builds the production (minified) js package

To build the production minified js package run:

```
./gradlew jsBrowserWebpack
```

## CI & Deployment

Continuous build here: https://circleci.com/gh/baaahs/sparklemotion

Passing builds are automatically deployed here: https://baaahs.github.io/sparklemotion
Loading