A method of rendering graphics using a graphics processing unit that includes one or more hardware shading units, the method comprising: performing, with a hardware shading unit that is designated for vertex shading, vertex shading operations (142, 212) to shade a plurality of input vertices so as to output a first set of primitives that comprise vertex-shaded vertices, wherein outputting the first set of primitives comprises outputting a single vertex-shaded vertex for each respective input vertex of the plurality of input vertices such that there is a 1:1 relationship between input and output vertices for the vertex shading operations performed with the hardware shading unit; and performing, with the same hardware shading unit that is designated for vertex shading, geometry shading operations (150, 216) to generate a second set of primitives based on the first set of primitives output by the vertex shading operations, the second set of primitives comprising a plurality of new geometry-shaded vertices, wherein generating the second set of primitives comprises: • appending, by the graphics processing unit, geometry shading instructions to vertex shading instructions whereby the geometry shading instructions are executed by the same hardware shading unit after executing the vertex shading operations, and • executing, by the hardware shading unit, multiple instances of a geometry shading operation, each instance executing the same algorithm and generating respective instances of the plurality of new geometry-shaded vertices, each instance of the geometry shading operation outputting only a single geometry-shaded vertex of the plurality of new geometry-shaded vertices so as to adhere to a 1:1 relationship between input and output vertices for operations performed by the hardware shading unit that is designated for vertex shading, wherein the multiple instances of the geometry shading operation comprise first and second instances of the geometry shading operation that are executed concurrently by the hardware shading unit. performing, with a hardware shading unit that is designated for vertex shading, vertex shading operations (142, 212) to shade a plurality of input vertices so as to output a first set of primitives that comprise vertex-shaded vertices, wherein outputting the first set of primitives comprises outputting a single vertex-shaded vertex for each respective input vertex of the plurality of input vertices such that there is a 1:1 relationship between input and output vertices for the vertex shading operations performed with the hardware shading unit; and performing, with the same hardware shading unit that is designated for vertex shading, geometry shading operations (150, 216) to generate a second set of primitives based on the first set of primitives output by the vertex shading operations, the second set of primitives comprising a plurality of new geometry-shaded vertices, wherein generating the second set of primitives comprises: • appending, by the graphics processing unit, geometry shading instructions to vertex shading instructions whereby the geometry shading instructions are executed by the same hardware shading unit after executing the vertex shading operations, and • executing, by the hardware shading unit, multiple instances of a geometry shading operation, each instance executing the same algorithm and generating respective instances of the plurality of new geometry-shaded vertices, each instance of the geometry shading operation outputting only a single geometry-shaded vertex of the plurality of new geometry-shaded vertices so as to adhere to a 1:1 relationship between input and output vertices for operations performed by the hardware shading unit that is designated for vertex shading, wherein the multiple instances of the geometry shading operation comprise first and second instances of the geometry shading operation that are executed concurrently by the hardware shading unit. • appending, by the graphics processing unit, geometry shading instructions to vertex shading instructions whereby the geometry shading instructions are executed by the same hardware shading unit after executing the vertex shading operations, and • executing, by the hardware shading unit, multiple instances of a geometry shading operation, each instance executing the same algorithm and generating respective instances of the plurality of new geometry-shaded vertices, each instance of the geometry shading operation outputting only a single geometry-shaded vertex of the plurality of new geometry-shaded vertices so as to adhere to a 1:1 relationship between input and output vertices for operations performed by the hardware shading unit that is designated for vertex shading, wherein the multiple instances of the geometry shading operation comprise first and second instances of the geometry shading operation that are executed concurrently by the hardware shading unit.