Is there any way to emit more then eg. 4 bytes from an GLSL fragment shader, if the implementation doesn’t support multiple FBO buffer attachments or ‘deep’ buffer formats?
For example when using WebGL or OpenGL ES, being restricted to a RGBA output per fragment makes complex calculations extremely inefficient, if parts of the calculations have to be repeated in multiple passes to get more output channels.
No, there is no way efficiently output more then the usual channels. That means calculations with more outputs need to be done in more than one pass. Calculations with more than one output that share costly intermediate results may have the intermediate results computed as additional passes before, however the overhead will most likely eat up any performance advantage gained.