首页 > 其他 > 详细

各向异性着色

时间:2019-03-21 10:50:32      阅读:153      评论:0      收藏:0      [点我收藏+]

        各向异性着色是一种逐像素颜色计算方案。在各向异性着色方案中,镜面光在表面各个方向上并非以均等方式反射。其原因在于:材质在各个方向上包含不同的属性,且毛皮、头发以及拉丝金属均具有此类特征。

  传统的镜面反射数学公式,我们一般是采用:

            S = Ls * Ms *(R * E)SH

      而各向异性着色方案,我们采用以下数学模型:

            dl = T * L

            de = T * E

            S = Ls * Ms * (dl * de + (√(1-dl * dl) * √(1 - de * de))SH)

      其中,T表示切向量(如果不明白切向量是什么,自己去补充该部分的数学知识,在这里不做赘述),L表示光线向量,E表示眼睛向量,SH表示光泽度。

  下面我将展示一段片元着色器,并假设切向值、光源、眼睛向量以及vColor值均在对应的顶点着色器中计算完毕。另外,各向异性着色参数uKa、uKd、以及uKs假设已传递至当前着色器中,且颜色值vColor用与ADS光照模型中的全部3个变量之上。

  vec3 ambient = Vcolor.rgb;

  float dl = dot(That, Lhat);

  vec3 diffuse = sqrt(1. - dl * dl) * vColor.rgb;

  float de = (That , Ehat);

  vec3 spec = uLightColor * pow(dl * de + sqrt(1. - dl * dl) * sqrt(1. - de * de), uShininess);

  fFragColor = vec4(uka * ambient + ukd * diffuse + uks * spec , 1.);

各向异性着色

原文:https://www.cnblogs.com/SmileSFL/p/10570077.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!