All of the packing that is done is completely transparent to the user of the OpenGL ES Shading Language, except for one detail: The packing impacts the way in which uniforms and vertex shader outputs/fragment shader inputs are counted. If you want to write shaders that are guaranteed to run on all implementations of OpenGL ES 3.0, you should not use more uniforms or interpolators than would exceed the minimum allowed storage sizes after packing. For this reason, it's important to be aware of packing so that you can write portable shaders that will not exceed the minimum allowed storage on any implementation of OpenGL ES 3.0.