Hope you all enjoyed the video! I'll be live streaming Ratchet & Clank: Rift Apart when it comes out tomorrow on twitch.tv/thecherno, come say hi! Here's the schedule in your time zone: twitch.tv/thecherno/schedule
One benefit from deferred rendering is the g-buffer which contains per-fragment normal and position. This data can be very useful for path tracing, e.g. when clicking with the mouse or something similar. How can you achieve this functionality with forward+ ? (is that straight-forward?)
The Cherno is basically building his dream project. It must be so challenging but yet very exciting in every step he moves forward. Man, I have so much respect towards him for that, it's not something everyone can do so easily. Good luck with that Cherno!
That brings back memories from my university. We had that class where for entire semester we implemented our own rendering engine - starting from simple triangle to fully working model explorer (with lights, postprocessing, transform modification, materials, selection etc.). Everything in OpenGL and C++, I also decided to go deferred rendering path - directional, point and spot lights as well as some effects utilizing data from MRT. Sadly didn't have time to properly implement shadows, but easily passed class with best grade. Back then I didn't ever think that I will end up as graphic programmer (was aiming at C++ programmer or Unity game developer), but here I am as Technical Artist, messing around with Unity's URP code and shaders for our internal company projects
@@hashemieada4846 Graphics and Multimedia in Computer Science. However we choose it at late stage (on 4th semester if I remember correctly), before that we had common stuff like databases, graphic programming, backend, neural networks etc. Later, most of our classes in Graphics and Multimedia were focused on creating game on existing engine and finally prototype of game in engine implemented by ourselves. We worked in team of 5, I was taking care of scene management, 3D rendering, UI, animation support and asset import in our engine. Thinking now I would choose Game Development instead of Graphics and Multimedia - there were a lot of joined classes and I didn't really like 3D modeling/texturing stuff.
@@krystiano.610 thanks alot for the information , am a computer engineering student and I feel that I made a terrible decision by enrolling in CE. I really wish to have these classes in my curriculum. Would you recommend for me to stay at CE ? Or switch major?
@@hashemieada4846 Can't really recommend you to switch or stay - I think that it depends on the university (at least in my country, every uni has different program). But if you are unhappy you should check out what classes are in CS at your university, ask some people which attended these classes and make decision by yourself. Also from my experience, contacts are more important than classes (ofc they help, but they aren't everything). Usually you learn more at work/internship than at uni
Hey cherno you are awesome because whenever I see your videos it reminds me that what I am doing doesn't matters if I don't enjoy doing it. You have my gratitude and respect.
This is an absolutely brilliant optimization and debugging tool. I can't tell you the number of times I've worked on a complex lit scene in Unity and thought "ok how many lights are overlapping right here because the framerate chugs when I look at this one candle." Forgive the pun but... game changer.
just a quick idea: use a slider to adjust the number of lights hitting a pixel for your visualization to get red. With a slider, a game dev could optimise for various performance targets
slider is a good idea. Perhaps some default values for mobile/last-gen/next-gen to give users an idea of where the slider should be positioned to start for their intended audience.
Every time you show the sponza scene I ask myself: why doesn't he have a sponsor scene? 😄I mean just imagine showing the light on a 3d version of a sponsor logo. Real cool way to advertise imo.
i'd love to see an episode on global illumination whenever you get around to it, i've been a huge fan of your videos and graphics in general and yet i still have no idea how gi works lol keep up the good work
It plays pretty much the same actually as regular forward rendering. In fact, that's one of the major advantages. It's pretty much as unified as forward rendering.
I new to c++ and rendering engines, But using this way of lighting doesn't it mean if you have multiple cameras you will have performance issues, because you need to calculate the lighting for every pixels in every camera, and some of these pixel might hit almost the same point but will calculate multiple times for each camera
Regardless of the made up scale, that light complexity tool looks really useful. Sure it's easy to visually see the light spaces, but this ensures there's no question where specific lights are hitting, how they're being rendered, etc. Bravo! Brb, ditching Unity for Hazel
Nice demo, forward+ is great! I think in the sponza scene the light culling is slightly incorrect in the rightmost tiles ( 10:51 ). Maybe the depth buffer width is not divisible with 16, so frustums try load outside of it and become too large (just a guess).
Do you do a low resolution rendering of the scene to determine what lights affect what pixels? Or do you do something more like: transform point, expand point to be a rect?
Hey Cherno! Love your videos! Was wondering if it would be possible to set up a visual example of what's going on under the hood :) I'm a 3D artist if you would need help at all but I just don't understand exactly what lights are doing in either deferred or forward/forward plus and am extremely interested!
I wonder if it may be problematic if sometimes adjacent pixels handle different lists of lights. Because GPU processing units have this weird thing where there are many processing units grouped together in a way where they can only execute the same code simultaneously (on different pixels / vertices but still the same code). So for example say one pixel A needs to only handle one light but an adjacent pixel B needs two lights. Then the processing units handling pixel A may still have to wait and cannot do anything useful while the gpu cores handling pixel B are processing the second light. But I don't know maybe there is a solution to this, I have never heard of forward plus rendering. I am just curious how this issue is handled here.
Cool ! I would like to know more about rendering pipelines , I know it depends on the developer who implement it but I would love to know more, next episode should be global illuminattion futures like color bleeding. If anyone know Kariem account I would like to know more about rendering and lighting paths. from what I understand forward is the true 3D rendering takes account of 3D data like you mentioned normal map facing and the deferred rendering ( the G buffer) Is the space screen buffer. and some scriptable rendering pipelines makes it possible to mix between the low level techniques depending on the developer needs ( i.e some anti aliasing solutions) the forward+ which calculate the GI through volume thought ray marching. ( essentially voxel rendering) so from my understanding point of view there's : -rasterized rendering -true ray tracing and path tracing ( using forward projection for the geometry vertex & primitives for rendering equation and take into the account of light energy calculations too for the GI ) ↑note PBR rendering is approximate calculation biased estimation voxelized rendering ( ray matching technique) the forward+ means the GI is ray marched hence clustered. Hybrid approach (scriptable rendering pipelines) like what we see with most modern game engines ( i.e unreal Nanite use micropolygon mapping on screen space buffer for small close objects and far object use similar concepts of normal mapping ( as Digital foundry explained) , and lumien for the GI probably use either radiosty or screen space photon mapping. Or perhaps mix between them that's why semi transparent like opaque surfaces don't have unlimited bounces ( since the g buffer doesn't calculate true 3D , thus something like cone tracing could be an ideal solution) some lighting terminology I've gathered in my research for this topic: Omni type lights ( similar to point light but takes account lighting energy calculation ) Like area lights and line lights ,i.e flux power mostly used in offline renderers and for progressive textures baking systems radiance: the lighting energy coming from one direction , Irradiance: ( lights from all directions) BxDF functions for view equations and distribution energy. bi-directional means from two points ( i.e from the light source as well as the view angle of the camera)
Also voxels rendering have superior textures quality similar to geometry micropolygon in topology because it use cloud points like in Dream PS4 game you can zoom and still get nice details as mentioned in digital foundry too .
i got deferred rendering working in my game, but fixing the issues is a real pain. and my deferred render actually runs slower, despite having alot of geometry. however, i don't have many light sources so that's probably why lol. so basically: forward renderer: 1700 FPS -> 2200 FPS deferred renderer: 1100 FPS -> 1400 FPS (and also transparency nolonger works) so ya im nolonger using deferred rendering
Guys , am a computer engineering student in my 1st year, is it possible to to work in game industry in the future?or at least becoming a graphic programmer?
There might be some transferable skills but for the most part If you want to be in the game industry as a graphics programmer then computer engineering is the wrong degree. Its more about making computer hardware then it is software.
why ???????? no point i mean from his point, he won't see a point in replying to some comment which doesn't has weight to it, would he? also, no point in telling you are the first