├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Bruno Opsenica 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # References for Learning 3D Programming 2 | 3 | A collection of useful resources I want to be able to reference in the future. 4 | 5 | - [References for Learning 3D Programming](#references-for-learning-3d-programming) 6 | - [Anti-Aliasing](#anti-aliasing) 7 | - [Blog Posts](#blog-posts) 8 | - [Papers](#papers) 9 | - [Clustered Shadering](#clustered-shadering) 10 | - [Blog Posts](#blog-posts-1) 11 | - [Papers](#papers-1) 12 | - [Presentations](#presentations) 13 | - [Compute Shaders](#compute-shaders) 14 | - [Blog Posts](#blog-posts-2) 15 | - [Culling](#culling) 16 | - [Presentations](#presentations-1) 17 | - [Blog Posts](#blog-posts-3) 18 | - [Gamma](#gamma) 19 | - [Blog Posts](#blog-posts-4) 20 | - [Image Based Lighting](#image-based-lighting) 21 | - [Papers](#papers-2) 22 | - [Normal Mapping and Specular Aliasing](#normal-mapping-and-specular-aliasing) 23 | - [Blog Posts](#blog-posts-5) 24 | - [Papers](#papers-3) 25 | - [Presentations](#presentations-2) 26 | - [Examples](#examples) 27 | - [Post Processing (Motion Blur/DoF)](#post-processing-motion-blurdof) 28 | - [Papers](#papers-4) 29 | - [Blog Posts](#blog-posts-6) 30 | - [Presentations](#presentations-3) 31 | - [Physically Based Rendering](#physically-based-rendering) 32 | - [Blog Posts](#blog-posts-7) 33 | - [Papers](#papers-5) 34 | - [Presentations](#presentations-4) 35 | - [Examples](#examples-1) 36 | - [Shadows](#shadows) 37 | - [Blog Posts](#blog-posts-8) 38 | - [Examples](#examples-2) 39 | - [Presentations](#presentations-5) 40 | - [Temporal Anti-Aliasing](#temporal-anti-aliasing) 41 | - [Blog Posts](#blog-posts-9) 42 | - [Presentations](#presentations-6) 43 | - [Tone Mapping](#tone-mapping) 44 | - [Blog Posts](#blog-posts-10) 45 | - [Examples](#examples-3) 46 | - [Assets](#assets) 47 | - [HDR](#hdr) 48 | - [Blog Posts](#blog-posts-11) 49 | - [Volumetric Effects](#volumetric-effects) 50 | - [Blog Posts](#blog-posts-12) 51 | - [Papers](#papers-6) 52 | - [Presentations](#presentations-7) 53 | - [Examples/Code](#examplescode) 54 | 55 | ## Anti-Aliasing 56 | 57 | ### Blog Posts 58 | 59 | - [Anti-Aliasing (SMAA T2X)](http://marcel-schindler.weebly.com/blog/anti-aliasing-smaa-t2x) by Marcel Schindler 60 | 61 | ### Papers 62 | 63 | - [SMAA](http://www.iryoku.com/smaa/) by Jimenez et al. 64 | 65 | ## Clustered Shadering 66 | 67 | ### Blog Posts 68 | 69 | - [Bindless Texturing for Deferred Rendering and Decals](https://therealmjp.github.io/posts/bindless-texturing-for-deferred-rendering-and-decals/) by Matt J. Pettineo 70 | - [Clustered shading evolution in Granite](https://themaister.net/blog/2020/01/10/clustered-shading-evolution-in-granite/) by Hans Kristian 71 | - [Cull that Cone!](https://bartwronski.com/2017/04/13/cull-that-cone/) by Bart Wronski 72 | - [A Primer On Efficient Rendering Algorithms & Clustered Shading](www.aortiz.me/2018/12/21/CG.html) by Ángel Ortiz 73 | 74 | ### Papers 75 | 76 | - [Clustered Deferred and Forward Shading](http://www.klayge.org/material/4_4/Tiled/clustered_shading_preprint.pdf) by Ola Olsson, Markus Billeter, and Ulf Assarsson 77 | 78 | ### Presentations 79 | 80 | - [Improved Culling for Tiled and Clustered Rendering](http://advances.realtimerendering.com/s2017/2017_Sig_Improved_Culling_final.pdf) by Michal Drobot 81 | - [Practical Clustered Shading](http://newq.net/dl/pub/SA2014Practical.pdf) by Emil Persson 82 | - [Rendering The Hellscape of Doom: Eternal](http://advances.realtimerendering.com/s2020/RenderingDoomEternal.pdf) by Jean Geffroy, Axel Gneiting, and Yixin Wang 83 | - [The Devil is in the Details](http://advances.realtimerendering.com/s2016/Siggraph2016_idTech6.pdf) by Tiago Sousa and Jean Geffroy 84 | 85 | ## Compute Shaders 86 | 87 | ### Blog Posts 88 | 89 | - [Introduction to compute shaders](https://anteru.net/blog/2018/intro-to-compute-shaders/index.html) by Anteru 90 | 91 | ## Culling 92 | 93 | ### Presentations 94 | 95 | - [Culling the Battlefield](https://www.slideshare.net/DICEStudio/culling-the-battlefield-data-oriented-design-in-practice) by Daniel Collin 96 | - [GPU-Driven Rendering Pipelines](http://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf) by Ulrich Haar and Sebastian Aaltonen 97 | - [Optimizing the Graphics Pipeline with Compute](https://www.wihlidal.com/projects/fb-gdc16/) by Graham Wihlidal 98 | 99 | ### Blog Posts 100 | 101 | - [Software Occlusion Culling](https://software.intel.com/content/www/us/en/develop/articles/software-occlusion-culling.html) by Kiefer Kuah 102 | - [Experiments in GPU Base Occlusion Culling](https://interplayoflight.wordpress.com/2017/11/15/experiments-in-gpu-based-occlusion-culling/) by Kostas Anagnostou 103 | - [Twitter Thread on Culling](https://twitter.com/SebAaltonen/status/1300062590219976704?s=20) 104 | 105 | ## Gamma 106 | 107 | ### Blog Posts 108 | 109 | - [What Every Coder Should Know About Gamma](http://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/) by John Novak 110 | 111 | ## Image Based Lighting 112 | 113 | ### Papers 114 | 115 | - [A Multiple-scattering Microfacet Model for Real-time Image-based Lighting](http://www.jcgt.org/published/0008/01/03/paper.pdf) by Carmelo J. Fdez-Agüera 116 | 117 | ## Normal Mapping and Specular Aliasing 118 | 119 | ### Blog Posts 120 | 121 | - [Specular Showdown](https://blog.selfshadow.com/2011/07/22/specular-showdown/) by Stephen Hill 122 | - [Twitter Thread on TAA and Specular Aliasing](https://twitter.com/js_guay/status/1196250241869209601?s=20) 123 | 124 | ### Papers 125 | 126 | - [LEAN Mapping](https://www.csee.umbc.edu/~olano/papers/lean/) by Marc Olano and Dan Baker 127 | - [Improved Specular AA]() by Tokuyoshi and Kaplanyan 128 | 129 | ### Presentations 130 | 131 | - [Advanced VR Rendering](http://media.steampowered.com/apps/valve/2015/Alex_Vlachos_Advanced_VR_Rendering_GDC2015.pdf) by Alex Vlachos [(Video)](https://archive.org/details/GDC2015Vlachos) 132 | 133 | ### Examples 134 | 135 | - [Specular AA Example](https://blog.selfshadow.com/sandbox/specaa.html) by Anton Kaplanyan 136 | 137 | ## Post Processing (Motion Blur/DoF) 138 | 139 | ### Papers 140 | 141 | - [A Reconstruction Filter for Plausible Motion Blur](https://casual-effects.com/research/McGuire2012Blur/McGuire12Blur.pdf) by Morgan McGuire et al. 142 | - [A Fast and Stable Feature-Aware Motion Blur Filter](https://casual-effects.com/research/Guertin2013MotionBlurReport/index.html) by Jean-Philippe Guertin et al. 143 | 144 | ### Blog Posts 145 | 146 | - [Designing a next-generation post-effects pipeline](https://bartwronski.com/2014/12/09/designing-a-next-generation-post-effects-pipeline/) by Bart Wronski 147 | - [Separable disk-like depth of field](https://bartwronski.com/2017/08/06/separable-bokeh/comment-page-1/) by Bart Wronski 148 | 149 | ### Presentations 150 | 151 | - [Next Generation Post Processing In Call Of Duty: Advanced Warfare](https://advances.realtimerendering.com/s2014/) by Jorge Jimenez 152 | 153 | ## Physically Based Rendering 154 | 155 | ### Blog Posts 156 | 157 | - [Notes on Importance Sampling](https://www.tobias-franke.eu/log/2014/03/30/notes_on_importance_sampling.html) by Tobias Franke 158 | - [A multi-faceted exploration](https://blog.selfshadow.com/2018/06/04/multi-faceted-part-1/) by Stephen Hill 159 | - [Sampling Microfacet Brdf](https://agraphicsguy.wordpress.com/2015/11/01/sampling-microfacet-brdf/) by A Graphics Guy 160 | - [Importance Sampling techniques for GGX with Smith Masking-Shadowing: Part 1](https://schuttejoe.github.io/post/ggximportancesamplingpart1/) 161 | - [GPU-Based Importance Sampling](https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch20.html) by Křivánek and Colbert 162 | - [How is the NDF really defined](http://www.reedbeta.com/blog/hows-the-ndf-really-defined/) by Nathan Reed 163 | 164 | ### Papers 165 | 166 | - [Real shading in unreal engine 4](https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf) by Brian Karis 167 | - [Revisiting physically based shading at Imageworks](https://blog.selfshadow.com/publications/s2017-shading-course/imageworks/s2017_pbs_imageworks_slides_v2.pdf) by Kulla and Conty 168 | - [Practical multiple scattering compensation for microfacet models](https://blog.selfshadow.com/publications/turquin/ms_comp_final.pdf) by Emmanuel Turquin 169 | - [A Multiple-scattering Microfacet Model for Real-time Image-based Lighting](http://www.jcgt.org/published/0008/01/03/paper.pdf) by Carmelo J. Fdez-Agüera 170 | - [PBR Diffuse Lighting for GGX + Smith Microsurfaces](https://twvideo01.ubm-us.net/o1/vault/gdc2017/Presentations/Hammon_Earl_PBR_Diffuse_Lighting.pdf) by Earl Hammon 171 | - [Microfacet Models for Refraction through Rough Surfaces](http://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf) by Walter et al. 172 | - [Multiple-Scattering Microfacet BSDFs with the Smith Model](https://eheitzresearch.wordpress.com/240-2/) by Eric Heitz et al 173 | - [Real-Time Polygonal-Light Shading with Linearly Transformed Cosines](https://eheitzresearch.wordpress.com/415-2/) by Erir Heitz et al. 174 | 175 | ### Presentations 176 | 177 | - [Background: Physics and Math of Shading](https://blog.selfshadow.com/publications/s2013-shading-course/hoffman/s2013_pbs_physics_math_slides.pdf) by Naty Hoffman 178 | - [A Journey Through Implementing Multiscattering BRDFs and Area Lights](http://advances.realtimerendering.com/s2019/index.htm) by Stephen McAuley et al 179 | 180 | ### Examples 181 | 182 | - [Moving Frostbite to PBR](https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf) by Sebastian Legarde et al 183 | - [Filament](https://google.github.io/filament/Filament.html) by Romain Guy et al of Google 184 | 185 | ## Shadows 186 | 187 | ### Blog Posts 188 | 189 | - [Shadow Mapping Summary – Part 1](http://the-witness.net/news/2013/09/shadow-mapping-summary-part-1/) by Ignacio Castaño 190 | - [A Sampling of Shadow Techniques](https://mynameismjp.wordpress.com/2013/09/10/shadow-maps/) by Matt Pettineo 191 | - [Common Techniques to Improve Shadow Depth Maps](https://docs.microsoft.com/en-us/windows/win32/dxtecharts/common-techniques-to-improve-shadow-depth-maps) 192 | 193 | ### Examples 194 | 195 | - [Shadows](https://github.com/TheRealMJP/Shadows) by Matt Pettineo 196 | 197 | ### Presentations 198 | 199 | - [Playing with Real-Time Shadows](https://www.realtimeshadows.com/sites/default/files/Playing%20with%20Real-Time%20Shadows_0.pdf) by Nikolas Kasyan 200 | 201 | ## Temporal Anti-Aliasing 202 | 203 | ### Blog Posts 204 | 205 | - [Temporal supersampling and antialiasing](https://bartwronski.com/2014/03/15/temporal-supersampling-and-antialiasing/) by Bart Wronski 206 | - [Temporal supersampling pt. 2 – SSAO demonstration](https://bartwronski.com/2014/04/27/temporal-supersampling-pt-2-ssao-demonstration/) by Bart Wronski 207 | 208 | ### Presentations 209 | 210 | - [Graphics Gems from CRYENGINE 3](https://advances.realtimerendering.com/s2013/index.html) by Tiago Sousa 211 | - [High-Quality Temporal Supersampling](https://advances.realtimerendering.com/s2014/) by Brian Karis 212 | - [Temporal Antialiasing in Uncharted 4](https://advances.realtimerendering.com/s2016/index.html) by Ke Xu 213 | - [Filmic SMAA: Sharp Morphological and Temporal Antialiasing](https://advances.realtimerendering.com/s2016/index.html) by Jorge Jimenez 214 | 215 | ## Tone Mapping 216 | 217 | ### Blog Posts 218 | 219 | - [HDR color grading and display in Frostbite](https://www.ea.com/frostbite/news/high-dynamic-range-color-grading-and-display-in-frostbite) by Alex Fry 220 | - [Filmic Tonemapping with Piecewise Power Curves](http://filmicworlds.com/blog/filmic-tonemapping-with-piecewise-power-curves/) by John Hable 221 | - [Automatic Exposure](https://knarkowicz.wordpress.com/2016/01/09/automatic-exposure/) by Krzysztof Narkowicz 222 | - [A Closer Look at Tone Mapping](https://mynameismjp.wordpress.com/2010/04/30/a-closer-look-at-tone-mapping/) by Matt Pettineo 223 | - [Artist Friendly HDR With Exposure Values](http://www.reedbeta.com/blog/artist-friendly-hdr-with-exposure-values/) by Nathan Reed 224 | - [Photographic Tone Reproduction for Digital Images](http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf) by Reinhard et al 225 | - [Localized tonemapping – is global exposure and global tonemapping operator enough for video games?](https://bartwronski.com/2016/08/29/localized-tonemapping/) by Bart Wronski 226 | - [Adaptive Exposure from Luminance Histograms](http://alextardif.com/HistogramLuminance.html) by Alex Tardif 227 | 228 | ### Examples 229 | 230 | - [Tonemap Operators](https://www.shadertoy.com/view/llXyWr) by Romain Guy 231 | 232 | ### Assets 233 | 234 | - [High-Resolution Light Probe Image Gallery ](http://gl.ict.usc.edu/Data/HighResProbes/) from Vision & Graphics Lab 235 | - [sIBL Archive](http://www.hdrlabs.com/sibl/archive.html) 236 | 237 | ## HDR 238 | 239 | ### Blog Posts 240 | 241 | - [HDR color grading and display in Frostbite](https://www.ea.com/frostbite/news/high-dynamic-range-color-grading-and-display-in-frostbite) by Alex Fry 242 | - [HDR Display – First Steps](https://knarkowicz.wordpress.com/2016/08/31/hdr-display-first-steps/) by Krzysztof Narkowicz 243 | - [Tonemapping on HDR displays. ACES to rule ‘em all? ](https://c0de517e.blogspot.com/2017/02/tonemapping-on-hdr-displays-aces-to.html) by Angelo Pesce 244 | 245 | ## Volumetric Effects 246 | 247 | ### Blog Posts 248 | 249 | - [Sébastien Hillaire's personal website](https://sebh.github.io/) 250 | - [Rendering volumetric Clouds Using Signed Distance Fields](https://blog.uhawkvr.com/rendering/rendering-volumetric-clouds-using-signed-distance-fields/) by Felix Westin 251 | 252 | ### Papers 253 | 254 | - [A Scalable and Production ReadySky and Atmosphere Rendering Technique](https://sebh.github.io/publications/egsr2020.pdf) by Sébastien Hillaire 255 | - [Precomputed Atmospheric Scattering](https://ebruneton.github.io/precomputed_atmospheric_scattering/) by Eric Bruneton 256 | 257 | ### Presentations 258 | 259 | - [Nubis: Authoring Real-Time Volumetric Cloudscapes with the Decima Engine](http://advances.realtimerendering.com/s2017/index.html) by Andrew Schneider 260 | - [Physically Based and Scalable Atmospheres in Unreal Engine](https://blog.selfshadow.com/publications/s2020-shading-course/hillaire/s2020_pbs_hillaire_slides.pdf) by Sébastien Hillaire 261 | - [Physically-based and Unified Volumetric Rendering in Frostbite](https://www.ea.com/frostbite/news/physically-based-unified-volumetric-rendering-in-frostbite) by Sébastien Hillaire 262 | - [Physically Based Sky, Atmosphere & Cloud Rendering](https://www.ea.com/frostbite/news/physically-based-sky-atmosphere-and-cloud-rendering) by Sébastien Hillaire 263 | 264 | ### Examples/Code 265 | 266 | - [Tileable Volume Noise](https://github.com/sebh/TileableVolumeNoise) from Sébastien Hillaire for creating tileable noise textures for use in cloud rendering 267 | - [Unreal Engine Sky Atmosphere Rendering Technique](https://github.com/sebh/UnrealEngineSkyAtmosphere) from Sébastien Hillaire, example of his ESGR 2020 paper algorithm 268 | --------------------------------------------------------------------------------