* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download GDC 2005 - Essential Math for Games Programmers
Survey
Document related concepts
Renormalization wikipedia , lookup
Weakly-interacting massive particles wikipedia , lookup
Double-slit experiment wikipedia , lookup
Theory of everything wikipedia , lookup
Large Hadron Collider wikipedia , lookup
Relativistic quantum mechanics wikipedia , lookup
Renormalization group wikipedia , lookup
Theoretical and experimental justification for the Schrödinger equation wikipedia , lookup
ALICE experiment wikipedia , lookup
Standard Model wikipedia , lookup
Identical particles wikipedia , lookup
Electron scattering wikipedia , lookup
Future Circular Collider wikipedia , lookup
Peter Kalmus wikipedia , lookup
ATLAS experiment wikipedia , lookup
Transcript
Physical Simulation on GPUs Jim Van Verth OpenGL Software Engineer NVIDIA [email protected] www.nvidia.com www.essentialmath.com Physics on GPU Topics of discussion Ways of parallelizing physics Examples of GPU physics CUDA and you Parallelizing Physics What we’ve talked about so far CPU GPU Game Logic, AI, Physics Graphics Display Awfully busy… improve performance? Parallelizing Physics Solution 1: Multicore CPU CPU Game Logic, AI Physics GPU Graphics Display Parallelizing Physics Solution 2a: Cell processor Game Logic, AI CPU GPU Graphics SPU SPU SPU SPU SPU SPU Physics Display Parallelizing Physics Solution 2b: AGEIA processor Game Logic, AI CPU GPU Graphics PPU Physics Display Parallelizing Physics Solution 3: Programmable GPU CPU Game Logic, AI GPU Graphics, Physics Display Parallelizing Physics Solution 3b: SLI GPU CPU Game Logic, AI Graphics GPU Physics Display GPU Computing Modern GPU has many independent processors: GeForce 8800 GTX: 128 SPs GeForce 8800 GT: 112 SPs Mostly processing power, not cache: GeForce 8800 GTX: 300-400 Gflops GeForce 8800 GT: 500 Gflops A lot of parallel power for physics! GPU Physics Example From GPU Gems 3 Takahiro Harada, “Real-time Rigid Body Simulation on GPUs” Simple physics engine, all running on GPU GPU Physics Example Idea: GPU is good at: Many similar computations Simple data So: Particles for collision representation Grid for collision detection Simple collision response Object Representation Global object data in texture pairs Position Orientation Linear Momentum Alternate frame to frame Angular Momentum Object Representation Collision rep: Solid (or shell) of particles Store as Fixed radius Displacement from center of mass Object Representation Smaller particles == better fit But more processing Object Representation Particle data stored in texture and three rendertargets Displacement Position Velocity Force Update position, velocity each frame from global object data Update force from collisions Pipeline Update Particles Calculate Grid Compute Collisions Integrate Update Particles Update Particles For each object do: Iterate through all particles Update particle position, velocity Position Orientation Particle Position Calculate Grid Compute Collisions Displacement Integrate Linear Momentum Angular Momentum Particle Velocity Grid Representation Stored as slabs within 2D rendertarget Update Particles Calculate Grid Compute Collisions Voxel stored as texel Four particle indices per texel Integrate Grid Creation For each particle do Compute grid index Write particle index to appropriate component at that location Update Particles Calculate Grid Compute Collisions Integrate Collision Resolution For each voxel do Update Particles For each particle in voxel do Compute force based on particles in this and 27 neighboring voxels Regardless of collision! Spring force Damping from relative vel. Tangential force Calculate Grid Compute Collisions Integrate Integration Compute new linear and angular momenta based on collision (and other) forces Update Particles Calculate Grid Force/torque on rigid body is weighted sum of forces from each particle Compute new position and orientation from momenta Compute Collisions Integrate Demo Other approaches Simon Green’s particles N-body Parallelize one piece: Ex. Broad Phase (GPU Gems 3) Do smaller problem Ex. Fluid dynamics (Hellfire: London) GPU Computing How to program? Pre-G80, had to use Cg, GLSL, HLSL Problems: Requires specialized shader knowledge Data is often texture or rendertarget Can’t “scatter” data easily CUDA Solution is CUDA Stands for Compute Unified Device Architecture Extensions on C/C++ Interoperable with D3D and OpenGL www.nvidia.com/cuda Use it! CUDA Updating our example: Instead of Cg, use standard C++ w/CUDA extensions Instead of textures or rendertargets, just use CUDA arrays Instead of vertex shader, use scatter operation NVIDIA Presentations @ GDC 2008 NVIDIA Sessions Room 3003 – West Hall Advanced Skin Rendering in NVIDIA's Human Head Demo 4:00-5:00 pm, Wednesday, Feb. 20 Particle-based Fluid Simulation For Games 9:00-9:30 am, Thursday, Feb. 21 3D Stereoscopic Game Development How to Make Your Game Look Like Beowulf 3D 9:30-10:00 am, Thursday, Feb. 21 GPU Optimization with the Latest NVIDIA Performance Tools 10:30-11:30 am, Thursday, Feb. 21 NVIDIA FX Composer 2: Shader Development Unleashed 12:00-1:00 pm, Thursday, Feb. 21 General GDC Sessions Advanced Visual Effects with Direct 3D 10:00-18:00, Monday, Feb 18 Room 2007 - West Hall Beyond Printf: Debugging Graphics Through Tools 12:00-1:00 pm, Thursday, Feb. 21 Room 131 - North Hall Real-Time Ambient Occlusion 14:50-15:10, Friday, Feb 22 Room 3004 - West Hall Physics for Game Programmers 10:00-18:00, Tuesday, Feb 19 Room 2018 - West Hall 15,000 Visitors: The first-ever 10,000 amateur and pro visual gamers, demoscencers, Game modders, computing machinima creators, and mega-event.. 3D artists 3,000 technical and of The universe marketing professionals visual from multiple industries 2000 visitors computing in 300 press & analysts one place at one time San Jose downtown Aug 25-27 2008 http://www.nvision2008.com Questions?