SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
Dissecting the Rendering of
Philip Hammer
DECK13 Interactive GmbH
Quo Vadis, Berlin, 24.4.2018
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Introduction
● DECK13 Interactive released “The Surge” in 2017
○ New IP, new publisher
○ Overhauled tech (Fledge Engine / 3th Generation)
○ Award Winning: Best German Game, Best Graphics, Best PC-/Console-Game (Deutscher Entwicklerpreis 2017)
○ Our most ambitious game from DECK13
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Introduction
● Team of around 70 people in Frankfurt
○ Tech Department: ~11 people (engine + game code)
○ Art- & Sound-Outsourcing
● Myself
○ Since 2006 @ DECK13
○ Working on rendering / engine / graphics / shaders
○ Worked on The Surge, Lords of the Fallen, Venetica, Ankh, Jack Keane, etc.
● The results and techniques presented in this article is
the work of many people in the Deck13 Tech department.
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
● Fledge Gen 1 (2009: Blood Knights, Tiger & Chicken)
○ PS3, Xbox 360, PC / D3D9, iOS (iPad 2 and up)
○ Deferred Rendering, Direct Lighting only, Minimal Multithreading
● Fledge Gen 2 (2012: Lords of the Fallen)
○ PS4, Xbox One, PC / D3D11
○ Volumetric Lighting, Direct & Indirect Lighting, Task-based multithreaded rendering
● Fledge Gen 3 (2014: The Surge)
○ PS4 (+Pro), Xbox One (+X), PC / D3D11
○ Physically-based rendering, Clustered Deferred Rendering, GPU Particles
● Fledge Gen 4 (2017/2018: The Surge 2)
○ Vulkan, D3D12
○ Currently in the making .. stay tuned
Tech Evolution
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
● Fledge Gen 1 (2009: Blood Knights, Tiger & Chicken)
○ PS3, Xbox 360, PC / D3D9, iOS (iPad 2 and up)
○ Deferred Rendering, Direct Lighting only, Minimal Multithreading
● Fledge Gen 2 (2012: Lords of the Fallen)
○ PS4, Xbox One, PC / D3D11
○ Volumetric Lighting, Direct & Indirect Lighting, Task-based multithreaded rendering
● Fledge Gen 3 (2014: The Surge)
○ PS4 (+Pro), Xbox One (+X), PC / D3D11
○ Physically-based rendering, Clustered Deferred Rendering, GPU Particles
● Fledge Gen 4 (2017/2018: The Surge 2)
○ Vulkan, D3D12
○ Currently in the making .. stay tuned
Tech Evolution
Today’s topics
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Tech Evolution
● The Surge Tech (Gen 3)
○ Stable Framerate across all platforms
PS4: 1080p @ 30 FPS
PS4 Pro: 1620p @ 30 FPS or 1080p @ 60 FPS
Xbox One: 900p @ 30 FPS
Xbox One X: 1800p @ 30 FPS or 1080p @ 60 FPS
○ Physical-Based Rendering
○ Clustered Deferred Rendering
○ Volumetric Lighting
○ GPU Particles
○ Screen-space Reflections
○ etc.
● New things in the making (Gen 4) - short peak into the future towards the end
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Physical-based Rendering
● Switched from (non-PBR) Blinn-Phong to
GGX Cook-Torrance BRDF [1]
○ De-facto industry standard.
○ More material data to drive the BRDF
● Artists needed to adapt (Workflow, Tools, Mindset)
○ Lots of pitfalls (no arbitrary texture data)
○ Adoption process was rather unproblematic -
most tools (Substance, Marmoset) already provide PBR workflow
● We use “Metalness-Workflow”
○ Artist provide Albedo, Normal, Roughness and Metalness textures
○ Metalness is a mask to treat the albedo differently in specular lighting
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Physical-based Rendering
● Direct Lighting: 100% dynamic lights
○ 16 shadowmaps rendered into atlas (4kx4k - 8kx8k, D16_FLOAT)
○ If cap reached, the shadowmap isn’t updated anymore and
virtually becomes static
● Image-based lighting
○ Precomputed, parallax corrected environment probes (Artist placed)
○ Specular probe is 256x256 cubemap (BC6_UFLOAT)
with GGX filtered importance sampled mip chain [2]
○ Diffuse lighting is simply the 6th mip level of probe
(“incorrect”, but visually equivalent with proper irradiance)
○ IBL pass can be modified with simple, multiplicative “ambient lights” [3]
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Physical-based Rendering
● G-Buffer breakdown
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Physical-based Rendering
● G-Buffer breakdown
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Physical-based Rendering
X Y Z W
RT0 (8:8:8:8) Albedo RGB Material-ID
RT1 (10:10:10:2) VS Normal XYZ -
RT2 (8:8:8:8) Roughness Metalness Occlusion [shared]
RT3 (16:16) Motion Vectors XY - -
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Physical-based Rendering
● Material-ID indexes directly into StructuredBuffer to query per-material data
○ Save G-Buffer space
● [shared] - per-pixel context dependent
○ mutual exclusive material data
○ based on per-material data
○ Emissive Mask
■ Defines whether or not to interpret albedo as emissive
■ Emissive combined in final “combine” pass
■ Effectively saves dedicated emissive channel
○ Translucency
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Clustered Deferred Rendering
● Switch from rasterization-based light volume rendering to full (async) compute-based approach
○ Low CPU overhead
■ Light culling runs entirely on GPU
■ Filling a buffer with light infos instead of dispatching thousands of drawcalls
○ Advantages on GPU
■ No need to fetch G-Buffer for every light
○ Async Compute: Lighting runs in parallel to shadow rendering (at least on consoles)
○ But: many more optimizations necessary to get better perf
● Could render environment probes in the same pass
○ Environment probes are still clustered but rendered in a separate (pixelshader) pass together with SSR
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Clustered Deferred Rendering
● Divide view frustum into a 3D grid
○ In our case: 16 x 8 x 24
● Culling: Assign lights to grid cells
○ Upload light culling info to GPU (StructuredBuffer with Position, AABB, etc.)
○ Create list of light indices for each cell (single large uint buffer)
● Dispatch lighting compute shader
○ In fact we dispatch twice: unshadowed and shadowed lights
○ Unshadowed can run in parallel with shadowmap generation
● Can use cluster information also for forward rendering
○ We do this for our lit transparent objects
○ Simply compute grid cell index for a position and query light list
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Deferred Decals
● Decals play a major role in our environment art
○ Static: Logos/Signs, Material Layers (Sand, Water Puddles, Rust, etc.), Color Variations
○ Dynamic: Blood, Explosion Marks, etc.
● Extremely flexible
● Break uniform look of heavily instanced scenes
● Adds lot of large- and small-scale details
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Deferred Decals
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Deferred Decals
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Deferred Decals
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Deferred Decals
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Deferred Decals
● Modifies G-Buffer by alpha-blending onto it
○ Therefore, lighting is “free” since it’s done afterwards
● 2 methods for tangentspace reconstruction
○ Surface Normal (use G-Buffer normal)
○ Planar (use decal projection direction)
● Full PBR support + many per-decal features (add. Mask, UV modifiers, etc.)
● Implementation rasterization-based deferred
○ Rasterize geometry (boxes) for each decal
○ CPU bottleneck with large number of decals
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Deferred Decals
● Common issue with Deferred Decals: Wrong Mip Selection due to screenspace gradients
○ Problem: Texture leaks around depth discontinuities
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Deferred Decals
● Common issue with Deferred Decals: Wrong Mip Selection due to screenspace gradients
○ Problem: Texture leaks around depth discontinuities
○ Common solution: Use highest mip
■ Causes flickering in distance due to oversampling (no mips)
■ Texture cache hit
○ Our solution: Use mip0 only with large depth discontinuities
// Sample 2 quads
const float4 d0 = depthSampler.Gather(sampler_point_clamp, screenUV, int2(-1, -1));
const float4 d1 = depthSampler.Gather(sampler_point_clamp, screenUV, int2(0, 0));
const float4 dCross = float4 (d0.z, d0.y, d1.y, d1.z);
const float dC = d.w;
// Find suitable neighbor screen positions in x and y so we can compute proper gradients
// Select based on the smallest different in depth
const bool useFirstMip = any(abs(dC.xxxx - dCross) > 0.001);
if (useFirstMip)
albedoTex.SampleLevel(..);
else
albedoTex.Sample(..);
d0.x d0.y
d0.z d0.w
d1.x d1.y
d1.z d1.w
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
“Object Decals”
● Alternative Term: “Blend Meshes”
● Alpha-Blend arbitrary meshes on the G-Buffer
○ Artists can create simple plane-”decals” with custom UV setup
○ Efficiently add small, high-res details like panels, rivets, LED, etc.
○ Works also on skinned objects (e.g. logos on Exo-Gear)
1 Base G-Buffer Pass (solid)
2 Object Decal Pass (alpha-blend)
3 Deferred Decal Pass (alpha-blend)
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Next Decals / Fledge Gen 4
● “Bindless” Decals
○ Analogous to clustered deferred lighting
■ Culling & rendering happens entirely on the GPU
■ Collect info about all visible decals in a buffer
■ Render all decals before lighting in the same compute shader
○ Decal info stores texture IDs (UINT32) to index directly into DescriptorSet / DescriptorTable
○ Blending not restricted to alpha-blending anymore (linear interpolation)
■ “Geometric” normal blending possible [4]
■ Replacing layered materials with decals is now feasible
○ Availability of interpolated vertex-normals in G-Buffer improves T-Space reconstruction
○ Currently in active development
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Optimizing for Occupancy / GCN
● GCN Hardware wants saturated CU Units
○ Huge lighting shader uses a lot of general purpose registers
if not structured carefully
● Reducing register usage (VGPR/SGPR) can be a huge win
○ Especially for long, ALU heavy shaders such as lighting
○ Minimize register lifetime
○ Look at the data and iterate
■ runtime profilers
■ static shader code analysis statistics
● Goal: Want min. 40% GCN Wave Occupancy on
PS4 and Xbox One (for lighting compute shader)
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
Optimizing for Occupancy / GCN
● Example: Split light type loops
○ Different light types uses different data
■ Shadowed lights use shadow projection matrices, shadowmaps, etc.
■ Image projectors use image projection matrices, images, etc.
■ Boxlights must check bounds differently
■ etc.
○ Shader can free up register usage if structured well
for each light in lightbuffer
if light.type == POINT
// do pointlight calculations
if light.type == SPOT
// do spotlight calculations
else if light.type == SPOT_SHADOWED
// do shadowed spotlight calculated
end
for each light in lightbuffer_point
// do pointlight calculations
end
for each light in lightbuffer_spot
// do spotlight calculations
end
for each light in lightbuffer_spot_shadowed
// do shadowed spotlight calculations
end
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
What’s next ?
● Currently working on Fledge Gen 4
○ Always improving tech iteratively
○ Always keep existing systems “alive”
○ Parallel Development of new systems / breaking changes
● Spread knowledge
○ Weekly presentation meeting (tech internal)
● Leap to new APIs
○ Vulkan, DirectX 12
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
What’s next ?
● New low-level renderer design
○ Better match the new APIs (no more state-driven)
○ More low-level control such as explicit resource syncs, GPU memory management, etc.
○ Async-Compute also on PC
○ More C-style, more data-oriented
○ “Do as little as possible during render-loop” aka “prebake as much as we can”
■ Setting DescriptorSets, Map/Unmap GPU memory, etc.
○ Goal: Rendering must not be a CPU performance bottleneck
● Better ingame-profiling for content creators
● Better tools for artists and game designers
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
What’s next ?
● Improving specific rendering subsystems
○ Switch to physically based inverse square falloff (lumen units)
○ Improved IBL system (e.g. split irradiance and specular probes)
○ Unified volumetric fog / lighting (“lit fog” vs. “volumetric lighting”)
○ Bindless Decals
○ New material system
■ More flexibility for custom shaders / FX Materials
■ Better fit for the new rendering backend interface
○ Improved postprocessing, Antialiasing, HDR tonemapping / color correction
Thank you for
your attention!
DECK13 is hiring!
● Tools Programmer
● Concept Environment Artist
● VFX Artist
● etc.
@philiphammer0
phammer@deck13.com
linkedin.com/in/philip-hammer-430baa6
Questions ?
Dissecting the Rendering of The Surge
Quo Vadis Berlin 2018
References
[1] Walter et al., "Microfacet Models for Refraction through Rough Surfaces"
[2] Karis, “Real Shading in Unreal Engine 4”, Siggraph 2013
[3] Schulz, Mader, “Rendering Techniques in Ryse: Son of Rome”, Siggraph 2014
[4] Barré-Brisebois, Hill, "Blending in Detail"
http://blog.selfshadow.com/publications/blending-in-detail/

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
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...
Johan Andersson
 
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
 

Was ist angesagt? (20)

FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based Rendering
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)
 
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)
 
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
 
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...
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2
 
Lighting the City of Glass
Lighting the City of GlassLighting the City of Glass
Lighting the City of Glass
 
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)
 
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
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
 
Checkerboard Rendering in Dark Souls: Remastered by QLOC
Checkerboard Rendering in Dark Souls: Remastered by QLOCCheckerboard Rendering in Dark Souls: Remastered by QLOC
Checkerboard Rendering in Dark Souls: Remastered by QLOC
 
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
 
Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lighting
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero Dawn
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 
Frostbite on Mobile
Frostbite on MobileFrostbite on Mobile
Frostbite on Mobile
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
 
Deferred rendering in Dying Light
Deferred rendering in Dying LightDeferred rendering in Dying Light
Deferred rendering in Dying Light
 

Ähnlich wie Dissecting the Rendering of The Surge

new_age_graphics_android_x86
new_age_graphics_android_x86new_age_graphics_android_x86
new_age_graphics_android_x86
Droidcon Berlin
 
mloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentmloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game development
David Galeano
 
Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2
ozlael ozlael
 
Minko stage3d workshop_20130525
Minko stage3d workshop_20130525Minko stage3d workshop_20130525
Minko stage3d workshop_20130525
Minko3D
 

Ähnlich wie Dissecting the Rendering of The Surge (20)

DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
The rendering technology of 'lords of the fallen' philip hammer
The rendering technology of 'lords of the fallen'   philip hammerThe rendering technology of 'lords of the fallen'   philip hammer
The rendering technology of 'lords of the fallen' philip hammer
 
Killzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemKillzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo Postmortem
 
Developing games and graphic visualizations in Pascal
Developing games and graphic visualizations in PascalDeveloping games and graphic visualizations in Pascal
Developing games and graphic visualizations in Pascal
 
DALL-E.pdf
DALL-E.pdfDALL-E.pdf
DALL-E.pdf
 
Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...
Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...
Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...
 
Realtime 3D Visualization without GPU
Realtime 3D Visualization without GPURealtime 3D Visualization without GPU
Realtime 3D Visualization without GPU
 
Unity: Next Level Rendering Quality
Unity: Next Level Rendering QualityUnity: Next Level Rendering Quality
Unity: Next Level Rendering Quality
 
NVIDIA Graphics, Cg, and Transparency
NVIDIA Graphics, Cg, and TransparencyNVIDIA Graphics, Cg, and Transparency
NVIDIA Graphics, Cg, and Transparency
 
Masked Occlusion Culling
Masked Occlusion CullingMasked Occlusion Culling
Masked Occlusion Culling
 
new_age_graphics_android_x86
new_age_graphics_android_x86new_age_graphics_android_x86
new_age_graphics_android_x86
 
mloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentmloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game development
 
Domain adaptation for Image Segmentation
Domain adaptation for Image SegmentationDomain adaptation for Image Segmentation
Domain adaptation for Image Segmentation
 
Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2
 
Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2
 
Computer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming IComputer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming I
 
GPU Accelerated Domain Decomposition
GPU Accelerated Domain DecompositionGPU Accelerated Domain Decomposition
GPU Accelerated Domain Decomposition
 
Minko stage3d workshop_20130525
Minko stage3d workshop_20130525Minko stage3d workshop_20130525
Minko stage3d workshop_20130525
 
Open gl
Open glOpen gl
Open gl
 
Graphics pipelining
Graphics pipeliningGraphics pipelining
Graphics pipelining
 

Kürzlich hochgeladen

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Kürzlich hochgeladen (20)

%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 

Dissecting the Rendering of The Surge

  • 1. Dissecting the Rendering of Philip Hammer DECK13 Interactive GmbH Quo Vadis, Berlin, 24.4.2018
  • 2. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Introduction ● DECK13 Interactive released “The Surge” in 2017 ○ New IP, new publisher ○ Overhauled tech (Fledge Engine / 3th Generation) ○ Award Winning: Best German Game, Best Graphics, Best PC-/Console-Game (Deutscher Entwicklerpreis 2017) ○ Our most ambitious game from DECK13
  • 3. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Introduction ● Team of around 70 people in Frankfurt ○ Tech Department: ~11 people (engine + game code) ○ Art- & Sound-Outsourcing ● Myself ○ Since 2006 @ DECK13 ○ Working on rendering / engine / graphics / shaders ○ Worked on The Surge, Lords of the Fallen, Venetica, Ankh, Jack Keane, etc. ● The results and techniques presented in this article is the work of many people in the Deck13 Tech department.
  • 4. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 ● Fledge Gen 1 (2009: Blood Knights, Tiger & Chicken) ○ PS3, Xbox 360, PC / D3D9, iOS (iPad 2 and up) ○ Deferred Rendering, Direct Lighting only, Minimal Multithreading ● Fledge Gen 2 (2012: Lords of the Fallen) ○ PS4, Xbox One, PC / D3D11 ○ Volumetric Lighting, Direct & Indirect Lighting, Task-based multithreaded rendering ● Fledge Gen 3 (2014: The Surge) ○ PS4 (+Pro), Xbox One (+X), PC / D3D11 ○ Physically-based rendering, Clustered Deferred Rendering, GPU Particles ● Fledge Gen 4 (2017/2018: The Surge 2) ○ Vulkan, D3D12 ○ Currently in the making .. stay tuned Tech Evolution
  • 5. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 ● Fledge Gen 1 (2009: Blood Knights, Tiger & Chicken) ○ PS3, Xbox 360, PC / D3D9, iOS (iPad 2 and up) ○ Deferred Rendering, Direct Lighting only, Minimal Multithreading ● Fledge Gen 2 (2012: Lords of the Fallen) ○ PS4, Xbox One, PC / D3D11 ○ Volumetric Lighting, Direct & Indirect Lighting, Task-based multithreaded rendering ● Fledge Gen 3 (2014: The Surge) ○ PS4 (+Pro), Xbox One (+X), PC / D3D11 ○ Physically-based rendering, Clustered Deferred Rendering, GPU Particles ● Fledge Gen 4 (2017/2018: The Surge 2) ○ Vulkan, D3D12 ○ Currently in the making .. stay tuned Tech Evolution Today’s topics
  • 6. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Tech Evolution ● The Surge Tech (Gen 3) ○ Stable Framerate across all platforms PS4: 1080p @ 30 FPS PS4 Pro: 1620p @ 30 FPS or 1080p @ 60 FPS Xbox One: 900p @ 30 FPS Xbox One X: 1800p @ 30 FPS or 1080p @ 60 FPS ○ Physical-Based Rendering ○ Clustered Deferred Rendering ○ Volumetric Lighting ○ GPU Particles ○ Screen-space Reflections ○ etc. ● New things in the making (Gen 4) - short peak into the future towards the end
  • 7. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Physical-based Rendering ● Switched from (non-PBR) Blinn-Phong to GGX Cook-Torrance BRDF [1] ○ De-facto industry standard. ○ More material data to drive the BRDF ● Artists needed to adapt (Workflow, Tools, Mindset) ○ Lots of pitfalls (no arbitrary texture data) ○ Adoption process was rather unproblematic - most tools (Substance, Marmoset) already provide PBR workflow ● We use “Metalness-Workflow” ○ Artist provide Albedo, Normal, Roughness and Metalness textures ○ Metalness is a mask to treat the albedo differently in specular lighting
  • 8. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Physical-based Rendering ● Direct Lighting: 100% dynamic lights ○ 16 shadowmaps rendered into atlas (4kx4k - 8kx8k, D16_FLOAT) ○ If cap reached, the shadowmap isn’t updated anymore and virtually becomes static ● Image-based lighting ○ Precomputed, parallax corrected environment probes (Artist placed) ○ Specular probe is 256x256 cubemap (BC6_UFLOAT) with GGX filtered importance sampled mip chain [2] ○ Diffuse lighting is simply the 6th mip level of probe (“incorrect”, but visually equivalent with proper irradiance) ○ IBL pass can be modified with simple, multiplicative “ambient lights” [3]
  • 9. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Physical-based Rendering ● G-Buffer breakdown
  • 10. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Physical-based Rendering ● G-Buffer breakdown
  • 11. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Physical-based Rendering X Y Z W RT0 (8:8:8:8) Albedo RGB Material-ID RT1 (10:10:10:2) VS Normal XYZ - RT2 (8:8:8:8) Roughness Metalness Occlusion [shared] RT3 (16:16) Motion Vectors XY - -
  • 12. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Physical-based Rendering ● Material-ID indexes directly into StructuredBuffer to query per-material data ○ Save G-Buffer space ● [shared] - per-pixel context dependent ○ mutual exclusive material data ○ based on per-material data ○ Emissive Mask ■ Defines whether or not to interpret albedo as emissive ■ Emissive combined in final “combine” pass ■ Effectively saves dedicated emissive channel ○ Translucency
  • 13. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Clustered Deferred Rendering ● Switch from rasterization-based light volume rendering to full (async) compute-based approach ○ Low CPU overhead ■ Light culling runs entirely on GPU ■ Filling a buffer with light infos instead of dispatching thousands of drawcalls ○ Advantages on GPU ■ No need to fetch G-Buffer for every light ○ Async Compute: Lighting runs in parallel to shadow rendering (at least on consoles) ○ But: many more optimizations necessary to get better perf ● Could render environment probes in the same pass ○ Environment probes are still clustered but rendered in a separate (pixelshader) pass together with SSR
  • 14. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Clustered Deferred Rendering ● Divide view frustum into a 3D grid ○ In our case: 16 x 8 x 24 ● Culling: Assign lights to grid cells ○ Upload light culling info to GPU (StructuredBuffer with Position, AABB, etc.) ○ Create list of light indices for each cell (single large uint buffer) ● Dispatch lighting compute shader ○ In fact we dispatch twice: unshadowed and shadowed lights ○ Unshadowed can run in parallel with shadowmap generation ● Can use cluster information also for forward rendering ○ We do this for our lit transparent objects ○ Simply compute grid cell index for a position and query light list
  • 15. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Deferred Decals ● Decals play a major role in our environment art ○ Static: Logos/Signs, Material Layers (Sand, Water Puddles, Rust, etc.), Color Variations ○ Dynamic: Blood, Explosion Marks, etc. ● Extremely flexible ● Break uniform look of heavily instanced scenes ● Adds lot of large- and small-scale details
  • 16. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Deferred Decals
  • 17. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Deferred Decals
  • 18. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Deferred Decals
  • 19. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Deferred Decals
  • 20. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Deferred Decals ● Modifies G-Buffer by alpha-blending onto it ○ Therefore, lighting is “free” since it’s done afterwards ● 2 methods for tangentspace reconstruction ○ Surface Normal (use G-Buffer normal) ○ Planar (use decal projection direction) ● Full PBR support + many per-decal features (add. Mask, UV modifiers, etc.) ● Implementation rasterization-based deferred ○ Rasterize geometry (boxes) for each decal ○ CPU bottleneck with large number of decals
  • 21. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Deferred Decals ● Common issue with Deferred Decals: Wrong Mip Selection due to screenspace gradients ○ Problem: Texture leaks around depth discontinuities
  • 22. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Deferred Decals ● Common issue with Deferred Decals: Wrong Mip Selection due to screenspace gradients ○ Problem: Texture leaks around depth discontinuities ○ Common solution: Use highest mip ■ Causes flickering in distance due to oversampling (no mips) ■ Texture cache hit ○ Our solution: Use mip0 only with large depth discontinuities // Sample 2 quads const float4 d0 = depthSampler.Gather(sampler_point_clamp, screenUV, int2(-1, -1)); const float4 d1 = depthSampler.Gather(sampler_point_clamp, screenUV, int2(0, 0)); const float4 dCross = float4 (d0.z, d0.y, d1.y, d1.z); const float dC = d.w; // Find suitable neighbor screen positions in x and y so we can compute proper gradients // Select based on the smallest different in depth const bool useFirstMip = any(abs(dC.xxxx - dCross) > 0.001); if (useFirstMip) albedoTex.SampleLevel(..); else albedoTex.Sample(..); d0.x d0.y d0.z d0.w d1.x d1.y d1.z d1.w
  • 23. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 “Object Decals” ● Alternative Term: “Blend Meshes” ● Alpha-Blend arbitrary meshes on the G-Buffer ○ Artists can create simple plane-”decals” with custom UV setup ○ Efficiently add small, high-res details like panels, rivets, LED, etc. ○ Works also on skinned objects (e.g. logos on Exo-Gear) 1 Base G-Buffer Pass (solid) 2 Object Decal Pass (alpha-blend) 3 Deferred Decal Pass (alpha-blend)
  • 24. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Next Decals / Fledge Gen 4 ● “Bindless” Decals ○ Analogous to clustered deferred lighting ■ Culling & rendering happens entirely on the GPU ■ Collect info about all visible decals in a buffer ■ Render all decals before lighting in the same compute shader ○ Decal info stores texture IDs (UINT32) to index directly into DescriptorSet / DescriptorTable ○ Blending not restricted to alpha-blending anymore (linear interpolation) ■ “Geometric” normal blending possible [4] ■ Replacing layered materials with decals is now feasible ○ Availability of interpolated vertex-normals in G-Buffer improves T-Space reconstruction ○ Currently in active development
  • 25. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Optimizing for Occupancy / GCN ● GCN Hardware wants saturated CU Units ○ Huge lighting shader uses a lot of general purpose registers if not structured carefully ● Reducing register usage (VGPR/SGPR) can be a huge win ○ Especially for long, ALU heavy shaders such as lighting ○ Minimize register lifetime ○ Look at the data and iterate ■ runtime profilers ■ static shader code analysis statistics ● Goal: Want min. 40% GCN Wave Occupancy on PS4 and Xbox One (for lighting compute shader)
  • 26. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 Optimizing for Occupancy / GCN ● Example: Split light type loops ○ Different light types uses different data ■ Shadowed lights use shadow projection matrices, shadowmaps, etc. ■ Image projectors use image projection matrices, images, etc. ■ Boxlights must check bounds differently ■ etc. ○ Shader can free up register usage if structured well for each light in lightbuffer if light.type == POINT // do pointlight calculations if light.type == SPOT // do spotlight calculations else if light.type == SPOT_SHADOWED // do shadowed spotlight calculated end for each light in lightbuffer_point // do pointlight calculations end for each light in lightbuffer_spot // do spotlight calculations end for each light in lightbuffer_spot_shadowed // do shadowed spotlight calculations end
  • 27. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 What’s next ? ● Currently working on Fledge Gen 4 ○ Always improving tech iteratively ○ Always keep existing systems “alive” ○ Parallel Development of new systems / breaking changes ● Spread knowledge ○ Weekly presentation meeting (tech internal) ● Leap to new APIs ○ Vulkan, DirectX 12
  • 28. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 What’s next ? ● New low-level renderer design ○ Better match the new APIs (no more state-driven) ○ More low-level control such as explicit resource syncs, GPU memory management, etc. ○ Async-Compute also on PC ○ More C-style, more data-oriented ○ “Do as little as possible during render-loop” aka “prebake as much as we can” ■ Setting DescriptorSets, Map/Unmap GPU memory, etc. ○ Goal: Rendering must not be a CPU performance bottleneck ● Better ingame-profiling for content creators ● Better tools for artists and game designers
  • 29. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 What’s next ? ● Improving specific rendering subsystems ○ Switch to physically based inverse square falloff (lumen units) ○ Improved IBL system (e.g. split irradiance and specular probes) ○ Unified volumetric fog / lighting (“lit fog” vs. “volumetric lighting”) ○ Bindless Decals ○ New material system ■ More flexibility for custom shaders / FX Materials ■ Better fit for the new rendering backend interface ○ Improved postprocessing, Antialiasing, HDR tonemapping / color correction
  • 30. Thank you for your attention! DECK13 is hiring! ● Tools Programmer ● Concept Environment Artist ● VFX Artist ● etc. @philiphammer0 phammer@deck13.com linkedin.com/in/philip-hammer-430baa6
  • 32. Dissecting the Rendering of The Surge Quo Vadis Berlin 2018 References [1] Walter et al., "Microfacet Models for Refraction through Rough Surfaces" [2] Karis, “Real Shading in Unreal Engine 4”, Siggraph 2013 [3] Schulz, Mader, “Rendering Techniques in Ryse: Son of Rome”, Siggraph 2014 [4] Barré-Brisebois, Hill, "Blending in Detail" http://blog.selfshadow.com/publications/blending-in-detail/