zoukankan      html  css  js  c++  java
  • 在场景中添加光线——概述

    给场景添加光照听起来很简单:设置3D世界中物体的位置,定义光源的位置就可以了。但是,虽然看起来让显卡实现光照很简单,其实不是。

    对物体的每个表面,显卡需要计算表面接受光照的数量,这个光照数量是基于光线方向和表面法线方向的夹角的。幸运的是,XNA框架拥有BasicEffect,它可以为你进行所有的计算。本章第一部分解释如何使用BasicEffect给场景添加光照。

    但是,如它的名称所示,BasicEffect只能用来计算基本的光照。如果你想在场景中添加点光源该怎么办呢,例如一个蜡烛?或许你还想在场景中添加多个光源,给物体添加阴影。

    要解决这些问题,你需要在HLSL中编写自己的effect。本章的第二部分首先介绍创建与BasicEffect相同功能的HLSL effects。

    然后你要学习如何实现额外的功能,诸如支持点光源和聚光灯。最后一个教程介绍延迟绘制(deferred rendering),让你可以同时使用大量的光源照亮场景,你还将学习如何使用延迟绘制组合阴影映射技术让物体产生阴影。
    本章的教程包含以下内容:

    • 学习XNA 3.0中光照的基本知识,包括正确的光照需要什么以及为什么需要(教程6-16-2).
    • 使用BasicEffect计算屏幕上所有像素的光照,在反光表面添加镜面高光(教程6-36-4)
    • 当BasicEffect功能不足时编写自己的HLSL effect。首先实现BasicEffect的基本功能(教程6-5, 6-76-9)
    • 实现额外的功能,诸如支持点光源和聚光灯(教程6-66-8)
    • 使用多个光源让场景更生动。因为基本方法不够用,你需要使用延迟绘制在屏幕中添加光照(教程6-10)
    • 使用阴影映射技术添加阴影。你使用延迟绘制方法实现这个效果,让你可以实现多个光源的阴影(教程6-11)
  • 相关阅读:
    爬虫07-requests库cookie和session
    爬虫06-处理不信任的SSL证书
    爬虫05-requests库用法
    爬虫04-cookie
    网络爬虫-爬取拉勾网不成功,登录设置cookie
    爬虫03-简单使用代理
    爬虫02-简单伪装浏览器
    爬虫01-urllib常用函数
    01-matplotlib简单绘图
    21-pandas_apply和transform
  • 原文地址:https://www.cnblogs.com/AlexCheng/p/2120103.html
Copyright © 2011-2022 走看看