Earlier quoted context omitted.
No, but it is a full time job. It's getting much more complicated. Here's an hour long talk on how Unreal Engine 5's Nanite works.[1] This is a huge breakthrough in level of detail theory. Things that used to be O(N) are now O(1). With enough pre-computation, rendering cost does not go up with scene size. See this demo.[2] You can download the demo for Xbox X/S and PlayStation 5, and soon, in source form for PCs. Exp…
The closest thing to the metaverse in the form of open worlds are flight simulators right now. They have an enormous amount of content to model the entire planet already. A lot of that content is generated rather than designed. MS obviously did a nice job with this and e.g. X-plane and Flightgear have pretty detailed worlds as well. Most of these worlds are generated from various data sources (satellite imagery, alti…
Finding your home in game graphics programming
111–120 of 128 posts
Re: Finding your home in game graphics programming
#112Earlier quoted context omitted.
When people often say to me "I learned all that maths in school and it was useless", I think to how much of that came in useful when I wrote my first 3D engine in my teens. Suddenly it wasn't so boring any longer. When I started coding graphics in the early 80s practically every video game was a one-person show - every line of code, every graphic and every sound effect and line of music. By the time I start doing gam…
Absolutely! When you take into account just the artistic aspects (e.g. modeling, texturing, rigging, etc. with professionals specializing just in particular aspects like facial structures, etc.), it really is quite remarkable. I imagine we'll get more efficiency as procedural and generative techniques become more powerful: characters, worlds, mechanics, etc. are all programmatically generated with little-to-no interv…
This absolutely has to happen because humans are really crap at some things, like animating human beings. When I was developing a 3D game in the mid-90s I watched our character animator trying to do the animations by hand and you can almost never get it to look remotely realistic; even now with mo-cap and bones and all the tech, it still looks totally fake (a big recent example for me is Thanos in the MCU who moves like a wooden puppet). It needs that ML layer to sit above everything and fix all the little details that make humans look human and move human.
Re: Finding your home in game graphics programming
#113Earlier quoted context omitted.
I'd be curious to hear others chime in, but I feel like the situation is very similar to this article talking about games. Do you want to get pixels to the screen/file? Shaders and materials (authoring or implementing)? How commercial renderers are organized? My job is mostly using commercial tools, but a lot of us have made toy renderers, read books, and taken classes to reimplement the fundamentals. It's been awhil…
Let's just say that I want to create text file with 3d coordinates of an object (cube or sphere), and my software renderer shoould read this file and display it on the screen. And I can zoom in/out, change coordinates of vertecies with a mouse, rotate and move it. This cube can be wired or colored and if it wired I want to see which edges are visible and which are not. And to render this cube I want to use only setpi…
[1] https://en.wikipedia.org/wiki/Wavefront_.obj_file
[2] https://en.wikipedia.org/wiki/Netpbm#PPM_example
[3] https://github.com/nothings/stb
Re: Finding your home in game graphics programming
#114Earlier quoted context omitted.
> Memory layout is most definitely important just because memory accesses have such a high latency Indeed, but that’s not what the video is about. They don’t discuss how to implement cache friendly data structures. They tell how small random differences introduced by the size of environment variables, and linking order, affect performance. The statement seems to base on that article: https://users.cs.northwestern.edu…
I see such effects somewhat regularly, albeit not at an overall impact of 40%. With precise code layout having the biggest impact, leading to different L1i and iTLB hit ratios. Of course that requires execution costs to be well spread around, rather than allow in a small amount of code. In my case, working on postgres, this is partially caused by the old school recursive row-by-row query executor model...
OTOH, I did observe up to 20% randomness based on other choices made by optimizer, compiler and linker. In my experience, the main source was different decisions what to inline, especially for release builds with LTO/LTCG. For me, a good workaround was compiler-specific forceinline/noinline function attributes.
However, my C++ code is probably very different from what's in postgres. I usually write and optimize manually vectorized and OpenMP parallelized numeric stuff, FP64 or FP32, doing little to no I/O.
Re: Finding your home in game graphics programming
#115Kind of a weird New Years fever dream tangent. Bear with me: Say we have a scene to render and a frame can be rendered in 10ms given the chosen game engine or graphics API or whatnot. There is a hypothetical optimum code for rendering that scene that can do it in less time. And the delta between those times is the price you pay for API abstractions, human abstractions (eg. maintainable code vs clever code), and other…
Re: Finding your home in game graphics programming
#116Can we say that modern AAA graphics is way more complex than a single human can handle unless perhaps he started graphics programming many years ago?
No, but it is a full time job. It's getting much more complicated. Here's an hour long talk on how Unreal Engine 5's Nanite works.[1] This is a huge breakthrough in level of detail theory. Things that used to be O(N) are now O(1). With enough pre-computation, rendering cost does not go up with scene size. See this demo.[2] You can download the demo for Xbox X/S and PlayStation 5, and soon, in source form for PCs. Exp…
Re: Finding your home in game graphics programming
#117Kind of a weird New Years fever dream tangent. Bear with me: Say we have a scene to render and a frame can be rendered in 10ms given the chosen game engine or graphics API or whatnot. There is a hypothetical optimum code for rendering that scene that can do it in less time. And the delta between those times is the price you pay for API abstractions, human abstractions (eg. maintainable code vs clever code), and other…
There's a concept in the research literature called "superoptimization" -- finding the absolute smallest program that meets a given specification. It's worlds away from being used for anything larger than a small handful of operations, but it's very close to what you're asking about.
Re: Finding your home in game graphics programming
#118Could someone suggest a good book/article(s) about 3d software rendering from scratch. I want to use just plain WIN API or SDL to make let's say a 3d rendered cube. Is "Computer Graphics: Principles and Practice" 2nd edition is all that I need or do you recommend other books?
Re: Finding your home in game graphics programming
#119Earlier quoted context omitted.
Well, some people think failure is the best teacher. As an example the first generation of german rocket engineers whose work culminated in Saturn V and thus enabling the first moon landings basically started from scratch.
So your advice is to just suck it up and accept that interested people need to spend billions and study for decades on the issue, because learning from previously successful endeavors is a worse teacher. Right. It's fine to just half-ass it if the interest is only superficial or for a hobby. Otherwise it might create a very unrealistic expectation in the student, because the gained knowledge by doing it like that is…
But if one is to study rocketry without an aeronautics degree I'm guessing it's better to start from hobby level engines and vehicles and then scale up.
There is lot of added complexity due to size and mission constraints that is vehicle specific in Falcon Heavy, and I'm not sure how one would even use it as a learning platform - unless there is a university curriculum built around the vehicle.
There are lot of basics that model rocketry probably gives a good intuition for but then to my limited understanding it becomes (drumroll) rocket science.
Re: Finding your home in game graphics programming
#120Earlier quoted context omitted.
Let's just say that I want to create text file with 3d coordinates of an object (cube or sphere), and my software renderer shoould read this file and display it on the screen. And I can zoom in/out, change coordinates of vertecies with a mouse, rotate and move it. This cube can be wired or colored and if it wired I want to see which edges are visible and which are not. And to render this cube I want to use only setpi…
That sounds like a fun challenge. If you're constraining yourself to use as few libraries as possible, I'd go with OBJ [1] for the 3d mesh and PPM [2] for writing images. It's easy to implement a bare bones reader/writer and some OSes (like macOS) can show them in the file browser. Raytracing in One Weekend goes over PPM. There are a bunch of header-only libraries that handle different file formats like stb_image [3]…