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

マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDマテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDエピック・ゲームズ・ジャパン Epic Games Japan
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことSatoshi Kodaira
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow MappingSukwoo Lee
 
Checkerboard Rendering in Dark Souls: Remastered by QLOC
Checkerboard Rendering in Dark Souls: Remastered by QLOCCheckerboard Rendering in Dark Souls: Remastered by QLOC
Checkerboard Rendering in Dark Souls: Remastered by QLOCQLOC
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The SurgeMichele Giacalone
 
Implements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayImplements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayYEONG-CHEON YOU
 
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile GamesUnreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile GamesEpic Games China
 
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)Philip Hammer
 
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
 
UE4 Volumetric Fogで 空間を演出する!
UE4 Volumetric Fogで 空間を演出する!UE4 Volumetric Fogで 空間を演出する!
UE4 Volumetric Fogで 空間を演出する!com044
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonAMD Developer Central
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~ProjectAsura
 
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
 

What's hot (20)

マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDマテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
Ssao
SsaoSsao
Ssao
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないこと
 
Mask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組みMask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組み
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow Mapping
 
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
 
Checkerboard Rendering in Dark Souls: Remastered by QLOC
Checkerboard Rendering in Dark Souls: Remastered by QLOCCheckerboard Rendering in Dark Souls: Remastered by QLOC
Checkerboard Rendering in Dark Souls: Remastered by QLOC
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
Implements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayImplements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture Array
 
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile GamesUnreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
 
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based Rendering
 
UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編
 
UE4 Volumetric Fogで 空間を演出する!
UE4 Volumetric Fogで 空間を演出する!UE4 Volumetric Fogで 空間を演出する!
UE4 Volumetric Fogで 空間を演出する!
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~
 
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
 
UE4.17で入る新機能を一気に紹介・解説!
UE4.17で入る新機能を一気に紹介・解説!UE4.17で入る新機能を一気に紹介・解説!
UE4.17で入る新機能を一気に紹介・解説!
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
 

Viewers also liked

Screen Space Decals in Warhammer 40,000: Space Marine
Screen Space Decals in Warhammer 40,000: Space MarineScreen Space Decals in Warhammer 40,000: Space Marine
Screen Space Decals in Warhammer 40,000: Space MarinePope Kim
 
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)포프 김
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space MarinePope Kim
 
[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머포프 김
 
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
 

Viewers also liked (20)

Screen Space Decals in Warhammer 40,000: Space Marine
Screen Space Decals in Warhammer 40,000: Space MarineScreen Space Decals in Warhammer 40,000: Space Marine
Screen Space Decals in Warhammer 40,000: Space Marine
 
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space Marine
 
OpenGL for 2015
OpenGL for 2015OpenGL for 2015
OpenGL for 2015
 
[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머
 
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] 모바일 엔진 개발기
 

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

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Recently uploaded (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

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