working version with new struct
working version with separate occlusion