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

【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意UnityTechnologiesJapan002
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Tiago Sousa
 
Practical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT MethodsPractical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT MethodsNaughty Dog
 
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
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Tiago Sousa
 
HDR Theory and practicce (JP)
HDR Theory and practicce (JP)HDR Theory and practicce (JP)
HDR Theory and practicce (JP)Hajime Uchimura
 
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
 
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
 
Lighting Shading by John Hable
Lighting Shading by John HableLighting Shading by John Hable
Lighting Shading by John HableNaughty Dog
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
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
 
Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Takahiro Harada
 
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
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility bufferWolfgang Engel
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space MarinePope Kim
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnGuerrilla
 
The Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsThe Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsJohan Andersson
 

What's hot (20)

Stochastic Screen-Space Reflections
Stochastic Screen-Space ReflectionsStochastic Screen-Space Reflections
Stochastic Screen-Space Reflections
 
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)
 
Practical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT MethodsPractical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT Methods
 
The Unique Lighting of Mirror's Edge
The Unique Lighting of Mirror's EdgeThe Unique Lighting of Mirror's Edge
The Unique Lighting of Mirror's Edge
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based Rendering
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)
 
HDR Theory and practicce (JP)
HDR Theory and practicce (JP)HDR Theory and practicce (JP)
HDR Theory and practicce (JP)
 
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)
 
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
 
Lighting Shading by John Hable
Lighting Shading by John HableLighting Shading by John Hable
Lighting Shading by John Hable
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
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
 
Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)
 
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
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility buffer
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space Marine
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero Dawn
 
The Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsThe Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next Steps
 

Viewers also liked

스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)포프 김
 
[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
 
Hair animation by vertex shader
Hair animation by vertex shaderHair animation by vertex shader
Hair animation by vertex shader동석 김
 
5강 알파와알파소팅
5강 알파와알파소팅5강 알파와알파소팅
5강 알파와알파소팅JP Jung
 

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 대학특강] 아티스트 + 프로그래머
 
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] 모바일 엔진 개발기
 
Hair animation by vertex shader
Hair animation by vertex shaderHair animation by vertex shader
Hair animation by vertex shader
 
5강 알파와알파소팅
5강 알파와알파소팅5강 알파와알파소팅
5강 알파와알파소팅
 

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

Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxFIDO Alliance
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxjbellis
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهMohamed Sweelam
 
How to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in PakistanHow to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in Pakistandanishmna97
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctBrainSell Technologies
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingScyllaDB
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Paige Cruz
 
Navigating the Large Language Model choices_Ravi Daparthi
Navigating the Large Language Model choices_Ravi DaparthiNavigating the Large Language Model choices_Ravi Daparthi
Navigating the Large Language Model choices_Ravi DaparthiRaviKumarDaparthi
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfalexjohnson7307
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?Paolo Missier
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...FIDO Alliance
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...ScyllaDB
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)Wonjun Hwang
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Skynet Technologies
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch TuesdayIvanti
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityVictorSzoltysek
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc
 

Recently uploaded (20)

Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهله
 
How to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in PakistanHow to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in Pakistan
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
Navigating the Large Language Model choices_Ravi Daparthi
Navigating the Large Language Model choices_Ravi DaparthiNavigating the Large Language Model choices_Ravi Daparthi
Navigating the Large Language Model choices_Ravi Daparthi
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 

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