Most modern engines I know have a “shader cache” and use the second option, because apparently it’s faster.
Also you can take a look at the ARB_shader_subroutine which allows dynamic linkage. But I think it’s only available on DX11 class hardware.
Most modern engines I know have a “shader cache” and use the second option, because apparently it’s faster.
Also you can take a look at the ARB_shader_subroutine which allows dynamic linkage. But I think it’s only available on DX11 class hardware.