Soft Particles Petter Börjesson, Mattias Thell. Particle Effects Smoke, fire, explosions, clouds,...

Preview:

Citation preview

Soft ParticlesPetter Börjesson, Mattias Thell

Particle Effects

• Smoke, fire, explosions, clouds, etc

• Camera-aligned 2D quads– Gives the illusion of a 3D volume

Illusion breakers

• Intersection with world geometry

To the rescue!

• Soft Particles– Soften the edges

• Use depth information to blend the sprite with the background

Compare Z values

• Compare Sprite Z vs World Z

• Check distance and blendif needed

Blending

• Simple approach:D = saturate((Zscene – Zparticle) * scale)

• Can produce artifacts

• Better approach:D = 0.5 * saturate(2*X)Contrast

Where X =1 – input if input > 0.5

Input otherwise

Depth Values

• How do we get depth information?

• Paper presents two ways:– Access depth buffer in pixel shader (DX 10)– Use a render target to read depth information

Read Z in pixel shader

Vertex Shader

Geo. Shader

Pixel Shader

Depth Buffer

Color Buffer

Pass 1

Vertex Shader

Geo. Shadercreates sprites

Pixel Shader

Color Buffer

Pass 2

Sprite Z

Scene Z

Render target

Vertex Shader

Geo. Shader

Pixel Shader

Depth Buffer

Color Buffer

Pass 1

Vertex Shader

Geo. Shadercreates sprites

Pixel Shader

Color Buffer

Pass 2

Sprite Z

Scene Z

Render Target

2D Particles with depth

• Store extra depth values in spritetexture

• During comparisonadd extra depth

2D Particles with depth

Billboards Billboards with depth

Volumetric Particles

• Enclose sprite in an imaginary sphere and trace rays through each pixel.

Sprite

Sphere

Ray

Camera

Volumetric Particles

• Find intersections with the sphere and step through.

Sprite

Sphere

Ray

Camera

Volumetric Particles

• Stop if we collide with the depth buffer.• Do blending as before.

Ray

Camera

Depth buffer

Volumetric Particles

Billboards with depth Volumetric

Demo!

Performance

• FPS with GTX 260 – 1280x1024

SoftHard

Mountain 215 215

Billboard 480 360

Tank demo:

With depth 420 330

Volumetric 65 60

Questions?