graphic: add GenerateCacheFilePath()