The Cherno
I REMADE My First Game 12 YEARS LATER!
updated
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
This video is sponsored by Brilliant.
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
This video is sponsored by Hostinger.
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Code ► github.com/St0wy/GPR4400-PhysicsEngine
Designing a Physics Engine in 5 minutes ► youtu.be/-_IspRG548E
Send an email to chernoreview@gmail.com with your source code, a brief explanation, and what you need help with/want me to review and you could be in the next episode of my Code Review series! Also let me know if you would like to remain anonymous.
CHAPTERS
0:00 - Recap
1:14 - How to design an API
2:52 - 2D Physics Engine design
9:02 - Pointers and ownership semantics
13:00 - Using std::weak_ptr to be "safer"
14:39 - More physics
16:42 - Spatial partitioning for optimization
22:55 - Be careful when trying to optimize!
26:37 - Physics solvers
31:50 - Final thoughts and extra challenges
This video is sponsored by Brilliant.
#CodeReview
Support on Patreon ► patreon.com/thecherno
Discord (#raytracing-series) ► discord.gg/thecherno
Source code ► github.com/TheCherno/RayTracing
🧭 FOLLOW ME
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Twitch ► twitch.tv/thecherno
Learn C++ with my series ► youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
📚 RESOURCES (in order of complexity)
🟢 Ray Tracing in One Weekend series ► raytracing.github.io
🟡 Scratch a Pixel ► scratchapixel.com
🔴 Physically Based Rendering: From Theory to Implementation ► amzn.to/3y2bGK7
💾 SOFTWARE you'll need installed to follow this series
Visual Studio 2022 ► visualstudio.microsoft.com
Git ► git-scm.com/downloads
Vulkan SDK ► vulkan.lunarg.com
CHAPTERS
0:00 - What is Path Tracing?
10:46 - Preparing for accumulation
14:18 - Accumulating samples
Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️
This video is sponsored by Brilliant.
#RayTracing
Support on Patreon ► patreon.com/thecherno
Discord (#raytracing-series) ► discord.gg/thecherno
Source code ► github.com/TheCherno/RayTracing
🧭 FOLLOW ME
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Twitch ► twitch.tv/thecherno
Learn C++ with my series ► youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
📚 RESOURCES (in order of complexity)
🟢 Ray Tracing in One Weekend series ► raytracing.github.io
🟡 Scratch a Pixel ► scratchapixel.com
🔴 Physically Based Rendering: From Theory to Implementation ► amzn.to/3y2bGK7
💾 SOFTWARE you'll need installed to follow this series
Visual Studio 2022 ► visualstudio.microsoft.com
Git ► git-scm.com/downloads
Vulkan SDK ► vulkan.lunarg.com
CHAPTERS
0:00 - Materials
6:16 - Physically Based Rendering
20:53 - A better material system
26:22 - Accumulation
Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️
This video is sponsored by Brilliant.
#RayTracing
Follow me on Twitter ► twitter.com/thecherno
And Instagram ► instagram.com/thecherno
Discord ► discord.gg/thecherno
Play Dichotomy ► studiocherno.itch.io/dichotomy
#Hazel
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Code ► github.com/St0wy/GPR4400-PhysicsEngine
Designing a Physics Engine in 5 minutes ► youtu.be/-_IspRG548E
Send an email to chernoreview@gmail.com with your source code, a brief explanation, and what you need help with/want me to review and you could be in the next episode of my Code Review series! Also let me know if you would like to remain anonymous.
CHAPTERS
0:00 - Resuming from last time
1:20 - Reading code you didn't write
8:27 - Easily find the entry point
10:51 - How the program works
15:32 - Code should be self-documenting ✔
17:14 - Comments in code to control tools ❌
17:55 - static_cast and dynamic_cast
20:19 - structs vs classes: when to use what
24:19 - Why prefixing member variables is useful
This video is sponsored by Brilliant.
#CodeReview
Play the game ► studiocherno.itch.io/dichotomy
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Game on itch.io ► studiocherno.itch.io/dichotomy
Support on Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Check out Hazel ► hazelengine.com
#Hazel
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Code ► github.com/St0wy/GPR4400-PhysicsEngine
Designing a Physics Engine in 5 minutes ► youtu.be/-_IspRG548E
Send an email to chernoreview@gmail.com with your source code, a brief explanation, and what you need help with/want me to review and you could be in the next episode of my Code Review series! Also let me know if you would like to remain anonymous.
CHAPTERS
0:00 - 2D Physics Engine
13:17 - Heap allocation, memory fragmentation and the CPU cache
18:30 - Logging performance considerations
23:12 - Smarter memory allocators
29:12 - Allocate memory once ahead of time when possible
This video is sponsored by Brilliant.
#CodeReview
Support on Patreon ► patreon.com/thecherno
Discord (#raytracing-series) ► discord.gg/thecherno
Source code ► github.com/TheCherno/RayTracing
🧭 FOLLOW ME
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Twitch ► twitch.tv/thecherno
Learn C++ with my series ► youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
📚 RESOURCES (in order of complexity)
🟢 Ray Tracing in One Weekend series ► raytracing.github.io
🟡 Scratch a Pixel ► scratchapixel.com
🔴 Physically Based Rendering: From Theory to Implementation ► amzn.to/3y2bGK7
💾 SOFTWARE you'll need installed to follow this series
Visual Studio 2022 ► visualstudio.microsoft.com
Git ► git-scm.com/downloads
Vulkan SDK ► vulkan.lunarg.com
CHAPTERS
0:00 - Restructuring our code to behave like the ray tracing pipeline
4:25 - PerPixel / RayGen function
6:24 - TraceRay function and payloads
7:50 - ClosestHit function
8:36 - Miss function
9:16 - Other shaders in the GPU Ray Tracing pipeline
11:07 - Implementing the functions
11:50 - Implementing PerPixel
13:42 - Changing our TraceRay function
17:00 - Implementing ClosestHit
20:07 - Shading in our PerPixel function
21:16 - Implementing our Miss function
22:34 - The result
23:15 - Testing our pipeline with a reflection ray
27:10 - Ignoring negative hit distances
Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️
This video is sponsored by Brilliant.
#RayTracing
Support on Patreon ► patreon.com/thecherno
Discord (#raytracing-series) ► discord.gg/thecherno
Source code ► github.com/TheCherno/RayTracing
🧭 FOLLOW ME
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Twitch ► twitch.tv/thecherno
Learn C++ with my series ► youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
📚 RESOURCES (in order of complexity)
🟢 Ray Tracing in One Weekend series ► raytracing.github.io
🟡 Scratch a Pixel ► scratchapixel.com
🔴 Physically Based Rendering: From Theory to Implementation ► amzn.to/3y2bGK7
💾 SOFTWARE you'll need installed to follow this series
Visual Studio 2022 ► visualstudio.microsoft.com
Git ► git-scm.com/downloads
Vulkan SDK ► vulkan.lunarg.com
CHAPTERS
0:00 - Scenes and rendering more than one object
5:22 - Structuring our "scene"
8:16 - Moving our spheres around our scene
13:30 - Changing our Renderer to work with a Scene
20:04 - Rendering multiple spheres
Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️
This video is sponsored by Brilliant.
#RayTracing
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
#OfficeVlog
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Code ► github.com/SomePineaple/GLGrass
Send an email to chernoreview@gmail.com with your source code, a brief explanation, and what you need help with/want me to review and you could be in the next episode of my Code Review series! Also let me know if you would like to remain anonymous.
CHAPTERS
0:00 - Rendering lots of grass in OpenGL
2:55 - Diving into the code
10:12 - Instantiating objects in C++ vs C#/Java
11:35 - Shader class
12:12 - Variable naming conventions
13:25 - Initializing variables
15:03 - Some notes on strings
15:30 - Pass larger types by const reference
16:45 - Using correct types
17:48 - Strings in C++ and std::string_view
20:48 - .obj format
22:38 - Grass mesh
23:44 - Rendering meshes
24:24 - General notes and C++ code style
25:35 - Grass rendering and shaders
26:32 - Handling a time variable for shaders
27:14 - Storage buffers in OpenGL
28:25 - Reduce complexity in hot code paths
29:00 - How grass is actually rendered
29:50 - Grass vertex shader
32:11 - Use mat3 instead of mat4
33:13 - Reduce vertex shader complexity
34:22 - Don't reallocate GPU buffers
35:28 - Inspecting rendering using Nvidia Nsight
37:13 - Set buffer data instead of reallocating
39:36 - Grass fragment shader + improvements
41:46 - Adding variance to grass blade color
This video is sponsored by Brilliant.
#CodeReview
Support on Patreon ► patreon.com/thecherno
Discord (#raytracing-series) ► discord.gg/thecherno
Source code ► github.com/TheCherno/RayTracing
🧭 FOLLOW ME
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Twitch ► twitch.tv/thecherno
Learn C++ with my series ► youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
📚 RESOURCES (in order of complexity)
🟢 Ray Tracing in One Weekend series ► raytracing.github.io
🟡 Scratch a Pixel ► scratchapixel.com
🔴 Physically Based Rendering: From Theory to Implementation ► amzn.to/3y2bGK7
💾 SOFTWARE you'll need installed to follow this series
Visual Studio 2022 ► visualstudio.microsoft.com
Git ► git-scm.com/downloads
Vulkan SDK ► vulkan.lunarg.com
CHAPTERS
0:00 - How 3D cameras work
6:08 - Updating the Walnut git submodule
6:42 - The Camera class
16:36 - Calculating and caching per-pixel ray directions
19:39 - Using the Camera class in our Ray Tracing application
Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the #raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️
This video is sponsored by Brilliant.
#RayTracing
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Sparky ► github.com/TheCherno/Sparky
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
#Hazel
Support on Patreon ► patreon.com/thecherno
Discord (#raytracing-series) ► discord.gg/thecherno
Source code ► github.com/TheCherno/RayTracing
🧭 FOLLOW ME
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Twitch ► twitch.tv/thecherno
Learn C++ with my series ► youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
📚 RESOURCES (in order of complexity)
🟢 Ray Tracing in One Weekend series ► raytracing.github.io
🟡 Scratch a Pixel ► scratchapixel.com
🔴 Physically Based Rendering: From Theory to Implementation ► amzn.to/3y2bGK7
💾 SOFTWARE you'll need installed to follow this series
Visual Studio 2022 ► visualstudio.microsoft.com
Git ► git-scm.com/downloads
Vulkan SDK ► vulkan.lunarg.com
Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the #raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️
CHAPTERS
0:00 - Lighting and shading in rendering
6:21 - Using floats for colors
12:07 - Why use floats instead of ints for colors?
12:52 - Finding our sphere hit coordinates
17:08 - Closest intersection point
19:40 - Using color to visualize numbers
21:02 - How lighting and shading works
22:45 - Calculating lighting using normal vectors
25:34 - Visualizing normals better
27:00 - Using math to calculate lighting and shade our sphere
This video is sponsored by Brilliant.
#RayTracing
Get Hazel here! ❤️ ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
🕹️ GAMES MADE IN HAZEL
Forest ► studiocherno.itch.io/forest
Fragile ► studiocherno.itch.io/fragile
Space Invaders clone ► youtu.be/56ISmbJE9S4
One Hour Rocket game ► youtu.be/1TwBMgPbuOc
CHAPTERS
0:00 - What is Hazel?
3:49 - Repository and project overview
5:49 - How many lines of code is Hazel?
6:41 - Running Hazel
11:16 - Entry point
15:11 - Application architecture and Layers
19:55 - Events
21:03 - Main application loop
22:06 - Hazelnut: Hazel's Editor
22:40 - A note on large source files
25:43 - Playing, updating and rendering scenes
34:15 - Rendering architecture
38:52 - Next steps
Send an email to chernoreview@gmail.com with your source code, a brief explanation, and what you need help with/want me to review and you could be in the next episode of my Code Review series! Also let me know if you would like to remain anonymous.
This video is sponsored by Brilliant.
#CodeReview
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Sebastian Lague's video on Boids ► youtu.be/bqtqltqcQhw
Sebastian Lague's Boids code ► github.com/SebLague/Boids
#Hazel #Chillog
Taken from this stream ► youtu.be/EKnJOwGhPj4
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Cherno Unplugged ► youtube.com/ChernoUnplugged
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
CHAPTERS
0:00 - Hazel is broken
6:25 - Tim's experience
9:16 - Making a release branch for testing
16:44 - The NAS story
#Hazel
Support on Patreon ► patreon.com/thecherno
Discord (#raytracing-series) ► discord.gg/thecherno
Source code ► github.com/TheCherno/RayTracing
🧭 FOLLOW ME
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Twitch ► twitch.tv/thecherno
Learn C++ with my series ► youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
📚 RESOURCES (in order of complexity)
🟢 Ray Tracing in One Weekend series ► raytracing.github.io
🟡 Scratch a Pixel ► scratchapixel.com
🔴 Physically Based Rendering: From Theory to Implementation ► amzn.to/3y2bGK7
💾 SOFTWARE you'll need installed to follow this series
Visual Studio 2022 ► visualstudio.microsoft.com
Git ► git-scm.com/downloads
Vulkan SDK ► vulkan.lunarg.com
Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the #raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️
CHAPTERS
0:00 - Intro
2:28 - Setup in Hazel
3:37 - Casting rays
7:51 - Visualizing ray direction
9:43 - Visualizing sphere intersection
14:36 - Calculating and visualizing sphere hit coordinates
18:35 - Calculating normals
21:43 - Lighting
24:23 - Visualizing rays and hit points
25:22 - Only evaluating one solution
25:56 - The effect of normalisation
27:35 - To normalize or not to normalise
29:32 - Some notes about optimization
This video is sponsored by Brilliant.
#RayTracing
Support on Patreon ► patreon.com/thecherno
Discord (#raytracing-series) ► discord.gg/thecherno
Source code ► github.com/TheCherno/RayTracing
🧭 FOLLOW ME
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Twitch ► twitch.tv/thecherno
Learn C++ with my series ► youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
📚 RESOURCES (in order of complexity)
🟢 Ray Tracing in One Weekend series ► raytracing.github.io
🟡 Scratch a Pixel ► scratchapixel.com
🔴 Physically Based Rendering: From Theory to Implementation ► amzn.to/3y2bGK7
💾 SOFTWARE you'll need installed to follow this series
Visual Studio 2022 ► visualstudio.microsoft.com
Git ► git-scm.com/downloads
Vulkan SDK ► vulkan.lunarg.com
Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the #raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️
CHAPTERS
0:00 - Intro
1:15 - Creating a Renderer class
12:13 - Structuring our code to work like a pixel/fragment shader
21:00 - Rendering a sphere using our math work
This video is sponsored by Brilliant.
#RayTracing
Cherno Unplugged ► youtube.com/ChernoUnplugged
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
#Hazel
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Support on Patreon ► patreon.com/thecherno
Discord (#raytracing-series) ► discord.gg/thecherno
Source code ► github.com/TheCherno/RayTracing
🧭 FOLLOW ME
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Twitch ► twitch.tv/thecherno
Learn C++ with my series ► youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
📚 RESOURCES (in order of complexity)
🟢 Ray Tracing in One Weekend series ► raytracing.github.io
🟡 Scratch a Pixel ► scratchapixel.com
🔴 Physically Based Rendering: From Theory to Implementation ► amzn.to/3y2bGK7
💾 SOFTWARE you'll need installed to follow this series
Visual Studio 2022 ► visualstudio.microsoft.com
Git ► git-scm.com/downloads
Vulkan SDK ► vulkan.lunarg.com
Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the #raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️
CHAPTERS
0:00 - Math and this episode
5:03 - Lines and rays
11:45 - Spheres and circles
17:23 - How this relates to ray tracing
19:23 - How do we find intersection points?
23:50 - Quadratic equations
28:22 - Solving the equation
29:16 - Using the discriminant to see if there are intersections
32:32 - Finding exact intersection points
35:53 - Validating our result
36:37 - Next steps and homework
This video is sponsored by Brilliant.
#RayTracing
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Code ► github.com/Isti01/glCraft
Send an email to chernoreview@gmail.com with your source code, a brief explanation, and what you need help with/want me to review and you could be in the next episode of my Code Review series! Also let me know if you would like to remain anonymous.
Chapters:
----------------
0:00 - What we're looking at today
6:55 - Playing the game
8:55 - Project structure and initial thoughts
10:30 - Local static singleton
14:10 - How to organize a class (my style)
17:43 - The math
19:22 - Ray casting and how I would change it
23:55 - Designing code structure
28:08 - Other notes
29:23 - Some weirdness and how to write clear code
35:22 - Vertex packing and shaders
This video is sponsored by Brilliant.
#CodeReview
Second channel ► youtube.com/morecherno
Twitter ► twitter.com/thecherno
Instagram ► instagram.com/thecherno
Patreon ► patreon.com/thecherno
Discord ► discord.gg/thecherno
Incredible photorealistic demo created by Lorenzo Drago and rendered in Unreal Engine 5 using Lumen, based on a real-life train station in Toyama, Japan.
Check out the demo here!
------------------------------------------
【UE5】etchū-daimon station - 越中大門駅 ► youtu.be/2paNFnw1wRs
Artstation ► artstation.com/artwork/3qBzaY
------------------------------------------
#UE5
Support on Patreon ► patreon.com/thecherno
Discord (#raytracing-series) ► discord.gg/thecherno
Source code ► github.com/TheCherno/RayTracing
🧭 FOLLOW ME
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Twitch ► twitch.tv/thecherno
Learn C++ with my series ► youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
📚 RESOURCES (in order of complexity)
🟢 Ray Tracing in One Weekend series ► raytracing.github.io
🟡 Scratch a Pixel ► scratchapixel.com
🔴 Physically Based Rendering: From Theory to Implementation ► amzn.to/3y2bGK7
💾 SOFTWARE you'll need installed to follow this series
Visual Studio 2022 ► visualstudio.microsoft.com
Git ► git-scm.com/downloads
Vulkan SDK ► vulkan.lunarg.com
📽️ VIDEOS REFERENCED
RAY TRACING! // Code Review ► youtu.be/sb1FtMYAcYQ
I made it FASTER // Code Review ► youtu.be/mOSirVeP5lo
Welcome to C++ ► youtu.be/18c3MTX0PK0
Make your own GUI apps in C++ (with ImGui and Vulkan) ► youtu.be/5zS-DZhCA2g
Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the #raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️
CHAPTERS
0:00 - What this series is
3:29 - What you need to know to follow this series
6:28 - Resources I recommend for learning ray tracing
9:00 - Setting up the project
13:00 - How to render an image
20:00 - Generating a random image
21:12 - Timing our renders and a note on performance
22:26 - Rendering an image every frame
This video is sponsored by Brilliant.
#RayTracing
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Support ► patreon.com/thecherno
Discord ► discord.gg/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Follow our streams:
Cherno ► twitch.tv/thecherno
Tim ► twitch.tv/t1mkr
Peter ► twitch.tv/peter1745
Ludum Dare is a game jam that started 20 years ago - you have 48-72 hours to make a game from scratch based on the theme. The jam runs twice a year these days, in April and October. I've done Ludum Dare eight times before, however I've never done it in a team (nor have I used Hazel) - this was the first time that Studio Cherno (myself, Tim and Peter) collaborated on making a game in Hazel.
Forest is what we came up with. Even though it wasn't without its difficulties, we're super proud of what we've managed to achieve. Hazel behaved itself surprisingly well, and actually crashed WAY less than Premiere Pro whilst editing this video. There are so many new features and improvements that we can't wait to add to Hazel, and honestly the team and I are super looking forward to taking everything we've learned to the next jam. Hope you enjoyed this video and playing Forest! ❤️
Support my work ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
I made a little UI framework called Walnut! This is meant to be something super-easy and lightweight to setup and use for any kind of GUI application, and the native integration with Vulkan makes this perfect for graphics/rendering related apps. In fact, we'll be using Walnut very soon for an exciting new series on this channel!
I made Walnut in around six hours, so there are bound to be some issues + lacking features. The reason I made it in the first place is so we could make a launcher for our game Forest (bit.ly/StudioChernoLD50), which we made in 72 hours for Ludum Dare 50. We wanted to use elements from Hazel's UI library (which uses Dear ImGui), but we didn't want the entirety of Hazel statically compiled into the launcher, so I quickly put Walnut together.
Since a lot of you showed interest in ImGui and more content around it from my last video on the topic, I might turn this into a little series as I expand Walnut and add more features (such as a custom titlebar). Thanks for watching! ❤️
Chapters:
---------------
0:00 - I made a little app framework called Walnut
2:53 - How to use Walnut to make an app
11:08 - How Walnut works
Support us on Patreon ► patreon.com/thecherno
Discord (#fragile channel) ► discord.gg/thecherno
Stream ► twitch.tv/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
In preparation for the Ludum Dare game jam this weekend, we decided to... make a game (in a day - the day before). Although there was much regret at times, mostly dreading the weekend and wondering why we signed up for this, I think we managed to come up with a decent prototype and jamed in some more engine features. Did I mention we made this in Hazel, our own game engine?
"Fragile" (named after the theme we randomly selected) is about protecting your fragile home planet from incoming missiles. Use the WASD keys to move, mouse to look around, and click to shoot - or you can plug in a controller if you'd prefer.
We might develop this game a little further in the future, since we have some more ideas and think this has some potential to be a fun little game. Let us know what you think, and thanks for playing!
#Hazel
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
My C++ series ► youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
Chapters:
----------------
0:00 - What are maps?
3:40 - Why use maps + example usage
9:30 - Writing a hash function to use a custom type
16:50 - The [] operator
19:00 - The .at() function
20:40 - How to check if key exists in map
21:11 - How to iterate through maps
24:47 - How to remove entries from maps
25:03 - Writing a less-than operator for custom types
28:05 - Performance and which map to use
This video is sponsored by Hostinger.
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Send an email to chernoreview@gmail.com with your source code, a brief explanation, and what you need help with/want me to review and you could be in the next episode of my Code Review series! Also let me know if you would like to remain anonymous.
Chapters:
----------------
0:00 - What we're doing today
1:53 - Playing the game
4:43 - Looking at the project
10:00 - What if it returns null?
15:13 - Keep your scopes tight!
18:17 - What a big deal is to Cherno
20:19 - Optimizing for loops
27:14 - Always consider performance
30:33 - Organizing and re-using code via abstraction
35:52 - We ate an entire chicken for lunch
36:37 - Don't go too far with abstraction
37:34 - Intro cinematic animation
41:29 - State machine
43:07 - Using the visual editor to your advantage
48:34 - How to move aliens in a space invaders game
56:19 - Delta time should be limited
1:00:23 - Alien AI behavior and gameplay programming
This video is sponsored by Brilliant.
#CodeReview
Support ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
This video is sponsored by Skillshare.
#Hazel
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
mdBook ► github.com/rust-lang/mdBook
mdBook docs ► rust-lang.github.io/mdBook
Chapters:
----------------
0:00 - Making a documentation website
1:47 - How does it work
5:18 - Setting up our server
7:46 - Installing mdBook
8:55 - Using mdBook
10:35 - Setting up a GitHub webhook
12:08 - Receiving data from GitHub
13:20 - Fixing errors and permissions
15:06 - Updating our website automatically
16:13 - Testing and fixing
17:35 - It works! 🎉
This video is sponsored by Hostinger.
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Code ► github.com/garlfin/garenginepublic
Send an email to chernoreview@gmail.com with your source code, a brief explanation, and what you need help with/want me to review and you could be in the next episode of my Code Review series! Also let me know if you would like to remain anonymous.
Chapters:
----------------
0:00 - Something different today
7:00 - Nullable reference types
11:49 - Application overview and architecture
27:58 - Renderer architecture
33:45 - A better way to handle environment maps
36:08 - More renderer suggestions
40:00 - Render passes
42:56 - Hey wait, that's my bloom!
45:40 - The other shaders
48:18 - Final thoughts
This video is sponsored by Brilliant.
#CodeReview
Support on Patreon and get Hazel! ❤️ ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Dear ImGui ► github.com/ocornut/imgui
Chapters:
----------------
0:00 - Intro
0:34 - Why use C++ for apps?
3:52 - What's the solution?
4:27 - Dear ImGui, examples + pros and cons
8:26 - Getting started with Dear ImGui
12:00 - Speedrun - making an app
22:27 - How to ship the app
25:01 - Final thoughts + more
This video is sponsored by Hostinger.
Support on Patreon and get Hazel! ❤️ ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Dani's original video ► youtu.be/EGBvvlgbJVM
My original video from two years ago ► youtu.be/qITIvVV6BHk
Chapters:
---------------
0:00 - Intro and what we're doing
4:27 - Let's get started
5:07 - Creating the rocket in Blender
5:40 - Getting the rocket into Hazel
6:57 - Adding behavior via scripting
10:45 - Creating the pillars
13:11 - Adding the floor and ceiling
13:55 - Adding the score and game over
15:38 - Fracturing the rocket
17:16 - Particles!
23:46 - Changing the environment
24:03 - Pillar color cycling and glow
25:43 - Initial gameplay
26:11 - Speeding up the rocket over time
26:44 - Audio
27:50 - Better score font
28:27 - Fixing some minor issues
28:50 - Some beautiful gameplay
29:12 - Score animation
29:48 - Next steps and final thoughts
This video is sponsored by Hostinger.
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Code ► github.com/valerioformato/RTIAW
Ray Tracing in One Weekend ► raytracing.github.io/books/RayTracingInOneWeekend.html
Send an email to chernoreview@gmail.com with your source code, a brief explanation, and what you need help with/want me to review and you could be in the next episode of my Code Review series! Also let me know if you would like to remain anonymous.
Chapters:
----------------
0:00 - Intro
5:20 - Running the project
6:30 - Looking at the code
7:44 - Arrays wrapped in std::unique_ptr
9:12 - The Renderer
9:50 - Why is this so slow?
11:47 - The multi-threading
13:00 - The rendered image
13:18 - NEW PLAN: let's make this faster
This video is sponsored by Skillshare.
#CodeReview
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Series Playlist ► thecherno.com/engine
Code (in physics branch) ► github.com/TheCherno/Hazel
#Hazel
Hazel's NEW WEBSITE! ► hazelengine.com
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Chapters:
----------------
0:00 - Instanced rendering and draw calls
4:30 - Instance data
6:18 - Hazel's new website!
10:49 - Instanced rendering in Hazel
12:20 - How we used to render scenes
15:20 - How we render scenes now
18:22 - Instanced rendering results
20:44 - Instanced rendering in Project Orange
This video is sponsored by Hostinger.
#Hazel #OptimizationOctober
Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
#ProjectOrange
Support on Patreon ► patreon.com/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
#Hazel
Patreon ► patreon.com/thecherno
Stream ► twitch.tv/thecherno
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
#Hazel
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Series Playlist ► thecherno.com/engine
Code (in physics branch) ► github.com/TheCherno/Hazel
Chapters:
----------------
0:00 - Intro and the plan
1:44 - Adding a Circle Collider component
8:26 - Adding the UI to the Editor
9:40 - Making it work in play mode
10:10 - Serialization and deserialization
11:26 - Testing
12:11 - Explaining the little UI bug
12:45 - Testing circle collider offsets
16:09 - Fixing the little UI bug
16:58 - Final thoughts
#Hazel
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
Code (in physics branch) ► github.com/TheCherno/Hazel
Series Playlist ► thecherno.com/engine
Chapters:
----------------
0:00 - Lines and how to render them
11:45 - Line rendering implementation
24:43 - Thicker lines
28:38 - Rectangle rendering
32:00 - Smoother lines in OpenGL
33:50 - Transformed rectangles
36:50 - Final thoughts
#Hazel
Instagram ► instagram.com/thecherno
Twitter ► twitter.com/thecherno
Discord ► discord.gg/thecherno
How to Render CIRCLES ► youtu.be/xf7Y988cPRk
Code (in physics branch) ► github.com/TheCherno/Hazel
Series Playlist ► thecherno.com/engine
Chapters:
---------------
0:00 - Intro and visualizing physics colliders
8:40 - How to render circles
45:08 - Debugging
51:10 - Fixing transparency issues
54:10 - Improving circle mouse picking
59:54 - Fixing circle rendering in runtime
1:02:08 - Serializing Circle Renderer components
1:04:25 - Outro
#Hazel


