In this book we are going to reveal the modern rendering engine's architecture and the main techniques used in rendering engines. We hope this book can be good guidance for developers who are interested in building their own rendering engines.
The chapters are arranged in the following way. In Chapter 1, we introduce the main parts of a rendering engine and briefly their functionality. In Chapter 2, basic knowledge related to developing real-time rendering is introduced.Chapter 3 is the main part of this book. It unveils the architecture of the rendering engine through analyzing the Visionix system, the rendering engine developed by the authors' team.In Chapter 4, a distributed parallel rendering system for a multi-screen display, which is based on Visionix, is introduced.In Chapters 5 and 6, two particular techniques for real-time rendering that could be integrated into rendering engines are presented.
1 Introduction
1.1 Scene Graph Management
1.2 Scene Graph Traverse
1.3 Rendering Queue
1.4 Rending Modle
2 Basics of Real-Time Rendering
2.1 Rendering Pipeline
2.1.1 Conceptual Rendering Phases
2.1.2 Programmable Rendering Pipeline
2.1.3 Geometry Transforms
2.2 Shading
2.2.1 Rendering Equation
2.2.2 Lighting
2.2.3 BRDF
2.2.4 Light Transport
2.3 Summary
References
3 Architecture of Real-Time Rendering Engine
3.1 Overview
3.2 Basic Data Type
3.2.1 Single-Field Data Type
3.2.2 Multiple-Field Data Type
3.2.3 Persistent Pointer: TAddress<>
3.3 Basics of Scene Model
3.4 Entity
3.5 Feature
3.5.1 IAttributedObject and IFeature
3.5.2 IBoundedObject
3.5.3 IChildFeature
3.5.4 Subclasses of IGroupingFeature
3.5.5 Subclasses of IShapeFeature
3.5.6 IAnimatedFeature
3.5.7 Subclasses of ILightFeature
3.5.8 Subclasses of IBindableFeature
3.5.9 IGeometryFeature
3.5.10 IAppearanceFeature and Related Features
3.6 Scene Graph
3.7 Spatial Index
3.7.1 Relation Schema A
3.7.2 Relation Schema B
3.8 Scene Model Schema
3.9 Scene Model Interface and Implementation
3.9.1 Scope of Name and ID
3.9.2 Transaction
3.9.3 Scene Storage
3.9.4 Reference and Garbage Collection
3.9.5 Data Visit and Cache
3.9.6 Out-of-Core Entity
3.9.7 ISceneModel
3.9.8 ISceneStorage
3.9.9 Implementation of ISceneModel and ISceneStorage
3.10 Scene Manipulator
3.10.1 Manipulator Functions
3.10.2 Usage of Scene Model Manipulator
3.11 Traversing Scene Model
3.11.1 Traverse via Iterator
3.11.2 Traverse via Visitor
3.12 Rendering Engine
3.12.1 CRenderingEngine
3.12.2 The Composition of the CRenderingEngine
3.13 Render Queue and Its Manager
3.14 Camera Manager
3.15 GPU Resources and Its Manipulator
3.15.1 Texture Resource
3.15.2 Buffer Resource
3.15.3 Shader Program
3.15.4 GPU Resource Manipulator
3.16 Render Target and Its Manager
3.17 Render Control Unit
3.18 Pre-render and Its Manager
3.18.1 IPreRender
3.18.2 CPreRenderManager
3.19 Render Pipelines and Its Manager
3.19.1 IRenderPipeLine
3.19.2 Modular Render Pipeline
3.19.3 Render Module
3.19.4 CRenderPipelineManager
3.20 Examples of Pre-render
3.20.1 CVFCullingPreRender
3.20.2 CMirrorPreRender
3.20.3 COoCEntityLoader
3.20.4 CFeatureTypeClassifier
3.20.5 CRenderQueueElementProcessor
3.20.6 CLightCullingPreRender
3.21 Examples of Modular Render Pipeline and Render Module
3.21.1 CShapeRenderPipeline
3.21.2 CShapeRenderModule
3.22 Implementation Details of CRenderingEngine
3.22.1 Configure
3.22.2 Initialize
3.22.3 DoRendering
3.22.4 OpenSceneModel
3.23 Conclusion
References
4 Rendering System for Multichannel Display
4.1 The Overview of Parallel Rendering
4.1.1 Client-Server
4.1.2 Master-Slave
4.2 The Architecture of a Cluster-Based Rendering System
4.3 Rendering System Interface
4.3.1 vxlRenderingSystem
4.3.2 vxlModel
4.3.3 vxIUI
4.3.4 The Basic Example
4.4 Server Manager
4.4.1 Functionality
4.4.2 Structure
4.4.3 CServerManager
4.4.4 CServiceRequestManager
4.4.5 CServiceRequestTranslator
4.4.6 CServiceRequestSender
4.4.7 CSystemStateManager, CScreenState and CRenderServerState
4.4.8 CServiceRequestSRThreadPool
4.4.9 IServiceRequest and Subclasses
4.5 Implementation of Rendering System Interface
4.5.1 Implementation Principles
4.5.2 Example 1: Startup System
4.5.3 Example 2: Open Scene Model
4.5.4 Example 3: Do Rendering and Swap Buffer
4.6 Render Server and Server Interface
4.7 Application: the Immersive Presentation System for Urban Planning
4.7.1 System Deployment
4.7.2 Functionality
References
5 Optimal Representation and Rendering for Large-Scale Terrain
5.1 Overview
5.1.1 LOD Model of Terrain
5.1.2 Out-of-Core Techniques
5.2 Procedural Terrain Rendering
5.2.1 An Overview of Asymptotic Fractional Brownian Motion Tree
5.2.2 afBm-Tree Construction
5.2.3 Procedural Terrain Rendering
5.2.4 Application
5.3 Conclusion
References
6 Variational OBB-Tree Approximation for Solid Objects
6.1 Related Work
6.2 The Approximation Problem of an OBB Tree
6.3 Solver for OBB Tree
6.3.1 Computation of Outside Volume for Single Bounding Box ...
6.3.2 Solver for OBB Tree
6.4 Experiments and Results
6.5 Conclusion
References
Index