In order to run an homebrew made with vitaGL, you are going to need libshacccg.suprx extracted and decrypted on your console. You can refer to this guide for more details about its extraction: https://samilops2.gitbook.io/vita-troubleshooting-guide/shader-compiler/extract-libshacccg.suprx
If you want your homebrew to not be hard dependant from libshacccg.suprx, you can either:
- Stick to precompiled shaders usage only (glShaderBinary).
- Stick to fixed function pipeline features (GL1) while using this old legacy version of the library: https://github.com/Rinnegatamante/vitaGL/tree/legacy_precompiled_ffp
In order to build vitaGL use the following command: make install
.
These are all the available flags usable when compiling the library:
HAVE_SHARK_LOG=1
Enables logging support in runtime shader compiler.
HAVE_CUSTOM_HEAP=1
Replaces sceClib heap implementation with custom one (Less efficient but safer).
LOG_ERRORS=1
Errors will be logged with sceClibPrintf.
LOG_ERRORS=2
Errors will be logged to ux0:data/vitaGL.log.
NO_DEBUG=1
Disables most of the error handling features (Faster CPU code execution but code may be non compliant to all OpenGL standards).
NO_TEX_COMBINER=1
Disables texture combiner support (GL_COMBINE) for faster fixed function pipeline code execution.
NO_SHADER_CACHE=1
Disables extra shader cache layer on filesystem (ux0:data/shader_cache) for fixed function pipeline.
SOFTFP_ABI=1
Compiles the library in soft floating point compatibility mode.
DRAW_SPEEDHACK=1
Enables faster code for draw calls. May cause crashes.
MATH_SPEEDHACK=1
Enables faster code for matrix math calls. May cause glitches.
SAMPLERS_SPEEDHACK=1
Enables faster code for samplers resolution during shaders usage. May cause glitches.
SHADER_COMPILER_SPEEDHACK=1
Enables faster code for glShaderSource. May cause errors.
HAVE_HIGH_FFP_TEXUNITS=1
Enables support for more than 2 texunits for fixed function pipeline at the cost of some performance loss.
HAVE_DISPLAY_LISTS=1
Enables support for display lists at the cost of some performance loss.
HAVE_UNFLIPPED_FBOS=1
Framebuffers objects won't be internally flipped to match OpenGL standards.
SHARED_RENDERTARGETS=1
Makes small framebuffers objects use shared rendertargets instead of dedicated ones.
CIRCULAR_VERTEX_POOL=1
Makes temporary data buffers being handled with a circular pool.
HAVE_PTHREAD=1
Use pthread instead of sceKernel for starting garbage collector thread.
SINGLE_THREADED_GC=1
Makes the garbage collector run on main thread.
PHYCONT_ON_DEMAND=1
Makes the physically contiguous RAM be handled with separate memblocks instead of an heap.
UNPURE_TEXTURES=1
Makes legal to upload textures without base level.
HAVE_DEBUGGER=1
Enables lightweighted on screen debugger interface.
HAVE_DEBUGGER=2
Enables lightweighted on screen debugger interface with extra information (devkit only).
HAVE_RAZOR=1
Enables debugging features through Razor debugger (retail and devkit compatible).
HAVE_RAZOR=2
Enables debugging features through Razor debugger (retail and devkit compatible) with ImGui interface.
HAVE_DEVKIT=1
Enables extra debugging features through Razor debugger available only for devkit users.
HAVE_DEVKIT=2
Enables extra debugging features through Razor debugger available only for devkit users with ImGui interface.
You can find samples in the samples folder in this repository.
If you plan to use vitaGL for one of your projects, you can find an official channel to get help with it on Vita Nuova discord server: https://discord.gg/PyCaBx9
Here you can find a list of projects using vitaGL:
Direct OpenGL Usage:
vitaQuake - Port of Quake I and mission packs
vitaQuakeII -Port of Quake II and mission packs
vitaQuakeIII - Port of ioquake3 (Quake III: Arena, Quake III: Team Arena, OpenArena, Urban Terror)
vitaRTCW - Port of iortcw (Return to Castle Wolfenstein)
vitaHexenII - Port of Hexen II
vitaXash3D - Port of Xash3D (Half Life, Counter Strike 1.6)
Fade to Black - Port of Fade to Black
vitaVoyager - Port of lilium-voyager (Star Trek Voyager: Elite Force)
Daedalus X64 - Port of Daedalus X64 (N64 Emulator)
RetroArch - Vita's GL1 video driver of RetroArch
vitaET - Port of ET: Legacy (Wolfenstein: Enemy Territory)
flycast - Port of flycast (Dreamcast Emulator)
AvP Gold - Port of Aliens versus Predator: Gold Edition
prboom-plus - Port of PrBoom Plus (Doom engine sourceport)
VITAlbum - Filebrowser and image viewer app
sm64-vita - Port of Super Mario 64
srb2-vita - Port of Sonic Robo Blast 2
rvm_soniccd-vitagl - Port of rvm_soniccd (Sonic CD decompilation)
Hurrican - Port of Hurrican
VITA Homebrew Sorter - App to sort your app.db
jfsw-vita - Port of JFSW (Shadow Warrior Classic sourceport)
jfduke3d-vita - Port of JFDuke3D (Duke Nukem 3D sourceport)
d3es-vita - Port of Doom 3
bc2_vita - Port of Battlefield Bad Company 2 Mobile
JetMan 3D - Fanmade remake of Jetpac for ZX Spectrum
FF3_Vita - Port of Final Fantasy III (3D Remake)
FF4_Vita - Port of Final Fantasy IV (3D Remake)
FF5_Vita - Port of Final Fantasy V
TheXTech Vita - Port of Super Mario Bros X
World of Goo Vita - Port of World of Goo
Baba Is You Vita - Port of Baba Is You
Crazy Taxi Vita - Port of Crazy Taxi Classic
YoYo Loader - Loader for Game Maker Studio made games
TWoM Vita - Port of This War of Mine and This War of Mine: Stories - Father's Promise
StaticJK - Port of Star Wars: Jedi Academy
Nazi Zombies Portable - Port of Nazi Zombies Portable
Quakespasm-Spiked - Port of Quakespasm Spiked (Limit removed Quake Engine sourceport)
Libraries:
sdl12_gl - SDL 1.2 Vita port adapted to work with vitaGL as renderer backend
SDL2_vitagl - SDL2 Vita port adapted to work with vitaGL as renderer backend
imgui_vita - Port of dear imGui
sdl12_gl Apps:
SuperMarioWar - Port of Super Mario War
ZeldaOLB - Port of Zelda: Oni Link Begins
ZeldaROTH - Port of Zelda: Return of the Hylian
Zelda3T - Port of Zelda: Time to Triumph
ZeldaNSQ - Port of Zelda: Navi's Quest
vitaWolfen - Port of Wolf4SDL (Wolfenstein 3D)
meritous - Port of meritous
Dstroy Vita - Port of Dstroy