当前位置:3d开机号和试机号今天 > 博客园新文 >Directx教程25 简单的光照模型4

Directx教程25 简单的光照模型4

  作者:迈克老狼2012   来源: 博客园-mikewolf2002  

3d开机号和试机号今天 www.jk1z4.cn      在本篇日志中,我们尝试用不带衰减的点光源来计算漫反射颜色。

    前面的三个工程,我们都用的是方向光源(directional light),它的特点是没有光源位置或者说光源位置位于无穷远处,且光线在各个方向都是平行的,所以在工程myTutorialD3D11_17中,我们看到的程序界面上,cube每个面上的颜色都是一样的[因为diffuse光占颜色的大部分]。

    方向光原理可用以下图表示:

image

     现在我们尝试点光源,点光源原理如下:

image

    因为计算漫反射时候,每个顶点的漫反射颜色都和到光源位置向量有关,所以我们可以修改light.vs如下:

   //自发射颜色
    float4 emissive = Ke;
   
    //计算环境光
    float4 ambient = Ka * globalAmbient;
   
    //计算漫反射光
    //用LightDirection就是纯平行光
    //光源位置减顶点位置,是不考虑衰减的点光源
     float3 L = normalize(lightPosition.xyz - P);
     float diffuseLight = max(dot(N, L), 0);
     float4 diffuse = Kd * lightColor * diffuseLight;

     //计算高光
     float3 V = normalize(cameraPosition.xyz - P);
     float3 H = normalize(L + V);
     float specularLight = pow(max(dot(N, H), 0), shininess);
 
      if ( diffuseLight <= 0)
          specularLight = 0;
      float4 specular = Ks * lightColor * specularLight;

      output.color = emissive + ambient + diffuse + specular;

注意L的计算,我们这儿取归一化的光源顶点->光源向量。

程序的最终效果如下,看以看出比前一个工程中的方向光的效果要好一些:

image

完整的代码请参考:

工程文件myTutorialD3D11_18

代码下载:

//files.cnblogs.com/mikewolf2002/myTutorialD3D11.zip

相关阅读:

来源:(微信/QQ:420434200,微信公众号:www.jk1z4.cn)
       欢迎分享本文,转载请保留出处!

       【原文阅读】://www.cnblogs.com/mikewolf2002/archive/2012/04/03/2430955.html
没有了
  • 【在行动】渝北用大数据讲好“数字中国”故事 三年后将现“独角兽” 2018-12-02
  • 和公公结婚来规避“不能入学风险”福建龙岩回应 2018-11-29
  • 重庆“8D迷宫”楼走红  网友:住户能找到自己家吗 2018-11-12
  • 你所面临的除了再没利用价值的收回狗粮与制裁,还有国际的反腐制裁,反邪恶制裁。 2018-11-09
  • 我相信“交警雨中护送高考生”是真,“交警雨中护送高考生”反被该高考生家长投诉是假。 2018-11-09
  • 其实啊也不奇怪,菜做好了先来一份尝尝味道于是提前开吃了。 2018-10-27
  • 太原出台人才落户新规 子女父母均可随迁 2018-10-18
  • 3.4米剧毒眼镜王蛇闯入农户家中赖着不走 2018-10-18
  • “亲信干政”案核心人物崔顺实一审被判20年监禁 2018-10-13
  • 【学习时刻】清华大学周绍杰:坚定不移地贯彻落实新发展理念 2018-10-07
  • 迟子建《候鸟的勇敢》:白山黑水的苍凉,渐行渐近的夕阳 2018-10-07
  • 习近平与人民日报的10个故事 2018-09-30
  • 生姜祛寒止痛可缓解身体不适 但也要注意食用禁忌 2018-09-30
  • 国宝级黄腹角雉住进三清山 2018-09-24
  • 高清:创意十足!杭州萌娃毕业照留下成长足迹 2018-09-12
  • 672| 660| 742| 773| 189| 683| 994| 223| 572| 825|