zoukankan      html  css  js  c++  java
  • BRDF

    Q  radiant energy:      J        

    Φ  radiant flux:       W        dQ/dt

    E  irradiance:        W/m2      dΦ/dA

    I  radiant intersity:     W/sr        dΦ/dω

    L  radiance:         W/(m2sr)    d2Φ/dAproj

    BRDF 双向反射分布函数

    f_{	ext{r}}(omega _{	ext{i}},\,omega _{	ext{r}})\,=\,{frac {operatorname {d} L_{	ext{r}}(omega _{	ext{r}})}{operatorname {d} E_{	ext{i}}(omega _{	ext{i}})}}\,=\,{frac {operatorname {d} L_{	ext{r}}(omega _{	ext{r}})}{L_{	ext{i}}(omega _{	ext{i}})cos 	heta _{	ext{i}}\,operatorname {d} omega _{	ext{i}}}}

    ω入射光= fi(θ,φ)

    ωo 出射光 = fo(θ,φ)

     azimuth angle φ and zenith angle θ

    所以BRDF 是一个四维函数。

     https://en.wikipedia.org/wiki/Bidirectional_reflectance_distribution_function

    渲染方程:

    L_{{{	ext{o}}}}({mathbf  x},\,omega _{{{	ext{o}}}},\,lambda ,\,t)\,=\,L_{e}({mathbf  x},\,omega _{{{	ext{o}}}},\,lambda ,\,t) +\,int _{Omega }f_{r}({mathbf  x},\,omega _{{{	ext{i}}}},\,omega _{{{	ext{o}}}},\,lambda ,\,t)\,L_{{{	ext{i}}}}({mathbf  x},\,omega _{{{	ext{i}}}},\,lambda ,\,t)\,(omega _{{{	ext{i}}}}\,cdot \,{mathbf  n})\,operatorname domega _{{{	ext{i}}}}

    dω = sinθdθdφ

    推导:

        --PBR,From Theory to Impllementation

    Microfacet Theory

    f = D()G()R()

    Microfacet Distrbution Function,D

    Shadowing-Masking Function,G 

      Beckmann Distribution with width parameter b:

      Phong Distribution with exponent parameter ,p:

      GGX Distribution with width parameter ,g:

    Fresnel reflectance Function,R

    Schlick

    Local Subsurface scattering :Diffuse

    https://en.wikipedia.org/wiki/Diffuse_reflection

    Normalized BRDF 的推导

    Lambert

    Phong

    Directional hemispherical reflectance

    R(l) <=1

     ===========================================

    unity的 BRDF1_Unity_PBS

    // Main Physically Based BRDF
    // Derived from Disney work and based on Torrance-Sparrow micro-facet model
    //
    // BRDF = kD / pi + kS * (D * V * F) / 4
    // I = BRDF * NdotL
    //
    // * NDF (depending on UNITY_BRDF_GGX):
    // a) Normalized BlinnPhong
    // b) GGX
    // * Smith for Visiblity term
    // * Schlick approximation for Fresnel

    BRDF = kD/pi + kS *(D*V*F)/4

    I = BRDF * NdotL

    • NDF (depending on UNITY_BRDF_GGX):
         a) Normalized BlinnPhong
         b) GGX
    • V -Visiblity term -Smith
    • Schlick approximaation for Fresnel --specular比例

    color =  diffuseColor* (gi.diffuse + light.color * diffuseTerm)

        + light.color * specularTerm * FresnelTerm

        + surfaceReduction *gi.specular * FresnelLerp

    // Based on Minimalist CookTorrance BRDF
    // Implementation is slightly different from original derivation: http://www.thetenthplanet.de/archives/255
    //
    // * NDF (depending on UNITY_BRDF_GGX):
    // a) BlinnPhong
    // b) [Modified] GGX
    // * Modified Kelemen and Szirmay-​Kalos for Visibility term
    // * Fresnel approximated with 1/LdotH
     
    half3 color = (diffColor + specularTerm * specColor) * light.color * nl
    + gi.diffuse * diffColor
    + surfaceReduction * gi.specular * FresnelLerpFast (specColor, grazingTerm, nv);
     
    // Old school, not microfacet based Modified Normalized Blinn-Phong BRDF
    // Implementation uses Lookup texture for performance
    //
    // * Normalized BlinnPhong in RDF form
    // * Implicit Visibility term
    // * No Fresnel term
     
     
    GI 
    gi.diffuse
    gi.specular
  • 相关阅读:
    Python 集合
    Python sorted()
    CodeForces 508C Anya and Ghosts
    CodeForces 496B Secret Combination
    CodeForces 483B Friends and Presents
    CodeForces 490C Hacking Cypher
    CodeForces 483C Diverse Permutation
    CodeForces 478C Table Decorations
    CodeForces 454C Little Pony and Expected Maximum
    CodeForces 313C Ilya and Matrix
  • 原文地址:https://www.cnblogs.com/minggoddess/p/6093982.html
Copyright © 2011-2022 走看看