Похоже, то, что вы хотите, похоже на функцию динамического связывания шейдеров в DirectX 11? Функция интерфейсов Cg позволяет вам выполнять простые вещи. Он позволяет вам переконфигурировать шейдеры, чтобы вы могли легко и просто выполнять такие вещи, как изменение способа расчета освещения или изменение типа материала.
Например, скажем, вы хотите написать шейдер, но должны иметь возможность изменить способ расчета освещения. Вы можете определить интерфейс Light, который имеет функцию, которая будет каким-то образом вычислять свет. В другом месте вы реализуете интерфейс Light, например, CoolLight и UberLight. Во время выполнения вы можете указать, какую реализацию интерфейса Light следует использовать, практически так же, как и другие параметры.
Чтобы узнать, хотите ли вы этого, я рекомендую посмотреть руководство пользователя Cg (http://developer.download.nvidia.com/cg/Cg_2.2/CgUsersManual.pdf). Если вы ищете «Общие параметры и интерфейсы», есть небольшой пример.