精华内容
下载资源
问答
  • Mipmap

    2019-12-13 11:56:44
    为了加快渲染速度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP map 或者 mipmap。这个技术在三维游戏中被非常广泛的使用。“MIP”来自于拉丁语multum in parvo的...

    在三维计算机图形的贴图渲染中有一个常用的技术被称为Mipmapping。为了加快渲染速度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP map 或者 mipmap。这个技术在三维游戏中被非常广泛的使用。“MIP”来自于拉丁语 multum in parvo 的首字母,意思是“放置很多东西的小空间”。Mipmap 需要占用一定的内存空间,同时也遵循小波压缩规则 (wavelet compression)。

     

    目录

    来源

    Mipmapping技术在1983年由Lance Williams 发明,在他的论文 Pyramidal parametrics 有描述。[1]

    如何使用

    上面是一个mipmap 如何储存的例子,左边的主图伴有一系列逐层缩小的备份小图

    Mipmap中每一个层级的小图都是主图的一个特定比例的缩小细节的复制品。虽然在某些必要的视角,主图仍然会被使用,来渲染完整的细节。但是当贴图被缩小或者只需要从远距离观看时,mipmap就会转换到适当的层级。事实上,在三线性过滤(trilinear filtering)起作用时,会在两个相近的层级之间切换。

    因为mipmap贴图需要被读取的像素远少于普通贴图,所以渲染的速度得到了提升。而且操作的时间减少了,因为mipmap的图片已经是做过抗锯齿处理的,从而减少了实时渲染的负担。放大和缩小也因为mipmap而变得更有效率。

    如果贴图的基本尺寸是256x256像素的话,它mipmap就会有8个层级。每个层级是上一层级的四分之一的大小,依次层级大小就是:128x128;64x64;32x32;16x16;8x8;4x4;2x2;1x1(一个像素)。例如在一个场景中,渲染贴图需要填满的空间大小是40x40像素的话,如果没有三线性过滤,那32x32 会被放大显示,或者有三线性过滤,会在64x64和32x32之间切换。最简单的生成贴图的方法就是依次做平均,当然也可以用更加高级的算法。

    展开全文
  • mipmap

    2017-03-26 16:08:20
    Mipmap是什么 为了加快渲染速度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP(multum in parvo) map 或者 mipmap。 首先从MIPMAP的原理说起,它是把一张贴图...

    Mipmap是什么

            为了加快渲染速度减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP(multum in parvo) map 或者 mipmap。

    技术分享

            首先从MIPMAP的原理说起,它是把一张贴图按照2的倍数进行缩小,直到1X1,把缩小的图都存储起来。在渲染时,根据一个像素离眼睛为之的距离,来判断从一个合适的图层中取出texel颜色赋值给像素在D3D和OGL都有相对应的API控制接口。

    多级渐进纹理由一组分辨率逐渐降低的纹理序列组成,每一级纹理宽度和高度都是上一级纹理宽度和高度的一半。宽和高不一定相等,也就是说,这些纹理不一定都是正方形。但纹理宽和高最好是2的n次幂,因为mipmap处理过的都是2的n次幂。


            透过它的工作原理我们可以发现,硬件总是根据眼睛到目标的距离,来玄奇最适合当前屏幕像素分辨率的图层。假设一张32768x32768的mipmap贴图,当前屏幕分辨率为1024*1024。眼睛距离物体比较近时,mipmap最大也只可能从1024*1024的Mipmap图层选取texel。再次,当使用三线性过滤(trilinear)时,最大也只能访问2048*2048的图层选取texel,来和1024*1024图层中的像素进行线性插值。

            Direct3D在纹理映射时,自动选择一幅与物体大小最接近的纹理进行渲染。当物体离投影平面较远时,Direct3D会选择一张尺寸较小、分辨率较低的纹理进行渲染;当物体离投影平面较近时,Direct3D会选择一张尺寸较大、分辨率较高的纹理进行渲染。Direct3D将纹理序列看成一条多级渐进纹理链。链头处纹理的分辨率最高,下一级往后依次递减,链尾处纹理的分辨率最低。

            Direct3D能估计出多级渐进纹理链中哪幅纹理的分辨率最接近想要的输出结果,然后它将像素映射到纹理空间。当最终显示的图形大小介于任意两级纹理图形之间时,Direct3D将两级纹理的相应元素进行混合后显示。

            多级渐进纹理过滤能够有效地提高图形渲染速度当物体离投影平面较远时,Direct3D会选择一张尺寸较小的纹理进行渲染,而无需经过复杂的诸如各向异性纹理过滤,并且由于这时纹理需要的显存比不使用多级渐进纹理时小,因此能有效地减少纹理载入显存的时间。缺点是占用更高的内存和显存,而且占用更多的磁盘空间(解决:使用dds压缩存储),所有的低精度层级加起来会增加约1/2的存储空间。有关dds和纹理过滤点击查看原文。



    如何设置Mipmap

    设置贴图的Texture Type为Advanced类型 → 勾选Generate Mip Maps → Apply应用


    来看看贴图的变化,可以看出生成了对应的8个Mip


    如果我们使用的贴图不需要这样效果的话,就一定要把Generate Mip Maps选项和Read/Write Enabled选项取消勾选



    设置多级渐进纹理过滤方式

            当最终显示的纹理贴图大小介于任意两级纹理之间时,Direct3D能够取得两级纹理元素进行混合后显示,具体的混合方式由指定的多级渐进纹理过滤方式决定。可以调用函数IDirect3DDevice9::SetSamplerState()设置多级渐进纹理过滤方式,将第一个参数设为纹理层序号,第二个参数设为D3DSAMP_MIPFILTER表示多级渐进纹理过滤,第三个参数设为在相邻纹理级之间的过滤方式,可取枚举类型D3DTEXTUREFILTERTYPE的任意值。下面的示例代码设置相邻纹理级之间的过滤方式为线性过滤。

    g_device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);

            如果将第三个参数设为D3DTEXF_NONE,那么就会一直使用最高一级的纹理,即禁用多级渐进纹理过滤。如果将其设为D3DTEXF_POINT,就会只使用与图元大小最匹配的一级纹理。如果将其设为D3DTEXF_LINEAR,Direct3D就将与图元大小最匹配的两级纹理以线性方式混合。

    需要注意的是,多级纹理过滤是缩小和放大过滤器的结合。例如,如果将缩小和方法过滤器设为线性过滤,但是多级纹理过滤方式设为最近点采样,Direct3D就会选择与要显示的纹理贴图大小最接近的纹理级别,在该级纹理上完成双线性纹理过滤,并将结果作为像素的值。如果将缩小、放大过滤器和多级渐进纹理都设置为线性过滤,则Direct3D就会在两个最接近的纹理级别上都进行双线性纹理过滤,然后再对相邻两级纹理图形上对应的两个纹理颜色进行加权平均,最后的结果作为单个像素值。这种为了图元中的一个像素,而结合了两幅纹理,共8个像素的技术,称为“三线性过滤”,因为它在纹理的三个方向----u、 v和纹理级别上都进行了线性过滤。

            可以通过IDirect3DDevice9::SetSamplerState()函数设置实际渲染时纹理过滤的最大级数,其中需要将第二个参数设为D3DSAMP_MAXMIPLEVEL,第三个参数设为实际渲染时纹理过滤的最大级数。下面的示例代码设置纹理层0的最大多级纹理过滤级数为16。

    g_device->SetSamplerState(0, D3DSAMP_MAXMIPLEVEL, 16);

            还可以通过将IDirect3DDevice9::SetSamplerState()的第二个参数设为D3DSAMP_MIPMAPLODBIAS,设置多级纹理映射级数偏移值。如果对某个纹理映射设置正偏移值,得到的图形结果就会比原来的更清晰,但锯齿更多;反之设为负偏移值,得到的图形结果就会更模糊。


    原文:

    MipMap

    参考文章:

    Mipmap与纹理过滤

    unity之mipmap


    展开全文
  • MipMap

    千次阅读 2017-08-18 15:01:42
    MipMap 首先从MIPMAP的原理说起,它是把一张贴图按照2的倍数进行缩小。直到1X1。把缩小的图都存储起来。在渲染时,根据一个像素离眼睛为之的距离,来判断从一个合适的图层中取出texel颜色赋值给像素。在D3D和OGL都...
    
    首先从MIPMAP的原理说起,它是把一张贴图按照2的倍数进行缩小。直到1X1。把缩小的图都存储起来。在渲染时,根据一个像素离眼睛为之的距离,来判断从一个合适的图层中取出texel颜色赋值给像素。在D3D和OGL都有相对应的API控制接


    透过它的工作原理我们可以发现,硬件总是根据眼睛到目标的距离,来玄奇最适合当前屏幕像素分辨率的图层。假设一张32768x32768的mipmap贴图,当前屏幕分辨率为1024*1024。眼睛距离物体比较近时,mipmap最大也只可能从1024*1024的Mipmap图层选取texel。再次,当使用三线性过滤(trilinear)时,最大也只能访问2048*2048的图层选取texel,来和1024*1024图层中的像素进行线性插值。

    为了加快渲染速度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP map 或者 mipmap

     

    多级渐进纹理由一组分辨率逐渐降低的纹理序列组成,每一级纹理宽度和高度都是上一级纹理宽度和高度的一半。宽和高不一定相等,也就是说,这些纹理不一定都是正方形。

    Direct3D在纹理映射时,自动选择一幅与物体大小最接近的纹理进行渲染。当物体离投影平面较远时,Direct3D会选择一张尺寸较小、分辨率较低的纹理进行渲染;当物体离投影平面较近时,Direct3D会选择一张尺寸较大、分辨率较高的纹理进行渲染。Direct3D将纹理序列看成一条多级渐进纹理链。链头处纹理的分辨率最高,下一级往后依次递减,链尾处纹理的分辨率最低。

    Direct3D能估计出多级渐进纹理链中哪幅纹理的分辨率最接近想要的输出结果,然后它将像素映射到纹理空间。当最终显示的图形大小介于任意两级纹理图形之间时,Direct3D将两级纹理的相应元素进行混合后显示。

    多级渐进纹理过滤能够有效地提高图形渲染速度当物体离投影平面较远时,Direct3D会选择一张尺寸较小的纹理进行渲染,而无需经过复杂的诸如各项异性纹理过滤,并且由于这时纹理需要的显存比不使用多级渐进纹理时小,因此能有效地减少纹理载入显存的时间。缺点是对内存的要求比较高


    设置多级渐进纹理过滤方式

    当最终显示的纹理贴图大小介于任意两级纹理之间时,Direct3D能够取得两级纹理元素进行混合后显示,具体的混合方式由指定的多级渐进纹理过滤方式决定。可以调用函数IDirect3DDevice9::SetSamplerState()设置多级渐进纹理过滤方式,将第一个参数设为纹理层序号,第二个参数设为D3DSAMP_MIPFILTER表示多级渐进纹理过滤,第三个参数设为在相邻纹理级之间的过滤方式,可取枚举类型D3DTEXTUREFILTERTYPE的任意值。下面的示例代码设置相邻纹理级之间的过滤方式为线性过滤。

    g_device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);

    如果将第三个参数设为D3DTEXF_NONE,那么就会一直使用最高一级的纹理,即禁用多级渐进纹理过滤。如果将其设为D3DTEXF_POINT,就会只使用与图元大小最匹配的一级纹理。如果将其设为D3DTEXF_LINEAR,Direct3D就将与图元大小最匹配的两级纹理以线性方式混合。

    需要注意的是,多级纹理过滤是缩小和放大过滤器的结合。例如,如果将缩小和方法过滤器设为线性过滤,但是多级纹理过滤方式设为最近点采样,Direct3D就会选择与要显示的纹理贴图大小最接近的纹理级别,在该级纹理上完成双线性纹理过滤,并将结果作为像素的值。如果将缩小、放大过滤器和多级渐进纹理都设置为线性过滤,则Direct3D就会在两个最接近的纹理级别上都进行双线性纹理过滤,然后再对相邻两级纹理图形上对应的两个纹理颜色进行加权平均,最后的结果作为单个像素值。这种为了图元中的一个像素,而结合了两幅纹理,共8个像素的技术,称为“三线性过滤”,因为它在纹理的三个方向----u、 v和纹理级别上都进行了线性过滤。

    可以通过IDirect3DDevice9::SetSamplerState()函数设置实际渲染时纹理过滤的最大级数,其中需要将第二个参数设为D3DSAMP_MAXMIPLEVEL,第三个参数设为实际渲染时纹理过滤的最大级数。下面的示例代码设置纹理层0的最大多级纹理过滤级数为16。

    g_device->SetSamplerState(0, D3DSAMP_MAXMIPLEVEL, 16);

    还可以通过将IDirect3DDevice9::SetSamplerState()的第二个参数设为D3DSAMP_MIPMAPLODBIAS,设置多级纹理映射级数偏移值。如果对某个纹理映射设置正偏移值,得到的图形结果就会比原来的更清晰,但锯齿更多;反之设为负偏移值,得到的图形结果就会更模糊。

    代码:实例下载

    展开全文
  • mipmap纹理

    2012-03-22 21:38:01
    mipmap纹理
  • Android icon适配mipmap

    2021-01-03 17:40:27
    mipmap-ldpi 36*36 px 四周留出1个像素用于填充(无底色) mipmap-mdpi 48*48 px 四周留出1个像素用于填充(无底色) mipmap-hdpi 72*72 px 四周留出2个像素用于填充(无底色 mipmap-xhdpi 96*96 px 四周留出4个像素...
  • Mipmap笔记

    2020-05-25 20:18:09
    为何要使用mipmap 如上图,假设像素覆盖的纹理范围是上图中的黑点的连线范围,那么在连线范围内的纹素(texel)都对改像素有贡献,要做的filter的半径就比较大,效率就低。 解决办法就是prefilter texel,额外把...

    为何要使用mipmap

    如上图,假设像素覆盖的纹理范围是上图中的黑点的连线范围,那么在连线范围内的纹素(texel)都对改像素有贡献,要做的filter的半径就比较大,效率就低。

    解决办法就是prefilter texel,额外把prefilter后的texel存下来,即mipmap。

     

    Triangle Filter下的mipmap level选取

    像素覆盖的texel的范围:(s和t方向)。

    原则,filter width刚好覆盖选择level的4个texel。

    如果mipmap层的数量是nLevels,当前层是l,那么对应的resolution是:

    res = 2^{nLevels - 1 - l}

    假设一个texel在纹理坐标系[0, 1]²下的spacing是w = 1/res,例如纹理大小是512,那么w = 1/512。

    那么上式写成如下:

    \frac{1}{w} = 2^{nLevels - 1 - l}

    \log_2(\frac{1}{w}) = -\log_2(w) = nLevels -1-l

    l= nLevels-1+\log_2(w)

    不要纠结这个公式怎么来的,代入验证自然是正确的。

    再看w如何算?

    纹理坐标系(s,t)对raster坐标系(x,y)求导,求最大值:

    w = max(∂s/∂x, ∂s/∂y, ∂t/∂x, ∂t/∂y)。

    由于我们要求的是覆盖4个像素的w,所以w = w * 2。

     

     

     

    展开全文
  • qt opengl mipmap纹理

    2018-10-06 22:32:53
    一个学习qt opengl中的mipmap的示例,其中包含了和普通纹理的对比。通过对比加深对mipmap纹理的学习。
  • 关于MipMap

    2020-10-25 08:47:29
    关于MipMap 原理 1.MipMap多级江源纹理技术,是在游戏后期的一种游戏优化技术。 2.提前用滤波处理来得到很多更小的图像,形成一个图像金字塔,每一层都是对上一层纹理 优缺点 1.优点 远时使用精度低的,近时使用精度...
  • 关于Mipmap

    2018-10-26 17:26:33
    为什么用MIPMAP -保留细节:当纹理缩小大于2倍时,使用双线性过滤器会丢失很多细节,纹理高频部分会放大。因为超过4个像素映射到一个像素。可以通过采样更多的像素来解决,但是耗性能。 -性能:使用小的纹理texcache...
  • mipmap

    2019-09-28 22:33:32
    mipmap 之前讲了生成 原理 这个讲下我对性能的理解 mipmap 对性能的影响 包含两方面 minification时,采样多个textel得到1个pixel颜色,如果是mipmap形成相邻两个pixel的两组textels更为接近 会都在tex cache...
  • mipmap

    2019-09-28 22:32:47
    讲一下mipmap 生成的时候 指定texture 的mipmaplevel 8 然后memory自动就会那么大的 画的时候要在lineraspace(因为我是gpucopy所以不涉及这个问题 可能) 用不同view 对应不同level 在loop里 每次对同一个...
  • Unity中关于 Mipmap

    万次阅读 多人点赞 2019-06-09 15:21:04
    关于什么是Mipmap, 百科都有~ ...为了加快渲染速度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP map 或者 mipmap。这个技术在三维游戏中被非常广泛...
  • 在android studio中我们创建项目后,在资源res文件中有drawable和mipmap两种存放图片的文件夹,在使用哪一个文件夹来存放图片,一直都很有争议:android 在 API level 17 加入了 mipmap 技术,对 bitmap 图片的渲染...
  • Mipmap drawables图标

    2020-05-10 09:23:01
    Since Android 4.3 (Jelly Bean) we can now make use of the res/mipmap folders to store "mipmap" imag
  • mipmap相关处理

    2019-05-16 21:09:25
    mipmap如果开启之后图片变模糊了,关闭mipmap就清晰了 很大可能是因为质量设置里面的图片质量不是full res。所以图片模糊了。只要改变为fullres就好 开启mipmap: 无论远处或近处都会变得模糊,但是就是没有...
  • unity之mipmap

    2018-07-21 18:22:14
    Mipmap技术有点类似于LOD技术,但是不同的是,LOD针对的是模型资源,而Mipmap针对的纹理贴图资源 使用Mipmap后,贴图会根据摄像机距离的远近,选择使用不同精度的贴图。 缺点:会占用内存,因为mipmap会根据摄像机...
  • drawable & mipmap

    2020-12-22 11:33:07
    文章目录前言一、mipmap根据密度划分二、一些结论2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文...
  • mipmap和drawable

    2017-03-20 17:23:28
    mipmap用来放APP图标 其它还是放到drawable下面,网上流传的说官方建议使用mipmap是胡扯的谷歌官方:drawable/ For bitmap files (PNG, JPEG, or GIF), 9-Patch image files, and XML files that describe ...
  • Untiy3D Mipmap

    2018-07-13 11:25:16
    () 增加约33%的内存Mipmap技术有点类似于LOD技术,但是不同的是,LOD针对的是模型资源,而Mipmap针对的纹理贴图资源使用Mipmap后,贴图会根据摄像机距离的远近,选择使用不同精度的贴图。缺点:会占用内存,因为...
  • Unity Custom Mipmap

    2020-02-03 18:26:21
    基于Github上Unity Custom Mipmap 工程 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System.IO; using System.Text.RegularExpressions; public ...
  • Unity3D mipmap

    2020-11-04 10:59:44
    5.1 Mipmap和过滤 当纹理的像素(texels)与投影到的像素不完全匹配的时候,会发生什么?这会造成一定的不匹配,这必须以某种方式解决。 这就是通过过滤模式索要控制的内容。 最直接的过滤模式是点模式(无...
  • D3D10 技术Mipmap

    2018-01-10 15:36:02
    Mipmap 是我们在使用纹理的时候一种常用的技术. 在上次写 D3D10 Demo 的时候我已经发现 D3D10 在创建纹理的时候不能自动生成 Mipmap , 通过这两天的仔细了解总结一下在 D3D10 中与纹理 Mipmap 有关的东西.   ...
  • android mipmap文件夹

    千次阅读 2015-05-15 10:06:01
    mipmap 主要是应用图标icon的存放,其他的切图一如既往放在drawable下面。那么为何需要一个mipmap文件夹呢?谷歌官方有提到,像Nexus 6是出于xxhdpi与xxxhdpi之间的。对于xxhdpi不行,而xxxhdpi里面的icon会显示比较...
  • mipmap vs drawable

    2016-08-05 18:22:52
    现在用Android Studio进行安卓开发,创建项目时会自动创建mipmap文件夹,打开之后里面存放的应用程序的启动图标,这种情况下,问题就来了,默认将启动图标放在了mipmap文件夹下,其他的图片该怎么存放呢?...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,981
精华内容 27,592
关键字:

mipmap