I'm not kidding. Due to differences between the OpenGL ES and WebGL spec processes, crucial definitions of floating point texture support were left out of the extension spec by mistake, and had to be monkey patched with weird followup extensions. I've read followup threads in the WebGL mailing lists, and people are cursing each other out over this.
At least they sorted all this out in WebGL 2.0, so, we can just wait for that to roll out, right?
There are two routes to enable floating point textures in WebGL 1: single precision float, and half precision float. While half float textures are widely supported, float textures aren't. Why is this?
Reason #1: mobile device hardware has wider support for half floats. They're lower precision, but they save tons of space.
Reason #2: they FUCKED UP the rollout. 😳 By mistake, the float textures extension spec was written too ambiguously, so they patched it with other specs and made a mess.
The difference between a byte and a single precision float is huge. You can represent almost any number you can think of as a float.
Wherease a byte can only store a WHOLE NUMBER between 0 and 255.
Screw that, let's go with the floats, right? Support for floating point textures is immensely popular on graphics hardware nowadays, and it's reasonable to expect it in WebGL too.
But even the oldest WebGL/OpenGL extensions are *optional*— and if a browser vendor doesn't like one, it's out.
So, let's say you want to apply special effects to your graphics, like a badass green glow. Like most digital graphics techniques, special effects boil down to doing math on pixels. And if you want your special effects to look good, you need your pixels to store precise information.
By default, a pixel in a WebGL texture is just four bytes— one byte per channel of RGBA. That's a non-starter.
But WebGL has optional extensions for textures that are four single or half precision floats per pixel!
When I first made this project in '18, I tested it in a few Mac browsers and then set it aside. My recent switch to Android got me checking my projects in various browsers across devices, and I realized something was going wrong in Mobile Safari.
This might surprise uh NO ONE, but even in a Khronos spec based on a 16 year old industry standard, there is enough wiggle room for human error to creep in and cause browser implementation differences. In this case, it's due to floating point textures.
WebGL is not only verbose, it's also designed the way people thought graphics ought to be drawn twenty years ago; using it is hard! So most people who make 3D web content build on top of a library, like ThreeJS. I did! Zero shame in it, it's perfectly sensible to slingshot your project past the "wtf is gltexsubimage2d" phase of 3D web graphics, and into the cool zone.
For instance, my Matrix demo was originally a ThreeJS project. But as we'll soon see, it's changed quite a bit, and so have I 😁
All right, folks, how about I follow through on what I said a month ago, and post something about #WebGL?
Hi friends, the small (15 ppl) startup I work at is hiring a JS developer and will be hiring for other eng positions soon. I feel lucky to be working here. Ping me if u have questions!
RTs appreciated <3
a few snippets from our open-source handbook:
Merv Pro Tip: If you forget which rooms you can hashtag, just type "#the" in the search bar and there they all are
Updated the written lore for Nowhere as well now. This one was initially a lot worse than Omniontiac, eesh.
Does anyone have any tips on getting started doing contract work in the graphic design / webstuff space? My wife and I are looking into taking contract work, and we're entirely new to this space.
We just went through the trouble of making a Fiverr account, and so far using the site has been a travesty. I feel like I'm barking up the wrong tree.
Hello there, I'm REZ.
I'm a demoscener since 1993, actually member of a group named RAZOR 1911 as coder.
I'm still living in the 80's, that's probably why I love so much big pixels and lowfi musics!
One of my latest work was a software 3D engine running on the lovely PICO-8 fantasy console:
If you're an omnivore like me but want to try veganism for a short period, might I recommend visiting Philadelphia's Mütter Museum?
I've just spent thirty minutes starting back at pickled anatomical anomalies and wax reproductions of the diseases of the face, and now I'm so turned off by meat that I'm contemplating rewriting my website in C99.
Happy 02020 CE, Merveilles!
Sorry for not being online recently, I've gotten sidetracked. My mobile OS (and browser) switch led me down the frustrating rabbit hole of WebGL extension support on mobile devices.
WebGL is actually in a bizarre state nowadays. Over the holidays I've struggled to figure out how I'll convey what I've learned. Watch this space!
Merveilles is a community project aimed at the establishment of new ways of speaking, seeing and organizing information — A culture that seeks augmentation through the arts of engineering and design. A warm welcome to any like-minded people who feel these ideals resonate with them.