.fxo files are compiled shader files. Think of
.o files for C and C++, but for HLSL. They're the result of running the shader compiler
fxc.exe over your shader files.
The advantages of
.fxo files are three fold. First, the make reverse engineering of your shader code a bit more difficult, which is advantageous for some of the higher-end games with a lot of secret sauce in their shaders.
Second, some platforms do not actually allow you to use the HLSL compiler. Earlier iterations of Windows Store apps for instance did not allow applications to use
d3dcompiler_XX.dll, so it was mandatory to precompile shaders for these platforms. Even on plain ol' desktop Windows, you are responsible for shipping
d3dcompiler_XX.dll as it is not part of the end-user redistribution package.
Third, compiling HLSL takes time. Precompiling the shaders shaves off some load time for an application, though it's not necessarily much time at all.
In general it's good practice to precompile your shaders and ship the
I've never seen a
.cod file and don't know what it's for; Google is not clearing it up.