Hello AppGameKit fans,
nearly two years back, I ask about ASTC
https://forum.thegamecreators.com/thread/218221
The reasons are clear:
- memory save
- performance
So this video was published for optimising "apps" for the Oculus Quest.
I am working since 2016 on a project for the OUYA, and I made the same optimisations, if possible.
So it is nearly the same as for Low-end PCs or mobiles devices. Because you would need about 20 times the performance of a normal game. Why?
If my game could run on a Raspberry Pi or an OUYA with 1280 x 720 @30 fps and maybe some frame drops here and there with maybe only 20 FPS, it would be playable.
The Oculus Quest / Go has 1,600-by-1,440 pixel per eye. That is about 2.5 times the resolution, but because of the two eyes, that's 5 times the resolution.
The Oculus Quest has a 72 Hz refresh rate, Rift and Vive 90 Hz.
So if we would have 20 FPS on a Raspberry Pi and can play a game, we would need about 4 times the FPS for VR.
That means, 5 times the resolution, 4 times the refresh rate, so our game has to be 20 times faster for VR than it is on the OUYA / Raspberry Pi.
Okay. A PC and the Snapdragon 835 with Adreno 540 has about 567 gflops and the OUYA only about 12 gflops. The Raspberry Pi has a VideoCore4 graphics with about 24 gflops.
So, what I am trying to say is, if we could optimizes the performances on OUYA and Raspberry Pi to 20 ~ 30 FPS at 720p, that would be also great for VR.
Why texture compression? The OUYA supports DXT because of the Tegra 3. The Raspberry Pi ... puh, I don't know.
The NES / SNES classic mini are based on Mali-400 GPUs, they support OpenGL ES 2.0 and also ETC1 texture compression.
I understand the biggest problem with texture compression, and that there are a lot of formats out there.
The NES / SNES classic mini only have 256 MByte of RAM. The GPU and CPU are nearly as good as of an Raspberry Pi or an OUYA.
But with only 256 MB RAM it is very limited.
We at this moment only use 32 Bit RGBA pixels with AppGameKit. With ETC1 we could have 4 Bits per Pixel. It would be maybe not 1:8, but maybe 1:2.6 because of ETC1 has no support for alpha.
Maybe sometimes it would also help, to could store 24 Bit images in memory. Most of the textures have no ALPHA, but we use the memory.
e.g. the mali 400 and also the OUYA are able to understand 4k x 4k textures, with AppGameKit at the moment that are about 64 MB in memory.
The OUYA has about 1 GByte of RAM, the SNES / NES classic mini only 256.
So the OS needs some memory as well, maybe we have about 128 MB on a SNES / NES classic mini. That would be only 2 textures. All light baked in. No normal maps, no specular, etc. Only diffuse with shadows "_D2" in FPSC Classic terms.
With 24 Bit texture memory and not 32 Bit texture memory we could save about 25% in the most places. With grayscale textures (8 Bit monochrome), maybe we could save here and there also some, like with gras, stones, walls ...
And with compression we could maybe save up to 1:4, and could have not only 2 textures in memory, but 8.
Why would we need 8? We could stream textures. Have day/night cycles. Could change locations. Have open worlds with different environments.
https://support.humblebundle.com/hc/en-us/articles/209194967-Humble-Mobile-Bundle-14-Oddworld-Stranger-s-Wrath? wrote: "
ATC
This is for the vast majority of phones.
Devices: North American/European GS3/4/5/6, Note 2/3/4, all Nexus phones, second generation Nexus 7 tablet, all Sony Xperia phones and tablets, current Kindle Fire HDX, FirePhone, Fire TV, Razer Forge TV, some models of the 8-inch Galaxy Tabs
S3TC
Devices: NVIDIA Shield device lineup, Nexus 9 tablet, first generation Nexus 7, some models of ASUS Transformer (that had Tegra 3), Asus MemoPAD HD 7/8, third and fourth generation Galaxy Tab 7.0
ETC1
This is the global fallback APK that would work on all devices.
Devices: International Galaxy S3, Galaxy Tab 7.0+, various older models of the Galaxy Note tablet, many TV devices (such as RikoMagick)
ETC2
This is the OpenGL ES 3.0 fallback APK.
Devices: Galaxy Note 2014, Nexus 10, the newer Galaxy S tablet lines
PVRTC
Devices: International Galaxy S4, first generation Dell Venue, Galaxy Tab 8/10 (third generation), some older tablets from Onda
PVRTC2
Devices: Nexus Player, second generation Dell Venue tablets, fourth generation Kindle Fire HD 6/7""
What are you thinking about texture compression? One problem, I see is, that the compression-tools before maybe not open source. And we don't know the device the game/app should run on. But ASTC, DXT, ECT1 are standards. I know, Apple uses PVRTC or so and that is also a problem.
I also read, that S3TC Patent expired in Sept. 2017, and more linux drivers will support it. S3TC aka DXT. So all our FPSC Classic textures and so on could be used. And we also could have a legal compressor for that.