thebennybox
In this video, I talk about how shadow mapping works, and show an example of working shadow mapping.
updated 10 years ago
0:56 - What's happening next with the channel?
4:55 - Things I've been reading about that some viewers may find interesting
8:45 - A question for you
9:32 - What are some long term ideas for this channel?
12:05 - What's happening with Patreon?
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/5affc398693f4edb5df494f1dd24d8e362410022
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/9f2dadc869ffdf80758f47c7d92c05a4edbd33c2
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/9f2dadc869ffdf80758f47c7d92c05a4edbd33c2
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Joshua Bradbury
Nikolai Karpikov
Ashlyn Gadow
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/ed0ca350d7836507fcb2b539e67b29ba14594dc9
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/5affc398693f4edb5df494f1dd24d8e362410022
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/5affc398693f4edb5df494f1dd24d8e362410022
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Joshua Bradbury
Nikolai Karpikov
Ashlyn Gadow
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/ed0ca350d7836507fcb2b539e67b29ba14594dc9
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/5affc398693f4edb5df494f1dd24d8e362410022
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/5affc398693f4edb5df494f1dd24d8e362410022
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Joshua Bradbury
Nikolai Karpikov
Ashlyn Gadow
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/9b69d693b0bd56812d8531a795fbf7ddd5adbcf7
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/ed0ca350d7836507fcb2b539e67b29ba14594dc9
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/ed0ca350d7836507fcb2b539e67b29ba14594dc9
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
- New video schedule for October under "about" section of channel. Includes last video in 3D Game Programming series before the game portion begins!
- Disruption to video production: Pretty minor effect for most people, Patrons are most affected because of early access.
- Vulkan series coming for patrons in a couple weeks, everyone else in November
- Game portion production slightly delayed, probably won't come for patrons until November at least, everyone else might be unaffected or close to it.
- To prevent issues in the future, making videos differently to minimize this risk
- Also working on statistical model for video schedule to allow better predictions for people.
A very special thanks to my most devoted supporters for making these videos possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Joshua Bradbury
Nikolai Karpikov
Ashlyn Gadow
LucidMonkey
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/9d776001a56e1d5b5252da825ce893778d52f249
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/9b69d693b0bd56812d8531a795fbf7ddd5adbcf7
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/9b69d693b0bd56812d8531a795fbf7ddd5adbcf7
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/c49a0141c0cd88cebf6c7564ce6b17dade0d67d6
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/9d776001a56e1d5b5252da825ce893778d52f249
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/9d776001a56e1d5b5252da825ce893778d52f249
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/c49a0141c0cd88cebf6c7564ce6b17dade0d67d6
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/9d776001a56e1d5b5252da825ce893778d52f249
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/9d776001a56e1d5b5252da825ce893778d52f249
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/0a1c7be6998a4509605799c5f58589f829c43601
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/c49a0141c0cd88cebf6c7564ce6b17dade0d67d6
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/c49a0141c0cd88cebf6c7564ce6b17dade0d67d6
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
01:04 - Ludum Dare Postmortem
02:34 - My thoughts on my Ludum Dare Game
05:08 - The biggest thing I learned from this Ludum Dare
07:24 - My upload schedule for the month
08:55 - Announcing new series, coming soon!
11:06 - The next step in the Game Programming series
13:10 - Viewer FAQ: Motion Integration Bonus Video?
13:48 - Viewer FAQ: 3D math series?
14:25 - Viewer FAQ: What are my thoughts on NVIDIA's new real time raytracing hardware?
Ludum Dare Game: ldjam.com/events/ludum-dare/42/$112367
Updated Ludum Dare Game: github.com/BennyQBD/LD42Game/releases/tag/PostLD
Entire Ludum Dare Livestream Playlist: youtube.com/playlist?list=PLEETnX-uPtBVKOdOjNBejhU-7fsLEHTiS
Discord: discord.gg/aMqvk3E
Patreon: patreon.com/thebennybox
Special thanks to my most devoted supporters for making this channel possible!
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Joshua Bradbury
Nikolai Karpikov
P.S. Since you were cool enough to read the description, I'll give you two tiny hints about the unannounced material I've been working on: "WebGL" and "Game Server" ;)
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/1bd89e603c209d2c6d2d0e6f13dd61e55e758c70
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/0a1c7be6998a4509605799c5f58589f829c43601
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/0a1c7be6998a4509605799c5f58589f829c43601
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/71f2c5b538a64f292963eaa9cb96feb32ed6918c
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/1bd89e603c209d2c6d2d0e6f13dd61e55e758c70
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/1bd89e603c209d2c6d2d0e6f13dd61e55e758c70
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/71f2c5b538a64f292963eaa9cb96feb32ed6918c
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/1bd89e603c209d2c6d2d0e6f13dd61e55e758c70
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/1bd89e603c209d2c6d2d0e6f13dd61e55e758c70
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
Galymzhan Sh
Jonas Svedberg
Walter Cardozo
Mel Florance
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/f19d22f334dd13846006c855c2f1e8b2f45ec511
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/f19d22f334dd13846006c855c2f1e8b2f45ec511
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
oleg shulzhenko
Discord: discord.gg/aMqvk3E
Final Game: ldjam.com/events/ludum-dare/42/$112367
Final source code: github.com/BennyQBD/LD42Game
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/f275800b1fc9e1f7bbca334c41a85bfc7e0fb03a
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
oleg shulzhenko
Discord: discord.gg/aMqvk3E
Discord: discord.gg/aMqvk3E
Final Game: ldjam.com/events/ludum-dare/42/$112367
Final source code: github.com/BennyQBD/LD42Game
Discord: discord.gg/aMqvk3E
Final Game: ldjam.com/events/ludum-dare/42/$112367
Final source code: github.com/BennyQBD/LD42Game
Discord: discord.gg/aMqvk3E
Final Game: ldjam.com/events/ludum-dare/42/$112367
Final source code: github.com/BennyQBD/LD42Game
Starting tomorrow, slightly before 6:00 PM EST when the theme is announced, we will be making a game! See you there!
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/f275800b1fc9e1f7bbca334c41a85bfc7e0fb03a
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
oleg shulzhenko
Gimp DDS Plugin: code.google.com/archive/p/gimp-dds/#!
Current code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
oleg shulzhenko
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/f275800b1fc9e1f7bbca334c41a85bfc7e0fb03a
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
oleg shulzhenko
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/f275800b1fc9e1f7bbca334c41a85bfc7e0fb03a
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
oleg shulzhenko
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/f275800b1fc9e1f7bbca334c41a85bfc7e0fb03a
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/399ef1c6c881c28b48e0fc8514a7860f69c9f09c
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
oleg shulzhenko
Current code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/f275800b1fc9e1f7bbca334c41a85bfc7e0fb03az
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
oleg shulzhenko
Current code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/f275800b1fc9e1f7bbca334c41a85bfc7e0fb03a
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
oleg shulzhenko
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/e7b8a2d98d2d5c19d8e2b089c51ef926c33b40f4
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/f275800b1fc9e1f7bbca334c41a85bfc7e0fb03a
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/f275800b1fc9e1f7bbca334c41a85bfc7e0fb03a
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos. consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
ExemptAK
zatrik
matthew motsinger
oleg shulzhenko
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/49364a13a55bc5b606e125e6cb4bff1faf258efe
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/901a8528088caafe9e0e90a312cd58b299308701
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/901a8528088caafe9e0e90a312cd58b299308701
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos, consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
thebennybox Discord: discord.gg/aMqvk3E
If you'd like to support these videos, check out my patreon page: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
matthew motsinger
ExemptAK
oleg shulzhenko
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/49364a13a55bc5b606e125e6cb4bff1faf258efe
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/901a8528088caafe9e0e90a312cd58b299308701
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/901a8528088caafe9e0e90a312cd58b299308701
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos, consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
Original paper/source code/usable library: software.intel.com/en-us/articles/masked-software-occlusion-culling
thebennybox Discord: discord.gg/aMqvk3E
If you'd like to support these videos, check out my patreon page: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
matthew motsinger
ExemptAK
oleg shulzhenko
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/d3b804b6b26c5c29a684ca8087867152903a994f
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/49364a13a55bc5b606e125e6cb4bff1faf258efe
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/49364a13a55bc5b606e125e6cb4bff1faf258efe
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos, consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
NINJA CORRECTION: When I spoke about the issue with rendering a lower-resolution depth buffer, I accidentally spoke backwards. You'd want "thin" fill conventions for occluders and "fat" fill conventions for occludees, not the other way around. Same issue either way though.
Original paper/source code/usable library: software.intel.com/en-us/articles/masked-software-occlusion-culling
thebennybox Discord: discord.gg/aMqvk3E
If you'd like to support these videos, check out my patreon page: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
matthew motsinger
ExemptAK
oleg shulzhenko
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/aaba59790455d4c8aea01dae238ee815d04dfa35
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/d3b804b6b26c5c29a684ca8087867152903a994f
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/d3b804b6b26c5c29a684ca8087867152903a994f
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos, consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/ffcd6126e249a45e85bd7fc0f652f5bdeaba8092
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/aaba59790455d4c8aea01dae238ee815d04dfa35
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/aaba59790455d4c8aea01dae238ee815d04dfa35
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos, consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/528240bdb482859139d351251473323ffb7e8aab
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/ffcd6126e249a45e85bd7fc0f652f5bdeaba8092
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/ffcd6126e249a45e85bd7fc0f652f5bdeaba8092
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos, consider becoming a patron on Patreon: patreon.com/thebennybox
A very special thanks to my most devoted supporters for making this video possible:
Thundzz (Yacine)
Andreas Nordh
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/1f34b1ddc5e07681de9a3483fbd47fdefc9bad44
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/5eb54af588de9cb2604b518963c088b128ed658f
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/5eb54af588de9cb2604b518963c088b128ed658f
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos, consider becoming a patron on Patreon: patreon.com/thebennybox
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/1f34b1ddc5e07681de9a3483fbd47fdefc9bad44
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/5eb54af588de9cb2604b518963c088b128ed658f
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/5eb54af588de9cb2604b518963c088b128ed658f
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos, consider becoming a patron on Patreon: patreon.com/thebennybox
Starting code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/0f53d0810e0be55045cdf1754bdd1b45f849b7fd
Finished code: github.com/BennyQBD/3DGameProgrammingTutorial/tree/1f34b1ddc5e07681de9a3483fbd47fdefc9bad44
Line-by-line code change breakdown: github.com/BennyQBD/3DGameProgrammingTutorial/commit/1f34b1ddc5e07681de9a3483fbd47fdefc9bad44
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos, consider becoming a patron on Patreon: patreon.com/thebennybox
Base code: github.com/BennyQBD/CGFX5
Discord: discord.gg/aMqvk3E
If you'd like early access to videos, special discord roles, or just to support the creation of these videos, consider becoming a patron on Patreon: patreon.com/thebennybox
Benny Discord server: discord.gg/s6pubms
Patreon (soon to be updated): patreon.com/thebennybox
If you'd like to read more about Coherent Hierarchical Culling, I recommend this article: developer.nvidia.com/gpugems/GPUGems2/gpugems2_chapter06.html
If you'd like to support these videos, check out my patreon page: patreon.com/thebennybox
1) The email in my "About" page is working again
2) I've created a Patreon: patreon.com/thebennybox
3) The base code for my new series is WIP, but available: github.com/BennyQBD/CGFX5
3.5) My idea for the new series is evolving, and I'm doing a few things ahead of time. If you have any issues with what I'm choosing to do outside the series, please let me know now!
Algorithm overview below.
Preprocessing:
1) Divide scene into "nodes." Division boundaries become "portals"
2) In each node, store which portals are connected to it and which nodes are behind those portals.
Runtime:
1) Find node the camera is in, and mark it as visible.
2) If the node has portals in it, check each portal against the camera's view frustum. Otherwise, return.
3) If the portal is entirely outside the view frustum, ignore it.
4) If the portal goes entirely through the view frustum (i.e. the portal start/end points are outside the frustum, but the portal plane goes through it), then trivially accept the node behind the portal, and recurse to step 2 with the new node.
5) If the portal is only partially intersecting the view frustum, create a new frustum that is clipped against the portal so the frustum does not go outside the portal boundaries. Then accept the node behind the portal, and recurse to step 2 with the new node and frustum.
In short, I do hope to make more videos eventually. I don't know specifically when, but I'm doing multiple projects that will likely lead to more content at some point.
Also, minor note: When I discuss the frustum culling code, I remark that in theory, the technique shown should be cheaper than typical methods. After more thought, I realized it's a little more nuanced than that. In terms of worst case performance, my technique should be better, but the more typical frustum culling technique makes it easier to early out if the mesh is on the outside of one of the first few planes tested. So really, it depends. That said, it's almost entirely a moot point since both techniques are very cheap and almost certainly not part of the critical path. So I'd go with whichever is easier to implement. That said, after even more thought I began experimenting more with frustum culling techniques because I was still not entirely satisfied with the method in the video (namely, the lack of good early out abilities) and I came up with an even better technique. It's 12 dot products and 6 compares for the comparable potion, but I went a step further and tested the AABB planes vs. frustum points because it creates a more accurate cull, the project ran noticably smoother, and even including those calculations the method was still less expensive than what I had in the video. For some reason, youtube does not allow angle brackets in the description, but I've replied the method to one of the comments.
Another note, although I did say the genetic algorithm approach to BSP construction did not work as well as expected, note that I was using pretty close to the most basic possible approach, and only on relatively small to medium sized meshes. Genetic algorithms do have a lower asymptotic time complexity than the heuristics (at least if you're using the heuristics to their full potential) and also should theoretically converge on better solutions given enough iterations; in other words, in theory they should produce better trees in notably less time given a large enough mesh to work with. So if you're working with large, complicated meshes that need very well optimized BSP, I'd say genetic algorithms are still worth exploring further, especially if you find a particularly good technique for crossing two BSP trees. In my case however, the further exploration didn't make sense, as it was becoming obvious at that point that BSP trees would be less useful for my purposes than I had hoped.