MipMap这个东东,记得我除了最早在DX9龙书上了解了其基本概念后,以后便再没接触过,因为从创建到使用都是硬件一手包办,所以这个知识点很容易被遗忘和忽视。这几天空闲时恰好发现了一点MipMap引起的问题,就专门看了下,发现很多东西原来我之前根本就没理解对。我之前竟然傻逼的以为MipMap是用来加速渲染的。。。其实它是用来改善渲染走样的,即提升画面质量。

相关的资料我看了下面这几个,感觉很不错:

《3D编程大师技巧》12章Mip Mapping and Trilinear Texture Filtering 一节

《Real-Time Rendering》3rd第6章专门讲了放大缩小走样相关

http://blog.sina.com.cn/s/blog_5f99aed00100d7pw.html

http://www.gamasutra.com/view/feature/3301/runtime_mipmap_filtering.php

http://www.lihuasoft.net/article/show.php?id=4509

看了最后一个链接的文章后,我终于明白了Ogre的Terrain Sample中有两句代码是什么意思。。。

MaterialManager::getSingleton().setDefaultTextureFiltering(TFO_ANISOTROPIC);
MaterialManager::getSingleton().setDefaultAnisotropy();

即各向异性过滤的用处,建议读这篇文章。下面是各向异性效果的对比:

                                DX11未开启各向异性过滤 

                            DX11开启16x各向异性过滤

下面贴一些有无MipMap的比较图:

                               地形渲染,有MipMap

                DX11,关闭Mipmap,可以看出越往远越有麻点的感觉,而且相机移动会有"sparklies"效果

                      DX11,开启MipMap

                DX11,关闭MipMap,远处已经完全失真了

我也在自己的软渲中加入了非常弱智的MipMap。生成是采用了简单的box-filter,mip选择是根据相机空间z值,比如每隔几百米增加一个mip层。。。渲染也是选择单层mip,而不是Trilinear。。

下面这幅图显示了采用各层mip的分布,效果太差了,其实跟没mipmap差不多。。。Mip-banding也很严重。。

Mip-Mapping很重要的更多相关文章

  1. elasticsearch 之mapping

    搭好elk 后,有时候会发现kibana 统计数据时,数据类型不对,这个时候就和elasticsearch的mapping有关,虽然我们可以用logstash修改传入es里的数据类型,比如 float ...

  2. elasticsearch中的mapping简介

    默认mapping elasticsearch(以下简称ES)是没有模式(schema)的,当我们执行以下命令: curl -d '{"name":"zach" ...

  3. anisotropy texture filtering

    http://www.extremetech.com/computing/51994-the-naked-truth-about-anisotropic-filtering 1. 为什么在纹理采样时需 ...

  4. 【ORM】--FluentNHibernate之AutoMapping详解

           上篇文章详细讨论了FluentNHibernate的基本映射的使用方法,它的映射基本用法是跟NHibernate完全一样的,首先要创建数据库链接配置文件,然后编写Table的Mappin ...

  5. MoleHill Getting Started AGAL(转)

    1.The OpCode This is what AGAL looks like: //vertex shader m44 op, va0, vc0 // pos to clipspace mov ...

  6. 【图像处理】Bilinear Image Scaling

    Bilinear image scaling is about the same as nearest neighbor image scaling except with interpolation ...

  7. Unity 5 Game Optimization (Chris Dickinson 著)

    1. Detecting Performance Issues 2. Scripting Strategies 3. The Benefits of Batching 4. Kickstart You ...

  8. Java.WeakReference-SoftReference-PhantomReference

    Weak Reference, Soft Reference, Phantom Reference 1. Introduction "Weak reference objects, whic ...

  9. es简单介绍及使用注意事项

    是什么? Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库. El ...

随机推荐

  1. LeetCode(5) - Longest Palindromic Substring

    这道题要求的是给你一个string, 如“adcdabcdcba",要求返回长度最大的回文子字符串.这里有两个条件,一是子字符串,而是回文.用纯暴力搜索的话,需要用到O(n^3)的时间,必然 ...

  2. c++数组、字符串操作

    一.数组操作 1.数组初始化1-1一维数组初始化:标准方式一: int value[100]; // value[i]的值不定,没有初始化标准方式二: int value[100] = {1,2}; ...

  3. html5 canvas图片翻转

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 清空easyui datagrid

    $('#grid').datagrid("loadData",{total:0,rows:[]});

  5. 第二百零一天 how can I坚持

    sql要学的东西还很多,很简单的一个sql都不会写,还得请教别人,哎. 八千代.铜钱草,小叶元宝,绿萝.还有我的鱼,还有罗娜. 今天试用了一下三星,系统优化就是不行啊,掉电太快,想搞个小米5,还想买个 ...

  6. 【转】使用json-lib进行Java和JSON之间的转换

    原文链接:http://www.cnblogs.com/mailingfeng/archive/2012/01/18/2325707.html 1. json-lib是一个java类库,提供将Java ...

  7. Java Applet and ServiceLoader

    http://stackoverflow.com/questions/14062813/java-applet-and-serviceloader

  8. shell调试选项

    [shell调试选项] 一些常用选项的用法: -n 只读取shell脚本,但不实际执行 -x 进入跟踪方式,显示所执行的每一条命令 -c "string" 从strings中读取命 ...

  9. ruby中实例变量、类变量等等的区别和联系

    ruby的变量有局部变量,全局变量,实例变量,类变量,常量. 1.局部变量 局部变量以一个小写字母开头或下划线开头 局部变量有局部作用域限制(比如一个block内),它的作用域起始于声明处,结束于该声 ...

  10. HDU 1712 ACboy needs your help (分组背包模版题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1712 有n门课,和m天时间.每门课上不同的天数有不同的价值,但是上过这门课后不能再上了,求m天里的最大 ...