Live data from Hacker News

Gorgeous Unreal Engine 4 brings direct programming, indirect lighting

arstechnica.com

51–60 of 92 posts

Re: Gorgeous Unreal Engine 4 brings direct programming, indirect lighting

#51
post #6

Coming from a film background, it is clear there is a lot of conflation happening in these articles between light that 'behaves' like it would in the real world, and 'good' lighting. That is why you get quotes like in this article 'I light my scene by dropping a sun in'. In reality, there is a whole lot more to lighting then simply having lights and materials that behave naturally. Sure, this gives you more realistic…

> In reality, there is a whole lot more to lighting then simply having lights and materials that behave naturally. For example? (genuinely curious)

Natural light is boring, and often distracting. As a very simple example, I live in an old house and have windows broken into small square panels. For a scene where someone is looking through that window I would put a light outside to make a shadow on their face for dramatic effect, even if the sun was not really coming from that direction or if it was raining (which usually softens shadows). But if I was showing the same person looking back into the room, then the shadow on their back would be a distraction from what was inside the room, so I would soften the lighting or put a screen to limit the natural light, and fill in the darker areas of the room with a soft light.

Look at old film noir movies on TV, they have very exaggerated lighting for dramatic effect.Often you are reducing light to remove information from the scene, so that the viewer can focus on the dramatic subject.

Re: Gorgeous Unreal Engine 4 brings direct programming, indirect lighting

#52
post #30

Earlier quoted context omitted.

Definitely true. We draw our experience on lights from the real world, so the closer an engine is to the real world, the faster the artists can prototype and test lighting setups.

As a still photographer who sometimes works with multiple off-camera lights (strobist-style) I would love to be able to experiment in software to see a very close approximation of how a setup would look.

I'm not aware of any photographer-centric photorealistic 3d apps, but that sounds like a potential niche business! Might be worth exploring.

Re: Gorgeous Unreal Engine 4 brings direct programming, indirect lighting

#53
post #39

Incredibly stunning tech. Now, I'm gonna go fantasize about an open-source version of this with updates every month (instead of every 3 years) -- as a compromise, I could do without the whole hot-reloading IntelliEditor shebang and consoles support -- a concentration on PC hardware that "will be commodity in 2 years, on mobile in 4 years, but can already be bought as state of the art now" (aka Kepler GPUs) would be e…

Eventually I'd expect a "linux of 3d realtime rendering" to emerge. It will then find its way into nearly everything that gets put on a screen from the smallest phone apps to the largest multi-screen games.

Re: Gorgeous Unreal Engine 4 brings direct programming, indirect lighting

#54
post #14

Earlier quoted context omitted.

NeHe's OpenGL tutorials used to be a good (although now kind of outdated) starting point. Shaders didn't use to exist back then. But still a good start: http://nehe.gamedev.net/ A game engine is much more complex than a graphics engine. Maybe somebody can point to guides for creating physics/sound engines and AI/gameplay stuff as well?

When I started learning I spent a lot of time reading NeHe tutorials. But modern OpenGL feels so far removed from those tutorials that it feels like learning a completely different API. The best tutorials I've found for modern OpenGL is "Learning Modern 3D Graphics Programming" by Jason McKesson. The only problem I have with these tutorials is that there aren't enough! http://www.arcsynthesis.org/gltut/

I really appreciate all of the responses and have already put many of the recommended texts on my wishlist. (And I just bought Game Engine Architecture as well, too bad you didn't post an Amazon affiliate link for yourself!) But I just wanted to point out that since this tutorial is free, I immediately checked it out, and I am absolutely blown away. This will certainly keep me busy until GEA arrives! Thanks so much, it looks to be a great starting point for learning more.

Edit: I also wanted to point out that in the author's preface, he discusses what he considers the downside to most introductory texts and tutorials in 3D graphics programming - presenting "fixed functionality" that allows newcomers to more quickly use the tools at hand by abstracting much of the foundational information away.

While this is certainly useful for experienced developers learning a new derivative technology on top of what they already know, I have always found this approach for introductory stuff frustrating. At the end of the day I may come away pseudo-understanding a "higher level" concept, but ultimately much has been abstracted away and I am left ignorant and, as the author says, "Programming thus becomes akin to magical rituals: you put certain bits of code before other bits, and everything seems to work."

I wish I knew of more texts like this for other fields where over or premature abstraction could endanger comprehension. (For example, I know I would like to see a similar approach taken to other complex topics, like networking.)

Re: Gorgeous Unreal Engine 4 brings direct programming, indirect lighting

#55
post #46
post #39

Incredibly stunning tech. Now, I'm gonna go fantasize about an open-source version of this with updates every month (instead of every 3 years) -- as a compromise, I could do without the whole hot-reloading IntelliEditor shebang and consoles support -- a concentration on PC hardware that "will be commodity in 2 years, on mobile in 4 years, but can already be bought as state of the art now" (aka Kepler GPUs) would be e…

Also I'm wondering about the lighting. Some folks on Twitter called it dynamic Global Illumination but here they just call it indirect lighting. I wonder -- are they still using an ambient light? More specifically, what's their GI algorithm? Might be something like the voxel approach sported by @icare3D but then it seems that one's just barely interactive, not as "real-time" as this stuff -- or well it might be on a…

Voxels would be too heavy. I have worked with volume rendering before and it's way too expensive to do it at this scale (although their scene with the light passing through the volumetric smoke column kind-of defied this).

Some real-time version of PRT? "RTRT"?

Re: Gorgeous Unreal Engine 4 brings direct programming, indirect lighting

#56
post #34

Earlier quoted context omitted.

UE3 had Unreal Script which was a custom scripting language and that has been removed from UE4. Kismet is more data than script. There's no JIT-compilation.

I have mixed feelings about this. UnrealScript had a lot of interesting ideas; particularly its module system (a kind of sideways inheritance where you could override an ancestor in a package, but not have to override all the descendants to have them inherit the behaviour - really handy for third-party plugins); the synchronous animation playback, effectively using continuations behind the scenes; how it handled sync…

> a kind of sideways inheritance where you could override an ancestor in a package, but not have to override all the descendants to have them inherit the behaviour - really handy for third-party plugins

This sounds like the virtual classes that Tim were talking about ten years ago. (For the curious, the first programming language with virtual classes was BETA from Aarhus University.) They never made it into UnrealScript. His language research after that time was less incremental and sought to uproot almost everything about programming games. He moved away from object-oriented programming and more towards functional programming, specifically type theory. When I arrived in 2004, he was all about dependently typed languages, the big inspiration being David McAllester's Ontic. For a long time his plan was that his new language would be used to implement most if not at all of UE(n+1). Eventually that ambition had to be tempered by reality and thrown aside; I'm not sure if he's still working on programming language design.

Re: Gorgeous Unreal Engine 4 brings direct programming, indirect lighting

#58
post #34

Earlier quoted context omitted.

UE3 had Unreal Script which was a custom scripting language and that has been removed from UE4. Kismet is more data than script. There's no JIT-compilation.

I have mixed feelings about this. UnrealScript had a lot of interesting ideas; particularly its module system (a kind of sideways inheritance where you could override an ancestor in a package, but not have to override all the descendants to have them inherit the behaviour - really handy for third-party plugins); the synchronous animation playback, effectively using continuations behind the scenes; how it handled sync…

I don't get it, what's oo got to do with storing entities in column major storage. Store the objects in a 2d array.

Normally you don't even store entities like that, I've seen all sorts of crazy data structures, such as storing them spatially, so you can ignore visual updates.

Or am I completely not getting what your saying here...

Re: Gorgeous Unreal Engine 4 brings direct programming, indirect lighting

#59
post #58
post #34

Earlier quoted context omitted.

I have mixed feelings about this. UnrealScript had a lot of interesting ideas; particularly its module system (a kind of sideways inheritance where you could override an ancestor in a package, but not have to override all the descendants to have them inherit the behaviour - really handy for third-party plugins); the synchronous animation playback, effectively using continuations behind the scenes; how it handled sync…

I don't get it, what's oo got to do with storing entities in column major storage. Store the objects in a 2d array. Normally you don't even store entities like that, I've seen all sorts of crazy data structures, such as storing them spatially, so you can ignore visual updates. Or am I completely not getting what your saying here...

Polymorphism with objects implies an indirection to data with variable size, and also usually an object graph involving pointer chasing; lots of indirection is bad for performance. Also, cache-efficient manipulation favours non-indirected, tightly-packed data.

So instead of:

  class Entity { Vector location; Foo foo; Vector velocity; }; // etc.
  Entities[] entities;
One prefers:

  Vector[] locations;
  Vector[] velocities;
  Foo[] foos;
A physics engine updating locations and velocities won't waste cache on redundant information (like foo) in this case.

There was an excellent presentation (from some games conference) on this topic posted here on HN a few years ago, but I can't find it easily.

Re: Gorgeous Unreal Engine 4 brings direct programming, indirect lighting

#60
post #34

Earlier quoted context omitted.

I have mixed feelings about this. UnrealScript had a lot of interesting ideas; particularly its module system (a kind of sideways inheritance where you could override an ancestor in a package, but not have to override all the descendants to have them inherit the behaviour - really handy for third-party plugins); the synchronous animation playback, effectively using continuations behind the scenes; how it handled sync…

> a kind of sideways inheritance where you could override an ancestor in a package, but not have to override all the descendants to have them inherit the behaviour - really handy for third-party plugins This sounds like the virtual classes that Tim were talking about ten years ago. (For the curious, the first programming language with virtual classes was BETA from Aarhus University.) They never made it into UnrealScr…

Yes, it's been 10+ years since I last seriously looked at UnrealScript; I must have misremembered that feature, virtual classes.
Post reply on HN