We describe the software architecture of a rendering system that follows a pragmatic approach to integrating and bundling the power of different lowlevel rendering systems within an object-oriented framework. The generic rendering system provides higher-level abstractions to existing rendering systems and serves as a framework for developing new rendering techniques. It wraps the functionality of several, widely used rendering systems, defines a unified, object-oriented application programming interface, and provides an extensible, customizable apparatus for evaluating and interpreting hierarchical scene information. As a fundamental property, individual features of a specific rendering system can be integrated into the generic rendering system in a transparent way. The system is based on a state machine, called engine, which operates on rendering components. Four major categories of rendering components constitute the generic rendering system: shapes represent geometries; attributes specify properties assigned to geometries and scenes; handlers encapsulate rendering algorithms, and techniques represent evaluation strategies for rendering components. As a proof of concept, we have implemented the described software architecture by the Virtual Rendering System which currently wraps OpenGL, Radiance, POV Ray, and RenderMan.