Particles and their home in Geometry Shaders Paul Taylor 2010.

39
Particles and their home in Geometry Shaders Paul Taylor 2010

description

Polygons are not so hot! Great for representing objects like A Cup A Robot A Pyramid Not so hot for creating Hair Snowflakes Rain Sparks Clouds Lightning Steam

Transcript of Particles and their home in Geometry Shaders Paul Taylor 2010.

Page 1: Particles and their home in Geometry Shaders Paul Taylor 2010.

Particles and their home in Geometry Shaders

Paul Taylor 2010

Page 2: Particles and their home in Geometry Shaders Paul Taylor 2010.

Portal is Free on Steam!!!

• Till the 24th May

Page 3: Particles and their home in Geometry Shaders Paul Taylor 2010.

Polygons are not so hot!Great for representing objects like• A Cup• A Robot• A PyramidNot so hot for creating• Hair• Snowflakes• Rain• Sparks• Clouds• Lightning• Steam

Page 4: Particles and their home in Geometry Shaders Paul Taylor 2010.

Procedural Methods

• This is a big Umbrella for creating objects based on procedures (algorithms)

• With these models Polygons are rendered only as necessary– Necessary is defined as:• The Polygon will be visible to the screen &• The polygon will be more than 1 pixel in size

Page 5: Particles and their home in Geometry Shaders Paul Taylor 2010.

Why Use Procedural Methods

• Limitations on Polygon Rendering are not the only reason– Speed (sometimes)– Realism (a lot of the time)– Special Effects– Physics Systems

Page 6: Particles and their home in Geometry Shaders Paul Taylor 2010.

4 Procedural Methods

• Particle Systems• Language Based Models• Fractal Geometry• Procedural Noise

Page 7: Particles and their home in Geometry Shaders Paul Taylor 2010.

Particle Systems

• http://2ld.de/gh2004/images/PSCollisions.jpg• http://ccl.northwestern.edu/netlogo/models/models/Sample%20Models/Computer%20Science/

Particle%20Systems/Particle%20System%20Basic.png

Page 8: Particles and their home in Geometry Shaders Paul Taylor 2010.

Language Based Models

• Very similar to CSG Constructive Solid Geometry

Page 9: Particles and their home in Geometry Shaders Paul Taylor 2010.

A fractal systemhttp://tabrizarchitecture.blogfa.com/post-314.aspx

Page 10: Particles and their home in Geometry Shaders Paul Taylor 2010.

Fractal Geometry

• http://neatorama.cachefly.net/images/2008-01/fractal-art-alfred-laing-spiral-fantasy.jpg

Page 11: Particles and their home in Geometry Shaders Paul Taylor 2010.

Procedural Noisehttp://www.naixela.com/alex/screens/cuda_perlin_3d.jpg

Page 12: Particles and their home in Geometry Shaders Paul Taylor 2010.

Particle Systems In Detail

• http://www.cinema.com/image_lib/4319_heading.jpg

Page 13: Particles and their home in Geometry Shaders Paul Taylor 2010.

Particle Systems

• Particles can be used to represent many objects that are difficult or near impossible to create utilising polygons

Page 14: Particles and their home in Geometry Shaders Paul Taylor 2010.

This is particle #1

• Particles are generally considered to be a point mass– All the mass of particle #1 is located at its infinite

centre.

Page 15: Particles and their home in Geometry Shaders Paul Taylor 2010.

Visually a Particle can be anything

• A Particle can be just about anything– A Vertex in a Mesh– A Texture– A Billboarded Texture– A Polygon– An Entire Mesh

Page 16: Particles and their home in Geometry Shaders Paul Taylor 2010.

Independent Particles

• Independent Particles are the simplest form– Each particle receives input only from the ‘world’

Great for:• Clouds• Wind• Sparks• Water Spray

Page 18: Particles and their home in Geometry Shaders Paul Taylor 2010.

Newtonian Particles– These guys are not anything really specialised– The only requirement is that they respect Newtons laws

of physics1) Velocity will remain constant when there is no net

force2) The net force is equal to the objects mass multiplied

by its acceleration3) The force A exerts on B is equal and opposite to the

force B exerts on A*For Independent Particles we can Ignore the 3rd rule

Page 19: Particles and their home in Geometry Shaders Paul Taylor 2010.

F = m * a

• Force = mass x acceleration

Page 20: Particles and their home in Geometry Shaders Paul Taylor 2010.

Position, Velocity and Acceleration

• The Derivative (Gradient) of Position is Velocity

• The Derivative (Gradient) of Velocity is Acceleration

All three components can be defined using just position, time and current velocity

* You could do away with velocity and use just Position and Time but then we would need to store previous position and previous time-step to calculate the new position.

Page 21: Particles and their home in Geometry Shaders Paul Taylor 2010.

Given a Point Mass

• We only need Position, and Velocity to define a Newtonian Particle

Position {x, y, z}Velocity {Vx, Vy, Vz}• To calculate the motion of the Particle we

need one more value, Time• deltaTime (Change in time)

Page 22: Particles and their home in Geometry Shaders Paul Taylor 2010.

Calculating Movement

• On an Independent Particle System of Q Particles– For each of Q Particles• Compute the Forces Applied to the Particle• Given mass doesn’t change generate the new velocity

vector using currentPosition, currentVelocity, and force• Display the particle

• This gives an algorithmic complexity of 1(Q)

Page 23: Particles and their home in Geometry Shaders Paul Taylor 2010.

In Practice

• Particle at Pos 0,0,0 with velocity 1,0,0• We shall use a force vector of gravity (0,-

9.8m/s/s,0)• V = Vi + acceleration(deltaTime)• V = {0,0,0} + {0,-9.8,0} (deltaTime)• So for a 1 second timestep

V = {1,0,0} + {0,-9.8,0} (1)1st step: V = {1,-9.8,0}2nd step: V = {1,-19.6, 0}

Page 24: Particles and their home in Geometry Shaders Paul Taylor 2010.

Adding Frictional Forces

• Adding a term that is proportional to velocity will simulate friction on the particles (such as air and water)

Page 26: Particles and their home in Geometry Shaders Paul Taylor 2010.

Particle Emitters

• Typically of high importance in video games• Used to efficiently generate many of the

effects (Eye Candy)• Generate Newtonian Particles with an applied

randomness

Page 27: Particles and their home in Geometry Shaders Paul Taylor 2010.

Dependant Particles

• Dependent Particles are connected together by a mesh, as strings or a even a theoretical meshGreat for:- Water- Fluids- Deformable Objects- Reactive Surfaces- Hair- Fur

http://people.csail.mit.edu/acornejo/images/grid.png

Page 28: Particles and their home in Geometry Shaders Paul Taylor 2010.

Particle Meshes

• In the most complex form each particle may receive input from every other particle in the mesh (A complexity of N2)

• More typically we will only allow input from each of the adjacent particles in the mesh, requiring only 4N calculations.

Page 29: Particles and their home in Geometry Shaders Paul Taylor 2010.

Forces on Particle Meshes

• There are many ways to calculate the forces between particles in a Mesh or String

• One of the most common is utilising Spring Forces

• When created a spring has a length, spring Constant, and a dampening Term (drag)

Page 30: Particles and their home in Geometry Shaders Paul Taylor 2010.

Spring Equations

• The Basic Spring from a to bF = -springConstant * distanceStretched

• With DampeningF = -springConstant * distanceStretched * dampeningTerm

Page 31: Particles and their home in Geometry Shaders Paul Taylor 2010.

Attractive and Repulsive Particles

• Spring Forces are used to keep particles together

• Repulsive and Attractive Forces can be used to make Objects interact– Functions such as gravity, and inverse-square-law

are typical• Computational Complexity again goes out to

N2

Page 32: Particles and their home in Geometry Shaders Paul Taylor 2010.

Force Fields

• These can be used to replace many point-to-point force calculations

• An example is using the gravity field of Earth– Without this force field, we would need to do the

calculations between each particle and the centre of the earth

Page 33: Particles and their home in Geometry Shaders Paul Taylor 2010.

Utilising the Geometry Shader

There are two excellent uses for the Geometry Shader

1) Rendering your Geometry2) Moving your Particles (Updating Positions)

Page 34: Particles and their home in Geometry Shaders Paul Taylor 2010.

The Render PassThis will use an updated Shader Technique:Old:

technique10 Render{ pass P0 { SetVertexShader( CompileShader( vs_4_0, VS() ) ); SetGeometryShader( NULL ); SetPixelShader( CompileShader( ps_4_0, PS() ) ); }}

New:technique10 UpdateParticles{ pass P0 { SetVertexShader( CompileShader( vs_4_0, VS() ) ); SetGeometryShader( CompileShader( gs_4_0, GS() ) );

SetPixelShader( NULL ); }}

Page 35: Particles and their home in Geometry Shaders Paul Taylor 2010.

So what work does our GS do?

• It takes in Points or triangles, and generates extra vertices

• In the simplest form we can use it for billboarding

• In a more complex way we can use it to create dynamic particle effects, which exist only on the GPU

• These particles live out their lives on the GPU dying before they every see the CPU

Page 36: Particles and their home in Geometry Shaders Paul Taylor 2010.

The Update Pass

• We only need to utilise the Geometry Shader– However we still need to set the pass for each

stage of the pipeline• This can also be done utilising a Compute

Shader– Supported officially in Dx11– Some Dx10 (Including the GTX260) support

Compute Shader version 4.0 and 4.1– It’s not a requirement for Dx10 cards

Page 37: Particles and their home in Geometry Shaders Paul Taylor 2010.

A Null Vertex Shader

VSParticleIn VSPassThroughmain(VSParticleIn input)

{ return input;}

Page 38: Particles and their home in Geometry Shaders Paul Taylor 2010.

To be continued...

• With Compute Shaders