So what’s this all about? The technologies above say it all, right? We’re kicking off a new series of challenges for all your gamers, web and hardware geeks. We just launched our first challenge with $3,400 in prize money!
We’ve developed an interesting model where we’re using React.js with WebGL as the backend for rendering a set-top box interface. There are a bunch of considerations around this development in terms of using immediate mode for rendering everything on screen in every frame (right up your alley if you’re a games programmer already!), the hierarchy of objects on screen (this is pretty much set in stone unless you can provide an awesome reason why not) but outside of that the world is your oyster.
The Horizon Vault 2.0 is a set of components that uses the React library (http://facebook.github.io/react/) for defining the user interface of a television-based UI. This code is being used as a proof of concept to show React based components running in HTML on a Raspberry Pi B+ embedded system. The current library implementation targets WebGL and a few basic components, specifically a single canvas, rectangles (quads), text, and images.
What could help me?: A Raspberry Pi B+
Why?: Optimizing the code to work on this hardware is your best chance to victory! Though of course – we’re happy to review your code in terms of performance as the challenge runs and provide constant feedback through the challenge forum.
Note: You do not need a Raspberry Pi B+ to compete in this challenge, but it would be helpful if you already have one. You can get consistently get feedback on your submission (in terms of FPS) by submitting to the challenge and the copilot will give you feedback to let you know how it performs through the forum.
First Challenge: Horizon Vault 2.0 – WebGL and Raspberry Pi optimization challenge.
Problem Description and Objective
We have a proof of concept UI that is based on an existing client system. This existing system is provided as a part of the challenge. The goal for this challenge is to optimize the proof of concept so that it runs at a high constant frame-rate on the Raspberry Pi B+. We are looking for 20 FPS as the absolute minimum for success but any increase above and beyond this will help your chances. (Current implementation gets between 7 and 15 FPS)
Suggested Optimizations could include:
- Caching as much as possible and reuse shaders and other elements wherever possible
- Only drawing what is in the bounds of the screen’s viewport.
- Aggressive drawing of only visible pixels – if something is behind another, opaque element, only the front pixels would be rendered.
- Update the definition of the proof of concept to be leaner. It’s important that the proof of concept keep the same general layout for the row and cell definitions so the code is still readable.
- Anything you can imagine (with justification)
The current codebase is in Gitlab here: https://gitlab.com/katynp/tchorizon There is a README describing how to build and host the code locally, as well as documentation on how to install the Raspberry Pi image and connect it to the codebase hosted on your development computer if you have one. The README also has links to the Raspberry Pi image file and deployment instructions.
To get access to the code you’ll need to sign up for the challenge and leave your Gitlab username in the forum for access.