Is Unreal Engine a good start to learn rendering ?

Started by
11 comments, last by koiava 9 years, 1 month ago

Hi there,

If you want to learn rendering programming. Is it really a smart move to start with working on your own engine ?
The more i think about it, the more i think it should be the opposite.
What do you guys think ?
Advertisement

If you have no experience with Graphics Programming, then chances are very high you will be overwhelmed.

Your best bet is to work on small samples/ work through some tutorials to start learning the basics. Later down the road you can take a look at UE source to see how they solve certain problems.

If looking at the source works for you, then go for it. Its justa lot harder to learn by looking at only the solution, without understanding the problem that its solving. The why is just as important as the how.

I'm not really familiar at all with the details of their engine, but I would imagine that it's probably a great reference for learning how to integrate rendering techniques into an engine, and probably not such a great reference for understanding the techniques themselves. I'm sure if you look at their code, you're going to find tons of code dedicated to handling the various details of their content authoring and packaging pipeline, adding gameplay/scripting hooks, and and making the output of a technique work in harmony with the other rendering features.


If you want to learn rendering programming. Is it really a smart move to start with working on your own engine ?

The more i think about it, the more i think it should be the opposite.
Why is that so?

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator


If you want to learn rendering programming. Is it really a smart move to start with working on your own engine ?

The more i think about it, the more i think it should be the opposite.
Why is that so?

Well, i think it takes a massive part out of the equation, and allow you to focus on one thing because you know the rest if working properly.

It's like, if I wanted to wanted to create heads up display for cars, should i start by building the actual car, research how a combustion engine works, aerodynamics, etc... and once the car is kind of working, start working on the actual dashboard hopping the electronic i setup won't fail me and send me wrong inputs & metrics ?

I remember at some point i wanted to have a proper sky, and i found this guy making a good one in GLSL : http://devlog-martinsh.blogspot.ca/2013/11/waterunderwater-sky-shader-update-03.html

I only studied HLSL, so i needed to port it. The original shader was quite complex and i was having a hard time implementing it. I wasn't sure the problem came from my HLSL code, or actual engine feeding wrong values to the shader. So i decided to port it in 3DSMax first, and it worked wonders. I had immediate feedback and lot more tools to experiment (sliders for shader constants and such). This allowed me to have a better understanding of the shader, and i easily implemented it in my engine afterward.

I didn't have to worry about things like properly computing normals as Max was doing it for me (i had to at some point in my engine, but i knew my shader code was correct at that point).

Now i want to study effects like DOF, chromatic aberration, and film grains. I can't help to think it will be a lot easier to implement this in a shader graph node editor, and once it works, try to break it down in actual HLSL.

Sure but shaders aren't all there is to rendering.

If you want to learn the GPU API underpinnings and all the basic foundations of a renderer (perspective projections, world transforms, assembling model data, texture mapping, render targets, etc) it'll be very tough to learn it from the engine's sources, you'll be looking at one big and complex rendering pipeline implementation for sure.

Now if what you want is to expand your knowledge on shaders, yeah, I suppose using UE4 should give you what you need to experiment with them.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

Unreal is great if you understand what it is you want to get out of it... but if you want to learn about how various rendering techniques work, it's probably a better idea to start from the very basics.

Rastertek (http://www.rastertek.com/tutindex.html) is an excellent resource for learning all about the rendering pipeline.

Once you have a grasp on how things fit together, how shaders work and the various methods of drawing pixels on the screen (deferred rendering for example), then Unreal takes all of the grunt work away and lets you focus on creating content.

Gotcha ... I guess i'll use both :-)

I can see how important it is to have strong fondations, but sometimes it helps to see the end results and all the required inputs to know why you'll have to build this input in your engine.

If your goal is to learn how rendering works, then building your engine will be a great journey.
Think about it:
- your first window
- your first triangle/poly
- rendering an object
- making a camera
....
- your own shaders

And so on.
You could get a book as a starting point, for example dx 11 book from frank d luna (assuming you "know" and can code in c++)

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me

Excellent tutorial for modern opengl. http://www.arcsynthesis.org/gltut

Excellent tutorial how modern hardware works. https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/

This topic is closed to new replies.

Advertisement