Computer Graphics Tutorial - PBR (Physically Based Rendering)

  Рет қаралды 35,888

Victor Gordan

Victor Gordan

Күн бұрын

Пікірлер: 97
@fudgeracoon2529
@fudgeracoon2529 3 жыл бұрын
Never thought I'd find a well explained video or article of PBR. Thank you!
@VictorGordan
@VictorGordan 3 жыл бұрын
I'm glad you find it well explained! :)
@thedebapriyakar
@thedebapriyakar 2 жыл бұрын
Absolutely fucking incredible. I learnt more in this 13 minute video than I could in the past 3 months.
@krajsyboys
@krajsyboys Күн бұрын
Amazing video! I'm definitely going to be referencing this a lot when working on lighting in the future! The single image at 9:17 contains so much information and is so easily readable, no need to jump between different tabs or sections to remember what everything is and does. Just amazing!
@sotrh7974
@sotrh7974 2 жыл бұрын
This is a really well done explanation. I particularly like that you explained this like why certain terms are moved out of the function or excluded entirely.
@VictorGordan
@VictorGordan 2 жыл бұрын
Thanks! :3
@VinodSV
@VinodSV Жыл бұрын
For the first time, I felt PBR is not that difficult! Great tutorial!
@VictorGordan
@VictorGordan Жыл бұрын
Thx, good to hear it was easy for u to understand! :)
@CodeParticles
@CodeParticles 2 жыл бұрын
Bravo! Absolute genius my friend. I've been using the phong shader model for months now and this makes it much less dreadful to jump into PBR based rendering, thank you~ 👏👏👏
@VictorGordan
@VictorGordan 2 жыл бұрын
You're welcome :)
@iamarugin
@iamarugin Жыл бұрын
This is the best explanation of PBR I've ever found, thanks! It would be great to get IBL, GI and other stuff explained as well.
@starklosch
@starklosch 3 жыл бұрын
Long time waiting for this. Well done. 5:42 it's not what I expected but I'm satisfied.
@VictorGordan
@VictorGordan 3 жыл бұрын
Thanks Starklosck :) What do you mean it's not what you expected? You thought I'd cover them both in the same video :-? If I would have done that then it would have been a short comparison. This way if I make a whole video on them I can go a bit more in depth ;)
@grandpabazi3332
@grandpabazi3332 Жыл бұрын
Spectacular bro! Definitely the most explicit video I have watched about pbr !
@danicl93
@danicl93 3 жыл бұрын
Just a side note to this amazing video: - Fresnel tend to be VdotN not VdotH to get that rim effect. - You could set the max of dot product to 0.005 instead of 0.0 to avoid some artifacts on the border of rounded meshes. Cheers ✌
@VictorGordan
@VictorGordan 3 жыл бұрын
Do you have any sources for the VdotN for Fresenl? I believe most I've seen are VdotH 🤔
@VictorGordan
@VictorGordan 3 жыл бұрын
I did google it but most of the sources I found used VdotH 😅 But yeah, this source does indeed use VdotN. I'm still not convinced since this is from 2003, while the articles I reference in the description (UE4 & some Google thing) are much newer and use VdotH. But I'll look into it further 🤔
@VictorGordan
@VictorGordan 3 жыл бұрын
Here is another interesting source on the topic: www.gamedev.net/forums/topic/697139-pbr-fresnel-color-bandingwrong-formula/5380998/ So what I'm getting is that VdotH is usually more realisticish, but VdotN gives that "aura" effect which might be desirable in some cases 🧐
@unexpectedbehavior
@unexpectedbehavior 2 жыл бұрын
Best explanation I've found thus far! Thank you so much!!
@VictorGordan
@VictorGordan 2 жыл бұрын
You're welcome! ^-^
@seanpreston4023
@seanpreston4023 2 жыл бұрын
This content is absolutely fantastic keep up the good work bro!
@VictorGordan
@VictorGordan 2 жыл бұрын
Thanks! :3
@danielgmjr
@danielgmjr 3 жыл бұрын
What an underrated video, you're a chad and a savior! Thanks for the vídeo!
@VictorGordan
@VictorGordan 3 жыл бұрын
Thank you! 😎
@gregwaste2594
@gregwaste2594 2 жыл бұрын
Easiest and fastest sub on a yt channel EVER. for once yt recommendations worked like a charm.
@VictorGordan
@VictorGordan 2 жыл бұрын
Good to see the algorithm is on my side :3
@DeusExAstra
@DeusExAstra 4 ай бұрын
Excellent video, thank you.
@atljBoss
@atljBoss 7 ай бұрын
Perfect video! Thanks, I was able to implement it using WebGPU
@mr.hashundredsofprivatepla3711
@mr.hashundredsofprivatepla3711 7 ай бұрын
It’s exciting to think about how happy the original mathematicians (e.g. Lambert, Fresnel, Phong, Blinn etc.) would be to be proven right and see all of their work finally come to life in this setting
@tansakdevilhunter9462
@tansakdevilhunter9462 3 жыл бұрын
Great tutorial..👍👍👍 Please do an Image Based Lighting tutorial
@VictorGordan
@VictorGordan 3 жыл бұрын
Thank you! I will do IBL, don't worry ;)
@cory99998
@cory99998 Жыл бұрын
thank you! Very comprehensive
@SpartanJoe193
@SpartanJoe193 4 ай бұрын
I am adding GGX to Halo 3. Thanks for the vid
@orocimarosay1447
@orocimarosay1447 3 жыл бұрын
the best explanation of this topic
@VictorGordan
@VictorGordan 3 жыл бұрын
I'm glad you found it useful! :)
@bovineox1111
@bovineox1111 2 жыл бұрын
This is super. Thank you so much. I have custom lighting in my game and I would like to explore adding some elements of PBR in my game as cheapily as possible. Adding metallic property looks very cheap. It makes me wonder if this is how a lot of fakery is going on in things like Red Matter 2 for instance.
@VictorGordan
@VictorGordan 2 жыл бұрын
I think the metallic property looks cheap because you need to add some nice textures and normal maps on top of it + proper ambient lighting ;)
@Will-Eves
@Will-Eves 3 жыл бұрын
Amazing video! I loved the explications!
@VictorGordan
@VictorGordan 3 жыл бұрын
Thank you for the compliment :)
@cipherjoe9
@cipherjoe9 6 ай бұрын
I really want to see a PBR renderer with Oren-Nayar shading.
@hatsunishimura9875
@hatsunishimura9875 2 жыл бұрын
Truly amazing!
@VictorGordan
@VictorGordan 2 жыл бұрын
Thx! :d
@SpartanJoe193
@SpartanJoe193 22 күн бұрын
Just adding GGX to Halo 3 with metallic workflow thanks to this video. Apart from a few artifacts it's alright.
@mr.hashundredsofprivatepla3711
@mr.hashundredsofprivatepla3711 16 күн бұрын
How? Are you modding or reverse engineering it?
@SpartanJoe193
@SpartanJoe193 16 күн бұрын
@mr.hashundredsofprivatepla3711 Modding. 343 released the mod tools when MCC was ported to PC. You can compile shaders there.
@paulooliveiracastro
@paulooliveiracastro Жыл бұрын
This video is gold
@Test-iv4pm
@Test-iv4pm 7 ай бұрын
How can we add subsurface scattering to the implementation?
@JieunKo-v1l
@JieunKo-v1l 10 ай бұрын
Love your tutorial! Thanks! Could you share your slides?
@VictorGordan
@VictorGordan 10 ай бұрын
They are not slides, just images/videos in a video haha
@mr.hashundredsofprivatepla3711
@mr.hashundredsofprivatepla3711 7 ай бұрын
@@VictorGordanIn that case could you share the images?
@letssee9151
@letssee9151 2 жыл бұрын
Hey Victor! Super elegant explanation! Thank you!!!!!! However, I am confused about the terms of geometry obstruction and Shadowing in the BRDF equation. They are both described if you can see a piece of geometry from the camera. Why keep them both?
@VictorGordan
@VictorGordan 2 жыл бұрын
Thank you! To be honest I can't give you the exact reason for which they are both important. It's because of some mathematical thing with statistics I think (might be wrong). Sort of how you have a probability for something to fail and for something to pass, and in some equations you need both (like the binomial equation of probability for ex). I hope that slightly clears things up...
@GonziHere
@GonziHere 2 ай бұрын
Hey, just wanted you to know that it somehow clicked right now, why deferred rendering exists. I could see that all of the equation is "solved" before, and you just run that "texture" against a different light position/color, right? Anyways, good content, thanks.
@dontbealoneru
@dontbealoneru 3 жыл бұрын
It is Amaizing!
@user-li3zl8uz9t
@user-li3zl8uz9t 3 жыл бұрын
Hey I noticed that you are planing to make a series of videos about physics with opengl in your q&a video. but in my opinion there are KZbinrs who already have tutorials on physic using bullet. What about physics but fluid physics and cloth with tearing. It would be nice if you can include them
@VictorGordan
@VictorGordan 3 жыл бұрын
Yeah, I plan on covering multiple Physics stuff
@user-li3zl8uz9t
@user-li3zl8uz9t 3 жыл бұрын
@@VictorGordan ❤️❤️❤️
@paulooliveiracastro
@paulooliveiracastro Жыл бұрын
Question: GLTF materials also specify an occlusion factor (usually in the form of a texture). How do we take it into account using this model? How does it affect the final equation?
@paulooliveiracastro
@paulooliveiracastro Жыл бұрын
If I understood correctly, it just affect ambient light. So we just multiply Li by (1 - acclusion) if the light i is ambient. Is that right?
@VictorGordan
@VictorGordan Жыл бұрын
If that's what you've read, then I guess that's how you should apply it. To me "occlusion" sounds like something in which it's hard for light to get into, like the space between two planks or a crack in a rock. To me for those it would make more sense to simply multiply occlusion (assuming 0= no light 1=lots of light) with the final result...
@blasttrash
@blasttrash 3 жыл бұрын
what programming language is that? c#?
@VictorGordan
@VictorGordan 3 жыл бұрын
As I said in the video, it is pseudocode that uses a syntax similar to C. Def from google: "Pseudocode is an artificial and informal language that helps programmers develop algorithms"
@CodAv123
@CodAv123 3 жыл бұрын
It's so more or less exactly GLSL syntax, as the built-in functions and types are identical to what's shown in the pseudocode. Need to use proper uniform and in/out declarations though as well as using texture samplers instead of using constant values for the whole object. Using this in the example would be specific to a single shading language and though less generic.
@manasraut9825
@manasraut9825 3 жыл бұрын
Can someone plzz explain why did we use summation instead of integral?
@VictorGordan
@VictorGordan 3 жыл бұрын
At the end of the day an integral is basically an infinite summation as I said in the video. The only way to add up an infinite amount of numbers is by spotting a patern that then allows you to reduce that summation to a simple formula. Sadly some integrals cannot be reduced to simple formulas, and these are called "nonelementary functions". So in order to solve these sort of integrals, numerical methods are used. In this case I use a simple method where I simply assume the integral to be formed of a finite amount of elements... and so I use a sum :) Another reason would be that I use point lights in this example, so there will of course be a discrete amount of light rays affecting one pixel (one light ray per light). In the next video with IBL you'll see that this won't be the case anymore ;)
@manasraut9825
@manasraut9825 3 жыл бұрын
@@VictorGordan Now I got it !! Btw great video 👍
@akriminsoe5527
@akriminsoe5527 3 жыл бұрын
Pls upload tutorial about physics with bullet physics library. There are a little tutorials about physics in KZbin
@akriminsoe5527
@akriminsoe5527 3 жыл бұрын
I really want to learn physics. But I can't find great tutorials. So
@HylianEvil
@HylianEvil 2 жыл бұрын
Omg I'm in love
@bob_frazier
@bob_frazier 3 жыл бұрын
Whoa.
@kingclare9202
@kingclare9202 2 жыл бұрын
And in the code, where does the viariable F0 come from?
@VictorGordan
@VictorGordan 2 жыл бұрын
It is user defined, it's the value for the Fresnel effect at a normal angle (90 degrees)
@valerymayatskiy9306
@valerymayatskiy9306 Жыл бұрын
12:06 what do you mean by that?
@VictorGordan
@VictorGordan Жыл бұрын
I just said that using those variables you can calculate the BRDF. I explain what that is around 04:00
@valerymayatskiy9306
@valerymayatskiy9306 Жыл бұрын
@@VictorGordan I mean what means "don't forget to omit Ks"
@VictorGordan
@VictorGordan Жыл бұрын
Around 07:00 I explain the reason
@VictorGordan
@VictorGordan Жыл бұрын
But basically, in this case I use the Cook-Torrance function for specular lighting (not the only function that can be used) and this function includes kS (named F in the Cook-Torrance function) within itself. So then kS must be taken out of the BRDF equation since otherwise u'd have kS^2 doubling the Fresnel effect for no good reason
@valerymayatskiy9306
@valerymayatskiy9306 Жыл бұрын
@@VictorGordan Thanks!
@kingclare9202
@kingclare9202 2 жыл бұрын
Why isn't the halfway vector divided by 2
@VictorGordan
@VictorGordan 2 жыл бұрын
In general or where exactly?
@guidocampuzano4665
@guidocampuzano4665 2 жыл бұрын
Hi Victor! Please make a roadmap yo become a rendering engineer!!
@VictorGordan
@VictorGordan 2 жыл бұрын
Maybe if I was a rendering engineer I could haha From what I've read online though, it seems that you should just do a lot of personal projects with computer graphics, get to know about a lot of random rendering techniques, start a job in programming (not CG), and after you got a few years of professional programming on your back, apply for CG roles. They are quite rare and usually look for Senior CG programmers, so it seems kinda hard to get into it :c
@akriminsoe5527
@akriminsoe5527 3 жыл бұрын
but how we load PBR models. pls upload about that. I am having problems with loading PBR models.
@austinkim9402
@austinkim9402 3 жыл бұрын
PBR - Peanut Butter & Rjelly
@VictorGordan
@VictorGordan 3 жыл бұрын
If u search pbr on google, the first result will likely be Professional Bull Riders lmao
@pifre3051
@pifre3051 3 жыл бұрын
@@VictorGordan lmao, I get that result so much when searching it, I think it's dumb, gotta give Professional Bull Riders some credit anyway for being the first search result.
@yooyooman3d
@yooyooman3d 3 жыл бұрын
👍
@VictorGordan
@VictorGordan 3 жыл бұрын
👌🏻
@SAMUSTORM
@SAMUSTORM 3 жыл бұрын
😻
@VictorGordan
@VictorGordan 3 жыл бұрын
🐶
@josephbyers3899
@josephbyers3899 3 жыл бұрын
"okeh" lmao
@VictorGordan
@VictorGordan 3 жыл бұрын
👌
@chevlonmacguinstudios
@chevlonmacguinstudios 3 жыл бұрын
Seems pipeline engines are niche, great illustration surprised your subscriber bases so low, maybe it's to fast passed for some not sure, or maybe unreal engines monopoly on the term Free's eroded the hard work.
@kushagra64
@kushagra64 2 жыл бұрын
Well actually, in the original paper there was a pi
@beaumanVienna
@beaumanVienna 2 жыл бұрын
k_d + k_s + k_metal = 1
Physically Based Rendering // OpenGL Tutorial #43
17:31
OGLDEV
Рет қаралды 13 М.
Physics and Math of Shading | SIGGRAPH Courses
38:35
ACMSIGGRAPH
Рет қаралды 100 М.
How Strong Is Tape?
00:24
Stokes Twins
Рет қаралды 96 МЛН
How to treat Acne💉
00:31
ISSEI / いっせい
Рет қаралды 108 МЛН
The evil clown plays a prank on the angel
00:39
超人夫妇
Рет қаралды 53 МЛН
Materials and Physically Based Rendering // Ray Tracing series
27:18
How Ray Tracing (Modern CGI) Works And How To Do It 600x Faster
32:06
Josh's Channel
Рет қаралды 584 М.
How graphics works? Render pipeline explained. Example OpenGL + Defold
14:00
I made a better Ray-Tracing engine
17:38
NamePointer
Рет қаралды 257 М.
How Path Tracing Makes Computer Graphics Look Awesome - Computerphile
21:33
When Your Game Is Bad But Your Optimisation Is Genius
8:52
Vercidium
Рет қаралды 1,6 МЛН
Moebius-style 3D Rendering | Useless Game Dev
8:12
Useless Game Dev
Рет қаралды 858 М.
How Strong Is Tape?
00:24
Stokes Twins
Рет қаралды 96 МЛН