└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Computer Graphics and Game Development Knowledge 2 | 3 | ## Sites 4 | - :star:[Catlike Coding: C# and Shader Tutorials for the Unity Engine](https://catlikecoding.com/unity/tutorials/) 5 | - [RedBlobGames](https://www.redblobgames.com/) 6 | - :star:[The Graphics Codex](https://graphicscodex.courses.nvidia.com/app.html) 7 | - :star:[Geometric Tools](https://www.geometrictools.com/Documentation/Documentation.html) 8 | - [Inigo Quilez](https://iquilezles.org/www/index.htm) 9 | - [Jacco's Blog](https://jacco.ompf2.com/category/tutorial/) 10 | 11 | ## Articles 12 | - :star:[Drinking from the Firehose: Learning Computer Graphics Techniques and Programming](https://miketuritzin.com/post/how-to-learn-computer-graphics-techniques-and-programming/) 13 | - :star:[1000 Forms Of Bunnies](http://viclw17.github.io/) 14 | - [Demofox Blog - Graphics and Math](https://blog.demofox.org/#Graphics) 15 | - :star::book:[Free Books: Real-Time Rendering Resources](http://www.realtimerendering.com/#books-small-table) 16 | - :star:[Gabriel Gambetta: Computer Graphics from scratch](https://gabrielgambetta.com/computer-graphics-from-scratch/) 17 | - :star:[How to Start Learning Computer Graphics Programming](https://erkaman.github.io/posts/beginner_computer_graphics.html) 18 | - :star:[Learn Computer Graphics From Scratch!](http://www.scratchapixel.com/index.php?redirect) 19 | - :star:[Michael Abrash's "Graphics Programming Black Book"](http://www.jagregory.com/abrash-black-book/) 20 | - [Choosing a Graphics API](http://www.rastertek.com/choosing.html) 21 | - [The Ultimate DirectX Tutorial](http://www.directxtutorial.com/LessonList.aspx?listid=11) 22 | - [Let's Make a Voxel Engine](https://sites.google.com/site/letsmakeavoxelengine/) 23 | - [NonEuclidean rendering engine](https://github.com/HackerPoet/NonEuclidean) 24 | - :clapper:[C++ 3D Game Tutorial: Creating DirectX 3D Engine ](https://www.youtube.com/watch?v=ssGka-bSTvQ&list=PLv8DnRaQOs5-ST_VDqgbbMRtzMtpK36Hy) 25 | - :clapper:[chernos](https://www.youtube.com/playlist?list=PLlrATfBNZ98fqE45g3jZA_hLGUrD4bo6_) 26 | - [Quadtree vs Spatial Hashing - a Visualization](http://zufallsgenerator.github.io/2014/01/26/visually-comparing-algorithms/) 27 | - [The Book of Shaders](https://thebookofshaders.com/) 28 | - [How to make your game run at 60fps- a blog post that goes into depth about frame timing code](https://en.reddit.com/r/gamedev/comments/ax2sbn/how_to_make_your_game_run_at_60fps_a_blog_post/) 29 | - [Advanced Terrain Texture Splatting: REDDIT](https://en.reddit.com/r/gamedev/comments/b07fwk/advanced_terrain_texture_splatting/) 30 | - [Advanced Terrain Texture Splatting: LINK](https://habr.com/en/post/442924/) 31 | - [A first-person engine in 265 lines](http://www.playfuljs.com/a-first-person-engine-in-265-lines/) 32 | - [Resources for Learning Graphics Programming](http://stephaniehurlburt.com/blog/2019/3/25/resources-for-learning-graphics-programming) 33 | - [Y axis up or Z axis up?](https://en.reddit.com/r/gamedev/comments/b6ujvb/y_axis_up_or_z_axis_up/) 34 | - [Matrix Transformations](https://jsantell.com/matrix-transformations) 35 | - [3D Projection](https://jsantell.com/3d-projection) 36 | - [Model View Projection](https://jsantell.com/model-view-projection) 37 | - [3d-game-shaders-for-beginners](https://github.com/lettier/3d-game-shaders-for-beginners) 38 | - [Why do game developers prefer Windows?](https://softwareengineering.stackexchange.com/questions/60544/why-do-game-developers-prefer-windows/88055#88055) 39 | - [TaiChi: Open-source computer graphics library ](http://taichi.graphics/) 40 | - :clapper:[Game Development Tutorials](https://www.youtube.com/user/Cercopithecan/playlists) 41 | - :clapper:[Programming and Technology Tutorials](https://www.youtube.com/channel/UC-yuWVUplUJZvieEligKBkA/videos) 42 | - :book:[Math for Programmers](https://livebook.manning.com/book/math-for-programmers/chapter-3/v-6/23) 43 | - :book:[Michael Abrash's Graphics Programming Black Book](https://github.com/jagregory/abrash-black-book) 44 | - :star:[Nick's Blog](http://weigert.vsos.ethz.ch/) 45 | - [distance functions](https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm) 46 | - [RAY TRACING A TINY PROCEDURAL PLANET](https://casual-effects.com/research/McGuire2019ProcGen/McGuire2019ProcGen.pdf) 47 | - [iquilezles ShaderToy](https://www.shadertoy.com/user/iq) 48 | - [Writing a texture painter: Part 1](https://medium.com/@strattonbrazil/writing-a-texture-painter-part-1-f0d732d287d1) 49 | - [Computação Gráfica - UFPB](http://mat.ufpb.br/~lenimar/cgraf/index.html) 50 | - [Graphics Programming Projects](http://graphicscodex.com/projects/projects/index.html) 51 | - :star::book:[The Nature of Code: Simulating natural behaviours and phenomena](https://natureofcode.com/book/) 52 | - [Debugging For Graphics Programmers](https://www.jeremyong.com/graphics/2021/12/27/debugging-for-graphics-programmers/) 53 | - [Line Rendering Deep Overview](https://panthavma.com/articles/lines/deep-overview-extraction/) 54 | 55 | ## General Graphics API 56 | - [A Comparison of Modern Graphics APIs](https://alain.xyz/blog/comparison-of-modern-graphics-apis) 57 | - [Rendergraphs and how to implement one](https://poniesandlight.co.uk/reflect/island_rendergraph_1/) 58 | 59 | ## Case studies 60 | - [Behind the Pretty Frames: Death Stranding](https://mamoniem.com/behind-the-pretty-frames-death-stranding/) 61 | 62 | ## OpenGL 63 | - Learn the new [programmable pipeline](https://www.khronos.org/opengl/wiki/Rendering_Pipeline_Overview) (shaders) instead of only the old [fixed pipeline](https://www.khronos.org/opengl/wiki/Fixed_Function_Pipeline) in old tutorials like [this](http://www.cs.uccs.edu/~ssemwal/indexGLTutorial.html). 64 | - 65 | - ⭐[A Guide to Modern OpenGL Functions: The NEW modern, about DSA, not the old modern about VAO](https://github.com/fendevel/Guide-to-Modern-OpenGL-Functions) 66 | - https://www.tomdalling.com/blog/modern-opengl/01-getting-started-in-xcode-and-visual-cpp/#what_are_vbo_and_vao 67 | - :star:[Getting Started](https://www.khronos.org/opengl/wiki/Getting_Started) 68 | - [The Official Guide to Learning OpenGL, Version 1.1 - OpenGL Red Book](https://www.glprogramming.com/red/) 69 | - :star:[Learn OpenGL](https://learnopengl.com/Introduction) 70 | - [Modern OpenGL](https://glumpy.github.io/modern-gl.html) 71 | - [Anton's OpenGL 4 Tutorials](http://antongerdelan.net/opengl/) 72 | - :star:[opengl-tutorial](http://www.opengl-tutorial.org/) 73 | - [OpenGL Modern Tutorials](http://ogldev.atspace.co.uk/index.html) 74 | - :star:[Learning Modern 3D Graphics Programming](https://alfonse.bitbucket.io/oldtut/index.html) 75 | - [OpenGL Theory](https://adrian.geek.nz/graphics_docs/opengl.html) 76 | - [An intro to modern OpenGL. Chapter 1: The Graphics Pipeline](http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Chapter-1:-The-Graphics-Pipeline.html) 77 | - [DEPRECATION OF FIXED PIPELINE FEATURES](https://stackoverflow.com/questions/4113989/why-were-display-lists-deprecated-in-opengl-3-1) 78 | - :star:[OpenGL tutorials and notes](http://www.songho.ca/opengl/index.html) 79 | - :star:[VBO X Models: Vertex Specification Best Practices](https://www.khronos.org/opengl/wiki/Vertex_Specification_Best_Practices) 80 | - [What are some good practices to manage GPU memory usage?](https://www.reddit.com/r/opengl/comments/oxl2fi/what_are_some_good_practices_to_manage_gpu_memory/?%24deep_link=true&correlation_id=b0a508a1-57b8-48d1-8471-e9915aa327ee&post_fullname=t3_oxl2fi&post_index=4&ref=email_digest&ref_campaign=email_digest&ref_source=email&utm_content=post_body&%243p=e_as&_branch_match_id=929318832688810568) 81 | 82 | ### OpenGL OOP Abstractions 83 | - [Object-Oriented OpenGL](https://gamedev.stackexchange.com/questions/25733/object-oriented-opengl) 84 | - [OpenGL and OOP](https://www.reddit.com/r/opengl/comments/2reezw/opengl_and_oop/) 85 | - [OpenGL Renderer Design](https://nlguillemot.wordpress.com/2016/11/18/opengl-renderer-design/) 86 | 87 | ### OpenGL Opinions 88 | - [OpenGL Is Broken](http://www.joshbarczak.com/blog/?p=154) 89 | 90 | ## Vulcan 91 | - [Vulkan Resources](https://github.com/KhronosGroup/Khronosdotorg/blob/master/api/vulkan/resources.md) 92 | - [Fundamentals of the Vulkan Graphics API: Why Rendering a Triangle is Complicated](https://liamhinzman.com/blog/vulkan-fundamentals) 93 | 94 | ## DirectX 95 | - [Learning DirectX 12 – Lesson 1 – Initialize DirectX 12](https://www.3dgep.com/learning-directx12-1/) 96 | - [DirectX 12 Programming #1: A quickstart!](https://digitalerr0r.net/2015/08/19/quickstart-directx-12-programming/) 97 | - [Direct3D 12 programming guide](https://docs.microsoft.com/en-us/windows/win32/direct3d12/directx-12-programming-guide) 98 | - [DirectX 12 by example](https://nikitablack.github.io/2016/07/23/Direct-X-12-by-example.html) 99 | - [Getting started with D3D12](https://anteru.net/blog/2015/getting-started-with-d3d12/) 100 | - [DX12 Useful links](https://devblogs.microsoft.com/directx/useful-links/) 101 | 102 | ## Assets 103 | - [Kay Lousberg](https://kaylousberg.com/game-assets) 104 | - [Quaternius](https://quaternius.com/index.html) 105 | - [Itch.io](https://itch.io/game-assets/free/tag-3d) 106 | - [Kenney](https://www.kenney.nl/) 107 | - [Tree It - Simple Tree Creator](http://www.evolved-software.com/treeit/treeit) 108 | - [Tree It - TUTORIAL](https://www.youtube.com/watch?v=hojwx9Hxz9w&ab_channel=PrismaticaDev) 109 | - [FREE 100+ Song Music Library!](https://sulosounds.itch.io/100-songs) 110 | 111 | ## Math 112 | - :star:[Interactive Linear Algebra](http://textbooks.math.gatech.edu/ila/index.html) 113 | - [The-Art-of-Linear-Algebra: Graphic notes on Gilbert Strang's "Linear Algebra for Everyone"](https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra) 114 | - :book:[3D Math Primer for Graphics and Game Development](https://gamemath.com/) 115 | - :star:[Interpolating in a Triangle](https://codeplea.com/triangular-interpolation) 116 | - [Triangle rasterization in practice](https://fgiesen.wordpress.com/2013/02/08/triangle-rasterization-in-practice/) 117 | - [Understanding Quaternions](https://www.3dgep.com/understanding-quaternions/) 118 | - [Vector products](http://geomalgorithms.com/vector_products.html) 119 | - [The Art of Lerp](https://lunarlabs.pt/blog/post/the_art_of_lerp) 120 | - :book:[Mathematics for 3D Game Programming and Computer Graphics](http://canvas.projekti.info/ebooks/Mathematics%20for%203D%20Game%20Programming%20and%20Computer%20Graphics,%20Third%20Edition.pdf) 121 | - [Gamedev Tutorial: Trigonometry Basics – Sine & Cosine](http://allenchou.net/2019/08/trigonometry-basics-sine-cosine/) 122 | - [Sin & Cos: The Programmer's Pals!](https://www.helixsoft.nl/articles/circle/sincos.htm) 123 | - [The Magnificent 2D Matrix](https://ncase.me/matrix/) 124 | - [Gamedev Tutorial: Dot Product, Rulers, And Bouncing Balls](https://www.allenchou.net/2020/01/dot-product-projection-reflection/) 125 | - [Let's remove Quaternions from every 3D Engine](https://marctenbosch.com/quaternions/) 126 | - [Ray-Sphere Intersection with Simple Math](http://kylehalladay.com/blog/tutorial/math/2013/12/24/Ray-Sphere-Intersection.html) 127 | - [Unlearn rotation matrices as rotations](https://kodkodgames.gitlab.io/rotation_matrices/) 128 | - :clapper:[Möller Trumbore Ray Triangle Intersection Explained](https://en.reddit.com/r/GraphicsProgramming/comments/ifbjzl/i_created_a_video_explaining_the_m%C3%B6ller_trumbore/) 129 | - :book:[Linear Algebra by Jim Hefferon](https://hefferon.net/linearalgebra/) 130 | - [The most useful math formulas](http://blog.pkh.me/p/29-the-most-useful-math-formulas.html) 131 | - :book:[Mathematical recipes (early draft)](https://math.recipes/Math-recipes.pdf) 132 | - [Easing functions specify the rate of change of a parameter over time](https://easings.net/) 133 | 134 | ## Physics 135 | - [A silly contraption using a JavaScript physics engine](http://slicker.me/javascript/physics_experiment.htm) 136 | - [Simulating Object Collisions With Canvas](https://joshbradley.me/object-collisions-with-canvas/) 137 | - [Creating a 2D physics engine from scratch in Javascript](https://ailef.tech/2022/11/12/creating-a-2d-physics-engine-from-scratch-in-javascript/) 138 | - [Brickadia - Fast Collisions for Large Editable Vehicles](https://brickadia.com/blog/devlog-4/) 139 | - [Simulating Fluids, Fire, and Smoke in Real-Time](https://andrewkchan.dev/posts/fire.html) 140 | - :star:[COLLISION DETECTION: Jeff Thompson](https://www.jeffreythompson.org/collision-detection/index.php) 141 | 142 | ## Rendering 143 | - :star:[Tinyrenderer tutorials](https://github.com/ssloy/tinyrenderer/wiki) 144 | - [DECYPHERING THE BUSINESS CARD RAYTRACER](http://fabiensanglard.net/rayTracing_back_of_business_card/index.php) 145 | - [REVISITING THE BUSINESS CARD RAYTRACER](https://fabiensanglard.net/revisiting_the_businesscard_raytracer/index.html) 146 | - [DECIPHERING THE POSTCARD SIZED PATHTRACER](https://fabiensanglard.net/postcard_pathtracer/index.html) 147 | - [REVISITING THE POSTCARD PATHTRACER WITH CUDA AND OPTIX](https://fabiensanglard.net/revisiting_the_pathtracer/index.html) 148 | - [Triangle rasterization in practice](https://fgiesen.wordpress.com/2013/02/08/triangle-rasterization-in-practice/) 149 | - [C++ vs OCaml: Ray tracer comparison](http://www.ffconsultancy.com/languages/ray_tracer/comparison.html) 150 | - :star:[smallpt: Global Illumination in 99 lines of C++](http://www.kevinbeason.com/smallpt/) 151 | - [Ray Tracing in One Weekend - Series](https://raytracing.github.io/) 152 | - :book:[Ray Tracing in One Weekend](https://raytracing.github.io/books/RayTracingInOneWeekend.html) 153 | - :book:[Ray Tracing: The Next Week](https://raytracing.github.io/books/RayTracingTheNextWeek.html) 154 | - :book:[Ray Tracing: The Rest Of Your Life](https://raytracing.github.io/books/RayTracingTheRestOfYourLife.html) 155 | - :star:[Casual Shadertoy Path Tracing 1: Basic Camera, Diffuse, Emissive](https://blog.demofox.org/2020/05/25/casual-shadertoy-path-tracing-1-basic-camera-diffuse-emissive/) 156 | - :book:[Physically Based Rendering:From Theory To Implementation](http://www.pbr-book.org/) 157 | - :star:[Raytracing - Dielectric Materials](http://viclw17.github.io/2018/08/05/raytracing-dielectric-materials/) 158 | - [A trip through the Graphics Pipeline 2011: Index](https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/) 159 | - [Writing a small ray tracer in Rust and Zig](https://nelari.us/post/raytracer_with_rust_and_zig/) 160 | - [Modern text rendering with Linux: Antialiasing](https://mrandri19.github.io/2019/08/08/modern-text-rendering-linux-ep2.html) 161 | - [Ray Tracing Denoising](https://alain.xyz/blog/raytracing-denoising) 162 | - [An Introduction To Real-Time Subsurface Scattering](https://therealmjp.github.io/posts/sss-intro/) 163 | - [Ray Tracing Gems](https://www.realtimerendering.com/raytracinggems/) 164 | - [Global Illumination and Path Tracing](https://www.scratchapixel.com/lessons/3d-basic-rendering/global-illumination-path-tracing) 165 | - [Part 0: 3D Game Rendering 101](https://www.techspot.com/article/1851-3d-game-rendering-explained/?fbclid=IwAR1HDRTy4B3KC6OSuOdUaPrgs1YpPJjnzDctt3Q3R1OldQs3RwUeJjCfmho) 166 | - [Part 1: 3D Game Rendering: Vertex Processing](https://www.techspot.com/article/1857-how-to-3d-rendering-vertex-processing/?fbclid=IwAR2N1Z7yDjFn_qAjdoBtyhJIwZZ9xRT0c4O0s_bdWojx1FEPyyF5Cf6W_Dg) 167 | - [Part 2: 3D Game Rendering: Rasterization and Ray Tracing](https://www.techspot.com/article/1888-how-to-3d-rendering-rasterization-ray-tracing/?fbclid=IwAR1SIywmi2Y56jvIzCiTc61SFGBJ7P1CV_ZQNtn80NakgtaISB2fAFgJMSI) 168 | - [Part 3: 3D Game Rendering: Texturing](https://www.techspot.com/article/1916-how-to-3d-rendering-texturing/?fbclid=IwAR2CVxpjWUBRqgtyZdFOtmI9fY_oamUyvu73PH4ttE7HsWNfnPGsoCnF1Zc) 169 | - [Part 4: 3D Game Rendering: Lighting and Shadows](https://www.techspot.com/article/1998-how-to-3d-rendering-lighting-shadows/?fbclid=IwAR1ZtV_OGhG_SppDalNhhbtFdxUqzjUpX5Mix_wJbNaT_dSl_WGrswHkxAI) 170 | - [Learning About Ray Tracing](https://siliconsprawl.com/2020/08/02/ray-tracers.html) 171 | - [Daily Pathtracer Part 0: Intro](https://aras-p.info/blog/2018/03/28/Daily-Pathtracer-Part-0-Intro/) 172 | 173 | 174 | ### Shaders 175 | - [Getting started with shaders: signed distance functions!](https://jvns.ca/blog/2020/03/15/writing-shaders-with-signed-distance-functions/) 176 | - [HOW TO READ SHADER ASSEMBLY](https://interplayoflight.wordpress.com/2021/04/18/how-to-read-shader-assembly/) 177 | - [A Review of Shader Languages](https://alain.xyz/blog/a-review-of-shader-languages) 178 | - :star:[A Journey Into Shaders](https://www.mayerowitz.io/blog/a-journey-into-shaders) 179 | 180 | ### Concepts, Techniques and Algorithms 181 | - :star::book:[Game Programming Patterns](https://gameprogrammingpatterns.com/contents.html) 182 | - [Cornell box](https://en.wikipedia.org/wiki/Cornell_box) 183 | - [Rendering equation](https://en.wikipedia.org/wiki/Rendering_equation) 184 | - [Algorithm for Drawing Trees](https://rachel53461.wordpress.com/2014/04/20/algorithm-for-drawing-trees/) 185 | - :star:[Rendering curves in 3D](https://avikdas.com/2020/09/08/rendering-curves-in-3d.html) 186 | - :star:[A Primer on Bézier Curves](https://pomax.github.io/bezierinfo/) 187 | - 🎬 [Freya Holmer - The Beauty of Bézier Curves](https://www.youtube.com/watch?v=aVwxzDHniEw) 188 | - [Octahedron normal vector encoding](https://knarkowicz.wordpress.com/2014/04/16/octahedron-normal-vector-encoding/) 189 | - [Distance Fields](https://prideout.net/blog/distance_fields/) 190 | - [Barnes–Hut simulation n-Body - Wikipedia](https://en.wikipedia.org/wiki/Barnes%E2%80%93Hut_simulation) 191 | - [The Barnes-Hut Algorithm](http://arborjs.org/docs/barnes-hut) 192 | - [Convex Hull Generation with Quick Hull Randy Gaul](http://www.randygaul.net/wp-content/uploads/2013/11/QuickHull.pdf) 193 | - [Implementing Quick Hull - Valve](http://box2d.org/files/GDC2014/DirkGregorius_ImplementingQuickHull.pdf) 194 | - [QuickHull 3D](http://algolist.manual.ru/maths/geom/convhull/qhull3d.php) 195 | - [Hexagonal Grids](https://www.redblobgames.com/grids/hexagons/) 196 | - [Hex Grid Geometry for Game Developers ](http://www.gamelogic.co.za/downloads/HexMath2.pdf) 197 | - [The Wavefunction Collapse Algorithm explained very clearly](https://robertheaton.com/2018/12/17/wavefunction-collapse-algorithm/) 198 | - [Visualizing Delaunay Triangulation](https://ianthehenry.com/posts/delaunay/) 199 | 200 | #### Geometry Images 201 | - [Twite UE5](https://twitter.com/BrianKaris/status/1260590413003362305) 202 | - [Geometry Images](http://hhoppe.com/gim.pdf) 203 | - [Geometry images](http://hhoppe.com/proj/gim/) 204 | - [Virtual Geometry Images](http://graphicrants.blogspot.com/2009/01/virtual-geometry-images.html) 205 | - [More Geometry](http://graphicrants.blogspot.com/2009/01/more-geometry.html) 206 | 207 | ### Voxel 208 | - [Layered voxel rendering](https://jobtalle.com/layered_voxel_rendering.html) 209 | - [Voxel to Mesh Conversion: Marching Cube Algorithm](https://medium.com/zeg-ai/voxel-to-mesh-conversion-marching-cube-algorithm-43dbb0801359) 210 | - [An Analysis of Minecraft-like Engines](https://0fps.net/2012/01/14/an-analysis-of-minecraft-like-engines/) 211 | - [Meshing in a Minecraft Game](https://0fps.net/2012/06/30/meshing-in-a-minecraft-game/) 212 | - [Meshing in a Minecraft Game (Part 2)](https://0fps.net/2012/07/07/meshing-minecraft-part-2/) 213 | - [Meshing in Voxel Engines – Part 1](https://blackflux.wordpress.com/2014/02/23/meshing-in-voxel-engines-part-1/) 214 | - [Meshing in Voxel Engines – Part 2](https://blackflux.wordpress.com/2014/03/01/meshing-in-voxel-engines-part-2/) 215 | - [Meshing in Voxel Engines – Part 3](https://blackflux.wordpress.com/2014/03/02/meshing-in-voxel-engines-part-3/) 216 | - :star:[Smooth Voxel Mapping: a Technical Deep Dive on Real-time Surface Nets and Texturing](https://medium.com/@bonsairobo/smooth-voxel-mapping-a-technical-deep-dive-on-real-time-surface-nets-and-texturing-ef06d0f8ca14) 217 | - [Let's Make a Voxel Engine](https://sites.google.com/site/letsmakeavoxelengine/) 218 | - :star:[SeaOfMemes Blog](https://web.archive.org/web/20150220095100/http://sea-of-memes.com/summary/blog_parts.html) 219 | - [Cube Voxel Rendering](https://medium.com/@calebleak/cube-voxel-rendering-bc5d87c24c3) 220 | - [SVO: what are sparse voxel octrees?](https://stackoverflow.com/questions/985893/what-are-sparse-voxel-octrees) 221 | - [Marching Cubes Tutorial](https://www.boristhebrave.com/2018/04/15/marching-cubes-tutorial/) 222 | - :star:[The Perfect Voxel Engine](https://voxely.net/blog/the-perfect-voxel-engine/) 223 | - [REDDIT Surface nets in Unity with Burst and weird SIMD stuff](https://www.reddit.com/r/VoxelGameDev/comments/vc07s6/surface_nets_in_unity_with_burst_and_weird_simd/) 224 | - [fastNaiveSurfaceNets](https://github.com/bigos91/fastNaiveSurfaceNets) 225 | - [fastMarchingCubes](https://github.com/bigos91/fastMarchingCubes) 226 | - [Naive Surface Nets in C#](https://github.com/TomaszFoster/NaiveSurfaceNets) 227 | - [Smooth Voxel Terrain (Part 1)](https://0fps.net/2012/07/10/smooth-voxel-terrain-part-1/) 228 | - [Smooth Voxel Terrain (Part 2)](https://0fps.net/2012/07/12/smooth-voxel-terrain-part-2/) 229 | - [surfacenets.js](https://github.com/mikolalysenko/mikolalysenko.github.com/blob/master/Isosurface/js/surfacenets.js) 230 | - [SDF Documentation](https://github.com/cheind/sdftoolbox/blob/main/doc/SDF.md) 231 | - [Voxel Planets: Procedural generation of planets with dynamic terrain](https://josebasierra.gitlab.io/VoxelPlanets) 232 | - [Metaballs and Marching Squares](https://jamie-wong.com/2014/08/19/metaballs-and-marching-squares/) 233 | - :clapper:[Davis Morley - Optimism in Design](https://vimeo.com/783228488) 234 | 235 | ### Raymarching and radiosity 236 | - [Raymarching Voxel Rendering](https://medium.com/@calebleak/raymarching-voxel-rendering-58018201d9d6) 237 | - [Real-Time Global Illumination Using OpenGL And Voxel Cone Tracing](https://arxiv.org/pdf/2104.00618.pdf) 238 | 239 | ## PDF 240 | - [Understanding the PDF File Format](https://blog.idrsolutions.com/page/2/?s=%22Make+your+own+PDF+file%22) 241 | - [Flate/deflate compression](https://www.prepressure.com/library/compression-algorithm/flate-deflate) 242 | - [How to decompress/deflate PDF Stream](https://stackoverflow.com/questions/42355485/how-to-decompress-deflate-pdf-stream) 243 | 244 | 245 | ## Hand Made Rendering (WTF!?!) 246 | - [austin/soft-3d-renderer](https://code.austinmorlan.com/austin/soft-3d-renderer/src/branch/master) 247 | - [How to draw ugly lines really fast](https://cohost.org/tomforsyth/post/648716-how-to-draw-ugly-lin) 248 | 249 | ## Terrain generation 250 | - [3d terrain generation REDDIT TALK](https://en.reddit.com/r/proceduralgeneration/comments/2x529j/lets_talk_about_terrain_generation_in_3d_warning/) 251 | - [MARTINI: Real-Time RTIN Terrain Mesh](https://observablehq.com/@mourner/martin-real-time-rtin-terrain-mesh) 252 | - [Fractional Brownian Motion](http://iquilezles.org/www/articles/fbm/fbm.htm) 253 | - [1D Procedural Terrain Generation](https://arpitbhayani.me/blogs/1d-terrain) 254 | - [Procedural World](http://procworld.blogspot.com/) 255 | 256 | ## Procedural Generators 257 | - [L-systems](https://jsantell.com/l-systems) 258 | - [Simulating worlds on the GPU](https://davidar.io/post/sim-glsl) 259 | 260 | ## Procedural Geometry 261 | - [Intro to Procedural Geometry, Part 1](https://lindenreid.wordpress.com/2018/01/20/intro-to-procedural-geometry-part-1/) 262 | - [Procedural Generation Tutorials](https://www.youtube.com/playlist?list=PLrMEhC9sAD1zprGu_lphl3cQSS3uFIXA9) 263 | 264 | ### Terrain Rendering 265 | - [Real-Time Optimally Adapting Meshes: Terrain Visualization in Games](https://www.hindawi.com/journals/ijcgt/2008/753584/) 266 | - [ROAM Algorithm Version 2.0](http://www.cognigraph.com/ROAM_homepage/ROAM2/) 267 | - [Real-Time Dynamic Level of Detail Terrain Rendering with ROAM](https://www.gamasutra.com/view/feature/131596/realtime_dynamic_level_of_detail_.php) 268 | - :star:[Terrain Rendering in Games: Basics](https://kosmonautblog.wordpress.com/2017/06/04/terrain-rendering-overview-and-tricks/) 269 | - :star:[Virtual Terrain Project](http://vterrain.org/) 270 | - [Simulating Erosion: An experiment](https://medium.com/@alberttheblacksheep/simulation-erosion-a-experiment-3cfd5c592b34) 271 | 272 | ### Noise (Perlin, Simplex,...) 273 | - [Perlin Noise: A Procedural Generation Algorithm](https://rtouti.github.io/graphics/perlin-noise-algorithm) 274 | - [Understanding Perlin Noise](https://flafla2.github.io/2014/08/09/perlinnoise.html) 275 | - [Ruído de Perlin](https://pt.khanacademy.org/computing/computer-programming/programming-natural-simulations/programming-noise/a/perlin-noise) 276 | - [Using Perlin Noise to Generate 2D Terrain and Water](https://gpfault.net/posts/perlin-noise.txt.html) 277 | - [Let’s make some noise!](https://medium.com/carwow-product-engineering/lets-make-some-noise-53a35d56c41e) 278 | - [Cubic noise](https://jobtalle.com/cubic_noise.html) 279 | - [Perlin noise demo in javascript](https://github.com/BensDownloads/perlinJS) 280 | - :star:[Perlin Noise Implementation](http://viclw17.github.io/2018/12/28/Perlin-Noise-Implementation/) 281 | - :star:[Building Up Perlin Noise](http://eastfarthing.com/blog/2015-04-21-noise/) 282 | - [Noise in Creative Coding](https://varun.ca/noise/) 283 | - [PERLIN VS. SIMPLEX](https://www.bit-101.com/blog/2021/07/perlin-vs-simplex/) 284 | 285 | ## Rotation 286 | - [How to Fix Gimbal Lock in N-Dimensions](https://medium.com/@omar4ur/how-to-fix-gimbal-lock-in-n-dimensions-f2f7baec2b5e) 287 | 288 | ## Animation 289 | - [How skeletal animation actually works](https://lunarlabs.pt/blog/post/how_skeletal_animation_actually_works) 290 | 291 | ## Modeling assets 292 | 293 | ### Vegetation and trees 294 | - :clapper:[Fluffy stylized trees tutorial, using quadmesh-to-billboards shader in Unity](https://www.youtube.com/watch?v=iASMFba7GeI) 295 | - :clapper:[How to Make a Stylized Tree by using Blender and Unity](https://www.youtube.com/watch?v=wPBX9kqcHzE) 296 | - :clapper:[The ULTIMATE Guide for Creating Grass and Vegetation For Video Games 🌱](https://www.youtube.com/watch?v=ek9kK6zmMf8) 297 | - [Airborn – Trees](https://simonschreibt.de/gat/airborn-trees/) 298 | - [REDDIT: I recreated the foliage shader from "The Witness" in Amplify Shader Editor](https://www.reddit.com/r/Unity3D/comments/eb3qr3/i_recreated_the_foliage_shader_from_the_witness/) 299 | - [Creating fluffy trees with Three.js (part 1)](https://douges.dev/blog/threejs-trees-1) 300 | 301 | ## Tetris 302 | - [Learning Modern JavaScript with Tetris](https://medium.com/@michael.karen/learning-modern-javascript-with-tetris-92d532bcd057) 303 | - [Tetris in 100 lines of JS](https://alaricus.github.io/SimpleTetris/) 304 | - [Tetris in 100 lines of JS: gitHub](https://github.com/Alaricus/SimpleTetris) 305 | - [JS ClassicTetris](https://alaricus.github.io/Tetris/) 306 | 307 | ## Image 308 | - [Unraveling the JPEG](https://parametric.press/issue-01/unraveling-the-jpeg/) 309 | - [Understanding and Decoding a JPEG Image using Python](https://yasoob.me/posts/understanding-and-writing-jpeg-decoder-in-python/) 310 | - [Images done right: 311 | Web graphics, good to the last byte](https://evilmartians.com/chronicles/images-done-right-web-graphics-good-to-the-last-byte-optimization-techniques) 312 | - [Histogram-preserving Blending for Randomized Texture Tiling](https://benedikt-bitterli.me/histogram-tiling/) 313 | 314 | ## Color 315 | - [Color Spaces](https://ciechanow.ski/color-spaces/) 316 | - [Alpha Compositing](https://ciechanow.ski/alpha-compositing/) 317 | - [Turbo, An Improved Rainbow Colormap for Visualization](https://ai.googleblog.com/2019/08/turbo-improved-rainbow-colormap-for.html) 318 | - [Fast HSV to RGB Conversion](http://www.vagrearg.org/content/hsvrgb) 319 | - [Random RGB values that average to N; or, Pointlessness and Probability](https://kevingal.com/blog/rgb-average.html) 320 | - [RGB/XYZ Conversion Matrix Accuracy](http://terathon.com/blog/rgb-xyz-conversion-matrix-accuracy/) 321 | - [Digital Color Management Guide](https://hg2dc.com/) 322 | - [Color Formats in CSS](https://www.joshwcomeau.com/css/color-formats/) 323 | - [Protecting a Story’s Future with History and Science](https://netflixtechblog.com/protecting-a-storys-future-with-history-and-science-e21a9fb54988) 324 | - [Read color hex codes](https://www.dotconferences.com/2018/11/david-desandro-read-color-hex-codes) 325 | - [Color Spaces](https://ciechanow.ski/color-spaces/) 326 | - [HSLuv, a developer friendly perceptual color space](https://www.kuon.ch/post/2020-03-08-hsluv/) 327 | - [Color Topics for Programmers](https://peteroupc.github.io/colorgen.html) 328 | - [The Pulfrich effect - Which colour scheme is better?](https://stitcher.io/blog/why-light-themes-are-better-according-to-science) 329 | - [Ditherpunk](https://surma.dev/things/ditherpunk/) 330 | - [Mapping concepts to colors (terribly) with the Oklab perceptual colospace](https://nessuent.xyz/posts/2021-08-17_concept_to_color.html) 331 | - :star:[Dan Hollick: Blending Modes](https://typefully.com/DanHollick/blending-modes-KrBa0JP) 332 | - [Perceptually uniform color spaces](https://programmingdesignsystems.com/color/perceptually-uniform-color-spaces/) 333 | - :star:[Poline is an enigmatic color palette generator](https://meodai.github.io/poline/?utm_source=ridd-tweet&utm_medium=ridd&utm_campaign=ridd) 334 | 335 | ## Light and Shadow 336 | - [Light and Shadows](https://ciechanow.ski/lights-and-shadows/) 337 | 338 | # AI 339 | - [Mathematics for Artificial Intelligence – Linear Algebra](https://rubikscode.net/2019/04/29/mathematics-for-artificial-intelligence-linear-algebra/) 340 | - [Pathfinding Algorithms](https://medium.com/@chopra.chet/pathfinding-algorithms-6c0d4febe8fd) 341 | - [Continuous Genetic Algorithm From Scratch With Python](https://towardsdatascience.com/continuous-genetic-algorithm-from-scratch-with-python-ff29deedd099) 342 | - [A Practical Guide to State Machines](https://deniskyashif.com/a-practical-guide-to-state-machines/) 343 | 344 | # CAD 345 | - [A New Era for Mechanical CAD: Time to move forward from decades-old design](https://queue.acm.org/detail.cfm?id=3469844) 346 | 347 | # GameDev 348 | - :star:[Gamedev problems](https://www.tommynorberg.com/gamedevproblems) 349 | - [Books for gamedevs](https://80.lv/articles/80-level-ratings-great-books-for-aspiring-game-developers/) 350 | - [On C++ and Object Oriented Programming](https://www.gamasutra.com/blogs/MarcCosta/20190401/339769/On_C_and_Object_Oriented_Programming.php) 351 | - [How to Build a Multiplayer (.io) Web Game, Part 1](https://victorzhou.com/blog/build-an-io-game-part-1/) 352 | - [Let’s Make: Dangerous Dave](https://www.maizure.org/projects/lets-make-dangerous-dave/index.html) 353 | - [RogheLike Articles](http://www.roguebasin.com/index.php?title=Articles#Map) 354 | - [Awesome game networking](https://github.com/MFatihMAR/Awesome-Game-Networking) 355 | - [Roguelike Tutorial Revised - TCOD Version](http://rogueliketutorials.com/tutorials/tcod/) 356 | - [Reddit: How Does Multiplayer / Networking Work?](https://en.reddit.com/r/gamedev/comments/d7u27u/how_does_multiplayer_networking_work/) 357 | - [Homebrew Voxel Engine](http://weigert.vsos.ethz.ch/2019/10/27/homebrew-voxel-engine/) 358 | - [How I made a 3D game in only 2KB of JavaScript](http://frankforce.com/?p=7427) 359 | - [How to Make a Roguelike](https://www.gridsagegames.com/blog/2018/10/how-to-make-a-roguelike/) 360 | 361 | ## Patterns 362 | - [REDDIT: what are some game design patterns that you wish you knew earlier?](https://www.reddit.com/r/gamedev/comments/10qtoe4/what_are_some_game_design_patterns_that_you_wish/) 363 | 364 | ## Unity 365 | - [Introduction to Asynchronous Programming in Unity](https://www.raywenderlich.com/26799311-introduction-to-asynchronous-programming-in-unity) 366 | - [Looking into Unity's async/await](https://gametorrahod.com/unity-and-async-await/) 367 | - [Como iniciar a desenvolver jogos com o Unity 3D](https://www.devmedia.com.br/desenvolva-jogos-com-a-unity-3d/29125) 368 | - :star: [C# and Shader Tutorials for the Unity Engine](https://catlikecoding.com/unity/tutorials/) 369 | - [Runtime Mesh Manipulation With Unity](https://www.raywenderlich.com/3169311-runtime-mesh-manipulation-with-unity) 370 | - [GPU Ray Tracing in Unity – Part 1](http://three-eyed-games.com/2018/05/03/gpu-ray-tracing-in-unity-part-1/) 371 | - [Day 1: Game Developer Aspirant (How I learned the root navigational basics of Unity)](https://medium.com/@little_michael101/day-1-game-developer-aspirant-how-i-learned-the-root-navigational-basics-of-unity-e1a1c36329ba) 372 | - [Intro to 2Dn3D Physics](https://medium.com/@lagallardo5426/intro-to-2dn3d-physics-98a646345be3) 373 | - [2D/3D OnCollision/OnTrigger](https://medium.com/@lagallardo5426/2d-3d-oncollision-ontrigger-70320260494) 374 | - [Instantiate to Destroy or Pool?](https://medium.com/@lagallardo5426/instantiate-to-destroy-or-pool-c7220ca989e3) 375 | - [BEST PRACTICES FOR RIGID BODIES IN UNITY](https://digitalopus.ca/site/using-rigid-bodies-in-unity-everything-that-is-not-in-the-manual/) 376 | - [jornadadodev: Curso Básico de Unity 3D](https://jornadadodev.com.br/cursos/curso-basico-de-unity-3d) 377 | - [Question: What does IEnumerator do? i just can't figure it out](https://www.reddit.com/r/Unity3D/comments/yc8fi1/question_what_does_ienumerator_do_i_just_cant/) 378 | - [Vionix Studio: Learn unity](https://vionixstudio.com/learn-unity-game-engine/) 379 | - [Unity Tutorial](https://www.tutorialspoint.com/unity/index.htm) 380 | - [gamedev academy: Free Unity 3D Game Tutorials](https://gamedevacademy.org/category/unity-tutorials/unity-3d-tutorials/) 381 | - [10 Best Unity Tutorials for Game Developers 2022 DEC](https://medium.com/quick-code/top-online-tutorials-to-learn-game-development-using-unity-55497ad51169) 382 | - [80 Level Ratings: Great YouTube Channels With Unity Tutorials](https://80.lv/articles/80-level-ratings-great-youtube-channels-with-unity-tutorials/) 383 | - [noob tuts: Unity Tutorials](https://noobtuts.com/unity) 384 | - [habrador: Tutorials](https://www.habrador.com/tutorials/) 385 | - [Como crear una animación de color desde C# en Unity](https://blog.jappsku.co/como-crear-una-animacion-de-color-desde-c-en-unity/) 386 | - :star:[Code Monkey: Best Unity Tutorials 2020](https://unitycodemonkey.com/best2020.php) 387 | - :star:[Code Monkey: Best Unity Tutorials 2021](https://unitycodemonkey.com/best2021.php) 388 | - :star:[Code Monkey: Best Unity Tutorials 2022](https://unitycodemonkey.com/best2022.php) 389 | - [An Introduction to LINQ in Unity](https://jaredamlin.medium.com/an-introduction-to-linq-in-unity-8b4d66af0b60) 390 | - [Jason Weimann: Clean Coding Principles](https://game.courses/intermediate/) 391 | - [Jason Weimann: Unity3D College](https://unity3d.college/) 392 | - :book:[User interface design and implementation in Unity](https://resources.unity.com/games/user-interface-design-and-implementation-in-unity) 393 | 394 | ## Network 395 | - [Fast-Paced Multiplayer (Part I): Client-Server Game Architecture](https://www.gabrielgambetta.com/client-server-game-architecture.html) 396 | - [How do Video Games Stay in Sync? An Intro to the Fascinating Networking of Real Time Games.](https://medium.com/geekculture/how-do-video-games-stay-in-sync-an-intro-to-the-fascinating-networking-of-real-time-games-e923e66e8a0f) 397 | 398 | ## AI 399 | - [Pathfinding Demystified (Part I): Generic Search Algorithm](https://www.gabrielgambetta.com/generic-search.html) 400 | 401 | ## Game design and level design 402 | - [The Level Design Book](https://book.leveldesignbook.com/introduction) 403 | - :star:[Video Game Museum: Levels - WebView](https://noclip.website/) 404 | - :star:[Thread various museums](https://twitter.com/ShedworksGreg/status/1417083081589239808) 405 | - [LD Bait and Switch](https://www.tommynorberg.com/post/bait-and-switch) 406 | - [Level Design ORG](https://level-design.org/?page_id=2468) 407 | - [Books for game designers](https://80.lv/articles/80-level-digest-great-books-for-aspiring-game-designers/) 408 | 409 | # Delphi/Pascal 410 | - [Direct3D 10, 10.1 and 11 Delphi interface units (headers)](http://directxfordelphi.blogspot.com/2009/09/direct3d-11-delphi-interface-units.html) 411 | - [DX11 Examples](https://github.com/AntonAngeloff/DX11_Examples) 412 | - https://github.com/neslib/DelphiLearnOpenGL 413 | - https://edn.embarcadero.com/article/26401 414 | - [Delphi / Pascal OpenGL header translation: Sasha Willems DGL](https://github.com/SaschaWillems/dglOpenGL) 415 | - [DGL Wiki](https://wiki.delphigl.com/index.php/dglOpenGL.pas/en) 416 | - [DGL Tutorials](https://wiki.delphigl.com/index.php/Tutorial) 417 | - [Old Embarcadero Article](https://edn.embarcadero.com/article/26401) 418 | 419 | # Javascript 420 | - [Linear Algebra with JavaScript](https://medium.com/@geekrodion/linear-algebra-with-javascript-46c289178c0) 421 | - [Benchmark for linear algebra javascript libraries](https://mlweb.loria.fr/benchmark/index.html) 422 | 423 | # C# .Net 424 | - [Vim.Math3D is a portable, safe, and efficient 3D math library from VIM written in C# targeting .NET Standard 2.0 without any dependencies.](https://github.com/vimaec/math3d) 425 | 426 | ## WebGL and Three.js 427 | - [WebGL2 Fundamentals](https://webgl2fundamentals.org/) 428 | - [Mozilla WebGL](https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API) 429 | - [MinMaxIA](http://www.minmaxia.com/minmaxia/) 430 | - [Volume Rendering with WebGL](https://www.willusher.io/webgl/2019/01/13/volume-rendering-with-webgl) 431 | - [3D Wireframes in SVG](https://prideout.net/blog/svg_wireframes/) 432 | - [100 lines constelation](http://slicker.me/javascript/particles.htm) 433 | - [Interior Visualization](https://playcanv.as/p/ZV4PW6wr/) 434 | - [Raytraced sphere #1](https://turtletoy.net/turtle/11075dfee0) 435 | - [Using WebGL to Solve a Practical Problem](https://medium.com/@jefferey.cave/using-webgl-to-solve-a-practical-problem-751c186889aa) 436 | - :clapper:[Fun with WebGL 2.0](https://www.youtube.com/watch?v=LtFujAtKM5I&list=PLMinhigDWz6emRKVkVIEAaePW7vtIkaIF) 437 | - [WebGL/three.js Resources](http://www.realtimerendering.com/webgl.html) 438 | - [Instanced Line Rendering](https://wwwtyro.net/2019/11/18/instanced-lines.html) 439 | - :star:[Bruno Simon](https://bruno-simon.com/) 440 | - [Bruno Simon — Portfolio (case study)](https://medium.com/@bruno_simon/bruno-simon-portfolio-case-study-960402cc259b) 441 | - [Rendering text in WebGL](https://css-tricks.com/techniques-for-rendering-text-with-webgl/) 442 | - [Raw WebGL: An overview on how to write a WebGL application. Learn what key data structures and types are needed to draw in WebGL.](https://alain.xyz/blog/raw-webgl) 443 | - [Writing a ray tracer for the web](https://oktomus.com/posts/2020/ray-tracer-with-webgl-compute/) 444 | - [Three.js and Shadertoy](https://threejsfundamentals.org/threejs/lessons/threejs-shadertoy.html) 445 | - [An Interactive WebGL Internal State Diagram](https://webglfundamentals.org/webgl/lessons/resources/webgl-state-diagram.html) 446 | - [Barebones WebGL in 75 lines of code](https://avikdas.com/2020/07/08/barebones-webgl-in-75-lines-of-code.html) 447 | - [Barebones 3D rendering with WebGL](https://avikdas.com/2020/07/21/barebones-3d-rendering-with-webgl.html) 448 | - [Rain & Water Effect Experiments](https://tympanus.net/codrops/2015/11/04/rain-water-effect-experiments/) 449 | - [Recreating Real-World Terrain With React, Three.js & WebGL Shaders](https://techblog.geekyants.com/recreating-real-world-terrain-with-react-threejs-and-webgl-shaders-1) 450 | - [How to build stunning 3D scenes with React Three Fiber](https://varun.ca/modular-webgl/) 451 | 452 | ## OpenCL 453 | - [A Gentle Introduction to OpenCL](https://www.drdobbs.com/parallel/a-gentle-introduction-to-opencl/231002854) 454 | 455 | ## General Simulation 456 | - [Simulating an Entire Car Engine (yes, it makes noise)](https://www.youtube.com/watch?v=RKT-sKtR970) 457 | 458 | ## Opinions 459 | - [Write Games, Not Engines](https://geometrian.com/programming/tutorials/write-games-not-engines/) 460 | --------------------------------------------------------------------------------