Writing code for existing Pixel and Vertex Shaders is akin to writing assembly code. Eventually it'll work but it's a laborious, low-level exercise with almost no comprehensibility if someone else works on the code. Enter Cg, a high-level "C"-like language that will provide greater accessibility to the tricky bit twiddling.