在场景中添加光线——概述
2011-02-14 14:22
246 查看
给场景添加光照听起来很简单:设置3D世界中物体的位置,定义光源的位置就可以了。但是,虽然看起来让显卡实现光照很简单,其实不是。
对物体的每个表面,显卡需要计算表面接受光照的数量,这个光照数量是基于光线方向和表面法线方向的夹角的。幸运的是,XNA框架拥有BasicEffect,它可以为你进行所有的计算。本章第一部分解释如何使用BasicEffect给场景添加光照。
但是,如它的名称所示,BasicEffect只能用来计算基本的光照。如果你想在场景中添加点光源该怎么办呢,例如一个蜡烛?或许你还想在场景中添加多个光源,给物体添加阴影。
要解决这些问题,你需要在HLSL中编写自己的effect。本章的第二部分首先介绍创建与BasicEffect相同功能的HLSL effects。
然后你要学习如何实现额外的功能,诸如支持点光源和聚光灯。最后一个教程介绍延迟绘制(deferred rendering),让你可以同时使用大量的光源照亮场景,你还将学习如何使用延迟绘制组合阴影映射技术让物体产生阴影。
本章的教程包含以下内容:
学习XNA 3.0中光照的基本知识,包括正确的光照需要什么以及为什么需要(教程6-1和6-2).
使用BasicEffect计算屏幕上所有像素的光照,在反光表面添加镜面高光(教程6-3和6-4)
当BasicEffect功能不足时编写自己的HLSL effect。首先实现BasicEffect的基本功能(教程6-5, 6-7和6-9)
实现额外的功能,诸如支持点光源和聚光灯(教程6-6和6-8)
使用多个光源让场景更生动。因为基本方法不够用,你需要使用延迟绘制在屏幕中添加光照(教程6-10)
使用阴影映射技术添加阴影。你使用延迟绘制方法实现这个效果,让你可以实现多个光源的阴影(教程6-11)
对物体的每个表面,显卡需要计算表面接受光照的数量,这个光照数量是基于光线方向和表面法线方向的夹角的。幸运的是,XNA框架拥有BasicEffect,它可以为你进行所有的计算。本章第一部分解释如何使用BasicEffect给场景添加光照。
但是,如它的名称所示,BasicEffect只能用来计算基本的光照。如果你想在场景中添加点光源该怎么办呢,例如一个蜡烛?或许你还想在场景中添加多个光源,给物体添加阴影。
要解决这些问题,你需要在HLSL中编写自己的effect。本章的第二部分首先介绍创建与BasicEffect相同功能的HLSL effects。
然后你要学习如何实现额外的功能,诸如支持点光源和聚光灯。最后一个教程介绍延迟绘制(deferred rendering),让你可以同时使用大量的光源照亮场景,你还将学习如何使用延迟绘制组合阴影映射技术让物体产生阴影。
本章的教程包含以下内容:
学习XNA 3.0中光照的基本知识,包括正确的光照需要什么以及为什么需要(教程6-1和6-2).
使用BasicEffect计算屏幕上所有像素的光照,在反光表面添加镜面高光(教程6-3和6-4)
当BasicEffect功能不足时编写自己的HLSL effect。首先实现BasicEffect的基本功能(教程6-5, 6-7和6-9)
实现额外的功能,诸如支持点光源和聚光灯(教程6-6和6-8)
使用多个光源让场景更生动。因为基本方法不够用,你需要使用延迟绘制在屏幕中添加光照(教程6-10)
使用阴影映射技术添加阴影。你使用延迟绘制方法实现这个效果,让你可以实现多个光源的阴影(教程6-11)
相关文章推荐
- 在场景中添加光线——使用Deferred Shading在场景中添加多光源
- 在场景中添加光线——在Deferred Shading引擎中添加阴影能力
- 在场景中添加光线——定义法线和使用BasicEffect
- 在场景中添加光线——在顶点间共享法线
- 在场景中添加光线——给光线添加更高的细节:逐像素光照
- 在场景中添加光线——在反光表面添加镜面高光
- 在场景中添加光线——添加HLSL Vertex Shading
- 在场景中添加光线——使用HLSL定义点光源
- 在场景中添加光线——添加HLSL逐像素光照
- 在场景中添加光线——使用HLSL定义聚光灯
- 在场景中添加光线——添加HLSL镜面高光
- android Camera 中添加一种场景模式
- Q102:光线追踪场景(2)——PLYs(多种模型汇集)
- Unity NGUI 2D场景添加按钮
- 为speedphp最新版添加 仿Yii 的简易版 数据验证 支持不同场景,自定义回调
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 【SuperMap .Net 组件】场景中添加DEM三维地形
- .Net之路(六)概述为vs2010自定义添加版权信息
- 体绘制(Volume Rendering)概述之4:光线投射算法(Ray Casting)实现流程和代码(基于CPU的实现)