SlideShare a Scribd company logo
An Introduction to
Realistic Ocean
Rendering through
FFT
FABIO SURIANO
Ocean in Games and Movies
▷Games
• Assassin’s Creed III
• Assasins’s Creed Black Flag
Ocean in Games and Movies
▷Games
• Crysis
Ocean in Games and Movies
▷Games
• War Thunder
Ocean in Games and Movies
▷Movies
• Moana (Walt Disney Animation)
Ocean in Games and Movies
▷Movies
• Titanic
What they have in common ?
▷They all run an ocean simulation based on Fast Fourier Transform (FFT)
(Simulating Ocean Water by Jerry Tessendorf [Tessendorf J. 2001])
▷The simulation takes as input a frequency domain spectrum representation
and perfom the inverse of the Discrete Fourier Trasform (DFT) of that
spectrum
▷The result will be the time domain representation of the signal
▷The time domain representation is basically our heightmap at time t
Why FFT ?
▷Because computing the DFT as is, is expensive
▷DFT Complexity is for n samples
▷FFT (Fast fourier transform) has a complexity of
▷The FFT algorithm that we use is the so called
Cooley–Tukey (or Butterfly) algorithm
How big should the Fourier grid be?
▷For many situations, values in the range 128 to 512 are
sufficient [Tessendorf J. 2001].
▷Titanic and Waterworld were 2048x2048
▷Above a value of 2048, one should be careful because the
limits of numerical accuracy for floating point calculations
can become noticeable
▷We use a grid size of 512x512
Fourier Transform 101
▷But ! We can’t solve the previous integrals … unless …
▷Discretize the signal ! That means we sample the
signal at discrete time intervals in a given range
Inverse Fourier
Transform
Fourier Transform
Fourier Transform 101
▷k and t are in [0,N-1] range
Discrete Inverse
Fourier Transform
(IDFT)
Discrete Fourier
Transform (DFT)
FFT
▷We use the so called Butterfly algorithm to calculate our FFT [Sumanaweera T.]
FFT
▷Butterfly algorithm is quite complex
▷Normally you could find third party libraries that will perform FFT and
inverse (IFFT) for you
▷I decided to implement a Radix-2 IFFT on my own on the Compute Shader
in order to transform our frequency spectrum to the time domain
▷Our ocean simulation is mostly implemented on compute shaders under
Unreal Engine 4
▷We won’t go through the implementation details as you can find tons of
information online on the butterfly algorithm itself
What’s the math(ter) ☺ ?
▷The FFT-based representation of a wave height field expresses the wave height h(x, t) at the horizontal
position x = (x, z) as the sum of sinusoids with complex, time-dependent amplitudes [Tessendorf J. 2001]:
▷K are wavevectors that represent the direction in which the waves are traveling:
▷n = horizontal domain resolution
▷m = vertical domain resolution
▷The fft process generates the height field at discrete points
What’s the math(ter) ☺ ?
▷FFT wave heightfield sum breakdown
What’s the math(ter) ☺ ?
▷FFT wave heightfield sum breakdown
What’s the math(ter) ☺ ?
▷FFT wave heightfield sum breakdown
What’s the math(ter) ☺ ?
▷FFT wave heightfield sum breakdown
What’s the math(ter) ☺ ?
▷FFT wave heightfield sum breakdown
▷ is the Phillips spectrum and and are two draw from a random gaussian distribution with
mean 0 and standard deviation equal to 1
What’s the math(ter) ☺ ?
▷Animating Waves: The Dispersion Relation
▷Relationship between the set of frequencies and the magnitude of their corrisponding wave vectors
▷Given the Euler formula we have
And therefore we can easily derive that
Phillips Spectrum
▷It’s a spectrum derived from empirical data based on the observation of the real sea
▷ : global wave amplitude
▷ : normalized wave direction vector
▷ : the magnitude of
▷ : normalized wind direction vector
▷ : wind speed
▷ : gravitational constant
Normal and Displacement map
Height Map Normal Map
Central Difference
▷
Normal and Displacement map
▷But we need two additional displacement and otherwise the resulting displaced surface won’t
behave realistically (so two additional IFFT):
▷ IFFT
▷IFFT:
▷ IFFT
Normal and Displacement map
▷So the final horizontal displacement will be: , where lambda is a convenient factor
used to scale the horizontal displacement in order to have sharper wave peaks, giving to them a more
«choppy» look
▷So if we interleave the horizontal displacement and the height displacement (Dx Dy Dz), we’ll have:
Normal and displacement map
▷Picture from [NVIDIA]
Kenshiro is crying in this very moment …
Rendering
▷So, the results of implementing the previous set of equantions are a tile of highly realistic sea surface
Rendering
▷So, the results of implementing the previous set of equantions are a tile of highly realistic sea surface
Rendering
▷So, the results of implementing the previous set of equantions are a tile of highly realistic sea surface
What about Ocean Foams ?
▷Ocean has Foams ☺
▷
Foams happen on the
tip/crest of a given wave
What about Ocean Foams ?
▷We can use the Jacobian [Tessendorf J. 2001] of our displacement map in order to calculate a convenient
map that will mask only the wave peaks:
Folding Map
*
We will call this map folding map because it represents were the wave peaks self intersect them until they fold on
themselves
Rendering
▷So, the results of implementing the previous set of equantions are a tile of highly realistic sea surface
Ocean LOD
▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned
mesh
Ocean LOD
▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned
mesh
▷ Method introduced and used by Crytek [Sousa T. 2011] in the first ocean implementation for the game
Crysis
Ocean LOD
▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned
mesh
▷ Method introduced and used by Crytek [Sousa T. 2011] in the first ocean implementation for the game
Crysis
▷Very cheap and gives consistent and uniform resolution from near to far distance
Ocean LOD
▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned
mesh
▷ Method introduced and used by Crytek [Sousa T. 2011] in the first ocean implementation for the game
Crysis
▷Very cheap and gives consistent and uniform resolution from near to far distance
▷Artifacts free
Ocean LOD
▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned
mesh
▷ Method introduced and used by Crytek [Sousa T. 2011] in the first ocean implementation for the game
Crysis
▷Very cheap and gives consistent and uniform resolution from near to far distance
▷Artifacts free
▷Other method are projected grid (not a top down but a perspective ray traced grid [Johanson Claes
2004]).
But suffers from artifacts in the distance because of the uneven mesh resolution distribution from near to
far. Not very controllable in the end.
Ocean LOD
▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned
mesh
▷ Method introduced and used by Crytek [Sousa T. 2011] in the first ocean implementation for the game
Crysis
▷Very cheap and gives consistent and uniform resolution from near to far distance
▷Artifacts free
▷Other method are projected grid (not a top down but a perspective ray traced grid [Johanson Claes
2004]).
But suffers from artifacts in the distance because of the uneven mesh resolution distribution from near to
far. Not very controllable in the end.
▷Other more general solution would be the implementation of a quadtree based LOD system.
Ocean level of detail (LOD)
▷The grid used to render the displaced geometry is a top down projection of a camera aligned mesh
▷ Player Camera point of view (POV)
Ocean LOD
▷The grid used to render the displaced geometry is a top down projection of a camera aligned mesh
▷External Camera POV (Red arrow indicate where the player camera is normally placed)
Ocean Shading
▷Shading has been made under Unreal Engine 4 (UE4) and the Ocean simulation is written entirely in C++
(No Blueprint ☺)
Ocean Shading
▷Water in general is rendered by a minimum of two main shading aspects:
• Reflection
• Refraction
The Fresnel term will state the probability for a ray to be reflected
See the complete Fresnel expression below only for the vertical polarization:
So we normally won’t use the previous expression because it’s expensive
We use then the Schlick Fresnel approximation [Schilck C. 1994]
Ocean Shading
▷Fresnel Schlick approximation:
Where is the fresnel expression to a normal incidence angle
Which we can derive easily from the general fresnel (see previous slide) equation considering (and
therefore )
▷The adapted Schlick approximation is about 30% faster than the unpolarized Fresnel equation if you
avoid the costly pow function (if you don’t it’s twice as slow)
Ocean Shading
▷Because by the definition Fresnel (F) is a probability function, we know that will be in [0,1] range
▷Therefore our final reflected/refracted Ocean color will be
FinalColor = lerp(WaterColor,EnvMapColor,F)
▷Where F is our fresnel computed with the Schlick approximation [Schlick C. 1994]
▷When it comes to UE4 we also have the chance to add screen space reflections that will give us an
additional occlusion for the ambient reflection that EnvMap can’t
Questions ?
References
[Tessendorf J. 2001]: Simulating ocean water. In ACM SIGGRAPH course notes (2001).
[Golias R., Jensen L.S.]: Deep Water Animation and Rendering. Gamasutra.com
[Schlick C. 1994]: An inexpensive BRDF model for physically-based rendering. Computer Graphics Forum 13 (1994), 233–
246.
[Seymour M. 2012]: Assassin’s Creed III: The tech behind (or beneath) the action. FxGuide
[Sumanaweera T.]: Medical Image Reconstruction with the FFT. GPU Gems 2, Chapter 48
[NVIDIA]: Ocean Surface Simulation
[Sousa T. 2011]: CryENGINE 3 Rendering Techniques. Gamefest 2011
[Johanson Claes 2004]: Real-time water rendering - introducing the projected grid concept. Master of Science thesis in
computer graphics
Thanks for your time!
Contacts:
Senior Graphics Programmer f.suriano@stcware.com
PR & Marketing e.lucheroni@stcware.com
Information info@sctware.com
Ad

More Related Content

What's hot (20)

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
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
Electronic Arts / DICE
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based Rendering
Electronic Arts / DICE
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
Michele Giacalone
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Electronic Arts / DICE
 
Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1
Ki Hyunwoo
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
Tiago Sousa
 
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
Electronic Arts / DICE
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
Electronic Arts / DICE
 
Star Ocean 4 - Flexible Shader Managment and Post-processing
Star Ocean 4 - Flexible Shader Managment and Post-processingStar Ocean 4 - Flexible Shader Managment and Post-processing
Star Ocean 4 - Flexible Shader Managment and Post-processing
umsl snfrzb
 
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
 
Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)
Tiago Sousa
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
repii
 
Killzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemKillzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo Postmortem
Guerrilla
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility buffer
Wolfgang Engel
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
Electronic Arts / DICE
 
Stochastic Screen-Space Reflections
Stochastic Screen-Space ReflectionsStochastic Screen-Space Reflections
Stochastic Screen-Space Reflections
Electronic Arts / DICE
 
A Bizarre Way to do Real-Time Lighting
A Bizarre Way to do Real-Time LightingA Bizarre Way to do Real-Time Lighting
A Bizarre Way to do Real-Time Lighting
Steven Tovey
 
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
Graham Wihlidal
 
Lighting the City of Glass
Lighting the City of GlassLighting the City of Glass
Lighting the City of Glass
Electronic Arts / DICE
 
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
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
Electronic Arts / DICE
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based Rendering
Electronic Arts / DICE
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
Michele Giacalone
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Electronic Arts / DICE
 
Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1
Ki Hyunwoo
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
Tiago Sousa
 
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
Electronic Arts / DICE
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
Electronic Arts / DICE
 
Star Ocean 4 - Flexible Shader Managment and Post-processing
Star Ocean 4 - Flexible Shader Managment and Post-processingStar Ocean 4 - Flexible Shader Managment and Post-processing
Star Ocean 4 - Flexible Shader Managment and Post-processing
umsl snfrzb
 
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
 
Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)
Tiago Sousa
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
repii
 
Killzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemKillzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo Postmortem
Guerrilla
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility buffer
Wolfgang Engel
 
A Bizarre Way to do Real-Time Lighting
A Bizarre Way to do Real-Time LightingA Bizarre Way to do Real-Time Lighting
A Bizarre Way to do Real-Time Lighting
Steven Tovey
 
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
Graham Wihlidal
 

Similar to An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Codemotion Rome 2017 (20)

Basics of edge detection and forier transform
Basics of edge detection and forier transformBasics of edge detection and forier transform
Basics of edge detection and forier transform
Simranjit Singh
 
Advanced Lighting Techniques Dan Baker (Meltdown 2005)
Advanced Lighting Techniques   Dan Baker (Meltdown 2005)Advanced Lighting Techniques   Dan Baker (Meltdown 2005)
Advanced Lighting Techniques Dan Baker (Meltdown 2005)
mobius.cn
 
DIGITAL IMAGE PROCESSING - Day 4 Image Transform
DIGITAL IMAGE PROCESSING - Day 4 Image TransformDIGITAL IMAGE PROCESSING - Day 4 Image Transform
DIGITAL IMAGE PROCESSING - Day 4 Image Transform
vijayanand Kandaswamy
 
Comments_on_Paper_Mufti_1983
Comments_on_Paper_Mufti_1983Comments_on_Paper_Mufti_1983
Comments_on_Paper_Mufti_1983
Benjamin Seive
 
PROCESSING PHASE-IV.pptx
PROCESSING PHASE-IV.pptxPROCESSING PHASE-IV.pptx
PROCESSING PHASE-IV.pptx
IndrajitDasgupta5
 
Volumetric Lighting for Many Lights in Lords of the Fallen
Volumetric Lighting for Many Lights in Lords of the FallenVolumetric Lighting for Many Lights in Lords of the Fallen
Volumetric Lighting for Many Lights in Lords of the Fallen
Benjamin Glatzel
 
Understanding neural radiance fields
Understanding neural radiance fieldsUnderstanding neural radiance fields
Understanding neural radiance fields
Varun Bhaseen
 
Від побудови сейсмічних зображень до інверсії
Від побудови сейсмічних зображень до інверсіїВід побудови сейсмічних зображень до інверсії
Від побудови сейсмічних зображень до інверсії
Sergey Starokadomsky
 
Tele immersion
Tele immersionTele immersion
Tele immersion
Shaurya Gogia
 
Fisheye Omnidirectional View in Autonomous Driving
Fisheye Omnidirectional View in Autonomous DrivingFisheye Omnidirectional View in Autonomous Driving
Fisheye Omnidirectional View in Autonomous Driving
Yu Huang
 
30th コンピュータビジョン勉強会@関東 DynamicFusion
30th コンピュータビジョン勉強会@関東 DynamicFusion30th コンピュータビジョン勉強会@関東 DynamicFusion
30th コンピュータビジョン勉強会@関東 DynamicFusion
Hiroki Mizuno
 
Introduction to seismic interpretation
Introduction to seismic interpretationIntroduction to seismic interpretation
Introduction to seismic interpretation
Amir I. Abdelaziz
 
Seismic geometric corrections
Seismic geometric correctionsSeismic geometric corrections
Seismic geometric corrections
Ali Ahmad Saddat
 
Geometry of Aerial Photographs.pdf
Geometry of Aerial Photographs.pdfGeometry of Aerial Photographs.pdf
Geometry of Aerial Photographs.pdf
kunedzimwefrancisca
 
Fourier transforms Mulesh Anju Pramanik___
Fourier transforms Mulesh Anju Pramanik___Fourier transforms Mulesh Anju Pramanik___
Fourier transforms Mulesh Anju Pramanik___
mpramanik1296
 
Class[4][19th jun] [three js-camera&light]
Class[4][19th jun] [three js-camera&light]Class[4][19th jun] [three js-camera&light]
Class[4][19th jun] [three js-camera&light]
Saajid Akram
 
Lec03 light
Lec03 lightLec03 light
Lec03 light
BaliThorat1
 
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
Masaya Kaneko
 
Lec11.ppt
Lec11.pptLec11.ppt
Lec11.ppt
ssuser637f3e1
 
Discrete Fourier Series | Discrete Fourier Transform | Discrete Time Fourier ...
Discrete Fourier Series | Discrete Fourier Transform | Discrete Time Fourier ...Discrete Fourier Series | Discrete Fourier Transform | Discrete Time Fourier ...
Discrete Fourier Series | Discrete Fourier Transform | Discrete Time Fourier ...
Mehran University Of Engineering and Technology, Pakistan
 
Basics of edge detection and forier transform
Basics of edge detection and forier transformBasics of edge detection and forier transform
Basics of edge detection and forier transform
Simranjit Singh
 
Advanced Lighting Techniques Dan Baker (Meltdown 2005)
Advanced Lighting Techniques   Dan Baker (Meltdown 2005)Advanced Lighting Techniques   Dan Baker (Meltdown 2005)
Advanced Lighting Techniques Dan Baker (Meltdown 2005)
mobius.cn
 
DIGITAL IMAGE PROCESSING - Day 4 Image Transform
DIGITAL IMAGE PROCESSING - Day 4 Image TransformDIGITAL IMAGE PROCESSING - Day 4 Image Transform
DIGITAL IMAGE PROCESSING - Day 4 Image Transform
vijayanand Kandaswamy
 
Comments_on_Paper_Mufti_1983
Comments_on_Paper_Mufti_1983Comments_on_Paper_Mufti_1983
Comments_on_Paper_Mufti_1983
Benjamin Seive
 
Volumetric Lighting for Many Lights in Lords of the Fallen
Volumetric Lighting for Many Lights in Lords of the FallenVolumetric Lighting for Many Lights in Lords of the Fallen
Volumetric Lighting for Many Lights in Lords of the Fallen
Benjamin Glatzel
 
Understanding neural radiance fields
Understanding neural radiance fieldsUnderstanding neural radiance fields
Understanding neural radiance fields
Varun Bhaseen
 
Від побудови сейсмічних зображень до інверсії
Від побудови сейсмічних зображень до інверсіїВід побудови сейсмічних зображень до інверсії
Від побудови сейсмічних зображень до інверсії
Sergey Starokadomsky
 
Fisheye Omnidirectional View in Autonomous Driving
Fisheye Omnidirectional View in Autonomous DrivingFisheye Omnidirectional View in Autonomous Driving
Fisheye Omnidirectional View in Autonomous Driving
Yu Huang
 
30th コンピュータビジョン勉強会@関東 DynamicFusion
30th コンピュータビジョン勉強会@関東 DynamicFusion30th コンピュータビジョン勉強会@関東 DynamicFusion
30th コンピュータビジョン勉強会@関東 DynamicFusion
Hiroki Mizuno
 
Introduction to seismic interpretation
Introduction to seismic interpretationIntroduction to seismic interpretation
Introduction to seismic interpretation
Amir I. Abdelaziz
 
Seismic geometric corrections
Seismic geometric correctionsSeismic geometric corrections
Seismic geometric corrections
Ali Ahmad Saddat
 
Geometry of Aerial Photographs.pdf
Geometry of Aerial Photographs.pdfGeometry of Aerial Photographs.pdf
Geometry of Aerial Photographs.pdf
kunedzimwefrancisca
 
Fourier transforms Mulesh Anju Pramanik___
Fourier transforms Mulesh Anju Pramanik___Fourier transforms Mulesh Anju Pramanik___
Fourier transforms Mulesh Anju Pramanik___
mpramanik1296
 
Class[4][19th jun] [three js-camera&light]
Class[4][19th jun] [three js-camera&light]Class[4][19th jun] [three js-camera&light]
Class[4][19th jun] [three js-camera&light]
Saajid Akram
 
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
Masaya Kaneko
 
Ad

More from Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
Codemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
Codemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
Codemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Codemotion
 
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
Codemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
Codemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
Codemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Codemotion
 
Ad

Recently uploaded (20)

Top-AI-Based-Tools-for-Game-Developers (1).pptx
Top-AI-Based-Tools-for-Game-Developers (1).pptxTop-AI-Based-Tools-for-Game-Developers (1).pptx
Top-AI-Based-Tools-for-Game-Developers (1).pptx
BR Softech
 
How to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabberHow to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabber
eGrabber
 
IT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information TechnologyIT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information Technology
SHEHABALYAMANI
 
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Safe Software
 
AsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API DesignAsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API Design
leonid54
 
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptxSmart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Seasia Infotech
 
AI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of DocumentsAI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of Documents
UiPathCommunity
 
AI x Accessibility UXPA by Stew Smith and Olivier Vroom
AI x Accessibility UXPA by Stew Smith and Olivier VroomAI x Accessibility UXPA by Stew Smith and Olivier Vroom
AI x Accessibility UXPA by Stew Smith and Olivier Vroom
UXPA Boston
 
Config 2025 presentation recap covering both days
Config 2025 presentation recap covering both daysConfig 2025 presentation recap covering both days
Config 2025 presentation recap covering both days
TrishAntoni1
 
Shoehorning dependency injection into a FP language, what does it take?
Shoehorning dependency injection into a FP language, what does it take?Shoehorning dependency injection into a FP language, what does it take?
Shoehorning dependency injection into a FP language, what does it take?
Eric Torreborre
 
Artificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptxArtificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptx
03ANMOLCHAURASIYA
 
AI-proof your career by Olivier Vroom and David WIlliamson
AI-proof your career by Olivier Vroom and David WIlliamsonAI-proof your career by Olivier Vroom and David WIlliamson
AI-proof your career by Olivier Vroom and David WIlliamson
UXPA Boston
 
Mastering Testing in the Modern F&B Landscape
Mastering Testing in the Modern F&B LandscapeMastering Testing in the Modern F&B Landscape
Mastering Testing in the Modern F&B Landscape
marketing943205
 
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptxTop 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
mkubeusa
 
Design pattern talk by Kaya Weers - 2025 (v2)
Design pattern talk by Kaya Weers - 2025 (v2)Design pattern talk by Kaya Weers - 2025 (v2)
Design pattern talk by Kaya Weers - 2025 (v2)
Kaya Weers
 
UiPath Automation Suite – Cas d'usage d'une NGO internationale basée à Genève
UiPath Automation Suite – Cas d'usage d'une NGO internationale basée à GenèveUiPath Automation Suite – Cas d'usage d'une NGO internationale basée à Genève
UiPath Automation Suite – Cas d'usage d'une NGO internationale basée à Genève
UiPathCommunity
 
Viam product demo_ Deploying and scaling AI with hardware.pdf
Viam product demo_ Deploying and scaling AI with hardware.pdfViam product demo_ Deploying and scaling AI with hardware.pdf
Viam product demo_ Deploying and scaling AI with hardware.pdf
camilalamoratta
 
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Markus Eisele
 
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
SOFTTECHHUB
 
Com fer un pla de gestió de dades amb l'eiNa DMP (en anglès)
Com fer un pla de gestió de dades amb l'eiNa DMP (en anglès)Com fer un pla de gestió de dades amb l'eiNa DMP (en anglès)
Com fer un pla de gestió de dades amb l'eiNa DMP (en anglès)
CSUC - Consorci de Serveis Universitaris de Catalunya
 
Top-AI-Based-Tools-for-Game-Developers (1).pptx
Top-AI-Based-Tools-for-Game-Developers (1).pptxTop-AI-Based-Tools-for-Game-Developers (1).pptx
Top-AI-Based-Tools-for-Game-Developers (1).pptx
BR Softech
 
How to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabberHow to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabber
eGrabber
 
IT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information TechnologyIT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information Technology
SHEHABALYAMANI
 
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Safe Software
 
AsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API DesignAsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API Design
leonid54
 
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptxSmart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Seasia Infotech
 
AI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of DocumentsAI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of Documents
UiPathCommunity
 
AI x Accessibility UXPA by Stew Smith and Olivier Vroom
AI x Accessibility UXPA by Stew Smith and Olivier VroomAI x Accessibility UXPA by Stew Smith and Olivier Vroom
AI x Accessibility UXPA by Stew Smith and Olivier Vroom
UXPA Boston
 
Config 2025 presentation recap covering both days
Config 2025 presentation recap covering both daysConfig 2025 presentation recap covering both days
Config 2025 presentation recap covering both days
TrishAntoni1
 
Shoehorning dependency injection into a FP language, what does it take?
Shoehorning dependency injection into a FP language, what does it take?Shoehorning dependency injection into a FP language, what does it take?
Shoehorning dependency injection into a FP language, what does it take?
Eric Torreborre
 
Artificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptxArtificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptx
03ANMOLCHAURASIYA
 
AI-proof your career by Olivier Vroom and David WIlliamson
AI-proof your career by Olivier Vroom and David WIlliamsonAI-proof your career by Olivier Vroom and David WIlliamson
AI-proof your career by Olivier Vroom and David WIlliamson
UXPA Boston
 
Mastering Testing in the Modern F&B Landscape
Mastering Testing in the Modern F&B LandscapeMastering Testing in the Modern F&B Landscape
Mastering Testing in the Modern F&B Landscape
marketing943205
 
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptxTop 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
mkubeusa
 
Design pattern talk by Kaya Weers - 2025 (v2)
Design pattern talk by Kaya Weers - 2025 (v2)Design pattern talk by Kaya Weers - 2025 (v2)
Design pattern talk by Kaya Weers - 2025 (v2)
Kaya Weers
 
UiPath Automation Suite – Cas d'usage d'une NGO internationale basée à Genève
UiPath Automation Suite – Cas d'usage d'une NGO internationale basée à GenèveUiPath Automation Suite – Cas d'usage d'une NGO internationale basée à Genève
UiPath Automation Suite – Cas d'usage d'une NGO internationale basée à Genève
UiPathCommunity
 
Viam product demo_ Deploying and scaling AI with hardware.pdf
Viam product demo_ Deploying and scaling AI with hardware.pdfViam product demo_ Deploying and scaling AI with hardware.pdf
Viam product demo_ Deploying and scaling AI with hardware.pdf
camilalamoratta
 
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Markus Eisele
 
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
SOFTTECHHUB
 

An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Codemotion Rome 2017

  • 1. An Introduction to Realistic Ocean Rendering through FFT
  • 3. Ocean in Games and Movies ▷Games • Assassin’s Creed III • Assasins’s Creed Black Flag
  • 4. Ocean in Games and Movies ▷Games • Crysis
  • 5. Ocean in Games and Movies ▷Games • War Thunder
  • 6. Ocean in Games and Movies ▷Movies • Moana (Walt Disney Animation)
  • 7. Ocean in Games and Movies ▷Movies • Titanic
  • 8. What they have in common ? ▷They all run an ocean simulation based on Fast Fourier Transform (FFT) (Simulating Ocean Water by Jerry Tessendorf [Tessendorf J. 2001]) ▷The simulation takes as input a frequency domain spectrum representation and perfom the inverse of the Discrete Fourier Trasform (DFT) of that spectrum ▷The result will be the time domain representation of the signal ▷The time domain representation is basically our heightmap at time t
  • 9. Why FFT ? ▷Because computing the DFT as is, is expensive ▷DFT Complexity is for n samples ▷FFT (Fast fourier transform) has a complexity of ▷The FFT algorithm that we use is the so called Cooley–Tukey (or Butterfly) algorithm
  • 10. How big should the Fourier grid be? ▷For many situations, values in the range 128 to 512 are sufficient [Tessendorf J. 2001]. ▷Titanic and Waterworld were 2048x2048 ▷Above a value of 2048, one should be careful because the limits of numerical accuracy for floating point calculations can become noticeable ▷We use a grid size of 512x512
  • 11. Fourier Transform 101 ▷But ! We can’t solve the previous integrals … unless … ▷Discretize the signal ! That means we sample the signal at discrete time intervals in a given range Inverse Fourier Transform Fourier Transform
  • 12. Fourier Transform 101 ▷k and t are in [0,N-1] range Discrete Inverse Fourier Transform (IDFT) Discrete Fourier Transform (DFT)
  • 13. FFT ▷We use the so called Butterfly algorithm to calculate our FFT [Sumanaweera T.]
  • 14. FFT ▷Butterfly algorithm is quite complex ▷Normally you could find third party libraries that will perform FFT and inverse (IFFT) for you ▷I decided to implement a Radix-2 IFFT on my own on the Compute Shader in order to transform our frequency spectrum to the time domain ▷Our ocean simulation is mostly implemented on compute shaders under Unreal Engine 4 ▷We won’t go through the implementation details as you can find tons of information online on the butterfly algorithm itself
  • 15. What’s the math(ter) ☺ ? ▷The FFT-based representation of a wave height field expresses the wave height h(x, t) at the horizontal position x = (x, z) as the sum of sinusoids with complex, time-dependent amplitudes [Tessendorf J. 2001]: ▷K are wavevectors that represent the direction in which the waves are traveling: ▷n = horizontal domain resolution ▷m = vertical domain resolution ▷The fft process generates the height field at discrete points
  • 16. What’s the math(ter) ☺ ? ▷FFT wave heightfield sum breakdown
  • 17. What’s the math(ter) ☺ ? ▷FFT wave heightfield sum breakdown
  • 18. What’s the math(ter) ☺ ? ▷FFT wave heightfield sum breakdown
  • 19. What’s the math(ter) ☺ ? ▷FFT wave heightfield sum breakdown
  • 20. What’s the math(ter) ☺ ? ▷FFT wave heightfield sum breakdown ▷ is the Phillips spectrum and and are two draw from a random gaussian distribution with mean 0 and standard deviation equal to 1
  • 21. What’s the math(ter) ☺ ? ▷Animating Waves: The Dispersion Relation ▷Relationship between the set of frequencies and the magnitude of their corrisponding wave vectors ▷Given the Euler formula we have And therefore we can easily derive that
  • 22. Phillips Spectrum ▷It’s a spectrum derived from empirical data based on the observation of the real sea ▷ : global wave amplitude ▷ : normalized wave direction vector ▷ : the magnitude of ▷ : normalized wind direction vector ▷ : wind speed ▷ : gravitational constant
  • 23. Normal and Displacement map Height Map Normal Map Central Difference ▷
  • 24. Normal and Displacement map ▷But we need two additional displacement and otherwise the resulting displaced surface won’t behave realistically (so two additional IFFT): ▷ IFFT ▷IFFT: ▷ IFFT
  • 25. Normal and Displacement map ▷So the final horizontal displacement will be: , where lambda is a convenient factor used to scale the horizontal displacement in order to have sharper wave peaks, giving to them a more «choppy» look ▷So if we interleave the horizontal displacement and the height displacement (Dx Dy Dz), we’ll have:
  • 26. Normal and displacement map ▷Picture from [NVIDIA]
  • 27. Kenshiro is crying in this very moment …
  • 28. Rendering ▷So, the results of implementing the previous set of equantions are a tile of highly realistic sea surface
  • 29. Rendering ▷So, the results of implementing the previous set of equantions are a tile of highly realistic sea surface
  • 30. Rendering ▷So, the results of implementing the previous set of equantions are a tile of highly realistic sea surface
  • 31. What about Ocean Foams ? ▷Ocean has Foams ☺ ▷ Foams happen on the tip/crest of a given wave
  • 32. What about Ocean Foams ? ▷We can use the Jacobian [Tessendorf J. 2001] of our displacement map in order to calculate a convenient map that will mask only the wave peaks: Folding Map * We will call this map folding map because it represents were the wave peaks self intersect them until they fold on themselves
  • 33. Rendering ▷So, the results of implementing the previous set of equantions are a tile of highly realistic sea surface
  • 34. Ocean LOD ▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned mesh
  • 35. Ocean LOD ▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned mesh ▷ Method introduced and used by Crytek [Sousa T. 2011] in the first ocean implementation for the game Crysis
  • 36. Ocean LOD ▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned mesh ▷ Method introduced and used by Crytek [Sousa T. 2011] in the first ocean implementation for the game Crysis ▷Very cheap and gives consistent and uniform resolution from near to far distance
  • 37. Ocean LOD ▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned mesh ▷ Method introduced and used by Crytek [Sousa T. 2011] in the first ocean implementation for the game Crysis ▷Very cheap and gives consistent and uniform resolution from near to far distance ▷Artifacts free
  • 38. Ocean LOD ▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned mesh ▷ Method introduced and used by Crytek [Sousa T. 2011] in the first ocean implementation for the game Crysis ▷Very cheap and gives consistent and uniform resolution from near to far distance ▷Artifacts free ▷Other method are projected grid (not a top down but a perspective ray traced grid [Johanson Claes 2004]). But suffers from artifacts in the distance because of the uneven mesh resolution distribution from near to far. Not very controllable in the end.
  • 39. Ocean LOD ▷The grid we use to render the displaced geometry is a top down ray traced projection of a camera aligned mesh ▷ Method introduced and used by Crytek [Sousa T. 2011] in the first ocean implementation for the game Crysis ▷Very cheap and gives consistent and uniform resolution from near to far distance ▷Artifacts free ▷Other method are projected grid (not a top down but a perspective ray traced grid [Johanson Claes 2004]). But suffers from artifacts in the distance because of the uneven mesh resolution distribution from near to far. Not very controllable in the end. ▷Other more general solution would be the implementation of a quadtree based LOD system.
  • 40. Ocean level of detail (LOD) ▷The grid used to render the displaced geometry is a top down projection of a camera aligned mesh ▷ Player Camera point of view (POV)
  • 41. Ocean LOD ▷The grid used to render the displaced geometry is a top down projection of a camera aligned mesh ▷External Camera POV (Red arrow indicate where the player camera is normally placed)
  • 42. Ocean Shading ▷Shading has been made under Unreal Engine 4 (UE4) and the Ocean simulation is written entirely in C++ (No Blueprint ☺)
  • 43. Ocean Shading ▷Water in general is rendered by a minimum of two main shading aspects: • Reflection • Refraction The Fresnel term will state the probability for a ray to be reflected See the complete Fresnel expression below only for the vertical polarization: So we normally won’t use the previous expression because it’s expensive We use then the Schlick Fresnel approximation [Schilck C. 1994]
  • 44. Ocean Shading ▷Fresnel Schlick approximation: Where is the fresnel expression to a normal incidence angle Which we can derive easily from the general fresnel (see previous slide) equation considering (and therefore ) ▷The adapted Schlick approximation is about 30% faster than the unpolarized Fresnel equation if you avoid the costly pow function (if you don’t it’s twice as slow)
  • 45. Ocean Shading ▷Because by the definition Fresnel (F) is a probability function, we know that will be in [0,1] range ▷Therefore our final reflected/refracted Ocean color will be FinalColor = lerp(WaterColor,EnvMapColor,F) ▷Where F is our fresnel computed with the Schlick approximation [Schlick C. 1994] ▷When it comes to UE4 we also have the chance to add screen space reflections that will give us an additional occlusion for the ambient reflection that EnvMap can’t
  • 47. References [Tessendorf J. 2001]: Simulating ocean water. In ACM SIGGRAPH course notes (2001). [Golias R., Jensen L.S.]: Deep Water Animation and Rendering. Gamasutra.com [Schlick C. 1994]: An inexpensive BRDF model for physically-based rendering. Computer Graphics Forum 13 (1994), 233– 246. [Seymour M. 2012]: Assassin’s Creed III: The tech behind (or beneath) the action. FxGuide [Sumanaweera T.]: Medical Image Reconstruction with the FFT. GPU Gems 2, Chapter 48 [NVIDIA]: Ocean Surface Simulation [Sousa T. 2011]: CryENGINE 3 Rendering Techniques. Gamefest 2011 [Johanson Claes 2004]: Real-time water rendering - introducing the projected grid concept. Master of Science thesis in computer graphics
  • 48. Thanks for your time! Contacts: Senior Graphics Programmer f.suriano@stcware.com PR & Marketing e.lucheroni@stcware.com Information info@sctware.com
  翻译: