Title: IRIS Performer
1IRIS Performer
- CPT Mark Tanner
- CS 4473
- 14 March 2000
2Class Objective
- To provide a general overview of Performer, its
design and functionality
3Outline
- History
- Performer Terminology
- Syntax
- Scene Construction
- Future of Performer
- Demos
4Background/Motivation
- Immediate-Mode rendering libraries
- OpenGL
- Starbase
- XGL
- Object Oriented Toolkits
- IRIS Inventor
- PHIGS
- HOOPS
- Performer - first to successfully address
multi-processing
5What is IRIS Performer?
- An SGI application programming interface (API) to
make image generation applications simple,
portable, and efficient. Performer enables the
rapid development of real-time image generation
applications which optimizes the performance of
SGI hardware. It also allows easy software
migration across the SGI product line and to new
hardware.
6Examples
7(No Transcript)
8(No Transcript)
9(No Transcript)
10(No Transcript)
11(No Transcript)
12(No Transcript)
13OpenGL-isms
- Geometry
- Transparency
- Textures
- Lighting
- Color
- Transformation
14Performer Stages
15Performer Functionality
- Originally designed as a toolkit for visual
simulation, virtual reality and other real-time
3D graphics applications - Design Goal
- Achieved through
- Graphics Optimization
- Multiprocessing
16Performer Features
- Geometric data structures designed for efficient
immediate-mode data transfer - Reductions of graphics mode changes
- Pipelined multiprocessing for parallel scene
graph traversal - Efficient host-based view frustum culling
- Stressed modified level-of-detail switching
- Run-time database and process statistics for
tuning - Emphasis on immediate-mode performance without
caching which lends itself to high level
animation and morphing techniques
17Double Buffering
18Core Libraries
- Toolkit consists of two core libraries
- libpr - consists of optimized graphics primitives
as well as intersection, shared memory and other
basic functions - libpf - is built on top of libpr and adds
database hierarchy, multiprocessing and real-time
features - Two-library approach allows programmers
flexibility to choose which layer they prefer to
program to
19Libraries
- High-Performance Rendering Library (libpr)
- Visual Simulation Application Library (libpf)
- Geometry Builder Library (libpfdu)
- Utility Library (libpfutil)
- User Interface Library (libpfui)
- Database Loader Library (libpfdb)
20IRIS Performer Library Hierarchy
21Visual Simulation Library (Libpf)
- High performance, easy-to-use interface to
hardware - Multiprocessing Framework
- APP
- CULL
- DRAW
22Supported File Formats
23Parallel Pipeline Processes
24Visual Database (pfScene)
- Grouping Nodes
- Geometry and Leaf Nodes
- IRIS Performer provides traversal functions that
act on a pfScene or portions thereof.
25Scene Graph Traversal Flow
26Loading a Scene Graph
27 Processes Acting on Scene Graph
28Gratuitous Example
29High Performance Rendering Library (libpr)
- High-Performance Geometry Rendering
- Efficient Graphics State Management
- Graphics State Encapsulation
- Display Lists
- Math Support
- Intersections
- Asynchronous File I/O
- Memory Allocation (pfMalloc(), pfDataPool)
30Relationship to Database Formats
31Graphics Libraries
32Objects
- Libpr and Libpf objects
- User Data
33Geometry Objects
34Scene to Screen Path
35Creating of a Performer Application
- 1. Initialize Performer.
- 2. Create a pipe.
- 3. Create a channel and window.
- 4. Associate the channel with the pfPipeWindow
- in which the channel is drawn.
- 5. Load the scene graph and associate it with
the channel. - 6. Position the channel(s) and update the scene.
- 7. Call pfFrame to draw the scene.
- 8. Create the simulation loop to return to step
6.
36Simulation Loop
- 1. Update the appearance, shape, and location of
the objects in the scene. - 2. Update the position and orientation of the
camera in the scene. - 3. Redraw the scene.
37PsuedoCode
Synchronization Loop while(!finished)
handleinput() updateScene() // Read
input device update eyepoint pfSync()
// Sleep until next frame boundary
anyCriticalUpdate() pfFrame() //
Trigger new frame
38Rendering
- Rendering occurs in three stages
- APP
- CULL
- Draw
39Multiprocessing Frames in the Pipe
40Visual PC
41Hendrix
423 Pipe Intergraph
43Multiple Windows, Multiple Channels
44Performer Stages
45More Examples
46(No Transcript)
47(No Transcript)
48(No Transcript)
49(No Transcript)
50(No Transcript)
51(No Transcript)
52(No Transcript)
53Future of Performer
- IRIS Performer 2.3 for Linux
- Only single processor support
- Multiprocessor support forthcoming
54Let us retire to the lab.
55Axes Orientation in Performer
56pfLOD Ranges
57Scene Graph Hierarchy
58Parallel Tasking
59VR Goals
- Simplify the development of VR through intrinsic
support for - Common Graphics
- Database operations
- Multiple Views
- Level-of-Detail
- Morphing
- Intersection Testing
- Picking
- Run-Time Profiling
60Partial Inheritance Graph of IRIS Performer Data
Types