Obviously emulation would not have to be 100% accurate or it would indeed be significantly slower. Perhaps a quality slider could be implemented such that certain features could be dropped, stubbed or filled in with gray texture for example. Some systems, namely laptops or surplus servers, can have several fast CPUs but are lacking in the GPU department for various reasons (expensive or built into the motherboard) and can't be replaced easily or economically. In these cases, some software fallback ability would be useful. Perhaps the checkbox idea was unnecessary and software emulation could be automatic (Perhaps with a debug message: shader version %d not available, attempting partial emulation with shader_emulator.c ...).