当前位置: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
没有了
  • 纸质书电子书何必分高低 2019-02-15
  • 马克思的共产主义,什么时候说了生产资料需要“按需分配”了? 2019-02-12
  • 新时代湖北讲习所:讲学成一道风景,做实成一种自觉  2019-02-12
  • 足球盛宴来袭 省会首届迷你世界杯赛正式打响 2019-02-11
  • 日本大阪6.1级地震 镜头记录事发那一刻 2019-02-10
  • 胡世忠在泰和调研经济运行和项目建设 2019-02-10
  • 看看马克思主义是怎样产生的就明白了。 2019-02-09
  • 英媒称梵高购买日本版画并非爱好,而是为赚钱,结果—— 2019-02-08
  • 乘热气球飞跃千年王朝古都文章中国国家地理网 2019-01-29
  • 点赞英雄机组 关注事故原因 2019-01-20
  • 只有超面积才应该付出成本。根据跟下的逻辑立锥之地也应付钱。 2019-01-17
  • 社会主义核心价值观主题微电影征集展示活动作品征集公告 2018-12-28
  • 秦存良的专栏作者中国国家地理网 2018-12-27
  • 新闻中心给记者留下美好记忆 2018-12-22
  • 为祝贺你们!为你们自豪,为你们骄傲——中国核电的创新者!这是“两弹一星”精神的延续,是“两弹一星”精神的发扬!有良心的中国人,更要感谢以毛泽东为首的老一辈无产阶 2018-12-22
  • 767| 665| 723| 231| 170| 559| 219| 468| 324| 558|