Presentation is loading. Please wait.

Presentation is loading. Please wait.

Physical Simulation on GPUs Jim Van Verth OpenGL Software Engineer NVIDIA

Similar presentations


Presentation on theme: "Physical Simulation on GPUs Jim Van Verth OpenGL Software Engineer NVIDIA"— Presentation transcript:

1 Physical Simulation on GPUs Jim Van Verth OpenGL Software Engineer NVIDIA

2 Physics on GPU Topics of discussion Ways of parallelizing physics Examples of GPU physics CUDA and you

3 Parallelizing Physics CPU What weve talked about so far Display Game Logic, AI, Physics GPU Graphics Awfully busy… improve performance?

4 Parallelizing Physics Solution 1: Multicore CPU CPU Display Game Logic, AI GPU Graphics Physics

5 Parallelizing Physics CPU Solution 2a: Cell processor Display Game Logic, AI GPU Graphics Physics SPU

6 Parallelizing Physics CPU Solution 2b: AGEIA processor Display Game Logic, AI GPU Graphics Physics PPU

7 Parallelizing Physics CPU Solution 3: Programmable GPU Display Game Logic, AI GPU Graphics, Physics

8 Parallelizing Physics CPU Solution 3b: SLI Display Game Logic, AI GPU Graphics GPU Physics

9 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: Gflops GeForce 8800 GT: 500 Gflops A lot of parallel power for physics!

10 GPU Physics Example From GPU Gems 3 Takahiro Harada, Real-time Rigid Body Simulation on GPUs Simple physics engine, all running on GPU

11 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

12 Global object data in texture pairs Alternate frame to frame Object Representation PositionOrientation Linear Momentum Angular Momentum

13 Object Representation Collision rep: Solid (or shell) of particles Store as Fixed radius Displacement from center of mass

14 Object Representation Smaller particles == better fit But more processing

15 Object Representation Particle data stored in texture and three rendertargets Update position, velocity each frame from global object data Update force from collisions Displacement Position VelocityForce

16 Pipeline Update Particles Calculate Grid Compute Collisions Integrate

17 Update Particles For each object do: Iterate through all particles Update particle position, velocity Update Particles Calculate Grid Compute Collisions Integrate PositionOrientation Linear Momentum Angular Momentum Displacement Particle Position Particle Velocity

18 Grid Representation Stored as slabs within 2D rendertarget Voxel stored as texel Four particle indices per texel Update Particles Calculate Grid Compute Collisions Integrate

19 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

20 Collision Resolution For each voxel do 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 Update Particles Calculate Grid Compute Collisions Integrate

21 Integration Compute new linear and angular momenta based on collision (and other) forces Force/torque on rigid body is weighted sum of forces from each particle Compute new position and orientation from momenta Update Particles Calculate Grid Compute Collisions Integrate

22 Demo

23 Other approaches Simon Greens particles N-body Parallelize one piece: Ex. Broad Phase (GPU Gems 3) Do smaller problem Ex. Fluid dynamics (Hellfire: London)

24 GPU Computing How to program? Pre-G80, had to use Cg, GLSL, HLSL Problems: Requires specialized shader knowledge Data is often texture or rendertarget Cant scatter data easily

25 CUDA Solution is CUDA Stands for Compute Unified Device Architecture Extensions on C/C++ Interoperable with D3D and OpenGL Use it!

26 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

27 NVIDIA 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 West Hall Beyond Printf: Debugging Graphics Through Tools 12:00-1:00 pm, Thursday, Feb. 21 Room North Hall Real-Time Ambient Occlusion 14:50-15:10, Friday, Feb 22 Room West Hall Physics for Game Programmers 10:00-18:00, Tuesday, Feb 19 Room West Hall

28 San Jose downtown Aug The first-ever visual computing mega-event.. The universe of visual computing in one place at one time 15,000 Visitors: 10,000 amateur and pro gamers, demoscencers, Game modders, machinima creators, and 3D artists 3,000 technical and marketing professionals from multiple industries 2000 visitors 300 press & analysts

29 Questions?


Download ppt "Physical Simulation on GPUs Jim Van Verth OpenGL Software Engineer NVIDIA"

Similar presentations


Ads by Google