Edge detection-based post-processing in Warlords of DraenorGael Hofemeier
In this Session, we will present three new post-processing techniques added to the Warlords of Draenor expansion to World of Warcraft*. We will look at how we integrated Conservative Morphological Anti-Aliasing (CMAA) and the extensions required to Warcraft’s post-processing pipeline, some of the problems faced, and the solutions under investigation. The session will also look at the evolution of the Character and Quest object Outlining technique from its Diablo* 3 origins to its implementation in World of Warcraft. The third technique is the sketch shader. Inspired by the opening cinematic in Diablo 3, this technique provides a real-time pen & ink on a scroll look that is used as an effective storytelling device.
In the session from Game Developers Conference 2011, we'll take a complete look at the terrain system in Frostbite 2 as it was applied in Battlefield 3. The session is partitioned into three parts. We begin with the scalability aspects and discuss how consistent use of hierarchies allowed us to combine high resolutions with high view distances. We then turn towards workflow aspects and describe how we achieved full in-game realtime editing. A fair amount of time is spent describing how issues were addressed.
Finally, we look at the runtime side. We describe usage of CPU, GPU and memory resources and how it was kept to a minimum. We discuss how the GPU is offloaded by caching intermediate results in a procedural virtual texture and how prioritization was done to allow for work throttling without sacrificing quality. We also go into depth about the flexible streaming system that work with both FPS and driving games.
Edge detection-based post-processing in Warlords of DraenorGael Hofemeier
In this Session, we will present three new post-processing techniques added to the Warlords of Draenor expansion to World of Warcraft*. We will look at how we integrated Conservative Morphological Anti-Aliasing (CMAA) and the extensions required to Warcraft’s post-processing pipeline, some of the problems faced, and the solutions under investigation. The session will also look at the evolution of the Character and Quest object Outlining technique from its Diablo* 3 origins to its implementation in World of Warcraft. The third technique is the sketch shader. Inspired by the opening cinematic in Diablo 3, this technique provides a real-time pen & ink on a scroll look that is used as an effective storytelling device.
In the session from Game Developers Conference 2011, we'll take a complete look at the terrain system in Frostbite 2 as it was applied in Battlefield 3. The session is partitioned into three parts. We begin with the scalability aspects and discuss how consistent use of hierarchies allowed us to combine high resolutions with high view distances. We then turn towards workflow aspects and describe how we achieved full in-game realtime editing. A fair amount of time is spent describing how issues were addressed.
Finally, we look at the runtime side. We describe usage of CPU, GPU and memory resources and how it was kept to a minimum. We discuss how the GPU is offloaded by caching intermediate results in a procedural virtual texture and how prioritization was done to allow for work throttling without sacrificing quality. We also go into depth about the flexible streaming system that work with both FPS and driving games.
A description of the next-gen rendering technique called Triangle Visibility Buffer. It offers up to 10x - 20x geometry compared to Deferred rendering and much higher resolution. Generally it aligns better with memory access patterns in modern GPUs compared to Deferred Lighting like Clustered Deferred Lighting etc.
Rendering Techniques in Rise of the Tomb RaiderEidos-Montréal
This cohesive overview of the advanced rendering techniques developed for Rise of the Tomb Raider presents a collection of diverse features, the challenges they presented, where current approaches succeed and fail, and solutions and implementation details.
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Jarosław Pleskot
Slides from the Game Industry Conference 2015.
* Second movie link is the same as first after conversion, here is the correct one https://youtu.be/SkEJ7ox2c8w
Presented at SIGGRAPH 2004 in Los Angeles on Tuesday, August 10th during the "Real-Time Shadowing Techniques" course. Jan Kautz and Marc Stamminger organized the course. The presentation covers robust shadow volume rendering techniques for GPUs.
The presentation covers three engine systems created for new Shadow Warrior: skinned decals, vegetation, and seawater rendering.
Subsequent presentation here:
https://www.slideshare.net/jaros_p/shadow-warrior-2-and-the-evolution-of-the-roadhog-engine
Checkerboard Rendering in Dark Souls: Remastered by QLOCQLOC
This is a talk on checkerboard rendering Markus & Andreas held at Digital Dragons 2019.
In it they quickly go through the history of Checkerboard Rendering before taking a deep dive into how it works and how it is implemented in Dark Souls: Remastered. Lastly, they present the quality and performance improvements they got from using it and their conclusion.
PS: The PDF. file includes useful in-depth notes from both authors.
We present the technology and ideas behind the unique lighting in MIRRORS EDGE from DICE. Covering how DICE adopted Global illumination into their lighting process and Illuminate Labs current toolbox of state of the art lighting technology.
Volumetric Lighting for Many Lights in Lords of the FallenBenjamin Glatzel
In this session I’m going to give you an in-depth insight into the design and the implementation of the volumetric lighting system we’ve developed for ‘Lords of the Fallen’. The system allows the simulation of countless volumetric lighting effects in parallel while still being a feasible solution on next-gen consoles.
This presentation was held at the Digital Dragons 2014 conference.
Videos shown during the talk are available here: http://bglatzel.movingblocks.net/publications
A description of the next-gen rendering technique called Triangle Visibility Buffer. It offers up to 10x - 20x geometry compared to Deferred rendering and much higher resolution. Generally it aligns better with memory access patterns in modern GPUs compared to Deferred Lighting like Clustered Deferred Lighting etc.
Rendering Techniques in Rise of the Tomb RaiderEidos-Montréal
This cohesive overview of the advanced rendering techniques developed for Rise of the Tomb Raider presents a collection of diverse features, the challenges they presented, where current approaches succeed and fail, and solutions and implementation details.
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Jarosław Pleskot
Slides from the Game Industry Conference 2015.
* Second movie link is the same as first after conversion, here is the correct one https://youtu.be/SkEJ7ox2c8w
Presented at SIGGRAPH 2004 in Los Angeles on Tuesday, August 10th during the "Real-Time Shadowing Techniques" course. Jan Kautz and Marc Stamminger organized the course. The presentation covers robust shadow volume rendering techniques for GPUs.
The presentation covers three engine systems created for new Shadow Warrior: skinned decals, vegetation, and seawater rendering.
Subsequent presentation here:
https://www.slideshare.net/jaros_p/shadow-warrior-2-and-the-evolution-of-the-roadhog-engine
Checkerboard Rendering in Dark Souls: Remastered by QLOCQLOC
This is a talk on checkerboard rendering Markus & Andreas held at Digital Dragons 2019.
In it they quickly go through the history of Checkerboard Rendering before taking a deep dive into how it works and how it is implemented in Dark Souls: Remastered. Lastly, they present the quality and performance improvements they got from using it and their conclusion.
PS: The PDF. file includes useful in-depth notes from both authors.
We present the technology and ideas behind the unique lighting in MIRRORS EDGE from DICE. Covering how DICE adopted Global illumination into their lighting process and Illuminate Labs current toolbox of state of the art lighting technology.
Volumetric Lighting for Many Lights in Lords of the FallenBenjamin Glatzel
In this session I’m going to give you an in-depth insight into the design and the implementation of the volumetric lighting system we’ve developed for ‘Lords of the Fallen’. The system allows the simulation of countless volumetric lighting effects in parallel while still being a feasible solution on next-gen consoles.
This presentation was held at the Digital Dragons 2014 conference.
Videos shown during the talk are available here: http://bglatzel.movingblocks.net/publications
Rendering Art on the Web - A Performance compendiumRaimon Ràfols
This session starts by showing how to build something very simple with the HTML5 Canvas API, taking into account some performance considerations. Then the presentation adds more rendering complexity while keeping an eye on how it is impacting performance. It also evaluates different alternatives from a performance point of view and tries out a few optimizations. Having the right level of optimization makes it possible to add more complexity or render what seemed impossible. On the other hand, not optimizing properly will definitely impact performance and reduce quality, and for mobile users, battery life will suffer more than it needs to. As somebody said before, “With great power comes great responsibility.”
"JavaScript in 2016" by Eduard Tomàs
Some years ago in a far far away company, Brendan Eich created JavaScript. A lot of things happened since then. Times changed, the web grown, the language itself was updated, and we as a developers need to adapt too. Last year the last standard of the language arose: ECMAScript 2015 is here, and has some new and interesting features. In this talk we will show the most relevant ones, and also we will introduce some interesting patterns that you can use in JavaScript: you'll learn how to master the language and made JavaScript your best ally to conquest the world!
Introduction to Steering behaviours for Autonomous AgentsBryan Duggan
Steering behaviours are simple techniques for controlling
goal-directed motion of simulated characters around their world, with
applications in games, animation and robotics.
These behaviours are largely independent of each other and can be combined together to implement actions such as "go from this part of world to another part of the world, avoiding any obstacles that happen to be in the way".
Steering behaviours are used to simulate natural phenomena such as
shoals of fish, flocks of birds and crowd scenes.
Stack and its Applications : Data Structures ADTSoumen Santra
Stack is an Abstract Data Type (ADT), Last in First out (LIFO) concept.
Features of Stack: Abstract Data Type (ADT)
C implementations of Stack's Functions like push(), pop(), isEmpty(), isOverflow(), peep()
Stack Applications like Tower of Hanoi, Infix to Postfix Conversion, Postfix Evaluation, Parenthesis Checking etc.
Diagramatic Representation of Tower of Hanoi, Infix to Postfix Conversion & Postfix Evaluation
The most important part of a modern PostFX pipeline is picking the right color model to support. This way the whole PostFX pipeline can use 32-bit render targets and at the same time have increased color representation and luminance representation.
We have compiled the most important slides from each speaker's presentation. This year’s compilation, available for free, captures the key insights and contributions shared during the DfMAy 2024 conference.
Forklift Classes Overview by Intella PartsIntella Parts
Discover the different forklift classes and their specific applications. Learn how to choose the right forklift for your needs to ensure safety, efficiency, and compliance in your operations.
For more technical information, visit our website https://intellaparts.com
Welcome to WIPAC Monthly the magazine brought to you by the LinkedIn Group Water Industry Process Automation & Control.
In this month's edition, along with this month's industry news to celebrate the 13 years since the group was created we have articles including
A case study of the used of Advanced Process Control at the Wastewater Treatment works at Lleida in Spain
A look back on an article on smart wastewater networks in order to see how the industry has measured up in the interim around the adoption of Digital Transformation in the Water Industry.
6th International Conference on Machine Learning & Applications (CMLA 2024)ClaraZara1
6th International Conference on Machine Learning & Applications (CMLA 2024) will provide an excellent international forum for sharing knowledge and results in theory, methodology and applications of on Machine Learning & Applications.
Saudi Arabia stands as a titan in the global energy landscape, renowned for its abundant oil and gas resources. It's the largest exporter of petroleum and holds some of the world's most significant reserves. Let's delve into the top 10 oil and gas projects shaping Saudi Arabia's energy future in 2024.
Student information management system project report ii.pdfKamal Acharya
Our project explains about the student management. This project mainly explains the various actions related to student details. This project shows some ease in adding, editing and deleting the student details. It also provides a less time consuming process for viewing, adding, editing and deleting the marks of the students.
Immunizing Image Classifiers Against Localized Adversary Attacksgerogepatton
This paper addresses the vulnerability of deep learning models, particularly convolutional neural networks
(CNN)s, to adversarial attacks and presents a proactive training technique designed to counter them. We
introduce a novel volumization algorithm, which transforms 2D images into 3D volumetric representations.
When combined with 3D convolution and deep curriculum learning optimization (CLO), itsignificantly improves
the immunity of models against localized universal attacks by up to 40%. We evaluate our proposed approach
using contemporary CNN architectures and the modified Canadian Institute for Advanced Research (CIFAR-10
and CIFAR-100) and ImageNet Large Scale Visual Recognition Challenge (ILSVRC12) datasets, showcasing
accuracy improvements over previous techniques. The results indicate that the combination of the volumetric
input and curriculum learning holds significant promise for mitigating adversarial attacks without necessitating
adversary training.
Overview of the fundamental roles in Hydropower generation and the components involved in wider Electrical Engineering.
This paper presents the design and construction of hydroelectric dams from the hydrologist’s survey of the valley before construction, all aspects and involved disciplines, fluid dynamics, structural engineering, generation and mains frequency regulation to the very transmission of power through the network in the United Kingdom.
Author: Robbie Edward Sayers
Collaborators and co editors: Charlie Sims and Connor Healey.
(C) 2024 Robbie E. Sayers
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)MdTanvirMahtab2
This presentation is about the working procedure of Shahjalal Fertilizer Company Limited (SFCL). A Govt. owned Company of Bangladesh Chemical Industries Corporation under Ministry of Industries.
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERSveerababupersonal22
It consists of cw radar and fmcw radar ,range measurement,if amplifier and fmcw altimeterThe CW radar operates using continuous wave transmission, while the FMCW radar employs frequency-modulated continuous wave technology. Range measurement is a crucial aspect of radar systems, providing information about the distance to a target. The IF amplifier plays a key role in signal processing, amplifying intermediate frequency signals for further analysis. The FMCW altimeter utilizes frequency-modulated continuous wave technology to accurately measure altitude above a reference point.
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Dr.Costas Sachpazis
Terzaghi's soil bearing capacity theory, developed by Karl Terzaghi, is a fundamental principle in geotechnical engineering used to determine the bearing capacity of shallow foundations. This theory provides a method to calculate the ultimate bearing capacity of soil, which is the maximum load per unit area that the soil can support without undergoing shear failure. The Calculation HTML Code included.
11. Agenda
• … all this is rendered real-time on an integrated graphics
chip
< 33ms per frame
• RawK shows a setup with lots of lights and shadows, it
mimics typical Movie lighting and shadowing patterns
• Nothing is pre-calculated … to
• avoid streaming
• be destructible
12. Deferred Lighting
• Instead of rendering lights while rendering an object, we
create a buffer that holds all data of the geometry in
screen-space; so called (G)eometry-Buffer
• The G-Buffer is then used to light the scene as many times
as necessary -> e.g. apply several hundred or thousands of
lights
-> detaches lighting from scene complexity
13. Deferred Lighting
Normals
Specular Power
Depth
Light Buffer
Frame Buffer
Render opaque Geometry sorted front-to-back
Blit Lights into Light Buffer (sorted front-to-back)
Render opaque Geometry sorted front-to-back
or
Blit ambient term and other lighting terms into final image
Color
14. Deferred Lighting
• Geometry pass: fill up normal + spec. power and depth
buffer and a color buffer for the ambient pass [Engel09]
• Lighting pass: store light properties in light buffer
• Ambient + Resolve pass: fetch light buffer use its content as
diffuse and specular content and add the ambient term
while resolving into the main buffer
• Similar to S.T.A.L.K.E.R: Clear Sky [Lobanchikov]
16. Deferred Lighting
• Light Properties that are stored in light buffer
• Light buffer layout
• Dred/green/blue is the light color
17. Deferred Lighting
• Specular stored as luminance [Engel09][Deferred
Lighting specular term]
• Reconstructed with diffuse chromacity
18. Deferred Lighting
• Memory Bandwidth Optimization ( Sandy
Bridge supports DirectX 10, / 10.1)
– Light bounds calculated in Geometry Shader
• GS bounding box: construct bounding box around light
in the geometry shader
• Render only what is in this box
19. Deferred Lighting
• Common challenges
• Alpha blended objects can’t be rendered into the depth
buffer -> Deferred Lighting won’t work here
-> might need separate lighting system for those
-> or possible solution: order-independent transparency
• Anti-Aliasing with hardware MSAA is more challenging
-> possible solution: use MLAA ~ do your own AA as a
PostFX in screen-space
• Material diversity … -> Screen-Space Material System
20. Ellipsoidal Light Shadows
• In a game: many shadows to consider
– Cloud shadows: just projected down
– Character self-shadowing : those are optional
shadows with their own frustum that is just
around the bounding boxes
– Sun shadows: Cascaded Shadow Maps
– Shadows from point, spot and other light types
21. Ellipsoidal Light Shadows
• We only focus on shadows from a light type
that we call Ellipsoidal Light
• It is similar to a point light but can have
different attenuation values in three directions
• For example the area that the light affects can
be ellipsoidal
28. Ellipsoidal Light Shadows
• Mostly four areas of challenge [Engel11]
– Shadow Rendering
– Shadow Caching
– Shadow Bias value
– Softening the Penumbra
29. Ellipsoidal Light Shadows
• Shadow Rendering
• Cube shadow maps
-> more even error distribution than Dual-
Paraboloid Shadow Maps
• DirectX 10+ geometry shader helps to render
into cube shadow maps in one pass
30. Ellipsoidal Light Shadows
• Geometry shader optimization:
• Using geometry shader might be
expensive
• Typical code for this on next slide
31. // Loop over cube faces
[unroll]
for (int i = 0; i < 6; i++)
{
// Translate the view projection matrix to the position of the light
float4x4 pViewProjArray = viewProjArray[i];
//
// translate
//
// access the row HLSL[row][column]
pViewProjArray[0].w += dot(pViewProjArray[0].xyz, -In[0].lightpos.xyz);
pViewProjArray[1].w += dot(pViewProjArray[1].xyz, -In[0].lightpos.xyz);
pViewProjArray[2].w += dot(pViewProjArray[2].xyz, -In[0].lightpos.xyz);
pViewProjArray[3].w += dot(pViewProjArray[3].xyz, -In[0].lightpos.xyz);
float4 pos[3];
pos[0] = mul(pViewProjArray, float4(In[0].position.xyz, 1.0));
pos[1] = mul(pViewProjArray, float4(In[1].position.xyz, 1.0));
pos[2] = mul(pViewProjArray, float4(In[2].position.xyz, 1.0));
// Use frustum culling to improve performance
float4 t0 = saturate(pos[0].xyxy * float4(-1, -1, 1, 1) - pos[0].w);
float4 t1 = saturate(pos[1].xyxy * float4(-1, -1, 1, 1) - pos[1].w);
float4 t2 = saturate(pos[2].xyxy * float4(-1, -1, 1, 1) - pos[2].w);
float4 t = t0 * t1 * t2;
Ellipsoidal Light Shadows
[branch]
if (!any(t))
{
// Use backface culling to improve performance
float2 d0 = pos[1].xy * pos[0].w - pos[0].xy * pos[1].w;
float2 d1 = pos[2].xy * pos[0].w - pos[0].xy * pos[2].w;
[branch]
if (d1.x * d0.y > d0.x * d1.y || min(min(pos[0].w, pos[1].w), pos[2].w) < 0.0)
{
Out.face = i;
[unroll]
for (int k = 0; k < 3; k++)
{
Out.position = pos[k];
Stream.Append(Out);
}
Stream.RestartStrip();
}
}
}
32. Ellipsoidal Light Shadows
• This code does:
– Cube map projection
– Triangle <-> Frustum culling
– Triangle backface culling
– Replicates triangles –if needed- in all six directions
33. Ellipsoidal Light Shadows
• If hardware doesn’t offer a very performant
geometry shader
-> move projection into the vertex shader
37. Ellipsoidal Light Shadows
• On some hardware platforms with a huge amount of
shadows, shadow caching is a challenge
• Use 16-bit cube shadow maps for memory
• Caching Parameters:
– Distance from shadow to camera
– Size of shadow on screen
– Is there a moving object in the area of the light / shadow ?
38. Ellipsoidal Light Shadows
• Based on those parameters a cube shadow map is
updated or not
• Storing 100 256x256x6 16-bit cube maps is about 75
Mb
• If still to much, caching needs to be restricted by
distance and then maps are moved in and out into a
linked list
39. Ellipsoidal Light Shadows
• Shadow Bias Value
• As long as the shadow map comparison for cube
shadow maps is binary -> 0 / 1 the depth bias value
won’t be correct for all six directions
• Replace binary comparison with Exponential Shadow
maps comparison
40. Ellipsoidal Light Shadows
• Exponential Shadow Maps [Salvi]
float depth = tex2D(ShadowSampler, pos.xy).x;
shadow = saturate(2.0 - exp((pos.z - depth) * k));
• Approximate step function (z-d> 0) by
exp(k*(z-d)) = exp(k*z) * exp(-k*d)
Good overview on the latest development in [Bavoil]
41. Ellipsoidal Light Shadows
• Softening Penumbra
-> ESM will soften the penumbra
-> we don’t use any other softening
45. Screen-Space Material System
• Instead of applying materials per-object, apply them in
screen-space
• Pays off when many objects use the same material like
skin
• Just do it for the two most expensive materials or the
ones that should have the highest quality. For example:
• Hair
• Skin
48. Screen-Space Material System
• [Jimenez]:
– Render skin irradiance (diffuse * light) and mark stencil for areas with
skin using material ID
– Sub-Surface Scattering Screen-Space Filter Kernel (SSSSS)
Blur using weights to simulate sub-surface scattering
• Three different screen-space kernels
• Single bidimensional convolution similar to [Hable]
• Six 1D Gaussian blurs [d'Eon]
• Bloom
– Perform specular calculation in same pass as final blur pass
50. Screen-Space Material System
• Our approach -> only two passes:
– Render skin irradiance (diffuse * light) and mark stencil for areas with
skin using material ID
– Sub-Surface Scattering Screen-Space Filter Kernel (SSSSS)
Blur using weights to simulate sub-surface scattering
• We use a 1 pass jittered sample approach [Hable]
-Requires weighting each channel
– Perform specular calculation in same pass as final blur pass
– Bloom comes from generic PostFX bloom applied to the scene
51. Screen-Space Material System
• Mark skin in stencil buffer and render skin
irradiance
float2 uv = In.texCoord.xy;
float4 diffuse = gDiffuseTx.SampleLevel( gFilter, uv, 0 );
if( diffuse.a < 0.99f )
{
discard;
}
float3 light = gLightTx.SampleLevel( gFilter, uv, 0 ).rgb;
return float4( diffuse.rgb * light.rgb, 1.0f );
52. Screen-Space Material System
• Run the Sub-Surface Scattering Screen-Space Filter
Kernel (SSSSS (S5))
– Calculate the depth gradient [Jimenez]
– Large depth gradients reduce the size of the convolution
filter kernel
-> limits the effects of background pixels being convolved
– Additionally scales based on distance to camera
53. Screen-Space Material System
• Run the Sub-Surface Scattering Screen-Space Filter
Kernel (SSSSS (S5))
– Sample in a disc shape [Hable] -> single-pass bidimensional
convolution at 13 jittered sample points
– Direct reflection – one point
– Mid-level scattering – six points
– Wide red scattering – six points
– Code on following slides
55. Screen-Space Material System
float2 offset = s / samples;
float3 color = float3( 0.0f, 0.0f, 0.0f );
float4 middle = colorTx.Sample( pointFilter, uv );
float3 totalWeight = 0.0f;
[unroll]
for( int i = 0; i < samples; ++i )
{
float2 pos = uv + blurJitteredSamples[ i ] * offset; // sample points in a disc
float4 sample = colorTx.Sample( bilinearFilter, pos );
float weight = sample.a;
color += sample.rgb * weight.xxx * blurJitteredWeights[ i ].xyz; // jittered weights [Hable]
totalWeight += weight.xxx * blurJitteredWeights[ i ].xyz;;
}
if( length(totalWeight) < 0.1f )
{
return middle;
}
else
{
return float4( color / totalWeight, middle.a );
}
}
56. Screen-Space Material System
• Perform specular calculation in same pass as final
blur pass
-> see slide on specular for Deferred Lighting above
• For other materials than skin: use different stencil
value to mark those … watch out for future research
results
57. Acknowledgement
• Michael Alling did the work on the S5 effect and the
PostFX pipeline
• Igor Lobanchikov came up with the Geometry Shader
optimization trick
• Jared Marsau implemented EmotionFX and Fmod
and worked on the art and sound pipelines …
including create sounds
• Peter Santoki … we also call him Michael Bay
58. Interns
• Doing cool graphics research such as -> work on RawK II has
started
• New direct and indirect lighting algorithms
• New soft shadow algorithms
• Order-Independent Transparency
• Hardware Tesselation
• Etc.
• Send e-mail to wolf@conffx.com
60. References
• [Deferred Lighting specular term] Read the overview on different Deferred Lighting Approaches by Naty Hoffman:
http://www.realtimerendering.com/blog/deferred-lighting-approaches/
• [d'Eon] Eugene d'Eon, David Luebke, and Eric Enderton, "Efficient Rendering of Human Skin", Eurographics
2007http://http.developer.nvidia.com/GPUGems3/gpugems3_ch14.html
• [Engel09] Wolfgang Engel, “Light Pre-Pass -Deferred Lighting: Latest Development-”, SIGGRAPH 2009,
http://www.google.com/url?sa=t&source=web&cd=1&ved=0CBUQFjAA&url=http%3A%2F%2Fwww.bungie.net%2Fimages%
2FInside%2Fpublications%2Fsiggraph%2FEngel%2FLightPrePass.ppt&ei=fFfCTfifKJGJhQfW1sixBQ&usg=AFQjCNGveO2pv79oi
Dkw-9h9FyK5wbihuA
• [Engel11] Wolfgang Engel, “Shadows - Thoughts on Ellipsoid Light Shadow Rendering”,
http://altdevblogaday.org/2011/02/28/shadows-thoughts-on-ellipsoid-light-shadow-rendering/
• [Hable] John Hable, George Borshukov, and Jim Hejl, "Fast Skin Shading", ShaderX7, http://www.shaderx7.com/TOC.html
• [Jimenez] Jorge Jimenez, Veronica Sundstedt, and Deigo Gutierrez, "Screen-Space Perceptual Rendering of Human
Skin", http://giga.cps.unizar.es/~diegog/ficheros/pdf_papers/TAP_Jimenez_LR.pdf
• [Lobanchikov] Igor A. Lobanchikov, “ GSC Game World‘s S.T.A.L.K.E.R : Clear Sky – a showcase for Direct3D 10.0/1”,
http://developer.amd.com/gpu_assets/01GDC09AD3DDStalkerClearSky210309.ppt