All Projects → RoyCurtis → Flurry-WebGL

RoyCurtis / Flurry-WebGL

Licence: other
WebGL port of Flurry screensaver

Projects that are alternatives of or similar to Flurry-WebGL

XScreenSaverWin
XScreenSaver for Windows
Stars: ✭ 76 (+31.03%)
Mutual labels:  screensaver, port
Pancake.hx
Haxe port of awesome HTML5 game framework Pancake!
Stars: ✭ 16 (-72.41%)
Mutual labels:  port
tes3mp-android
tes3mp ported to Android devices (using CrabNet). Forked from xyzz/openmw-android.
Stars: ✭ 47 (-18.97%)
Mutual labels:  port
ShortcutBadger
Xamarin.Android library supports badge notification like iOS in Samsung, LG, Sony and HTC launchers. Port of
Stars: ✭ 24 (-58.62%)
Mutual labels:  port
xash3d-switch
Check out https://github.com/fgsfdsfgs/xash3d-fwgs for an updated version
Stars: ✭ 60 (+3.45%)
Mutual labels:  port
nsplayer
A web player with shakaplayer & hls.js both supported
Stars: ✭ 23 (-60.34%)
Mutual labels:  fullscreen
langtons-ant
Langton’s Ant macOS screen saver written in Swift
Stars: ✭ 12 (-79.31%)
Mutual labels:  screensaver
blobwarsAttrition
A C source port of Blob Wars : Attrition
Stars: ✭ 19 (-67.24%)
Mutual labels:  port
MusaicFM
Screensaver inspired by Apple’s inbuilt iTunes Screensaver. It can display Artwork by Spotify or last.fm Profile Data.
Stars: ✭ 223 (+284.48%)
Mutual labels:  screensaver
fullscreen-card
Make your Home Assistant browser fullscreen with one tap.
Stars: ✭ 23 (-60.34%)
Mutual labels:  fullscreen
StbSharp
C# port of the famous C framework
Stars: ✭ 62 (+6.9%)
Mutual labels:  port
MinecraftC
A Raytraced Minecraft Classic 0.0.30a port to C
Stars: ✭ 250 (+331.03%)
Mutual labels:  port
LibQtScreen
Qt library for making directx and opengl screenshots.
Stars: ✭ 43 (-25.86%)
Mutual labels:  fullscreen
chrome-extension-aspectratio219
🖥️ Fit the screen properly in fullscreen mode on monitor ultrawide with 21:9 aspect ratio (Netflix, Youtube, PrimeVideo, Crunchyroll)
Stars: ✭ 28 (-51.72%)
Mutual labels:  fullscreen
h5-video-player
Browser full-screen H5 video player.
Stars: ✭ 14 (-75.86%)
Mutual labels:  fullscreen
FazPort
FazPort is an advanced Perl Port Scanner. Scan and Detect open port in every website(s) you want.
Stars: ✭ 16 (-72.41%)
Mutual labels:  port
IP-Monitor
CSDN博客
Stars: ✭ 32 (-44.83%)
Mutual labels:  port
p2p-forwarder
P2P Forwarder - a tool for farwarding tcp/udp ports. Made using libp2p.
Stars: ✭ 31 (-46.55%)
Mutual labels:  port
LiteraryClockScreenSaver
MacOS screen saver to display time in the form of literary quotes. Based on way cooler https://www.instructables.com/id/Literary-Clock-Made-From-E-reader/
Stars: ✭ 64 (+10.34%)
Mutual labels:  screensaver
HakkaSaver
a transparent screen saver trying to protect you instead of the monitor
Stars: ✭ 21 (-63.79%)
Mutual labels:  screensaver

This is a WebGL/Javascript port of Flurry from the original code by Calum Robinson ( website ).

This was my first excercise in OpenGL, WebGL, Three.JS, reading Obj-/C/++ code, reading AltiVec code and porting a legacy app, all at once. As such, this port is unoptimal, buggy and may not be a 1:1 perfect implementation of flurry. But it works!

Demo

Demo can be found on this page. Press H to hide the settings GUI and press F11 for full-screen.

License

Flurry-WebGL is licensed under the MIT license. See LICENSE.md for full notice.

Structure

This is run through a single HTML page that links to many javascript files, using some external libs from a CDN. The file structure matches similarly to the original C code:

  • Flurry.js - Entry point and holds the main namespace (Flurry) and objects (renderer, gui, etc)
  • GLSaver.js - Holds Flurry state, config, 3D setup and render loop
  • Renderer.js - WebGL rendering code and helper functions for loading shaders, setting up buffers, etc
  • Star.js - Represents the physical core of a "flurry", where all "streams" attach to
  • Spark.js - Represents a single physical "stream" attached to a flurry's star.
  • Smoke.js - Represents the particle emitter that gives physics to and draws the particle meshes, making use of the flurry's star and sparks
  • SmokeParticle.js - Represents a group of four particle quads (unsure why particles are grouped in fours)
  • Texture.js - Generates and holds the texture that the smoke particles use (actually an 8x8 grid of spots, each one with added speckle)
  • data/ - Holds pre-defined data, such as presets
  • enums/ - Holds enums, such as those for colors and blend modes
  • util/ArrayOf.js - Helper methods for creating an Array of something (with each element already initialized)
  • util/Colors.js - Helper method for parsing dat-gui's color controller values
  • util/Math.js - Extension to Javascript standard Math to provide some Clib-like functions
  • util/Vectors.js - Helper methods for creating "vectors" using typed arrays

Dev notes

See docs/DevNotes.md for rough notes jotted down during the porting process.

TODO

  • Restructure and clean up the code
  • Multiple/per-monitor flurry? (perhaps package Flurry as a web component?)
  • Better support for mobile (alternative GUI to dat.gui?)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].