Tim Sweeney
speaker
640 appearances
1 recordings
1 series
first heard Apr 2025
last heard Apr 2025
Tim Sweeney’s voice in public audio — every appearance, attributed to the second.
Trend
recordings per month · last 12 monthsNo recordings in the last 12 months.Older appearances are listed below; set an alert to hear about the next one.
Appearances
There's a lot. Some of them are visible on screen and some are behind the scenes and still require a lot of innovation. All the graphical techniques were really interesting challenges. An Unreal Engine in those early days went a lot further than the Quake Engine in building environments using constructive solid geometry with a real-time editor. That was a really interesting technical challenge.
The idea is Building is extremely tedious if you are only adding objects to the world. If you want to build a door, then you need to add a dozen different pieces of door frames and add a bunch of different walls together to fit together in the right shape. It sure would be easier if you could just start with a wall and subtract the door out.
And so we had this way of adding geometry to the world and subtracting geometry, and the engine would perform all the calculations on that. And this is something that I'd been anticipating was possible for a long time, but when I finally got around to it, it took this 30-hour coding session to figure out all the special cases of the code that needed to be implemented to make that work.
In the course of 30 hours, I got constructive solid geometry up and running. I started doing, like handed it to James Schmaltz the next time we were together. And it's like, okay, I think you're cheating here.
So you create a giant torus and then add another giant torus interlocked with it and then subtracted a cylinder from it and created this really advanced composite object with just three operations. He was like, whoa, I can't believe this. It's like, yeah, we figured it out. And that was cool to see for the first time.
It was probably the first time somebody had done constructive solid geometry in real time. But it was also a really useful artist tool that all the artists appreciated and immediately began making use of.
your brain works in different ways depending on your state, right? There are some things that require really working on a problem fresh, where you've put together a bunch of logical pieces and now you just need to write a whole lot of code to make it all work together and plumb a whole lot of data between a whole lot of different algorithms.
But I think our brains have vastly more horsepower than we're able to directly access by thinking of what code to type next. after you've been working for a very long time, you can get into a sleep deprived state where you have much, much more direct access to that low level knowledge. That's great. Yeah. You know, because there are symptoms that are well studied of sleep deprivation.
One of them is, um, short term memory loss. And so you're working without like the easy recall of the code you just typed. Uh, but your brain is then freed to, to think about other problems. And, uh, And I built up this intuition over a very long period of time.
So the foundation for the subject is the binary space partitioning tree, this data structure invaded by a computer science graphics researcher, Bruce Naylor. Carmack had picked up on that and had used the technique in Doom to really great effect. And I'd picked up on that.
And no one really was using this technique for all of its graphics and rendering, but it was just additive geometry everywhere. And it had a lot of overlapping polygons and was pretty inefficient. So I had the idea that if we had a BSP tree, there was a really efficient way to do constructive solid geometry.
And to do that, you had to break down the ways that different pieces of geometry can fit together. I broke it down into like 14 different cases. And most of them are pretty simple. Crank them out. And as I got towards the end, there were some pretty complicated things. Like, how do you deal with... coplanar polygons.
They're in the same plane and pointing in the same direction versus the other direction. In what cases should you keep them? In what cases should you eliminate them? And so on and so on to create really efficient geometry output. And just plowing through it eventually through mostly deduction, but some trial and error too. Sometimes you just have to try the possibilities and see what works.
Yeah, I cranked it out and it worked. And the next day I came in like kind of weary and I was like, oh wow, this actually did work. It wasn't just a dream.
Yeah, you know, it's pretty easy to write software that's like 99% correct. It's the 1% that's the really hard part and where the devil lies in the details. What about lighting? Is there other interesting... Well, the funny answer is we know the laws of physics. So it's actually really easy to do everything in computer graphics. But the direct solution of the laws of physics is immensely slow.
And so what we're finding are approximations rather than complete solutions. Because you need something that's a million times faster than the brute force answer.
Yeah, photon tracing is the subject matter that does brute force calculation of pixels on a screen from all of the light in the scene. And it works, and it's correct, and it just is an implementation of the laws of physics, and it's millions or billions of times slower than what we do.
But Carmack had figured out how to do really cool lighting algorithms, including real-time lighting with objects moving around. And I hadn't taken it very far, so... With Unreal Engine, I'd realized we don't have nearly enough computing performance on our CPU to compute the light of every pixel on the screen from all of the light sources that affect it.
We're at a six-cycle texture mapper, and we couldn't afford 30 more cycles for lighting. And so the answer had to be some approximation. And the one that Carmack had picked up on in the Quake Engine was light mapping. Instead of calculating all the lighting on every pixel, what if we made a big texture that we placed over all of the walls in the scene that was like wallpaper.
And what if we say every foot, we're going to compute a lighting value for just that one foot grid on the object rather than computing it everywhere. And then if we, what if we just linear interpolate that? over the course of it. You know, you get a lighting solution that actually works pretty well and is fast enough to work.
Showing 161–180 of 640 · page 9 of 32
← Previous
Next →