-
A. Schneider, "Real-Time Volumetric Cloudscapes," in GPU Pro 7: Advanced Rendering Techniques, 2016, pp. 97-127. (Follow up presentations here, and here.)
-
S. Hillaire, "Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite" in Physically Based Shading in Theory and Practice course, SIGGRAPH 2016. [video] [course notes] [scatter integral shadertoy]
-
[R. Högfeldt, "Convincing Cloud Rendering – An Implementation of Real-Time Dynamic Volumetric Clouds in Frostbite"](https://odr.chalmers.se/hand
UPDATED 3.12.2020
The old version of youtube with "disable_polymer" is not working anymore, so the script also stopped working.
Thanks to JanTheDeveloper we have a new working script. Big up!
I just changed the '//span[contains(text(),"Watch later")]',
to '//span[contains(text(),"Remove from")]',
and it should work for any playlist, not just the watch later one. (thanks to hudsonite for the tip)
setInterval(function () {
document.querySelector('#primary button[aria-label="Action menu"]').click();
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// == Custom observable operator to get firebase keys onto a stream with the standard valueChanges() | |
// Code based on: https://github.com/ReactiveX/rxjs/blob/master/doc/operator-creation.md | |
export function key$() { | |
// We *could* do a `var self = this;` here to close over, but see next comment | |
return Observable.create(subscriber => { | |
// because we're in an arrow function `this` is from the outer scope. | |
// var source = this; | |
// save our inner subscription | |
var subscription = this.subscribe(value => { | |
// important: catch errors from user-provided callbacks |