Originally posted by inept:
[b]Well, no it isn’t much easier to read than the api calls, in my opinion. As I said, register combiners are just a way of mapping inputs to outputs through selecting which (out of a very narrow choice) maths operation you want it to perform on those inputs. The nvparse scripts seem to give users the idea that they can use something as simple as the + symbol to add two input registers together, when really they can’t. So code like this (below) looks incredibly confusing:-
[quote]
rgb{
discard = spare0;
discard = spare1;
spare = sum();
}
rgb{
spare0 = spare1 * spare0;
}
Does that look readable to you? Being able to use the * operator, but not the +?
Someone new will look at that code and think, mmm…why are sums expressed differently than products? And then, bam! - they are then hit by the limitations of register combiners, so why express their operations as a language?
(I only do it to keep it consistant with everything else).
BTW, I’m using nv_vertex_program and register_combiners because I haven’t the time to read through the arb_vertex_program spec…it’s just too damn huge, and there simply isn’t the same volume of examples/tutorials on them as there are for NV ones. I also believe that the nv_vertex_program emulation on gf2< will be much faster than anything I can do in my own code, while keeping the interfaces in my own code cleaner.[/b][/QUOTE]
you got me wrong. it’s not a scriptlanguage, nothing against cg or something like that. but once you know registercombiners, you can set them up much faster and more easy with the nvparse language for them (and runtime change them even, hehe… who ever needs that)…
and yes, it’s more readable than 5 nearly fullscreen lines of GL_XX_NV capslockconstants…
but you have to know register combiners. they are never easy… but typing all that functioncalls is just… hm… do you set them up that way? dunno, but once i wanted to do perpixellighting with smooth selfshadowing, specular with glossmap and exponentmap, all on the gf2 in one pass, hehe. and power16 for the specular as max… so i had to do a lot of cheating, of course… that was simplest on a paper with some math formulae. then i rewrote it so that it fit into the combiners. you really think it’s more easy with the functions then? i had no nvparse then yet to use, so i had to use functions… and it took quite some time…
btw, for all the dudes that think register combiner setup with functions is readable, i just want to let you one time read the nvidia demo wich does high precision shadow mapping (16bit) on <gf3 hw…
now tell me those screens over screens of different combiner settings are readable 
and the rest is just training…