The human readable is designed to be simple and precise. It just contains two paths with the corresponding keys. I had the option to skip the keys, but it would mean that the order of the paths should be known. To avoid this ambiguity, I specified which path represents which shader. As for the prebuilt binary file, I decided to keep the null terminated strings, with storing the null terminator too. This is the simplest method, yet it does not make any compromises, and does not require any unnecessary extra data in the binary file.
To extract the paths, from the buffer of the file, I use the fact that the function
strlen() finds the length till the null terminator. Hence it finds the length of the first string and then with that I can calculate the start of the second path.