SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The SurgeMichele Giacalone
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lightingozlael ozlael
 
Practical SPU Programming in God of War III
Practical SPU Programming in God of War IIIPractical SPU Programming in God of War III
Practical SPU Programming in God of War IIISlide_N
 
Bindless Deferred Decals in The Surge 2
Bindless Deferred Decals in The Surge 2Bindless Deferred Decals in The Surge 2
Bindless Deferred Decals in The Surge 2Philip 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
 
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 FallenBenjamin Glatzel
 
A Bit More Deferred Cry Engine3
A Bit More Deferred   Cry Engine3A Bit More Deferred   Cry Engine3
A Bit More Deferred Cry Engine3guest11b095
 
Past, Present and Future Challenges of Global Illumination in Games
Past, Present and Future Challenges of Global Illumination in GamesPast, Present and Future Challenges of Global Illumination in Games
Past, Present and Future Challenges of Global Illumination in GamesColin Barré-Brisebois
 
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
 
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsHPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsElectronic Arts / DICE
 
Deferred shading
Deferred shadingDeferred shading
Deferred shadingFrank Chao
 
Rendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderRendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderEidos-Montréal
 
Anti-Aliasing Methods in CryENGINE 3
Anti-Aliasing Methods in CryENGINE 3Anti-Aliasing Methods in CryENGINE 3
Anti-Aliasing Methods in CryENGINE 3Tiago Sousa
 
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lightsPrecomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lightsSeongdae Kim
 
Dissecting the Rendering of The Surge
Dissecting the Rendering of The SurgeDissecting the Rendering of The Surge
Dissecting the Rendering of The SurgePhilip Hammer
 
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...Electronic Arts / DICE
 

La actualidad más candente (20)

Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lighting
 
Practical SPU Programming in God of War III
Practical SPU Programming in God of War IIIPractical SPU Programming in God of War III
Practical SPU Programming in God of War III
 
Bindless Deferred Decals in The Surge 2
Bindless Deferred Decals in The Surge 2Bindless Deferred Decals in The Surge 2
Bindless Deferred Decals in The Surge 2
 
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
 
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
 
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
 
A Bit More Deferred Cry Engine3
A Bit More Deferred   Cry Engine3A Bit More Deferred   Cry Engine3
A Bit More Deferred Cry Engine3
 
Past, Present and Future Challenges of Global Illumination in Games
Past, Present and Future Challenges of Global Illumination in GamesPast, Present and Future Challenges of Global Illumination in Games
Past, Present and Future Challenges of Global Illumination in Games
 
Stochastic Screen-Space Reflections
Stochastic Screen-Space ReflectionsStochastic Screen-Space Reflections
Stochastic Screen-Space Reflections
 
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)
 
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsHPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
 
Deferred shading
Deferred shadingDeferred shading
Deferred shading
 
Rendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderRendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb Raider
 
Anti-Aliasing Methods in CryENGINE 3
Anti-Aliasing Methods in CryENGINE 3Anti-Aliasing Methods in CryENGINE 3
Anti-Aliasing Methods in CryENGINE 3
 
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lightsPrecomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
 
Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3
 
Dissecting the Rendering of The Surge
Dissecting the Rendering of The SurgeDissecting the Rendering of The Surge
Dissecting the Rendering of The Surge
 
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
 
Lighting the City of Glass
Lighting the City of GlassLighting the City of Glass
Lighting the City of Glass
 

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

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 transformSimranjit 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 Transformvijayanand Kandaswamy
 
Comments_on_Paper_Mufti_1983
Comments_on_Paper_Mufti_1983Comments_on_Paper_Mufti_1983
Comments_on_Paper_Mufti_1983Benjamin Seive
 
Understanding neural radiance fields
Understanding neural radiance fieldsUnderstanding neural radiance fields
Understanding neural radiance fieldsVarun 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 DrivingYu Huang
 
30th コンピュータビジョン勉強会@関東 DynamicFusion
30th コンピュータビジョン勉強会@関東 DynamicFusion30th コンピュータビジョン勉強会@関東 DynamicFusion
30th コンピュータビジョン勉強会@関東 DynamicFusionHiroki Mizuno
 
Introduction to seismic interpretation
Introduction to seismic interpretationIntroduction to seismic interpretation
Introduction to seismic interpretationAmir I. Abdelaziz
 
Seismic geometric corrections
Seismic geometric correctionsSeismic geometric corrections
Seismic geometric correctionsAli Ahmad Saddat
 
Geometry of Aerial Photographs.pdf
Geometry of Aerial Photographs.pdfGeometry of Aerial Photographs.pdf
Geometry of Aerial Photographs.pdfkunedzimwefrancisca
 
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
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3stevemcauley
 
PPT Image Analysis(IRDE, DRDO)
PPT Image Analysis(IRDE, DRDO)PPT Image Analysis(IRDE, DRDO)
PPT Image Analysis(IRDE, DRDO)Nidhi Gopal
 

Similar a 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
 
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)
 
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
 
Comments_on_Paper_Mufti_1983
Comments_on_Paper_Mufti_1983Comments_on_Paper_Mufti_1983
Comments_on_Paper_Mufti_1983
 
PROCESSING PHASE-IV.pptx
PROCESSING PHASE-IV.pptxPROCESSING PHASE-IV.pptx
PROCESSING PHASE-IV.pptx
 
Understanding neural radiance fields
Understanding neural radiance fieldsUnderstanding neural radiance fields
Understanding neural radiance fields
 
Від побудови сейсмічних зображень до інверсії
Від побудови сейсмічних зображень до інверсіїВід побудови сейсмічних зображень до інверсії
Від побудови сейсмічних зображень до інверсії
 
Tele immersion
Tele immersionTele immersion
Tele immersion
 
Fisheye Omnidirectional View in Autonomous Driving
Fisheye Omnidirectional View in Autonomous DrivingFisheye Omnidirectional View in Autonomous Driving
Fisheye Omnidirectional View in Autonomous Driving
 
30th コンピュータビジョン勉強会@関東 DynamicFusion
30th コンピュータビジョン勉強会@関東 DynamicFusion30th コンピュータビジョン勉強会@関東 DynamicFusion
30th コンピュータビジョン勉強会@関東 DynamicFusion
 
Introduction to seismic interpretation
Introduction to seismic interpretationIntroduction to seismic interpretation
Introduction to seismic interpretation
 
Seismic geometric corrections
Seismic geometric correctionsSeismic geometric corrections
Seismic geometric corrections
 
Geometry of Aerial Photographs.pdf
Geometry of Aerial Photographs.pdfGeometry of Aerial Photographs.pdf
Geometry of Aerial Photographs.pdf
 
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]
 
Lec03 light
Lec03 lightLec03 light
Lec03 light
 
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
論文読み会@AIST (Deep Virtual Stereo Odometry [ECCV2018])
 
Lec11.ppt
Lec11.pptLec11.ppt
Lec11.ppt
 
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 ...
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3
 
PPT Image Analysis(IRDE, DRDO)
PPT Image Analysis(IRDE, DRDO)PPT Image Analysis(IRDE, DRDO)
PPT Image Analysis(IRDE, DRDO)
 

Más de 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 storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 

Más de 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...
 
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
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
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...
 
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
 
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
 
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 -
 
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...
 
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...
 
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 ...
 
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...
 
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
 
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
 
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
 
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...
 
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...
 
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
 
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
 
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
 

Último

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 

Último (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

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