Repository navigation
ogles2.library 1.3: OpenGL ES 2.0 for AmigaOS 3 on PiStorm
OpenGL ES 2.0 for classic Amigas with a PiStorm, drawn by the Raspberry Pi 4's VideoCore GPU. Real programmable shaders on AmigaOS 3.x, source-compatible with AmigaOS 4's ogles2.library.
Highlights
- Full GLSL ES 1.00 shaders, compiled by Mesa's V3D compiler – on the Amiga itself, or ahead of time and shipped with the program for instant start.
- The whole GLES 2.0 core plus 32 extensions (164 entry points): framebuffer objects, float and depth textures, S3TC/DXT and ETC1, up to four render targets, clip control, 4x MSAA with alpha-to-coverage, vertex texture fetch, 32 texture units, shared contexts across tasks, vsync.
- Tested against Khronos' dEQP-GLES2: of the 17,165 must-pass cases, the only failures are 25 cube-map cases from one documented difference (see below).
- Fast: Quake III Arena with ioquake3's GLES2 renderer runs about 30% faster than on MiniGL (80.4 vs 61.3 fps, timedemo
four, 640x480, A1200 with a Pi 4). Its ready-to-run package is in ioq3-amiga. - SDL2 and SDL3 with an ogles2 backend (separate developer archive), and gl4es for desktop-OpenGL programs.
- Nothing to install if you don't want to: a program finds
ogles2.libraryin its ownlibs/drawer, and its shader binaries and shader records inshaders/.
Downloads
| Archive | For |
|---|---|
ogles2-1.3.lha |
Users: the library, the shader compiler, an installer, OGLES2Log, four examples |
ogles2-1.3-sdk.lha |
Amiga programmers: the same plus the SDK (headers, GCC and vbcc import libraries, autodoc, GettingStarted.txt, example sources) |
ogles2-1.3-sdk.zip |
Cross-development on a PC: the SDK alone |
ogles2-1.3-sdl.lha / .zip |
SDL programmers: SDL2 and SDL3 with the ogles2 backend; unpacks over the SDK |
SHA256SUMS holds the checksums.
Examples (in the user archive)
- triangle, cube – the basics: a window, buffers, textures, depth.
- boingocean – the Boing ball floating on a ray-marched ocean, all in shaders; 60 fps at 640x480 (
boingocean FULLSCREEN). - boing2026 – the 1984 Boing Ball in a neon room: shadow mapping, floor reflection, bloom, 4x MSAA; 53 fps at 640x480.
Requirements
- An Amiga with a PiStorm and a Raspberry Pi 4B or CM4, Emu68 (tested: 1.1.0-beta.1)
- AmigaOS 3.x (tested on 3.2) with Picasso96 or CyberGraphX
- A 32-bit RTG screen mode
Installing
Unpack ogles2-1.3.lha and run Install-ogles2: it asks before each step (LIBS:ogles2.library, LIBS:v3dglslc, SYS:OGLES2Cache with its assign, C:OGLES2Log). Or skip installing: copy Libs/ogles2.library into a program's libs/ drawer.
The shader compiler (v3dglslc, 19 MB) is only needed by programs that write shaders at run time (gl4es, SDL's GLES2 renderer); programs that ship their shader binaries run without it.
Known differences from GLES 2.0
- Cube maps are always filtered seamlessly across faces (GLES 3 behaviour); 25 dEQP cases fail because of it.
- With
EXT_draw_buffers,gl_FragColorgoes to the first render target only. - Framebuffer objects are not multisampled; only the default framebuffer is.
- 32-bit float textures are sampled with nearest filtering, and only 8-bit (and 16-bit packed) formats can be rendered into.
- The context tag values differ from AmigaOS 4's: OS4 source compiles unchanged, but binaries must be rebuilt.
Full details: SDK/doc/ogles2.doc (--deviations--).
Licence
ogles2.library incorporates PiStorm3D's V3D backend and is under the Hyperion MiniGL Open Source License. Everything else written for the project – including the import libraries and headers programs link against – is MIT, so programs of any licence may use it. The shader compiler is Mesa (MIT). See LICENSE and licences/.
Credits
Developed by R-Typer and Ladislawv, with Claude Opus 5.5 (Anthropic's AI assistant). Built on PiStorm3D's V3D backend by Steffen "MagicSN" Haeuser, the V3D assembler and documentation by Macoy Madson, and Mesa's V3D driver and compiler (Broadcom, VMware and the Mesa contributors). Thanks to Michal Schulz for Emu68 and to Claude Schwarz and contributors for PiStorm.