SlideShare a Scribd company logo
Screen Space Reflections
on Epsilon Engine
by Imanol Fotia
Motivations
Motivations
Previous reflection approaches
● Static Cubemaps
● Parallax Corrected Cubemaps
● Planar Reflections
Previous reflection approaches
Static Cubemaps
● Pros
○ Fast to render
○ Pre-computed offline
○ low storage size
● Cons
○ Only works for objects that can
be approximated as a point
○ Don’t take into account dynamic objects
○ Doesn’t take viewer position into account
Previous reflection approaches
Parallax Corrected Cubemap
● Pros
○ Fast to render
○ Pre-computed offline
○ low storage size
○ Take viewer position into account
● Cons
○ Don’t take into account dynamic objects
○ Objects that are not in the boundaries are
projected incorrectly
Previous reflection approaches
Planar reflections
● Pros
○ Can create mirror-perfect reflections
○ High Accuracy
● Cons
○ Very expensive
○ Need to render the scene twice (at least)
The screen space approach
Of course, SSR are not a perfect solution:
● Pros
○ Reflects static and dynamic objects accurately
○ Doesn’t depend on scene complexity
○ Works well along a deferred physically-based
rendering pipeline
● Cons
○ Expensive ray-marching for high quality results
○ Limited information to work with
Our approach
● The calculation is done in a fragment shader at full resolution using a single
ray.
● Instead of using importance sampling methods like BRDF, roughness is
aggressively approximated by jittering the reflection ray according to the
roughness value
● The ray-marching step is gradually incremented in each iteration, since in
farthest objects details are not as relevant
● A mipmap chain is used to reduce the bandwidth overhead
● Infinite projection of missing data is countered by using binary refinement and
a constant depth threshold
Required data
Metallic (0, 1) Roughness (0, 1)
View-Space Normal (RGB 16 F) Depth (FLOAT 32 F)
Previous frame
Setting up
The view-space position is reconstructed using the depth buffer
With that, we can reconstruct the view vector from where the camera is looking
Then, using the simple reflect function, get the reflection ray and start the
ray-marching process.
Not as simple
The former example is the less encountered in real life applications
The following is one of the most usual problems we run into:
Having encountered a false positive, the foreground object is infinitely projected
Not as simple
Because we are working with very limited information, there might be no way to
find the correct color for that collision
To avoid this artifact, two methods are used:
● Binary Refinement
if that also fails
● Constant Depth Threshold
Binary refinement
Because the ray step is constant, whenever we have a collision, the only thing we
know is that the collision occurred somewhere between the last and the current
step.
We just perform a binary search to get close to the actual value, or in pseudo
code:
for(maxRefinementSteps)
depth = getDepth(projectedCoords);
depthDiff = hitCoordinate.z - depth;
if(depthDiff > 0.0)
hitCoordinate += direction*0.5;
else
hitCoordinate -= direction*0.5;
Constant Depth Threshold
But sometimes, the ray is way too far from the actual hit, so we simply discard the
result using a numeric threshold:
Approximating Roughness
Because we are using a single ray, importance sampling wont be performed,
instead we jitter the reflection ray “randomly” to generate a roughness
appearance.
This is done with a hash function, that takes as seed the view-space position, so
the camera movement is not as annoying to the user:
Perfectly flat surface Rough surface
Hash function
The hash function is defined as follows:
The Results
The Results
The Results

More Related Content

PPTX
Hidden surface removal
PPTX
A bufferrrrrrrrrr (1)
PPTX
Visible surface detection methods
PPTX
Computer Graphics: Visible surface detection methods
PPT
visible surface detection
PPTX
Depth Buffer Method
PPT
Hidden surfaces
PDF
Graphics a buffer
Hidden surface removal
A bufferrrrrrrrrr (1)
Visible surface detection methods
Computer Graphics: Visible surface detection methods
visible surface detection
Depth Buffer Method
Hidden surfaces
Graphics a buffer

What's hot (20)

PPT
Visible surface detection in computer graphic
PPT
hidden surface elimination using z buffer algorithm
PPTX
Visible surface determination
PPTX
Visible surface identification
PPT
rural marketing ppt
PPT
Visible Surface Detection
PDF
CG OpenGL surface detection+illumination+rendering models-course 9
PPT
Hidden Surfaces
PPT
Hidden lines & surfaces
PPTX
3 d display-methods
PPTX
Hidden surface removal algorithm
PPTX
Car sim rendering
PPT
Z Buffer Optimizations
PDF
Projecting Computer Graphics on Moving Surfaces: A Simple Calibration and Tr...
PPTX
Final Presentation
PPTX
3 d display methods
PPTX
Svl underground utility photogrammetry survey
PPT
FinalPoster
PPTX
Finding Licence Plates in an Image (Algorithm)
Visible surface detection in computer graphic
hidden surface elimination using z buffer algorithm
Visible surface determination
Visible surface identification
rural marketing ppt
Visible Surface Detection
CG OpenGL surface detection+illumination+rendering models-course 9
Hidden Surfaces
Hidden lines & surfaces
3 d display-methods
Hidden surface removal algorithm
Car sim rendering
Z Buffer Optimizations
Projecting Computer Graphics on Moving Surfaces: A Simple Calibration and Tr...
Final Presentation
3 d display methods
Svl underground utility photogrammetry survey
FinalPoster
Finding Licence Plates in an Image (Algorithm)
Ad

Viewers also liked (19)

PDF
11484358905acceso plazas piura_ucayali_p7
PDF
The MVC Renaissance | Возрождение MVC
PPTX
Presentación sin título
PPTX
Atelier Cité des Métiers Annemasse 10.02.2017
PPTX
Infusing aboriginal perspectives across the curriculum for all students
PDF
Occidental petroleum corp.
PPTX
Mayrilin procesos 3 ercorte
PDF
O empreendedor, o politico e o político empreendedor
PDF
Functional Programing Principles
DOCX
Cta1 u4-sesión 01
PPTX
Islamic leadership and the JKKK
PPTX
Introduction to the Epsilon Data Breach
PDF
Epsilon_LIMRA_From CX to iX
PPTX
In house TSPs
 
PDF
Inside GitHub with Chris Wanstrath
PPTX
Stochastic Screen-Space Reflections
PDF
Epsilon Credentials 2011
PDF
Vom Silo-Denken zu integrierten Prozessen
11484358905acceso plazas piura_ucayali_p7
The MVC Renaissance | Возрождение MVC
Presentación sin título
Atelier Cité des Métiers Annemasse 10.02.2017
Infusing aboriginal perspectives across the curriculum for all students
Occidental petroleum corp.
Mayrilin procesos 3 ercorte
O empreendedor, o politico e o político empreendedor
Functional Programing Principles
Cta1 u4-sesión 01
Islamic leadership and the JKKK
Introduction to the Epsilon Data Breach
Epsilon_LIMRA_From CX to iX
In house TSPs
 
Inside GitHub with Chris Wanstrath
Stochastic Screen-Space Reflections
Epsilon Credentials 2011
Vom Silo-Denken zu integrierten Prozessen
Ad

Similar to Screen space reflections on Epsilon Engine (20)

PDF
Scratch a pixel - Reflection
PDF
Screen Space Reflections in The Surge
PPTX
Green Custard Friday Talk 17: Ray Tracing
PPT
Paris Master Class 2011 - 07 Dynamic Global Illumination
PPT
Interactive Refractions And Caustics Using Image Space Techniques
PDF
Volumetric Lighting for Many Lights in Lords of the Fallen
PDF
Rendering Techniques in Virtual Reality.pdf
PDF
Software Defined Visualization (SDVis): Get the Most Out of ParaView* with OS...
PDF
Hw1 updated
PPTX
Real-time lightmap baking
PDF
Ray Tracing.pdf
PPT
Shadow Techniques for Real-Time and Interactive Applications
PPT
Paris Master Class 2011 - 04 Shadow Maps
PPTX
Penn graphics
PDF
Epic_GDC2011_Samaritan
PDF
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
PPT
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
PPTX
Rendering Algorithms.pptx
PPT
Computer graphics iv unit
PPT
Single Sample Soft Shadows Using Depth Maps
Scratch a pixel - Reflection
Screen Space Reflections in The Surge
Green Custard Friday Talk 17: Ray Tracing
Paris Master Class 2011 - 07 Dynamic Global Illumination
Interactive Refractions And Caustics Using Image Space Techniques
Volumetric Lighting for Many Lights in Lords of the Fallen
Rendering Techniques in Virtual Reality.pdf
Software Defined Visualization (SDVis): Get the Most Out of ParaView* with OS...
Hw1 updated
Real-time lightmap baking
Ray Tracing.pdf
Shadow Techniques for Real-Time and Interactive Applications
Paris Master Class 2011 - 04 Shadow Maps
Penn graphics
Epic_GDC2011_Samaritan
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
Rendering Algorithms.pptx
Computer graphics iv unit
Single Sample Soft Shadows Using Depth Maps

Recently uploaded (20)

PDF
Understanding Forklifts - TECH EHS Solution
PPT
Introduction Database Management System for Course Database
PDF
Nekopoi APK 2025 free lastest update
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Digital Strategies for Manufacturing Companies
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
top salesforce developer skills in 2025.pdf
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PPTX
Transform Your Business with a Software ERP System
Understanding Forklifts - TECH EHS Solution
Introduction Database Management System for Course Database
Nekopoi APK 2025 free lastest update
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Digital Strategies for Manufacturing Companies
Odoo POS Development Services by CandidRoot Solutions
Wondershare Filmora 15 Crack With Activation Key [2025
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
ManageIQ - Sprint 268 Review - Slide Deck
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Navsoft: AI-Powered Business Solutions & Custom Software Development
ISO 45001 Occupational Health and Safety Management System
top salesforce developer skills in 2025.pdf
Design an Analysis of Algorithms I-SECS-1021-03
Design an Analysis of Algorithms II-SECS-1021-03
Operating system designcfffgfgggggggvggggggggg
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Transform Your Business with a Software ERP System

Screen space reflections on Epsilon Engine

  • 1. Screen Space Reflections on Epsilon Engine by Imanol Fotia
  • 4. Previous reflection approaches ● Static Cubemaps ● Parallax Corrected Cubemaps ● Planar Reflections
  • 5. Previous reflection approaches Static Cubemaps ● Pros ○ Fast to render ○ Pre-computed offline ○ low storage size ● Cons ○ Only works for objects that can be approximated as a point ○ Don’t take into account dynamic objects ○ Doesn’t take viewer position into account
  • 6. Previous reflection approaches Parallax Corrected Cubemap ● Pros ○ Fast to render ○ Pre-computed offline ○ low storage size ○ Take viewer position into account ● Cons ○ Don’t take into account dynamic objects ○ Objects that are not in the boundaries are projected incorrectly
  • 7. Previous reflection approaches Planar reflections ● Pros ○ Can create mirror-perfect reflections ○ High Accuracy ● Cons ○ Very expensive ○ Need to render the scene twice (at least)
  • 8. The screen space approach Of course, SSR are not a perfect solution: ● Pros ○ Reflects static and dynamic objects accurately ○ Doesn’t depend on scene complexity ○ Works well along a deferred physically-based rendering pipeline ● Cons ○ Expensive ray-marching for high quality results ○ Limited information to work with
  • 9. Our approach ● The calculation is done in a fragment shader at full resolution using a single ray. ● Instead of using importance sampling methods like BRDF, roughness is aggressively approximated by jittering the reflection ray according to the roughness value ● The ray-marching step is gradually incremented in each iteration, since in farthest objects details are not as relevant ● A mipmap chain is used to reduce the bandwidth overhead ● Infinite projection of missing data is countered by using binary refinement and a constant depth threshold
  • 10. Required data Metallic (0, 1) Roughness (0, 1) View-Space Normal (RGB 16 F) Depth (FLOAT 32 F) Previous frame
  • 11. Setting up The view-space position is reconstructed using the depth buffer With that, we can reconstruct the view vector from where the camera is looking Then, using the simple reflect function, get the reflection ray and start the ray-marching process.
  • 12. Not as simple The former example is the less encountered in real life applications The following is one of the most usual problems we run into: Having encountered a false positive, the foreground object is infinitely projected
  • 13. Not as simple Because we are working with very limited information, there might be no way to find the correct color for that collision To avoid this artifact, two methods are used: ● Binary Refinement if that also fails ● Constant Depth Threshold
  • 14. Binary refinement Because the ray step is constant, whenever we have a collision, the only thing we know is that the collision occurred somewhere between the last and the current step. We just perform a binary search to get close to the actual value, or in pseudo code: for(maxRefinementSteps) depth = getDepth(projectedCoords); depthDiff = hitCoordinate.z - depth; if(depthDiff > 0.0) hitCoordinate += direction*0.5; else hitCoordinate -= direction*0.5;
  • 15. Constant Depth Threshold But sometimes, the ray is way too far from the actual hit, so we simply discard the result using a numeric threshold:
  • 16. Approximating Roughness Because we are using a single ray, importance sampling wont be performed, instead we jitter the reflection ray “randomly” to generate a roughness appearance. This is done with a hash function, that takes as seed the view-space position, so the camera movement is not as annoying to the user: Perfectly flat surface Rough surface
  • 17. Hash function The hash function is defined as follows: