标签:shader unity3d 图形学 游戏开发 大气散射
散射需要:吸收,内散射,外散射辐照度E
代表到表面上一个点的光照量,入射辐射通量/面积(瓦特/m2),辐射集中成半球状
发生米氏散射的介质中粒子大,为球形粒子
注意:
起点处最初的阳光是白色的
密度不是常量
实现所需的所有公式:
关键部分实现代码:
<span style="font-size:14px;">float s = (GetDepth(i.uv_MainTex)-0.8)*5; float Fex = pow(e, -(_Beta_R + _Beta_M)* s); float beta_r = 3 / (16 * PIE)*_Beta_R*(1 + cos_theta* cos_theta); float beta_m = 1 / (4 * PIE) * _Beta_M * (1 - _G)*(1 - _G) / pow((1 + _G * _G - 2 * _G*cos_theta), 3 / 2); float3 Lin = (beta_r + beta_m) / (_Beta_R + _Beta_M)* _Sun * (1 - pow(e, -(_Beta_R + _Beta_M)* s)); float3 L = _Sun * Fex + color.rgb *Lin;</span>
瑞利散射
米氏散射
混合散射
参考:Rendering Outdoor Light Scattering in Real Time
版权声明:本文为博主原创文章,未经博主允许不得转载。
unity3d shader之实时室外光线散射(大气散射)渲染
标签:shader unity3d 图形学 游戏开发 大气散射
原文地址:http://blog.csdn.net/wolf96/article/details/47144003