I am no Cg expert at all, but I have only ever seen manual register assignment in HLSL. (not in Cg).
As Cg in OpenGL compiles to NV/ARB ASM that does not have “registers” like D3D does, I don’t know how it would work.
Perhaps you can just specify as a bool without the register assignment and test to see if static branching is picked up by the compiler? (compiler should be smart enough)
I am still a Cg n00b, but I always thought Cg worked like this:
//At compile time get the parameter index
CGparameter TimeParam1 = cgGetNamedParameter(program1, “time”);
//At runtime set the value
cgSetParameter1f(TimeParam1, 2.0);
So you should not need to set the bool via it’s name at runtime. (I see there is no cgGLSetParameter1b, but using cgGLSetParameter1f should work for bools - Cg experts correct this if wrong)