SlideShare a Scribd company logo
1 of 49
Relic’s FX System:
Making Big Battles Come Alive
        Daniel Barrero, PhD
    Senior Graphics Programmer
     Relic Entertainment - THQ
    Korea Game Conference – KGC 2012 – October 8 2012
Introduction
• Video/Screenshots of fx
Relic’s FX System Lineage




Direct Descendant
Influenced By       Custom Port
FX System: More than a Few Good
             Particles
• FX Systems are at the core particle systems, for our purposes we
  require it to:
   • Allow multiple particle types at the same time
   • Be Fast and scale performance based on available resources
   • Allow wildly different particle behaviors
   • Multiple ways to generate particles
   • Easy to use by content creators
   • Able to interact easily with gameplay
   • Be able to be used for wildly different types of game worlds
Relic’s FX System Features
•   Broad variety of particle types
•   Hierarchical Particle System
•   Cascading FX (Trigger other FX and game actions)
•   FX Batching ( just 1 to 2 render calls to render everything )
•   Multiple Particle Behavior environments
•   Lit particles
•   Soft/Volumetric Particles
•   Explicit draw particle order within a particle system
•   Forward and Deferred renderer support.
•   Automatic texture atlas generation on load
•   Animated texture support
•   Efficient memory management
•   In camera and Post-Processing FX
System Architecture
• Object oriented style system
                        FX Type



   FX Combo   FX Particle     FX Emitters


• FX Types hold the information for the effect, FX
  Objects are instanced based on that information
  when a FX gets triggered and hold the specific
  instance mutable state information.
Hierarchical Particle System
• The FX Combo type is one of the core building
  blocks of the hierarchical particle system.
  – It can have up to 8 children of any FX Type, including
    more combos.
Hierarchical Particle System
• The FX Combo type is one of the core building
  blocks of the hierarchical particle system.
  – It can have up to 8 children of any FX Type, including
    more combos.
  – It’s properties indicate how, when and where children
    are created.
Hierarchical Particle System
• The FX Combo type is one of the core building
  blocks of the hierarchical particle system.
  – It can have up to 8 children of any FX Type, including
    more combos.
  – It’s properties indicate how, when and where children
    are created.
  – Children properties with the same name as the
    combo are relative to it’s parent, similarly root combo
    properties are relative to the action or object that
    triggered the effect.
Hierarchical Particle System
• The second key building block of the
  hierarchical particle system is the ability for
  any FX Type other than a combo to trigger a
  single child effect of any other FX type.
FX Particle Types
• Standard Geometric Particles:
  • FX Ring: just a simple standard textured quad.
     • The most common type of particle. E.g.
       Smoke, Explosions, Clouds, Ground effects, UI…
FX Particle Types
• Standard Geometric Particles:
  • FX Beam: a long stripped rectangle that goes from a point
    of origin to a specific destination point following a curve.
     • E.g. a Laser beam
FX Particle Types
• Standard Geometric Particles:
  • FX Trail: A curved flat shape that follows the path created
    by the movement of the fx emitter.
     • E.g. A constantly growing ribbon like Homeworld engine trails
FX Particle Types
• Standard Geometric Particles:
  • FX Streamer: A long stripped rectangle that goes from a
    point of origin up in a given direction up to a given
    distance.
     • E.g. Laser sword or flame thrower.
FX Particle Types
• Standard Geometric Particles:
  • FX Mesh: Generates the indicated mesh and attaches to a
    particle that controls the look and position of the mesh.
     • Useful for debris, rockets, 3D UI elements,...
Particle Types
• Post-Processing and non directly visible
  particles:
  • FX Distortion : An axis aligned quad that applies a post-
    processing distortion effect mostly used to simulate heat
    and pressure waves.
  • FX Lens Flare : Generates a lens flare effect applied as a
    post-processing effect in the screen area covered by the
    effect.
  • FX Light: Generates a dynamic point light in the world for
    the duration of the effect.
  • FX Audio: Creates an audio source with the indicated
    sound at the particle position.
Particle Rendering: Blend Modes
• Having an explicit draw particle order within a
  particle system allows having per particle
  alpha blended or additive blending modes:
            Particle       Particle       Background       Particle        Screen
                           Alpha                           Inv-Alpha

Additive:                             +                                =

Alpha
Blend:                 *              +                *               =
FX Particle Types: Lighting
• Lighting style affects particle triangulation.
  – E.g for a FX Ring:
                 Geometry         Render


 Unlit / Flat




 Lit (Pyramid)
Particle Rendering: Orientation
• Orientation relative to world or parent.
• Billboarding:
  – Spherical
  – World Axis Constrained
• Follow Terrain
Particle Generation
• A single FX Type can be triggered either
  directly or from other FX Types
  – E.g. a single ring.

• Using the FX Spray type to generate sets of FX
  Types with a common given behavior.
  – E.g a column of smoke
  – FX Sprays can be spawned
    by any other FX Type
Particle Behavior
• FX Visuals are separate from specific FX
  behavior.
          FX Type                 FX Environment


        Animation Curves   Simple Dynamics     Full Physics Simulation

• Each FX Type can have a different FX Environment
  allowing particles in a single effect to react
  differently to their environment.
Particle Behavior
• Animation Curves:
  – Any particle parameter can be animated using key
    framed animation.
Particle Behavior
• Simple Dynamics:
   – We use Newtonian physics and Verlet integration on all
     simulation environments to compute new particle positions.
   – For ground collisions we calculate collisions directly against the
     terrain height map.
   – For collisions against objects first collisions are computed
     against the animated bounding boxes then against the actual
     object polygons if precise intersections are requested.

• Full Physics Simulation:
   – FX Meshes being standard world objects, are able to use the
     standard game physics (Havok) to compute precise collisions
     against the environment if set up to do so.
Pipeline: FXEditor
• FX Editor is where individual effects get
  created.
Pipeline: Object Editor
• FX get hooked up with game actions in this
  tool.
Pipeline: Object Editor
• FX get hooked up with game actions in this
  tool.
  – Allows triggering FX from game data and gameplay
    events using a Data-Command-Action pattern.
     • Is an event based state machine system that is
       completely data driven.
     • Allows attaching FX to markers in objects and to trigger
       other fx based on game states data.
Making it Fast
• Problem: There can be thousands of particles
  of different types, blending modes and
  textures that need to be created and updated
  every frame.
  • Straight forward approach to render each particle
    separately produces too many render calls and
    context switches.
  • Updating and generating so many particles can
    take a lot of time in the CPU
Making it Fast
• Solution to reduce CPU cost:
  – Keep particle dynamics as simple as possible:
     • That means fake complex physics behaviors as much as
       possible with simple particle animations as much as
       possible and only use physics simulation for particles
       that really need it.
  – Multithread the particle update
     • Every frame the FX Manager spawns as many jobs as
       there are root FX Objects (FX Objects with no other FX
       Type as parent).
Making it Fast: Batching
• Solution to Render Cost: Batch Particles
  • Add all particle triangles to a single dynamic fat vertex and
    index buffers regardless of particle type.




  • Dynamic vertex buffer works as a circular buffer.
  • We do only 1 or 2 render calls per frame for all effects
    combined! (max 21845 particle triangles per render call)
Making it Fast : Batching
• Solution to Render Cost: Batch Particle
  • Pack FX textures in a texture atlas at load time to
    use a single shader and avoid texture switches.
  • Texture atlas is a cube map in d3d9 level HW
Making it Fast : Batching
• Supporting different modes in the same
  shader pass and using a unique blend state:
  – FX Textures are all pre-multiplied alpha.
  – Blend state is set to a custom additive + blend
    state:
        – Screen Color = Particle Color + Screen Color * Particle Alpha
     • Use separate alpha blend state:
        – Screen Color = Particle Alpha * Inv Particle Alpha + Screen
          Alpha
Making it Fast: Batching
• Supporting different modes in the same
  shader pass and using a unique blend state:
  – In shader code we compute the particle color and
    alpha depending on blend mode requested:
Making it Fast : Deferred Rendering
• Render in a buffer the nearest and furthest
  depth values during the depth pre-pass or the
  GBuffer pass.
• Render the FX on a separate lower res buffer
  using alpha blending using the near and far
  values to determine if an effect should be
  drawn in the buffer or not.
• Blend the FX buffer as full screen post-
  processing pass.
Making it Fast : Weather FX
• Besides the hierarchical system there is a
  specific separate System just for weather FX:
  – Solve a very specific problem in a very efficient
    way:
     • Falling Rain and Snow
     • Rain Splashes
  – Can be implemented in the CPU or completely on
    the GPU on recent hardware
Making it Fast : Weather FX
Making it Fast : Weather FX
Observations:
• Rain drops are only visible when close to the camera:
   • Particles only need to be computed inside the view
     frustum close to the camera:
      • Easier to reuse particles thus simplifying memory
        management by using a circular buffer for the particles.
• There is really only one type of particle needed
      • Textured Quads
Making it Fast : Weather FX
Observations (cont):
• It is really hard to see what specific falling drop
  produce a specific splash on an object at normal
  speed:
      • Means falling rain and rain splashes can use different
        non interdependant techiques for particle generation.
Making it Fast : Weather FX
Falling Rain and Snow Overall algorithm:
   • First Emit particles on an area in top of the view frustum
     and close to the camera.
Making it Fast : Weather FX
Falling Rain and Snow Overall algorithm:
   • First Emit particles on an area in top of the view frustum
     and close to the camera.
   • Calculate new positions for all particles
Making it Fast : Weather FX
Falling Rain and Snow Overall algorithm:
   • First Emit particles on an area in top of the view frustum
     and close to the camera.
   • Calculate new positions for all particles
   • If particle is outside of the view volume mark as dead and
     reuse.
• Problem: moving the camera will show more
  particles on one side until new particles are
  generated on the side of the direction of the
  movement.
Making it Fast : Weather FX
Falling Rain and Snow Overall algorithm:
• Solution: treat particles as an animated volumetric
  texture
   • If a particle goes out of the volume in one of the sides, just
     change the position as if it wrapped around the other side
     of the volume.
Making it Fast : Weather FX
• Volume particle tiling CPU code:




• Volume particle tiling GPU (Vertex Shader) code
Making it Fast : Weather FX
Falling Rain and Snow Overall algorithm:
• Solution: treat particles as an animated volumetric
  texture
   • If a particle goes out of the volume in one of the sides, just
     change the position as if it wrapped around the other side
     of the volume.
   • If a particle goes out of the volume in the bottom then
     reuse as a new particle.
Optimizations: Weather FX
• Rain Splashes algorithm
  • Also treats splashes as an animated volumetric texture
    that tiles in world space.
Optimizations: Weather FX
• Rain Splashes algorithm
  • Generate random positions on the horizontal plane instead
    of the top of the camera:
Optimizations: Weather FX
• Rain Splashes algorithm
  • Generate random positions on the horizontal plane instead
    of the top of the camera.
  • Trace a ray at that particle point from a high altitude and
    find first intersection with the terrain or objects allowed to
    have splashes.
  • Emit Splash particle
  at that point.
Optimizations: Weather FX
• Problem: If camera moves then splashes would move
  over the terrain.
• Solution: Let splash particles generated play their
  animation while they are visible by the camera once
  dead or out of the view frustum reuse for new
  particle in another position.
Acknowledgements
• Thanks to all the great FX Artists that keep
  pushing the limit of what the FX system can do
  and keep us busy with more ideas of how to
  make it better.
• Thanks to all the countless programmers that
  have worked on the FX System its tools and
  pipeline over the years.
Thank you
• Questions?

• Contact Information:
   • daniel.barrero@gmail.com
   • http://danielbarrero.com

More Related Content

What's hot

Physically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in FrostbitePhysically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in FrostbiteElectronic Arts / DICE
 
Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Graham Wihlidal
 
Deferred shading
Deferred shadingDeferred shading
Deferred shadingFrank Chao
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The SurgeMichele Giacalone
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunElectronic Arts / DICE
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect AndromedaElectronic Arts / DICE
 
A Bit More Deferred Cry Engine3
A Bit More Deferred   Cry Engine3A Bit More Deferred   Cry Engine3
A Bit More Deferred Cry Engine3guest11b095
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Johan Andersson
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
 
Terrain in Battlefield 3: A Modern, Complete and Scalable System
Terrain in Battlefield 3: A Modern, Complete and Scalable SystemTerrain in Battlefield 3: A Modern, Complete and Scalable System
Terrain in Battlefield 3: A Modern, Complete and Scalable SystemElectronic Arts / DICE
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility bufferWolfgang Engel
 
Destruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsDestruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsElectronic Arts / DICE
 
Crysis 2-key-rendering-features
Crysis 2-key-rendering-featuresCrysis 2-key-rendering-features
Crysis 2-key-rendering-featuresRaimundo Renato
 
Killzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemKillzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemGuerrilla
 
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...JP Lee
 

What's hot (20)

Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3
 
Physically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in FrostbitePhysically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in Frostbite
 
Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016
 
Deferred shading
Deferred shadingDeferred shading
Deferred shading
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
Lighting the City of Glass
Lighting the City of GlassLighting the City of Glass
Lighting the City of Glass
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
 
A Bit More Deferred Cry Engine3
A Bit More Deferred   Cry Engine3A Bit More Deferred   Cry Engine3
A Bit More Deferred Cry Engine3
 
Light prepass
Light prepassLight prepass
Light prepass
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
 
Stochastic Screen-Space Reflections
Stochastic Screen-Space ReflectionsStochastic Screen-Space Reflections
Stochastic Screen-Space Reflections
 
Frostbite on Mobile
Frostbite on MobileFrostbite on Mobile
Frostbite on Mobile
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 
Terrain in Battlefield 3: A Modern, Complete and Scalable System
Terrain in Battlefield 3: A Modern, Complete and Scalable SystemTerrain in Battlefield 3: A Modern, Complete and Scalable System
Terrain in Battlefield 3: A Modern, Complete and Scalable System
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility buffer
 
Destruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsDestruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance Fields
 
Crysis 2-key-rendering-features
Crysis 2-key-rendering-featuresCrysis 2-key-rendering-features
Crysis 2-key-rendering-features
 
Killzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemKillzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo Postmortem
 
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...
 

Viewers also liked

스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)포프 김
 
[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머포프 김
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingElectronic Arts / DICE
 
My part-time fun.
My part-time fun.My part-time fun.
My part-time fun.wlia03
 
Algo presentation
Algo presentationAlgo presentation
Algo presentationKasim Ijelu
 
Stylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield HeroesStylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield HeroesElectronic Arts / DICE
 
Big Data in Stock Exchange( HFT, Forex, Flash Crashes)
Big Data in Stock Exchange( HFT, Forex, Flash Crashes) Big Data in Stock Exchange( HFT, Forex, Flash Crashes)
Big Data in Stock Exchange( HFT, Forex, Flash Crashes) Dmytro Melnychuk
 
Deferred decal
Deferred decalDeferred decal
Deferred decal민웅 이
 
Masked Software Occlusion Culling
Masked Software Occlusion CullingMasked Software Occlusion Culling
Masked Software Occlusion CullingIntel® Software
 
아티스트에게 사랑받는 3DS Max 우버쉐이더
아티스트에게 사랑받는 3DS Max 우버쉐이더아티스트에게 사랑받는 3DS Max 우버쉐이더
아티스트에게 사랑받는 3DS Max 우버쉐이더포프 김
 
Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating...
Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating...Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating...
Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating...Daniel Barrero
 
김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법성훈 김
 
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & GlassDae Hyek KIM
 
Udk]static mesh & material
Udk]static mesh & materialUdk]static mesh & material
Udk]static mesh & materialYoung-jun Jeong
 
언차티드4 테크아트 파트5 Vertex Processing
언차티드4 테크아트 파트5 Vertex Processing언차티드4 테크아트 파트5 Vertex Processing
언차티드4 테크아트 파트5 Vertex ProcessingDae Hyek KIM
 
Margin trading and settlement of contracts an overview
Margin trading and settlement of contracts  an overviewMargin trading and settlement of contracts  an overview
Margin trading and settlement of contracts an overviewAshish Jain
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14AMD Developer Central
 

Viewers also liked (20)

스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
 
OpenGL for 2015
OpenGL for 2015OpenGL for 2015
OpenGL for 2015
 
[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based Rendering
 
My part-time fun.
My part-time fun.My part-time fun.
My part-time fun.
 
Algo presentation
Algo presentationAlgo presentation
Algo presentation
 
Stylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield HeroesStylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield Heroes
 
Big Data in Stock Exchange( HFT, Forex, Flash Crashes)
Big Data in Stock Exchange( HFT, Forex, Flash Crashes) Big Data in Stock Exchange( HFT, Forex, Flash Crashes)
Big Data in Stock Exchange( HFT, Forex, Flash Crashes)
 
Deferred decal
Deferred decalDeferred decal
Deferred decal
 
Masked Software Occlusion Culling
Masked Software Occlusion CullingMasked Software Occlusion Culling
Masked Software Occlusion Culling
 
아티스트에게 사랑받는 3DS Max 우버쉐이더
아티스트에게 사랑받는 3DS Max 우버쉐이더아티스트에게 사랑받는 3DS Max 우버쉐이더
아티스트에게 사랑받는 3DS Max 우버쉐이더
 
Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating...
Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating...Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating...
Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating...
 
김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법
 
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass
언차티드4 테크아트 파트4 Special Case Materials - Moss & Wetness & Glass
 
Hair in Tomb Raider
Hair in Tomb RaiderHair in Tomb Raider
Hair in Tomb Raider
 
Udk]static mesh & material
Udk]static mesh & materialUdk]static mesh & material
Udk]static mesh & material
 
언차티드4 테크아트 파트5 Vertex Processing
언차티드4 테크아트 파트5 Vertex Processing언차티드4 테크아트 파트5 Vertex Processing
언차티드4 테크아트 파트5 Vertex Processing
 
Margin trading and settlement of contracts an overview
Margin trading and settlement of contracts  an overviewMargin trading and settlement of contracts  an overview
Margin trading and settlement of contracts an overview
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
 

Similar to Relic's FX System

Unreal Engine Basics 06 - Animation, Audio, Visual Effects
Unreal Engine Basics 06 - Animation, Audio, Visual EffectsUnreal Engine Basics 06 - Animation, Audio, Visual Effects
Unreal Engine Basics 06 - Animation, Audio, Visual EffectsNick Pruehs
 
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~Unity Technologies Japan K.K.
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...Terrance Cohen
 
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Jarosław Pleskot
 
Making a game with Molehill: Zombie Tycoon
Making a game with Molehill: Zombie TycoonMaking a game with Molehill: Zombie Tycoon
Making a game with Molehill: Zombie TycoonJean-Philippe Doiron
 
Killzone Shadow Fall: Threading the Entity Update on PS4
Killzone Shadow Fall: Threading the Entity Update on PS4Killzone Shadow Fall: Threading the Entity Update on PS4
Killzone Shadow Fall: Threading the Entity Update on PS4jrouwe
 
Cg shaders with Unity3D
Cg shaders with Unity3DCg shaders with Unity3D
Cg shaders with Unity3DMichael Ivanov
 
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Unity Technologies
 
4,000 Adams at 90 Frames Per Second | Yi Fei Boon
4,000 Adams at 90 Frames Per Second | Yi Fei Boon4,000 Adams at 90 Frames Per Second | Yi Fei Boon
4,000 Adams at 90 Frames Per Second | Yi Fei BoonJessica Tams
 
Unity - Internals: memory and performance
Unity - Internals: memory and performanceUnity - Internals: memory and performance
Unity - Internals: memory and performanceCodemotion
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay
GDC 2010 - A Dynamic Component Architecture for High Performance GameplayGDC 2010 - A Dynamic Component Architecture for High Performance Gameplay
GDC 2010 - A Dynamic Component Architecture for High Performance GameplayTerrance Cohen
 
[UniteKorea2013] The Unity Rendering Pipeline
[UniteKorea2013] The Unity Rendering Pipeline[UniteKorea2013] The Unity Rendering Pipeline
[UniteKorea2013] The Unity Rendering PipelineWilliam Hugo Yang
 
Bulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoBulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoRichard McKnight
 
Windows game development with Unity 5
Windows game development with Unity 5Windows game development with Unity 5
Windows game development with Unity 5Jiri Danihelka
 
SPU Physics
SPU PhysicsSPU Physics
SPU PhysicsSlide_N
 
affine transformation for computer graphics
affine transformation for computer graphicsaffine transformation for computer graphics
affine transformation for computer graphicsDrSUGANYADEVIK
 
Benoit fouletier guillaume martin unity day- modern 2 d techniques-gce2014
Benoit fouletier guillaume martin   unity day- modern 2 d techniques-gce2014Benoit fouletier guillaume martin   unity day- modern 2 d techniques-gce2014
Benoit fouletier guillaume martin unity day- modern 2 d techniques-gce2014Mary Chan
 
LLaMA_Final The Meta LLM Presentation.pptx
LLaMA_Final The Meta LLM Presentation.pptxLLaMA_Final The Meta LLM Presentation.pptx
LLaMA_Final The Meta LLM Presentation.pptxDr. Yasir Butt
 

Similar to Relic's FX System (20)

InfectNet Technical
InfectNet TechnicalInfectNet Technical
InfectNet Technical
 
Unreal Engine Basics 06 - Animation, Audio, Visual Effects
Unreal Engine Basics 06 - Animation, Audio, Visual EffectsUnreal Engine Basics 06 - Animation, Audio, Visual Effects
Unreal Engine Basics 06 - Animation, Audio, Visual Effects
 
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
 
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
 
Making a game with Molehill: Zombie Tycoon
Making a game with Molehill: Zombie TycoonMaking a game with Molehill: Zombie Tycoon
Making a game with Molehill: Zombie Tycoon
 
Killzone Shadow Fall: Threading the Entity Update on PS4
Killzone Shadow Fall: Threading the Entity Update on PS4Killzone Shadow Fall: Threading the Entity Update on PS4
Killzone Shadow Fall: Threading the Entity Update on PS4
 
Cg shaders with Unity3D
Cg shaders with Unity3DCg shaders with Unity3D
Cg shaders with Unity3D
 
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
 
4,000 Adams at 90 Frames Per Second | Yi Fei Boon
4,000 Adams at 90 Frames Per Second | Yi Fei Boon4,000 Adams at 90 Frames Per Second | Yi Fei Boon
4,000 Adams at 90 Frames Per Second | Yi Fei Boon
 
Unity - Internals: memory and performance
Unity - Internals: memory and performanceUnity - Internals: memory and performance
Unity - Internals: memory and performance
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay
GDC 2010 - A Dynamic Component Architecture for High Performance GameplayGDC 2010 - A Dynamic Component Architecture for High Performance Gameplay
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay
 
[UniteKorea2013] The Unity Rendering Pipeline
[UniteKorea2013] The Unity Rendering Pipeline[UniteKorea2013] The Unity Rendering Pipeline
[UniteKorea2013] The Unity Rendering Pipeline
 
Bulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoBulk Export Tool for Alfresco
Bulk Export Tool for Alfresco
 
Windows game development with Unity 5
Windows game development with Unity 5Windows game development with Unity 5
Windows game development with Unity 5
 
SPU Physics
SPU PhysicsSPU Physics
SPU Physics
 
Far cry 3
Far cry 3Far cry 3
Far cry 3
 
affine transformation for computer graphics
affine transformation for computer graphicsaffine transformation for computer graphics
affine transformation for computer graphics
 
Benoit fouletier guillaume martin unity day- modern 2 d techniques-gce2014
Benoit fouletier guillaume martin   unity day- modern 2 d techniques-gce2014Benoit fouletier guillaume martin   unity day- modern 2 d techniques-gce2014
Benoit fouletier guillaume martin unity day- modern 2 d techniques-gce2014
 
LLaMA_Final The Meta LLM Presentation.pptx
LLaMA_Final The Meta LLM Presentation.pptxLLaMA_Final The Meta LLM Presentation.pptx
LLaMA_Final The Meta LLM Presentation.pptx
 

Recently uploaded

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Recently uploaded (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

Relic's FX System

  • 1. Relic’s FX System: Making Big Battles Come Alive Daniel Barrero, PhD Senior Graphics Programmer Relic Entertainment - THQ Korea Game Conference – KGC 2012 – October 8 2012
  • 3. Relic’s FX System Lineage Direct Descendant Influenced By Custom Port
  • 4. FX System: More than a Few Good Particles • FX Systems are at the core particle systems, for our purposes we require it to: • Allow multiple particle types at the same time • Be Fast and scale performance based on available resources • Allow wildly different particle behaviors • Multiple ways to generate particles • Easy to use by content creators • Able to interact easily with gameplay • Be able to be used for wildly different types of game worlds
  • 5. Relic’s FX System Features • Broad variety of particle types • Hierarchical Particle System • Cascading FX (Trigger other FX and game actions) • FX Batching ( just 1 to 2 render calls to render everything ) • Multiple Particle Behavior environments • Lit particles • Soft/Volumetric Particles • Explicit draw particle order within a particle system • Forward and Deferred renderer support. • Automatic texture atlas generation on load • Animated texture support • Efficient memory management • In camera and Post-Processing FX
  • 6. System Architecture • Object oriented style system FX Type FX Combo FX Particle FX Emitters • FX Types hold the information for the effect, FX Objects are instanced based on that information when a FX gets triggered and hold the specific instance mutable state information.
  • 7. Hierarchical Particle System • The FX Combo type is one of the core building blocks of the hierarchical particle system. – It can have up to 8 children of any FX Type, including more combos.
  • 8. Hierarchical Particle System • The FX Combo type is one of the core building blocks of the hierarchical particle system. – It can have up to 8 children of any FX Type, including more combos. – It’s properties indicate how, when and where children are created.
  • 9. Hierarchical Particle System • The FX Combo type is one of the core building blocks of the hierarchical particle system. – It can have up to 8 children of any FX Type, including more combos. – It’s properties indicate how, when and where children are created. – Children properties with the same name as the combo are relative to it’s parent, similarly root combo properties are relative to the action or object that triggered the effect.
  • 10. Hierarchical Particle System • The second key building block of the hierarchical particle system is the ability for any FX Type other than a combo to trigger a single child effect of any other FX type.
  • 11. FX Particle Types • Standard Geometric Particles: • FX Ring: just a simple standard textured quad. • The most common type of particle. E.g. Smoke, Explosions, Clouds, Ground effects, UI…
  • 12. FX Particle Types • Standard Geometric Particles: • FX Beam: a long stripped rectangle that goes from a point of origin to a specific destination point following a curve. • E.g. a Laser beam
  • 13. FX Particle Types • Standard Geometric Particles: • FX Trail: A curved flat shape that follows the path created by the movement of the fx emitter. • E.g. A constantly growing ribbon like Homeworld engine trails
  • 14. FX Particle Types • Standard Geometric Particles: • FX Streamer: A long stripped rectangle that goes from a point of origin up in a given direction up to a given distance. • E.g. Laser sword or flame thrower.
  • 15. FX Particle Types • Standard Geometric Particles: • FX Mesh: Generates the indicated mesh and attaches to a particle that controls the look and position of the mesh. • Useful for debris, rockets, 3D UI elements,...
  • 16. Particle Types • Post-Processing and non directly visible particles: • FX Distortion : An axis aligned quad that applies a post- processing distortion effect mostly used to simulate heat and pressure waves. • FX Lens Flare : Generates a lens flare effect applied as a post-processing effect in the screen area covered by the effect. • FX Light: Generates a dynamic point light in the world for the duration of the effect. • FX Audio: Creates an audio source with the indicated sound at the particle position.
  • 17. Particle Rendering: Blend Modes • Having an explicit draw particle order within a particle system allows having per particle alpha blended or additive blending modes: Particle Particle Background Particle Screen Alpha Inv-Alpha Additive: + = Alpha Blend: * + * =
  • 18. FX Particle Types: Lighting • Lighting style affects particle triangulation. – E.g for a FX Ring: Geometry Render Unlit / Flat Lit (Pyramid)
  • 19. Particle Rendering: Orientation • Orientation relative to world or parent. • Billboarding: – Spherical – World Axis Constrained • Follow Terrain
  • 20. Particle Generation • A single FX Type can be triggered either directly or from other FX Types – E.g. a single ring. • Using the FX Spray type to generate sets of FX Types with a common given behavior. – E.g a column of smoke – FX Sprays can be spawned by any other FX Type
  • 21. Particle Behavior • FX Visuals are separate from specific FX behavior. FX Type FX Environment Animation Curves Simple Dynamics Full Physics Simulation • Each FX Type can have a different FX Environment allowing particles in a single effect to react differently to their environment.
  • 22. Particle Behavior • Animation Curves: – Any particle parameter can be animated using key framed animation.
  • 23. Particle Behavior • Simple Dynamics: – We use Newtonian physics and Verlet integration on all simulation environments to compute new particle positions. – For ground collisions we calculate collisions directly against the terrain height map. – For collisions against objects first collisions are computed against the animated bounding boxes then against the actual object polygons if precise intersections are requested. • Full Physics Simulation: – FX Meshes being standard world objects, are able to use the standard game physics (Havok) to compute precise collisions against the environment if set up to do so.
  • 24. Pipeline: FXEditor • FX Editor is where individual effects get created.
  • 25. Pipeline: Object Editor • FX get hooked up with game actions in this tool.
  • 26. Pipeline: Object Editor • FX get hooked up with game actions in this tool. – Allows triggering FX from game data and gameplay events using a Data-Command-Action pattern. • Is an event based state machine system that is completely data driven. • Allows attaching FX to markers in objects and to trigger other fx based on game states data.
  • 27. Making it Fast • Problem: There can be thousands of particles of different types, blending modes and textures that need to be created and updated every frame. • Straight forward approach to render each particle separately produces too many render calls and context switches. • Updating and generating so many particles can take a lot of time in the CPU
  • 28. Making it Fast • Solution to reduce CPU cost: – Keep particle dynamics as simple as possible: • That means fake complex physics behaviors as much as possible with simple particle animations as much as possible and only use physics simulation for particles that really need it. – Multithread the particle update • Every frame the FX Manager spawns as many jobs as there are root FX Objects (FX Objects with no other FX Type as parent).
  • 29. Making it Fast: Batching • Solution to Render Cost: Batch Particles • Add all particle triangles to a single dynamic fat vertex and index buffers regardless of particle type. • Dynamic vertex buffer works as a circular buffer. • We do only 1 or 2 render calls per frame for all effects combined! (max 21845 particle triangles per render call)
  • 30. Making it Fast : Batching • Solution to Render Cost: Batch Particle • Pack FX textures in a texture atlas at load time to use a single shader and avoid texture switches. • Texture atlas is a cube map in d3d9 level HW
  • 31. Making it Fast : Batching • Supporting different modes in the same shader pass and using a unique blend state: – FX Textures are all pre-multiplied alpha. – Blend state is set to a custom additive + blend state: – Screen Color = Particle Color + Screen Color * Particle Alpha • Use separate alpha blend state: – Screen Color = Particle Alpha * Inv Particle Alpha + Screen Alpha
  • 32. Making it Fast: Batching • Supporting different modes in the same shader pass and using a unique blend state: – In shader code we compute the particle color and alpha depending on blend mode requested:
  • 33. Making it Fast : Deferred Rendering • Render in a buffer the nearest and furthest depth values during the depth pre-pass or the GBuffer pass. • Render the FX on a separate lower res buffer using alpha blending using the near and far values to determine if an effect should be drawn in the buffer or not. • Blend the FX buffer as full screen post- processing pass.
  • 34. Making it Fast : Weather FX • Besides the hierarchical system there is a specific separate System just for weather FX: – Solve a very specific problem in a very efficient way: • Falling Rain and Snow • Rain Splashes – Can be implemented in the CPU or completely on the GPU on recent hardware
  • 35. Making it Fast : Weather FX
  • 36. Making it Fast : Weather FX Observations: • Rain drops are only visible when close to the camera: • Particles only need to be computed inside the view frustum close to the camera: • Easier to reuse particles thus simplifying memory management by using a circular buffer for the particles. • There is really only one type of particle needed • Textured Quads
  • 37. Making it Fast : Weather FX Observations (cont): • It is really hard to see what specific falling drop produce a specific splash on an object at normal speed: • Means falling rain and rain splashes can use different non interdependant techiques for particle generation.
  • 38. Making it Fast : Weather FX Falling Rain and Snow Overall algorithm: • First Emit particles on an area in top of the view frustum and close to the camera.
  • 39. Making it Fast : Weather FX Falling Rain and Snow Overall algorithm: • First Emit particles on an area in top of the view frustum and close to the camera. • Calculate new positions for all particles
  • 40. Making it Fast : Weather FX Falling Rain and Snow Overall algorithm: • First Emit particles on an area in top of the view frustum and close to the camera. • Calculate new positions for all particles • If particle is outside of the view volume mark as dead and reuse. • Problem: moving the camera will show more particles on one side until new particles are generated on the side of the direction of the movement.
  • 41. Making it Fast : Weather FX Falling Rain and Snow Overall algorithm: • Solution: treat particles as an animated volumetric texture • If a particle goes out of the volume in one of the sides, just change the position as if it wrapped around the other side of the volume.
  • 42. Making it Fast : Weather FX • Volume particle tiling CPU code: • Volume particle tiling GPU (Vertex Shader) code
  • 43. Making it Fast : Weather FX Falling Rain and Snow Overall algorithm: • Solution: treat particles as an animated volumetric texture • If a particle goes out of the volume in one of the sides, just change the position as if it wrapped around the other side of the volume. • If a particle goes out of the volume in the bottom then reuse as a new particle.
  • 44. Optimizations: Weather FX • Rain Splashes algorithm • Also treats splashes as an animated volumetric texture that tiles in world space.
  • 45. Optimizations: Weather FX • Rain Splashes algorithm • Generate random positions on the horizontal plane instead of the top of the camera:
  • 46. Optimizations: Weather FX • Rain Splashes algorithm • Generate random positions on the horizontal plane instead of the top of the camera. • Trace a ray at that particle point from a high altitude and find first intersection with the terrain or objects allowed to have splashes. • Emit Splash particle at that point.
  • 47. Optimizations: Weather FX • Problem: If camera moves then splashes would move over the terrain. • Solution: Let splash particles generated play their animation while they are visible by the camera once dead or out of the view frustum reuse for new particle in another position.
  • 48. Acknowledgements • Thanks to all the great FX Artists that keep pushing the limit of what the FX system can do and keep us busy with more ideas of how to make it better. • Thanks to all the countless programmers that have worked on the FX System its tools and pipeline over the years.
  • 49. Thank you • Questions? • Contact Information: • daniel.barrero@gmail.com • http://danielbarrero.com

Editor's Notes

  1. Add images of each type and some details of how each is implemented
  2. Add images of each type and some details of how each is implemented
  3. Add images of each type and some details of how each is implemented
  4. Add images of each type and some details of how each is implemented
  5. Add images of each type and some details of how each is implemented
  6. Add images of each type and some details of how each is implemented
  7. Video of rain splashes here