1. One or more computer-storage memory having computer-executable instructions embodied thereon for executing a method for processing one or more shaders on a computing device, comprising: declaring one or more interfaces to define a shader template, wherein one or more classes of a shader depend from the one or more interfaces; defining a variable in a shader program for inlining an actual shader instance; accessing a pointer to an application program interface (API) that references instances of a simple shader definition and a complex shader definition; providing a graphics processing unit (GPU) driver with one or more tables defining usage points and indicating definitions of the simple shader definition and the complex shader definition; linking the actual shader instance to both the simple shader definition and the complex shader definition, thereby defining a simple shader instance and a complex shader instance; upon execution, invoking one of the simple shader definition or the complex shader definition; and binding the simple shader instance and the complex shader instance to a pipeline, wherein binding comprises storing in a table by a function type and a call location each use of both the simple shader instance and the complex shader instance, wherein a new version of the function is emitted for each location in a shader code associated with at least one of the simple shader instance or the complex shader instance that the function is called from.