Light Mapping = Dark Mapping (光照映射、黑暗映射)

本质上也是多贴一张图,他是做相乘操作。第2张纹理通常中间亮,外面暗。如果是简单的 Modulate,那么实际上所有像素要嘛不变,要嘛变暗。操作还有可能是 Modulate2X,Modulate4X,那就有可能变亮也有可能变暗了。

Grow Mapping(发光映射)

本质上也是多贴一张图,他是做相加操作。注意,这个相加是无符号相加,也就是说相加如果超过1,那么就变成1。

Detail Mapping(细节映射)

本质上也是多贴一张图,他做的是有符号相加操作(add signed)。操作相当于无符号相加后,再减0.5。这种方法的效果是有的像素变暗了,有的像素变亮了,而且变化比较突然,看起来好像物体表面好像不太平,因此就是“增加了细节”。注意,这个是固定管线提供的功能,Unity会把他单独拎出来支持。

Bump Mapping (凹凸贴图)

就是贴法线贴图!逐像素计算光照!

纹理坐标自动生成(下面这个链接是解释最详细的)

http://resumbrae.com/ub/dms424_s05/10/print.html

GL_OBJECT_LINEAR

GL_EYE_LINEAR

参考上面的链接!

D3DTSS_TCI_CAMERASPACEPOSITION  (Direct3D 9)

以顶点在观察坐标系中的顶点坐标作为该纹理层的纹理坐标输出.即在相机空间里,顶点坐标的u,v是这样计算的.u = x, v = y, (如果是三维纹理,w = z).

D3DTSS_TCI_CAMERASPACENORMAL  (Direct3D 9)

与上面类似

D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR  (Direct3D 9)

鸡巴毛。把顶点看做向量,当成入射线,与法线计算后生成的反射线做为uv坐标?

D3DTSS_TCI_SPHEREMAP  (Direct3D 9)

GL_SPHERE_MAP  (OpenGL)

相机往顶点方向形成的入射向量,与法线计算得到的反射向量做为uv坐标。这种是要和贴图相配合,贴图要反映360周围环境,例如下图:

概念:Sphere Mapping、Reflection Mapping、Environment Mapping

都一样!!FUCK,搞那么多名字。通常就是一张上面那张图。有可能是自动生成纹理坐标(固定管线),也就是 D3DTSS_TCI_SPHEREMAP 或者 GL_SPHERE_MAP。或者是美术导出纹理坐标。

这种效果一般,摄像机方向变的时候,看到的东西是一样的,离你近的点上面的东西就一模一样。如果摄像机不动,物体动,还比较正常。

Cube Mapping

效果比较好!!摄像机动的时候也会动!!比较真实。

分成2种情况,1是准备6张贴图,每次贴上去。2是实时拍这6张贴图,很慢。

 关于3D绘制顺序/排序/半透明物体的问题

http://www.opengpu.org/forum.php?mod=viewthread&tid=422

Misc

1.为了提高性能,现代图形硬件通常都在运行 fs 之前进行深度测试。如果在 fs 中写入 gl_FragDepth,会让他取消这种优化,在执行fs 后才做深度测试,这样会很慢。

3D知识补充的更多相关文章

  1. Redis基础知识补充及持久化、备份介绍(二)--技术流ken

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...

  2. CRM中QueryDict和模型表知识补充

    CRM中QueryDict和模型表知识补充 1.QueryDict的用法 request.GET的用法:1.在页面上输入:http://127.0.0.1:8000/index/print(reque ...

  3. Android知识补充(Android学习笔记)

    Android知识补充 ●国际化 所谓的国际化,就是指软件在开发时就应该具备支持多种语言和地区的功能,也就是说开发的软件能同时应对不同国家和地区的用户访问,并针对不同国家和地区的用户,提供相应的.符合 ...

  4. (C/C++学习笔记) 二十四. 知识补充

    二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...

  5. SQL语句之 知识补充

    SQL语句之 知识补充 一.存储过程 运用SQL语句,写出一个像函数的模块,这就是存储过程. 需求: 编写存储过程,查询所有员工 -- 创建存储过程(必须要指定结束符号) -- 定义结束符号 DELI ...

  6. Python学习---django知识补充之CBV

    Django知识补充之CBV Django: url    -->  def函数      FBV[function based view]  用函数和URL进行匹配 url    --> ...

  7. 4-5 Scrapy知识补充

    FormRequest FormRequest类是专门用来处理HTML表单的,同时对隐藏的表单处理也很方便.适合用来完成登录操作. 类原型:class scrapy.http.FormRequest( ...

  8. Redis基础知识补充及持久化、备份介绍

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)–技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis持 ...

  9. 大数据学习day23-----spark06--------1. Spark执行流程(知识补充:RDD的依赖关系)2. Repartition和coalesce算子的区别 3.触发多次actions时,速度不一样 4. RDD的深入理解(错误例子,RDD数据是如何获取的)5 购物的相关计算

    1. Spark执行流程 知识补充:RDD的依赖关系 RDD的依赖关系分为两类:窄依赖(Narrow Dependency)和宽依赖(Shuffle Dependency) (1)窄依赖 窄依赖指的是 ...

随机推荐

  1. Asp.Net应用运行原理

    一.运行原理图 二.对于HttpModule和HttpHandler的概念可能还不是很清楚,请先看Asp.Net应用生命周期.RAR 或者 Asp.Net深入解析 第四章,流程图太大无法粘贴 三.传智 ...

  2. php练习题:投票

    通过连接数据库,对数据库的增删改来实现一个投票的进行与结果的显示: 方法一: 主页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...

  3. hdu1005 矩阵

    //Accepted hdu1005 0MS 248K #include <cstdio> #include <cstring> #include <iostream&g ...

  4. 生成Apk遇到的问题

    conversion to dalvik format failed with error 1 android proguard keep Parameterized class

  5. 12-27cell常用的属性

    1.创建cell //    创建一个cell并且设置cell的风格 UITableViewCell *cell  = [[UITableViewCell alloc]initWithStyle:UI ...

  6. C++中的数组与指针

    数组与指针看起来很像 int a[] = {1, 2 ,3}; int *p = a; 如此,我们可以p[0], p[1], p[2] 看起来,与直接使用数组名没什么两样,但是看这段代码 sizeof ...

  7. 【LeetCode OJ】Populating Next Right Pointers in Each Node II

    Problem Link: http://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ OK... ...

  8. Ajax中的eval函数的用法

    eval的定义和使用: Eval它是用来计算某个字符串,并且执行其中的JavaScript代码. 语法: 1) eval函数接受一个string这个参数,并且这个参数是必须的,这个参数就是要计算的这个 ...

  9. Linux交叉开发环境搭建 —— 效率之源

    楼主今天终于把所有Linux开发环境需要的软件下载完毕了.虽然以前也是搭建过的,时间久了又折腾了一晚上. 交叉环境: Windows.Linux文件共享 SecureCRT 连接虚拟机终端 工具: V ...

  10. 实现Magento多文件上传代码功能开发

    在Magento中上传单个文件很简单,可以直接在继承的Mage_Adminhtml_Block_Widget_Form类中直接添加如下组件Field:  对于图片:   $fieldset->a ...