Binomial stuff
One MS employee recently said to Stephanie (my partner) that (paraphrasing) "your company isn't stable and can't possibly last". My reply: We've been in business for over a year now, and our business...
View ArticleBasis's RDO DXTc compression API
This is a work in progress, but here's the API to the new rate distortion optimizing DXTc codec I've been working on for Basis. There's only one function (excluding basis_get_version()):...
View ArticleSeattle
I'm by no means an expert on anything San Diego, having been there only around 1.5 months since leaving Seattle. I did spend 8 years in Seattle though, and here's what I think:- Seattle is just way too...
View ArticleWhy crunch likes uncompressed texture data
We've recently gotten some interest in creating a RDO compressor specifically for already compressed textures, which is why I'm writing this.crunch works best with (and is designed for) uncompressed...
View ArticleThings learned while running your own self-funded startup
Here's a brain dump of the things we've learned while running our business and shipping our first product (Basis).My experience at Valve somewhat helped prepare me for doing this. Working at Valve was...
View ArticleOn whiteboard coding interviews
I'm in a ranty mood this evening. Looking through my past, one thing that bothers me is the ritual called "whiteboarding".I've taken and given a lot of these interviews. I personally find the process...
View Article"Universal" GPU texture/image format examples
The DXT1 images were directly converted from the ETC1 (really "ETC1S" - a compatible subset with no subblocks) data using a straightforward lookup table to convert the ETC1 base color to the DXT1...
View ArticleUniversal GPU texture format: DXT5 support
Got grayscale ETC1 to DXT5A conversion working, using a small 32*8*3 entry table. This work is for DXT5 support in the universal texture format. Now that this is working I can proceed to finishing the...
View ArticleMore universal GPU texture format examples
I've improved the quality of the ETC1S->DXT1 conversion process. All of these images come from the same exact ETC1 data. Only a straightforward transform is required on the compressed texture bits...
View ArticleUniversal GPU texture codec update
I've reduced the size of the ETC1->DXT1 lookup table to around 85KB, vs. the previous 3.75MB. There's a slight loss in quality (around .1 - .3 dB), but it's worth it. The larger table can still be...
View Article10 abusive company types
These categories were originally about abusive men, but my friend Stephanie noticed these categories could be adapted to describe abusive companies, too. From the book "Why Does He Do That?":1. Drill...
View ArticleLessons learned while developing Age of Empires 1 Definitive Edition
In late 2016 I began helping Forgotten Empires on Age 1 DE, a UWP app shipping in the Windows Store on Feb 20th. I only helped occasionally for the first couple months or so (because I was working on...
View ArticleAge DE's latency matrix
Getting the netcode to work reliably in a peer to peer multiplayer title is tricky. Every peer must be able to quickly and reliably send and receive packets with every other peer, or the whole thing...
View ArticleOn Age DE's pathing/movement
Typical Age DE forum post:The pathfinding in the game is terrible.First off, Age of Empires Definitive Edition is a remaster of Age of Empires. It's not a rewrite, it's not a new engine, and that's...
View ArticleBasis v1.11 with universal GPU texture support has shipped
We've sent drops to two companies so far. This is the first version that supports fast block-level transcoding of .basis files to multiple formats: ETC1 (mobile) or BC1-5 (desktop). This is a major...
View ArticleBasis update - now with PVRTC support!
Basis (our new GPU texture compression product and the successor to our popular open source crunch lib) now supports PVRTC1, along with ETC1 and BC1-5 (DXTc). This means a .basis file can be utilized...
View ArticleBasis GPU format support update
Our goal is to support all the GPU formats (literally). Here's an update on our format support:We just added PVRTC1 4bpp and BC7 support. PVRTC1 quality is approximately equal to PVRTexTool's middle...
View ArticleBasis feature support
Here's what we support right now:.basis universal format, which is transcodable to BC1-5, ETC1, PVRTC1 4bpp (currently opaque only), and BC7 (currently opaque only). Alpha support for PVRTC1/BC7 is...
View ArticleImaginary GPU formats
Every once in a while I wonder about alternative GPU texture format encodings. (Why not? It's fun.) There must be a sweet spot somewhere along the continuum between BC1 and BC7. Something that is more...
View ArticleBC7 encoding using weighted YCbCr colorspace metrics
I've written my second BC7 block encoder. My first was written in a straightforward way to gain experience with the format. My second was more focused on competing against the Fast ISPC Texture...
View Article