Computer Graphics Tutorial - PBR (Physically Based Rendering)

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 ต.ค. 2024

ความคิดเห็น • 93

  • @fudgeracoon2529
    @fudgeracoon2529 3 ปีที่แล้ว +53

    Never thought I'd find a well explained video or article of PBR. Thank you!

    • @VictorGordan
      @VictorGordan  3 ปีที่แล้ว +5

      I'm glad you find it well explained! :)

  • @thedebapriyakar
    @thedebapriyakar 2 ปีที่แล้ว +9

    Absolutely fucking incredible. I learnt more in this 13 minute video than I could in the past 3 months.

  • @sotrh7974
    @sotrh7974 2 ปีที่แล้ว +9

    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.

  • @VinodSV
    @VinodSV ปีที่แล้ว +4

    For the first time, I felt PBR is not that difficult! Great tutorial!

    • @VictorGordan
      @VictorGordan  ปีที่แล้ว +1

      Thx, good to hear it was easy for u to understand! :)

  • @CodeParticles
    @CodeParticles 2 ปีที่แล้ว +5

    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~ 👏👏👏

  • @iamarugin
    @iamarugin ปีที่แล้ว +2

    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 ปีที่แล้ว +2

    Long time waiting for this. Well done.
    5:42 it's not what I expected but I'm satisfied.

    • @VictorGordan
      @VictorGordan  3 ปีที่แล้ว +1

      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 ;)

  • @seanpreston4023
    @seanpreston4023 2 ปีที่แล้ว +3

    This content is absolutely fantastic keep up the good work bro!

  • @danicl93
    @danicl93 3 ปีที่แล้ว +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 ปีที่แล้ว +2

      Do you have any sources for the VdotN for Fresenl? I believe most I've seen are VdotH 🤔

    • @VictorGordan
      @VictorGordan  3 ปีที่แล้ว +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 ปีที่แล้ว +5

      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 🧐

  • @danielgmjr
    @danielgmjr 3 ปีที่แล้ว +1

    What an underrated video, you're a chad and a savior! Thanks for the vídeo!

  • @DeusExAstra
    @DeusExAstra 2 หลายเดือนก่อน

    Excellent video, thank you.

  • @unexpectedbehavior
    @unexpectedbehavior ปีที่แล้ว +1

    Best explanation I've found thus far! Thank you so much!!

  • @atljBoss
    @atljBoss 4 หลายเดือนก่อน

    Perfect video! Thanks, I was able to implement it using WebGPU

  • @grandpabazi3332
    @grandpabazi3332 ปีที่แล้ว

    Spectacular bro! Definitely the most explicit video I have watched about pbr !

  • @mr.hashundredsofprivatepla3711
    @mr.hashundredsofprivatepla3711 4 หลายเดือนก่อน +1

    It’s exciting to think about how happy the original mathematicians (e.g. Lambert, Fresnel, Phong etc.) would be to see all of their work finally come to life like this

  • @cory99998
    @cory99998 ปีที่แล้ว

    thank you! Very comprehensive

  • @tansakdevilhunter9462
    @tansakdevilhunter9462 3 ปีที่แล้ว +2

    Great tutorial..👍👍👍
    Please do an Image Based Lighting tutorial

    • @VictorGordan
      @VictorGordan  3 ปีที่แล้ว +2

      Thank you! I will do IBL, don't worry ;)

  • @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

  • @SpartanJoe193
    @SpartanJoe193 2 หลายเดือนก่อน

    I am adding GGX to Halo 3. Thanks for the vid

  • @letssee9151
    @letssee9151 2 ปีที่แล้ว +1

    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 ปีที่แล้ว +1

      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...

  • @bovineox1111
    @bovineox1111 ปีที่แล้ว

    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  ปีที่แล้ว

      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 ;)

  • @GonziHere
    @GonziHere 6 วันที่ผ่านมา

    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.

  • @paulooliveiracastro
    @paulooliveiracastro ปีที่แล้ว

    This video is gold

  • @orocimarosay1447
    @orocimarosay1447 2 ปีที่แล้ว

    the best explanation of this topic

    • @VictorGordan
      @VictorGordan  2 ปีที่แล้ว +1

      I'm glad you found it useful! :)

  • @Will-Eves
    @Will-Eves 2 ปีที่แล้ว

    Amazing video! I loved the explications!

    • @VictorGordan
      @VictorGordan  2 ปีที่แล้ว

      Thank you for the compliment :)

  • @hatsunishimura9875
    @hatsunishimura9875 2 ปีที่แล้ว

    Truly amazing!

  • @user-li3zl8uz9t
    @user-li3zl8uz9t 3 ปีที่แล้ว +2

    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 TH-camrs 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 ปีที่แล้ว +1

      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...

  • @dontbealoneru
    @dontbealoneru 3 ปีที่แล้ว

    It is Amaizing!

  • @Test-iv4pm
    @Test-iv4pm 4 หลายเดือนก่อน

    How can we add subsurface scattering to the implementation?

  • @JieunKo-v1l
    @JieunKo-v1l 8 หลายเดือนก่อน

    Love your tutorial! Thanks! Could you share your slides?

    • @VictorGordan
      @VictorGordan  8 หลายเดือนก่อน +1

      They are not slides, just images/videos in a video haha

    • @mr.hashundredsofprivatepla3711
      @mr.hashundredsofprivatepla3711 4 หลายเดือนก่อน

      @@VictorGordanIn that case could you share the images?

  • @blasttrash
    @blasttrash 3 ปีที่แล้ว +2

    what programming language is that? c#?

    • @VictorGordan
      @VictorGordan  3 ปีที่แล้ว +2

      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.

  • @cipherjoe9
    @cipherjoe9 4 หลายเดือนก่อน

    I really want to see a PBR renderer with Oren-Nayar shading.

  • @HylianEvil
    @HylianEvil 2 ปีที่แล้ว

    Omg I'm in love

  • @akriminsoe5527
    @akriminsoe5527 2 ปีที่แล้ว +1

    Pls upload tutorial about physics with bullet physics library. There are a little tutorials about physics in TH-cam

    • @akriminsoe5527
      @akriminsoe5527 2 ปีที่แล้ว

      I really want to learn physics. But I can't find great tutorials. So

  • @manasraut9825
    @manasraut9825 3 ปีที่แล้ว +1

    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 👍

  • @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)

  • @akriminsoe5527
    @akriminsoe5527 2 ปีที่แล้ว +1

    but how we load PBR models. pls upload about that. I am having problems with loading PBR models.

  • @kingclare9202
    @kingclare9202 2 ปีที่แล้ว

    Why isn't the halfway vector divided by 2

    • @VictorGordan
      @VictorGordan  2 ปีที่แล้ว

      In general or where exactly?

  • @bob_frazier
    @bob_frazier 2 ปีที่แล้ว +1

    Whoa.

  • @guidocampuzano4665
    @guidocampuzano4665 2 ปีที่แล้ว

    Hi Victor! Please make a roadmap yo become a rendering engineer!!

    • @VictorGordan
      @VictorGordan  2 ปีที่แล้ว +1

      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

  • @austinkim9402
    @austinkim9402 3 ปีที่แล้ว +3

    PBR - Peanut Butter & Rjelly

    • @VictorGordan
      @VictorGordan  3 ปีที่แล้ว +2

      If u search pbr on google, the first result will likely be Professional Bull Riders lmao

    • @pifre3051
      @pifre3051 2 ปีที่แล้ว

      @@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.

  • @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!

  • @yooyooman3d
    @yooyooman3d 3 ปีที่แล้ว

    👍

  • @chevlonmacguinstudios
    @chevlonmacguinstudios 2 ปีที่แล้ว

    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.

  • @SAMUSTORM
    @SAMUSTORM 3 ปีที่แล้ว

    😻

  • @josephbyers3899
    @josephbyers3899 3 ปีที่แล้ว +1

    "okeh" lmao

  • @kushagra64
    @kushagra64 2 ปีที่แล้ว

    Well actually, in the original paper there was a pi

  • @beaumanVienna
    @beaumanVienna 2 ปีที่แล้ว

    k_d + k_s + k_metal = 1