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

Shader editor autocompletion #423

Draft
wants to merge 2,191 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2191 commits
Select commit Hold shift + click to select a range
18dca6a
When a show or scene doesn't have an associated file, "Save" is handl…
xian May 9, 2022
07beaf1
UI cleanup
xian May 9, 2022
1d0d4cb
Merge pull request #438 from baaahs/pasturebedtime
merge-when-green[bot] May 9, 2022
ec30a24
Fix layering bug causing dimmed-out buttons in button groups.
xian May 10, 2022
41db96e
Merge pull request #439 from baaahs/pasturebedtime
merge-when-green[bot] May 10, 2022
8d504c6
Change toolbar color when in design mode.
xian May 10, 2022
189ef3e
Pull SacnController out of SacnManager.
xian May 11, 2022
dde1ea5
Bump kotlin-coroutines to 1.6.1 and kotlin-serialization to 1.3.2.
xian May 11, 2022
280174a
Bump to kotlin 1.6.21.
xian May 11, 2022
9ac4445
SacnManager should notify of errors and notify listeners in Pinky con…
xian May 12, 2022
d583f3f
Fix broken SACN end channel calculation.
xian May 12, 2022
10a40ff
Grid cells should be layered above shared GL canvas except for button…
xian May 12, 2022
43a64c4
Zoom visualizers to fit model.
xian May 12, 2022
d06d4cf
Fix bug WledsSimulator visualizer.
xian May 12, 2022
6a6b21d
Fix bug affecting simulations of SACN controllers needing more than o…
xian May 12, 2022
8a53539
Clean up slider properties editor.
xian May 12, 2022
c28bf2a
Clean up control view naming.
xian May 12, 2022
c8e5469
Scale button text width to fit.
xian May 12, 2022
909d1dc
Support GLSL functions taking array params.
xian May 12, 2022
f2fe71c
BeatLink-linked slider handles are easier to drag.
xian May 12, 2022
5c31547
Edit mode adds candy striping to app bar and app backgrounds.
xian May 12, 2022
8bbc056
Refresh of app toolbar action buttons.
xian May 12, 2022
0800414
Merge pull request #440 from baaahs/pasturebedtime
merge-when-green[bot] May 12, 2022
3048931
Merge pull request #441 from baaahs/pasturebedtime
merge-when-green[bot] May 12, 2022
3fb38ec
Pasture Bedtime show.
xian May 7, 2022
d29ce05
Arttitude scene and PastureBedtime show.
xian May 13, 2022
ddebc63
Fix bug causing BeatLink data to go to client but not server data feeds.
xian May 13, 2022
6f9c64c
Fix bug in moving head fixture config editor.
xian May 13, 2022
6520c17
Fix DirectDmxController channel range calculation.
xian May 13, 2022
41ce92e
Merge pull request #442 from baaahs/pasturebedtime-macmini
merge-when-green[bot] May 13, 2022
d4abbbd
Fix warnings in Pasture Bedtime show.
xian May 13, 2022
8792c0e
Cleanup.
xian May 13, 2022
352d26f
Add Hi-Res scene template.
xian May 13, 2022
e067c94
Don't let app toolbar action buttons wrap.
xian May 13, 2022
d09aa95
Add Sparklez and BeatShift shaders to shader library. Improve Heart.
xian May 20, 2022
cdcd63a
Denser grid for shader library.
xian May 20, 2022
6b537e8
Show modal shader detail view on button long-press.
xian May 20, 2022
9fd672d
Merge pull request #443 from baaahs/patch-modal
merge-when-green[bot] May 20, 2022
9abd7a7
Regularize VisualizerControlView naming.
xian May 20, 2022
d71bf33
Generated GLSL may be viewed from visualizer control.
xian May 20, 2022
fb31d9d
Not-anything-like-a-DAG visualizer for linked programs.
xian May 21, 2022
75aa36e
Semi-working DAG visualization!
xian May 21, 2022
d8d7eed
Extract reusable PaletteView for floating palette frames.
xian May 22, 2022
b5ac0ad
Pretty DAG visualization transitions!
xian May 22, 2022
6aed474
Remove leftover control from dev.
xian May 22, 2022
9785305
DAG auto-scaling and cleanup.
xian May 23, 2022
7070f94
Merge pull request #445 from baaahs/diagnostics
merge-when-green[bot] May 23, 2022
90cbae9
Include output device in DAG.
xian May 24, 2022
42b7c22
Merge pull request #446 from baaahs/diagnostics
merge-when-green[bot] May 24, 2022
b001555
Click on toolbar tab to switch between Show and Scene modes.
xian May 24, 2022
f13bede
Disable long-press popup on momentary buttons.
xian May 24, 2022
d7b84c7
Merge pull request #447 from baaahs/app-mode-tabs
merge-when-green[bot] May 24, 2022
52ddfa7
Add Pasture Bedtime sample show.
xian May 25, 2022
e290354
KglTracer logging via SparkleMotion const.
xian May 30, 2022
82dd2d6
Get RenderEngineTest working again.
xian Jun 6, 2022
26651a5
Fix moving head synesthesia.
xian Jun 8, 2022
84aa095
Bump lwgjl from 3.2.3 to 3.3.1.
xian Jun 8, 2022
ebdbda2
Shift from "pixel" to "component" in variable names in most places.
xian Jun 8, 2022
de1a819
RenderManager need not have a different GlContext for each fixture type.
xian Jun 8, 2022
3645e23
Merge pull request #450 from baaahs/fix-synesthesia
merge-when-green[bot] Jun 8, 2022
783779a
JsMapper (previously JsMapperUi) extends Mapper, replacing their form…
xian May 25, 2022
46c53ed
Llama notices.
xian May 25, 2022
da0e7b7
Keyboard shortcut changes:
xian May 25, 2022
a93c630
Mapper applies model transforms.
xian May 25, 2022
cc8c531
In the Mapper, camera positions may be saved using ctrl-shift-# and r…
xian May 25, 2022
cb5ae93
Support vi-style marks (mx, 'x) for camera position in mapper too.
xian May 25, 2022
91769bb
More renaming from MapperUi to Mapper.
xian May 25, 2022
2ee7bd5
Remove last traces of MapperUi.
xian May 25, 2022
902c5fd
Mapper — load image captures from mapping sessions.
xian May 27, 2022
1233bc8
Provide DMX universe dumps in UI for debugging moving heads.
xian May 29, 2022
cb38ab9
Fix projection shader preview for non-Surface PixelArray fixtures.
xian May 30, 2022
ba8ffba
Pasture Bedtime show update.
xian Jun 2, 2022
d4ab3e8
Base mapping for refurbished panel 2D, with weird off-by-four-pixels …
xian May 30, 2022
5db16a6
Merge pull request #451 from baaahs/campout-2022
merge-when-green[bot] Jun 8, 2022
2352411
Opening a palette window from within the Simulator app fails.
xian Jun 15, 2022
467cc32
Merge pull request #455 from baaahs/fix-452
merge-when-green[bot] Jun 15, 2022
b56085c
change `shader-libraries` directory structure; split shaders from eff…
bencbartlett Jun 16, 2022
11b0ddf
import lots of shaders from `commonMain/old-resources/baaahs/shows` a…
bencbartlett Jun 16, 2022
476dc6b
add one of my shaders and a copy-pasteable complex math library for f…
bencbartlett Jun 16, 2022
606a53f
Move shader library files back into built-in so it's findable.
xian Jun 20, 2022
d4adb37
Fix bug in GLSL hint resolution that was causing attempts to resolve …
xian Jun 20, 2022
a07e253
Per ShaderToy, iMouse is a vec4.
xian Jun 20, 2022
e88347c
Self-referencing macros cause 'splosions.
xian Jun 20, 2022
7ae4626
GLSL function params may start with underscores.
xian Jun 20, 2022
63b390b
We need to wrap the shader library previews in a shared GL context or…
xian Jun 20, 2022
18475b6
Nicer error message when shader library index refers to a non-existen…
xian Jun 20, 2022
ee3bb64
Don't throw in shader preview if a moving head param is NaN.
xian Jun 20, 2022
fb8a1c9
Incorporate Pasture Bedtime changes from campout.
xian Jun 19, 2022
51d1a6f
Refactor/DRY ButtonControlView.
xian Jun 19, 2022
d598638
BeatLink should attempt to use a player id above 4, so we work witih …
aphexcx May 28, 2022
1a85c46
Properly render moving head adapter name in controller setup.
xian May 28, 2022
ebc2f5b
Include last error message and time in controller info display.
xian Jun 19, 2022
8da32b9
Fix ambiguous field reference.
xian Jun 19, 2022
000a958
Don't throw in shader preview if a moving head param is NaN.
xian Jun 20, 2022
51a0ab3
Support for uploading shows and scenes.
xian Jun 23, 2022
6acbd94
Dropzone/file upload cleanup.
xian Jun 25, 2022
df25780
Upload data is a string.
xian Jun 25, 2022
4746d07
Add shadow behind control edit and delete buttons for legibility.
xian Jun 25, 2022
c4d5ca5
Slider ticks include fraction when tick scale is 1x.
xian Jun 25, 2022
5f07358
Show preview slider in slider props editor.
xian Jun 25, 2022
46a9ec8
Merge pull request #457 from baaahs/file-upload
xian Jun 27, 2022
cf5d02a
Fix bug in GLSL hint resolution that was causing attempts to resolve …
xian Jun 20, 2022
229b3ab
Per ShaderToy, iMouse is a vec4.
xian Jun 20, 2022
506fbbf
Self-referencing macros cause 'splosions.
xian Jun 20, 2022
828c266
GLSL function params may start with underscores.
xian Jun 20, 2022
3a30dc7
We need to wrap the shader library previews in a shared GL context or…
xian Jun 20, 2022
a4a4b6f
Nicer error message when shader library index refers to a non-existen…
xian Jun 20, 2022
2c45c5c
Merge pull request #458 from baaahs/misc-fixes
merge-when-green[bot] Jun 28, 2022
5764871
Video in datasource.
xian Jun 28, 2022
f289cb6
Merge branch 'baaahs:main' into main
bencbartlett Jun 28, 2022
85be86d
Merge pull request #1 from baaahs/bencbartlett-main
bencbartlett Jun 28, 2022
f132d4a
Support adding buttons directly to button group grid.
xian Jun 28, 2022
54111f4
Long press on buttons only brings up shader detail for primary button…
xian Jun 30, 2022
17e2f48
Better grid alignment when button groups show title.
xian Jun 30, 2022
6604be9
Nicer error message for missing plugins.
xian Jun 30, 2022
a31839a
Merge pull request #461 from baaahs/grid-workaround
merge-when-green[bot] Jun 30, 2022
6cdb1ed
Disable VideoInPlugin for now. Only works in simulator.
xian Jun 30, 2022
8c1059e
Merge branch 'video-in' into main
xian Jun 30, 2022
6224d4b
Long press handler was broken.
xian Jul 4, 2022
b28a9ae
Rename "Shader Channel" to "Stream".
xian Jul 5, 2022
4f7a46e
Merge pull request #462 from baaahs/rename-shader-channel-to-stream
merge-when-green[bot] Jul 5, 2022
22e2336
Fix monitor non-noticing of the incoming scene.
xian Jul 5, 2022
b878999
Diagnostics displays patch DAG and errors even if the guru meditation…
xian Jul 5, 2022
b1bc616
Add ImageDataSource. Supports animated GIFs.
xian Jul 5, 2022
44a9a27
Add Hi Res scene.
xian Jul 6, 2022
444f9bd
Fix program linking edge cases.
xian Jul 6, 2022
9fbf7dd
Add Image Overlay to PastureBedtime template.
xian Jul 6, 2022
f449a11
Merge pull request #456 from bencbartlett/main
xian Jul 17, 2022
ed35c44
Implement 2logn mapping algorithm.
xian Jun 3, 2022
89f8c52
Extract TwoLogN and OneAtATime algorithms as mapping strategies.
xian Jul 20, 2022
6fbba40
Extract mapping strategies to seperate files.
xian Jul 20, 2022
e8bcb6d
Rename BrainToMap to MappableBrain.
xian Jul 20, 2022
891e174
Move mapper ui access back into MapperUi interface.
xian Jul 20, 2022
cabed53
Mapper refactoring.
xian Jul 22, 2022
610e0fb
Mapper UI cleanup.
xian Jul 22, 2022
b84994d
Merge pull request #449 from baaahs/mapper-2logn
merge-when-green[bot] Jul 22, 2022
2f13a8d
refactor #define statements to function because for some reason spark…
bencbartlett Jul 26, 2022
36b6879
Image upload works. Dodgy UI.
xian Jul 7, 2022
e6e329e
Fix lwjgl native lib selection so we can run natively on M1 JVM.
xian Jul 26, 2022
0e5034d
Fix spurious bug in --simulate-brains.
xian Jul 26, 2022
3f54816
Merge remote-tracking branch 'origin/main'
bencbartlett Jul 26, 2022
2305a28
Fix tests.
xian Jul 26, 2022
478c7da
Merge pull request #463 from baaahs/image-datasource
xian Jul 26, 2022
4b8703c
Oops fix build.
xian Jul 26, 2022
995214e
Mapping strategy can be chosen from UI.
xian Jul 22, 2022
1e39387
Clean up status messages during TwoLogN mapping.
xian Jul 23, 2022
5f0ab00
Save camera zoom and focal offset in CameraPosition too.
xian Jul 23, 2022
5966800
Warn on controller removal bug instead of failing.
xian Jul 23, 2022
02f6f10
Make server reconnect message visible.
xian Jul 23, 2022
36264f4
glsl construction of the BAAAHS logo, as well as minified version
bencbartlett Jul 27, 2022
bcac05a
Added new BAAAHS eclipse shader
bencbartlett Jul 27, 2022
1606e98
Merge pull request #464 from bencbartlett/main
xian Jul 27, 2022
c67e840
Debugging and troubleshooting improvements for 2logn mapping.
xian Jul 26, 2022
09a833e
Cleanup for twologn mapping strategy visualizing.
xian Jul 29, 2022
491b1f2
Merge pull request #465 from baaahs/mapper-2logn
merge-when-green[bot] Jul 29, 2022
3cbedac
Pixel count and format can be specified by user during mapping.
xian Jul 29, 2022
4545381
Merge pull request #466 from baaahs/mapper-2logn
merge-when-green[bot] Jul 29, 2022
5e8d661
Add data source giving a pixel's distance to the nearest edge (in mod…
xian Aug 1, 2022
36005d0
Fix shader help code background color.
xian Aug 2, 2022
0f599db
Merge pull request #468 from baaahs/distance-to-edge
merge-when-green[bot] Aug 2, 2022
54eeb01
Array params can use a macro expansion as the size.
xian Aug 3, 2022
583f2f4
Weird workaround for macros in param array declarations.
xian Aug 3, 2022
45a72b4
Merge pull request #471 from baaahs/fix-array-params-better
merge-when-green[bot] Aug 3, 2022
2e3b135
Remove some dead controls.
xian Aug 3, 2022
043d08f
Prettier startup progress.
xian Aug 3, 2022
f7ff04e
Remove some noise from logs.
xian Aug 3, 2022
3c0adc4
Oops, default to red-green-blue not ruth-bader-ginsberg.
xian Aug 3, 2022
48e4db9
Don't blow up trying to render an empty scene.
xian Aug 3, 2022
4c0db49
add color_palletes library
bencbartlett Aug 3, 2022
8055503
Merge remote-tracking branch 'origin/main'
bencbartlett Aug 3, 2022
16ff3dc
Retry pixels missed during 2logn mapping.
xian Jul 30, 2022
fff144c
Pixels can be moved around (but not saved).
xian Aug 1, 2022
fcd5337
Merge pull request #472 from bencbartlett/main
xian Aug 4, 2022
3e694d3
Fix mapper image retrieval in production mode.
xian Aug 5, 2022
6537ca3
Rename Scene's "Surface Mapping" tab to Mapping".
xian Aug 5, 2022
a2512e2
tutorial wip
nzoschke Aug 6, 2022
bb91f13
add Scanner shader, running a show, and next steps sections. Copy edit
nzoschke Aug 6, 2022
74447ed
document shortcuts; resetting the simulator
nzoschke Aug 6, 2022
0a4104c
move BAAAHS template to next steps
nzoschke Aug 6, 2022
abf9841
move flat projection into library
nzoschke Aug 6, 2022
caefc85
use vacuity over download and upload
nzoschke Aug 6, 2022
0f77700
Mapper 2log(n) strategy stores composed and direct pixel images; cons…
xian Aug 4, 2022
911df52
Move pixels closer together in Hi Res scene template so it doesn't ap…
xian Aug 8, 2022
7b3232a
Move pixels closer together in Hi Res scene template so it doesn't ap…
xian Aug 8, 2022
77542cf
Better error message on missing mapping file.
xian Aug 8, 2022
cca6da7
Fix mapper UI camera rotation save/restore.
xian Aug 8, 2022
5da5562
Hide mapping strategy switch and positioning controls except when we'…
xian Aug 8, 2022
375dc72
Larger pixel position sprites in mapper.
xian Aug 8, 2022
5109a31
Wait 10 seconds between mapper controller resets so individual pixels…
xian Aug 8, 2022
6ec26bf
Add tutorial doc
nzoschke Aug 8, 2022
df78d09
Merge pull request #474 from baaahs/mapper-2logn
xian Aug 9, 2022
85c094f
add geometric sheep shader; bugfixes
bencbartlett Aug 10, 2022
a37371a
add color functions and beat functions libraries; bugfixes
bencbartlett Aug 16, 2022
6aaddb3
new BAAAHS_ColorPulse shader!
bencbartlett Aug 16, 2022
54c30b3
add fake beating to eclipse shader
bencbartlett Aug 16, 2022
73a050f
add fromCenter option to the colorpulse shader
bencbartlett Aug 16, 2022
e4e535d
new geometric color pulse shader!
bencbartlett Aug 16, 2022
de71f76
add pulsedTime utility
bencbartlett Aug 16, 2022
62db633
add baaahs-optimized SQUAREZZZ shader
bencbartlett Aug 16, 2022
9de74bf
add LAZORS shader (WIP, doesn't work in sparklemotion yet...)
bencbartlett Aug 18, 2022
5ec3c5f
Add plasma shader to the library
nzoschke Aug 22, 2022
d45980e
Merge pull request #487 from baaahs/plasma-shader
nzoschke Aug 22, 2022
cd315ac
Merge branch 'baaahs:main' into main
bencbartlett Aug 22, 2022
224f096
Change firmware update log message from debug to warn.
xian Aug 23, 2022
60e2c33
Hide unused switch controls from vacuity.
xian Aug 23, 2022
dd0dd30
Merge pull request #488 from baaahs/hide-unused-switch
merge-when-green[bot] Aug 23, 2022
48f4d1f
Merge branch 'baaahs:main' into main
bencbartlett Sep 8, 2022
fdc3bcc
on-playa shader updates and bugfixes
bencbartlett Sep 8, 2022
fec1c3a
(on-playa) added blackout, scanner, sound brightness, and zigzag effects
bencbartlett Sep 8, 2022
64f4aad
Update to state at Burning Man 2022; ben lightshow updates
bencbartlett Sep 8, 2022
4dcc3d3
Fix long-press-event.min.js in prod.
xian Aug 27, 2022
14ca723
Fix Patch Diagnostics for simulator, sort of.
xian Sep 12, 2022
05272f0
Merge pull request #492 from baaahs/fix-sim-diagnostics
merge-when-green[bot] Sep 12, 2022
a55311a
Introduce patch mods: pluggable adjustments that can be applied to fe…
xian Jul 14, 2022
04b9f5f
More patchmods.
xian Aug 4, 2022
3439707
Add Feeds patch diagnostic.
xian Aug 17, 2022
ba3dee2
Patch mods: kinda working/still buggy!
xian Aug 23, 2022
5dae3aa
Clean up position/scale patch mod.
xian Aug 23, 2022
4a5f776
Hide unused switch controls from vacuity.
xian Aug 23, 2022
a2142a8
Add Ben's show as a template.
xian Aug 27, 2022
68c2d27
Button groups may allow for multiple selection.
xian Aug 27, 2022
851baa3
Add reset button for sliders and xypads.
xian Aug 27, 2022
530563e
Fix long-press-event.min.js in prod.
xian Aug 27, 2022
869f890
Fix clickability of non-button items in button groups.
xian Aug 31, 2022
e3d7392
Try to fix color clipping in Safari visualizer.
xian Aug 31, 2022
57622ec
Pinky can be paused in simulator.
xian Sep 12, 2022
1429759
Disable uniform spying for now, and remove some spurious logging.
xian Sep 13, 2022
2666638
Merge branch 'main' into patchmods
xian Sep 13, 2022
8a49be9
Pretty up DAG presentation of patchmods.
xian Sep 13, 2022
1ebb8aa
Fix specs for patchmods.
xian Sep 15, 2022
bf630d2
Fix spec related to multiple selection button groups.
xian Sep 15, 2022
3c5c3c9
Patch detail popup includes controls relevant to the patch.
xian Sep 15, 2022
a3626f4
Extract patchmods to individual files.
xian Sep 15, 2022
886c262
Merge pull request #493 from baaahs/patchmods
merge-when-green[bot] Sep 15, 2022
ab79cc9
Merge pull request #475 from bencbartlett/main
xian Sep 17, 2022
696849e
Errors in datasource declaration comments don't crash UI.
xian Sep 17, 2022
2124469
Use pointer events rather than mouse events for XY pad.
xian Sep 17, 2022
f0849b5
Merge pull request #495 from baaahs/fix-491
merge-when-green[bot] Sep 17, 2022
f329d35
Further fix for xypad manipulation on iPad: prevent viewport scrolling.,
xian Sep 17, 2022
7e077e5
Merge pull request #494 from baaahs/fix-482
xian Sep 17, 2022
df5b586
Merge pull request #496 from baaahs/fix-491
merge-when-green[bot] Sep 17, 2022
79f225f
Bump to Kotlin 1.7.10.
xian Aug 2, 2022
2221c09
Fix build for Kotlin 1.7.
xian Sep 21, 2022
5f1d80f
Use a BOM for kotlin wrappers.
xian Sep 21, 2022
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
149bfba
WIP: shader editor autocomplete
xian Sep 23, 2022
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
  •  
  •  
  •  
73 changes: 73 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
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: circleci/openjdk:11-jdk-node-browsers

working_directory: ~/repo

environment:
NO_GPU: true

steps:
- checkout

- 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"

- store_test_results:
path: build/reports/tests

- 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/distributions/* 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
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.
146 changes: 143 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,146 @@
# 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)
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 runPinkyJvm

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