Under both Cg and Microsofts HLSL there is support for a half-floating point data type. half, half2, half3, half4
Does OpenGL support something similiar? Both Microsofts HLSL compiler and NVIDIAs Cg compiler is capabable of optimizing the shaders source additionally with forexample special normalization instructions. Does OpenGL support half-floating points ?
Also there is a pragma instructions, #pragma optimize(on), how is one to see if the driver is capable at all of optimizing the shader if one can not see the shader assembler? Does OpenGL support access to intermediate shader assembly as Microsoft DirectX does? I remeber something similiar under the Cg interface but there is no information on OpenGL on how to get intermediate shader assembly code?
That’s a “no” to all of your questions, unfortunately.
Since you are developing for G80, either use Cg or nvidias assembler interface (NV_fragment_program). If you need cross-platform (ie. also ATI support), you are pretty much out of luck.
NVIDIA might have exposed half data types in the 95 version, but it isnt the case any longer…
About DirectX 10, although half is still provided for compatibility, they have on the other hand integer support + double precision. So the loose of half data types is more than made up for with full integer support.