I was gonna say, that's actually a pretty useful way to make sure your functions are all nicely decomposed rather than trying to cram everything in, train-of-thought style.
iirc there is a part about how oxygen actually "looks more blue than violet" too, but I think he summarized things in a quick and good way that clearly passed the message that "there are several reasons that contribute to the same effect" (not to mention that iirc it was also debated whether what I mentioned was to such a small extent it could be considered *entirely negligible* in terms of the sky's color)
"i have long since lost any faith in the code i write ..." "my favorite programming trick: calling a function that doesn't exist and worrying about it later" "that sped things up immensely, with the minor tradeoff of completely ruining everything." these feel like personal attacks
I can absolutely relate to this line's accuracy as a college Robotics major and hobbyist game developer. Nothing, not even a seemingly basic optimization, ever works exactly right the first time. In my experience, only one third of programming is actually devising the logic and writing the program. The remaining two thirds are roughly equally split between debugging and tweaking the numbers. I've had this concept apply to every single project I've worked on from basic Pong clones to turn-based RPG's to autonomous navigation.
Next video: "I don't really like how the stars are not realistically generated so I'm writing this quick program to simulate the formation of the Universe using these papers I read about the fundamental composition of space and time."
@Commep "So I'm not really happy with how the computers made in the realm of man aren't up to everything we need to do so I wrote a quick program to self optimize its own hardware- aaaaaaaaand it's taking over..."
@@EzeKry "but soon I realized it was just a misplaced + sign and after I fixed that the machines were replaced by a sentient and mostly atheist life form. It's better when they don't know"
The most mind-blowing part about these shaders is that they look good both above- and below their "surface". This one looks great from space and from the planet surface, and the water one looks great both inside- and outside the water. Absolutely boggles my mind.
That's because Sebastian bases his solutions on actual physics instead of going for easy surface level solutions. The man deserves all the credit he gets and then some!
@@masamainio4052 Looks great, but is not based entirely on real physics. He did use some tricks to make it easier. The red colors should not appear when looking from outside the planet. Still awesome work :) he really inspires all of us
@@_Killkor Ha. No one is going to touch NMS planet generation for a long time. Everyone's height map performance barely runs better than NMS having not only more points of data in the same FOV. But also voxelates the entire surface. All while running almost as well as even the best competitors. That is seriously impressive optimization. NMS is easily the best optimized game of this decade. It should not run anywhere near as well as it does with that kind of real time terrain generation. All while having graphical affects on par with anything else out that isn't ray traced. And it runs on consoles AND VR quite flawlessly? My very modest 1060 keeps it solidly within max reprojection fps better than any other game I can't run at the full 80 on my rift. Hahaha, no ones going to get close for a long while.
actual mom: "blue is the shortest wavelength of light so it scatters when it hits the atmosphere coloring the sky blue and as the sun goes bellow the horizon (blah blah blah) the range of light the reaches the atmosphere and scatters changes and turns the sky different colors (blah blah blah)." wooo science
No kidding. Our reality functions like one of those tutorials where the dev reads through it halfway, misunderstands/misapplies half of that, and wings the rest.
Your ability to visualize and present concepts of all kinds is actually one of your strongest points. The editing and visual elements combined with music infused with your personal touch (hand drawing explanations) is a real highlight to everything. Regardless of topic, I'm sure you could make it interesting. I just happen to love your coding adventures.
Now I know how my dog felt when I tried to explain spreadsheets to him. Hey, he was really eager to find out why we couldn't play together that instance
And in theory if you could know enough about everything, break it all down mathematically, and calculate it all from the big bang, you'd be able to know the future through every cause and effect chain
@@EKIANandWolvesGaming nah I get why that seems to make sense but there are truly random events happening all the time. The spin of a quark for example, when it is formed
@@EKIANandWolvesGaming I think one of the main problems with that theory is that you cannot know / have complete precision of natural values (acceleration, etc.), and those precision errors will cause prediction errors over long periods of time due to the butterfly effect. Though perhaps it could be precise enough to at least be accurate for a few billion years...though of course it would still require an impossibly large amount of processing power.
Just start with a simple map, something achievable with your skills. You can start with the course "procedural map generation" with Brackeys. Then increment your project, still with something doable, etc. Each time you'll add something, you'll get better, and so will be your project. And one day... your virtual world may become something wonderful :)
I mean in projects where you're working with other people yeah just put the function in and worry about someone else writing that code. However in single person projects it's up to personal preference, do want to finish your train of thought before moving onto the smaller but still important things, or do everything as it's coming up
Mme. Veronica *pretends to understand* Oh yeah totally I saw a video on that it was by that one guy who’s good at this right yes I know more than you okay not really can you elaborate
This has to be one of the highest quality channels on youtube. All the videos are educational, inspiring, really engaging and shows a thought process of tackling nearly any problem. Absolutely love this content.
@@kurtisgibson2929 Aah yes, the AI simulating an advanced civilization going to war against an advanced form of humanity. Of course it has. Where again?
No joke tho, he had a mini series on writing a neural network that was left unfinished. I bet we'll finally get the long-awaited conclusion as he puts in life forms!!!
I can't wait until he eventually adds every single coding adventure into this one project. Simulating ecosystems, boids in the form of procedurally generated fish, procedurally generated animals, caves, ray tracing reflections, hydrolic erosion. The whole works. He's just gonna simulate the world at this point
He's so calm explaining all of this, I can't imagine he doesn't get immensely frustrated like me trying to figure out these problems and having to do ridiculous amounts of research to solve them
Right? He says it like he knows exactly what he has to do, exactly how to do it, and why he has to do it that way all the time. It would be so interesting to actually just watch him do it
Hey everyone, hope you enjoy this little video about atmospheres! RU-vid's compression was not so kind on the results (they came out a bit blocky and bandy) so I've put together a little demo build where you can play with some of the settings yourself and see the results. It's available here if you're interested: sebastian.itch.io/atmosphere-experiment Some notes: A number of knowledgeable people have pointed out in the comments that reality is not as simple as my little diagram around 4:35, and that light does not literally wiggle up and down like a wave, so please note that my diagram is incorrect! The project files from this episode are currently in early access for patrons of the channel, so if you'd like to experiment with those (and support my work in the process) you can download them here: www.patreon.com/posts/project-files-40730130 There is a public repository for this on-going Solar System project over here: github.com/SebLague/Solar-System, which currently includes the gravity simulation and procedural planets from the previous two episodes, and the atmospheres will be added to it on September 15
Others showing us how we can use Unity. Sebastian is showing us WHAT WE CAN DO with Unity. Every priceless journey starts with imagination. Absolutely wonderful! :)
I declare a function, make the function and then the program decides to not let me call the function Like 2/3 functions can't be called because the program doesn't like them, while the others have no problems
Wow I didnt know Star Citizen made so much progress! Jokes aside awesome work my man you always always shock me. Thank you for sharing your knowledge Cheers!
Not: Heres quantum mechanics But: Theres this thing called a photon. It is the light you see and ... [LOTS OF DETAILED TALKING] so thats quantum mechanics. IMO they can but you just need to take so much time explaining it gradually that they already are a year older or something. Like how you dont learn everything in school in 1 year but 12
Sebastian Lague is a 10th-dimensional being who designed our entire universe for a school project and is now role-playing as a human to give us a tease of the entire process. Erosions, ecosystems, oceans, and now the Universe. Thank you for this video!
Me: uses a inverted sphere with a unlit transparent material for the sky Sebastian: makes a 20 minute long video explaining the shaders and scripts he wrote
If I was half as smart as you... I would currently feel half as dumb. That was not only an amazing tutorial, fun experiment but also shows just how good you are at math and programming and research apparently! Great video... Makes me really appreciate all these great games we have today.
He is not smarter than you. How can you say that if you haven't even tried to make a game? Go Download Unity Google "how to make earth in Unity" Google "how to add lightning in Unity" And after making a game make a tutorial like this and post on YT
there are three skill to be an expert programming : 1 : experience programming 2 : understanding physics _But most importantly..._ 3 : *talking fast like a rapper* (11:12)
@@SebastianLague Please keep up the quality, man. I'd ask for that request, and also thanking you for your efforts. *Note:* I'd like to resend similar messages again in the future videos.
At the end of this series he would say: "And this is how i created the earth, the universe and you. You are just thouthands lines of code and living in my simulation, watching those videos right now".
Bugs that i've found so far(in the demo): 1. Stars are visible through the ocean 2. Scattering doesn't apply on the ocean reflections/glares 3. The ocean reflections/glares are visible even when the sun is under the horizon
Oceans aren't really there. It's all just a shader based on planet's centre position. Sebastian would need to make them more of a "physical" in-game object over just a screen space shader
"That sped things up immensely, with the minor tradeoff of completely ruining everything" is pretty much the slogan of every first optimization attempt ever xD Your dry sense of humour is such a joy to behold, please don't ever lose it!
This actually isn't completely unattainable. For a game, you wouldn't actually need to simulate the entire universe at the same time, just the region close enough that the player that they can meaningfully observe it. The rest can just be loaded/generated "on the fly" as needed, or unloaded to save space (pun intentional) if it is no longer inside this region. Methods like this are often used to enable games to have extremely large, and sometimes practically infinite, worlds (or universes in this case) that couldn't possibly fit in memory in their full forms; Minecraft is probably the most famous example. I've even seen Sebastian implement systems like this on other projects, so he could easily simulate an entire fictional universe.
@@andrewsprojectsinnovations6352 Yes you're right. The program SpaceEngine has already done something like this. (I'd suggest checking it out. The old versions are free I think or you can find some footage on yt.)
@@SoulSukkur I would guess that the Outer wilds planets are at least partially procedurally generated at some point and then they went in and modified them.
@@perfredelius8060 I watched the making of documentary from noclip and they didn't suggest anything like that. they discussed how they had to design Timber Hearth as layers of spheres, and then they had to overhaul that for the Ember Twin, which has more complex geometry. everything in that game was made deliberate. they talked about how annoying it was to make brittle hollow, which has the highest level of surface detail. they had to model each of the flat bits individually. Honestly, i don't see how there would be any design benefit to procedural generation. if you want to have a way to generate as many unique-but-similar moons as you want, then go ahead and make a random crater generator. but Outer Wilds only has 3 moons, and only one of those has craters. designing systems to procedurally generate things you'll only need once is so inefficient. just make a sphere and sculpt some dents into it. no math, no parameters, full artistic control.
Electromagnetic waves don't "undulate" through space like that. We say they're transverse waves because they are formed by electric and magnetic fields that point perpendicular to the direction of travel. The wave itself may have a volume, or it may be very narrow, depending on the light source, dispersion, that sort of thing. What's actually happening is that the air molecules are being polarized by the oscillating electric field of the light traveling through it, which makes them behave like tiny little antennae and reradiate. These molecules are like mass-spring systems; they have a natural frequency they "like" to oscillate at. This resonance frequency would be the frequency that would result in the most efficient scattering. Well, it turns out that for air this frequency is actually in the ultraviolet, which means the "higher frequency = more scattering" rule works, but only for visible light. If the sun output more energy in higher wavelengths, and your eyes were sensitive to those wavelengths, you might expect the sky would be purple.
Well said. You can actually see that uv light is scattered more in practice if you use a uv camera. If you were able to see uv light, the world would be extremely misty and thick as the atmosphere is scattering the light a ton.
It would be really hard though... erosion is a static effect and requires you to store all the procedural data somewhere, and raymarched clouds are extremely computationally expensive.
I really love this journey (which I joined an bit late by the looks of it), not only from a programming perspective, which I absolutely love, but also because of how you explain the physics behind it in the clearest way possible
These video's are about what he want's to explore, things he wants to try. I have tried doing similar things on a smaller scale and honestly the biggest joy in some ways is when it doesn't go right. It's easy for someone with more experience to produce a "perfect" video that doesn't show the mistakes or his frustration. By showing you all that he is first saying that you probably will never write perfect code first time, but, also that mistakes happen even when you have more experience
People have already done these things.. he learns from those people.. Pretty sure programmers do very complicated things like this. I am not saying it isn't amazing but he isn't the one to come up with everything, he learns it from other sources too.
@@elythas128 I am a professional developer. Very few devs have the ability to not only abstract the maths problems this well, but to also explain it so concisely... And I work with an ex-maths teacher now programmer...
@@YouReyKarr Yeah sorry I responded to the wrong comment, well no, it was more confusing, I responded twice, you responded to my response, but I thought the original comment was another one, sorry for the misunderstanding. Also I am not sure why would you degrade me when I did not attack you in any way, sorry if it seemed so. (And no, I don't think I could decipher a university paper, not without prior knowledge.
He just made a planet with atmosphere and sunsets that look so amazing and real. It's awesome to have this sort of your own world, and I hope you'll add more stuff to it.
The more I watch your series on making this solar system, the more I appreciate what Maxxis went through creating SPORE. That might be mostly because Spore doesn't look too far off from what you've made thus far, though with today's tech and such you'd likely be able to make something that looks a bit better. In any case, loved the video.
10:10 The usage of length there feels like something that could actually get a rather sizeable performance gain from using length2 instead to avoid the sqrt (with the following division obviously using the pow2 (or rather x*x) as well to compensate), as I have a feeling this method might be called _quite_ often every frame.. (once, per every scatter point, per pixel, per frame, for just that direct call. Then opticalDepth further nests yet another loop :p Though this latter part is thankfully avoided with the optimization introduced later on). *_Edit:_*_ So apparently the gain of avoiding sqrt is not that significant on modern gpu's, costing effectively only 1 cycle on average. kudos to a reply for informing me :)_ 13:25 I am always amazed at how much effort you seem to go through in making tools to help explain stuff, liek that interactive slider. Granted, I don't know if it is an actual tool you screen-captured, or just vfx animated and added in post, still, it seems quite high-effort to me either way. A few I am sure are actual tools (like the sliders for clouds or in this video, for sun position and shader values). The animated graphs (ie. 14:40) are likewise appreciated things that seem quite high-effort for no other reason than to help explain in the video. 15:40 looks nice! Though I am unsure if the red parts near surface makes sense here :p The sun is as far as I can tell somewhat perpendicular to the direction you look at the planet, so it is not like how a sunset is red, exactly. The light at those positions _does_ travel further, so it is not entirely odd and might just be that the intense scatteringStrength is what creates a result different from what I would expect. But I would expect blue anyway... Or maybe my estimation of the angle is just off (nevermind that, later we see the red bands even with the sun behind us. This _definitely_ feels somewhat wrong, if a bit like cooler-than-life "its a feature not a bug" territory). 18:00 the celestial ball with the stars painted on it (that takes the place of a skybox) is honestly quite good looking, which is amazing me when I consider its simplicity. I particularly like how it essentially is a literal take on some old myths/beliefs :D It will obviously have issues when you have more than one planet (unless _extremely_ large radius and centered on the sun - or player - instead of planet, which feels like a recipe to invite floating-point errors), or allow the player to fly around and through it. As for further reading, I am sure you have already looked at this, but I know there are some mods for KSP specifically to improve the scattering. Dunno how much papers/guides there are to read, but fairly sure there is source-code (for unity no-less!) if you are interested. That said, I only know of the mods existence, can't vouch for their quality :p
I tend to keep all my calculations as r^2 unless I'm drawing the object. Most force calculations and distance calculations use r^2 so its handy to avoid pow and sqrt
I looked up what hlsl uses for length2/lengthSqr, seems there is no such alias, and you are expected to use dot instead (`dot(v,v) = |v|^2`). @@oblivion_2852 Exactly, and the few pow/multiplications you need to do (like on planets radii so you can compare it to the r^2 values) only has to be done once and can be stored as a field alongside the regular values. @JoonBoon thanks? :)
sqrt is actually really fast on gpus. On nvidia hardware it is implemented as rcp(rsqrt()) wich are both native instructions on the SFU. While SFU instructions are only quarter throughput they do not block the regular fpu instructions and as such cost you effectively only 1 cycle on average. AMD has an equivalent to the SFU since RDNA too.
I’ve never sat on my couch before and cheered out loud about code like it was a sporting event. This is brilliant. I was moved. Also had to google what a float3 was, haven’t seen that yet. The results were beautiful both visually and scientifically. An intersection of art and science. Also, you just taught me why sunsets are fiery orange. This might be the greatest coding video I’ve ever watched. Wow. Just... wow...
After spending 4 years to get my astronomy degree, I feel vindicated to hear optical depth used properly for cool reasons, and when you decided to normalize your unit system to 1 for simplicity I nearly cried
If life is a simulation...Sebastian def coded it :D Seriously dude you’re procedural stuff is quite literally, other worldly. The fact that u use reality as a guide for your algorithms (ex. The clouds) is just absurd. Most people would just “fake it” for a less accurate result so seriously props to u :)
Went into this thinking it would be about setting a mood or a tone. Got a whole lecture about the scientific atmosphere of celestial bodies instead. That was amazing!
7:40 Wow, that's my favorite trick, too! When I first right my code, about 90% of the functions don't exist, that way I know what I need to do to make it work.
This is so cool. I don't remember how I found your channel, but I'm so glad I did. I've been trying to learn to do this stuff in UE4, and your videos and source, although in a different language, have been incredibly informative.
Maybe in the end, the power will go out while he is saving. That way he fails and we can then have endgame, where he combines EEEEEEEEEEVVVRRRRRYYYYYTHIIIIIIIINNGG.
the greatest thing about flat earthers is that you can never get 2 of them to have the same coherent concept of the flat earth model. they each just make it up on the go with whatever makes "sense" to them
Erosion on an endless map is complicated and you need some clever algorithm that doesn't actually have to rely on its neighbors but actually he should be able to basically drop in his existing erosion algorithm. It will mean that the planet is no longer easily calculated from noise and it will have a significantly higher memory + storage footprint but imo its worth it. The worlds would be fully terrain editable too then! :D