第七章 基础纹理

导言

在OpenGL里,纹理空间的原点位于左下角,而在DirectX中,原点位于左上角。Unity中使用的纹理空间是符合OpenGL的传统的,位于纹理左下角。

一、单张纹理

通常使用一张纹理来代替物体的漫反射颜色。

纹理导入面板

  • Filter Mode ,代表纹理拉伸时的滤波模式,支持3种模式: Point、Bilinear、Trilinear;效果依次增加。
  • 纹理缩小时,多个像素将会对应一个目标像素。我们往往需要处理抗锯齿问题。一个最常用的方法是使用多级渐远纹理(mipmapping)技术。即提前用了滤波处理得到了更多更小的图像,储存起来。运行时,可以直接使用。通常需要多占用33%的空间。
    • Point:使用最近邻滤波,在放大或缩小时,采样像素数目通常只有一个,一次图像看起来有种像素风格。
    • Bilinear:使用线性滤波,对于每个目标像素,它会找到4个近邻像素,然后对它们进行线性插值混合后得到的最终像素,因此图像看起来被模糊了。
    • Trilinear:除了Bilinear所做的工作之外,还会在多级渐远纹理之间进行混合。
  • 纹理的最大尺寸:unity允许不同平台发布游戏时,选择不同的分辨率。如果导入的纹理大小超过了Max Texture Size中的设置值,那么unity将会把该纹理缩放为这个最大分辨率。理想情况下,导入的纹理可以是非正方形的,但长宽的大小应该是2的幂。这样unity内部才能进行压缩,而且GPU读取该纹理的速度更快。

二、凹凸映射

两种凹凸映射做法

  1. 高度映射:使用一张高度纹理来模拟表面位移,然后得到一个修改后的法线值。优点是直观,缺点是消耗运行时性能。高度纹理更多用来存储地形信息。高度图中存储的是强度值,表示模型表面局部的海拔高度。

  2. 法线映射:直接存储表面法线信息,由于法线方向的分量范围在[-1, 1],而像素的分量范围是[0,1],因此我们需要做一个映射,通常使用的映射就是。所以我们从法线纹理进行采样后,需要进行一次反映。
    pixel=normal+12pixel = \frac{normal + 1}{2} pixel=2normal+1​

模型空间法线纹理 VS 切线空间法线纹理:

  1. 模型空间优点:

    1. 实现简单,直观;
    2. 在纹理坐标的缝合处和尖锐的边角部分,可见的突变较少;
  2. 切线空间的优点:
    1. 纹理可复用;
    2. 可进行UV动画;
    3. 可压缩;

Unity中的法线纹理类型

  1. Unity可以把法线纹理标识成Normal map类型,此时可以使用shader中内置的UnpackNormal函数,来得到正确的法线方向。

  2. 当我们把纹理类型设置为Normal map,可以让Unity根据不同平台对纹理进行压缩(DXT5nm)。原理就是发现纹理只有两个通道是真正具有信息的,第三个通道的值可以用另外两个推导出来(法线是单位向量,切线空间下的法线方向的Z分量为正)。

三、 渐变纹理

使用渐变纹理来控制漫反射光照的结果。

  • 书本这里使用半兰伯特模型,计算UV坐标。书里没有明说这么做的理由是什么,这里部分是我自己思考的。我们的目的是得到颜色分层的结果。观察渐变纹理,我们发现色带前面的对应阴影部分,后面对应光照强烈的部分。所以每个片元收到的光照越强,就应该对应色带值大的分。正好半兰伯特模型也是这样,受到的光照越强,得到的值越大。就这样应用过来了。
  • 注意:渐变纹理的Weap Mode需要设置为Clamp模型,防止纹理采样时由于浮点数精度造成问题。

四、遮罩纹理

遮罩纹理,字面翻译就是通过遮罩保护某些区域,使它免于某些修改。比如书中例子的高光遮罩纹理,在纹理RGBA的R分量里储存了mask值。在shader中通过下面的语句使用。采样了遮罩纹理,然后将值乘在原高光分量上。用来控制高光的强度。

// Get the mask value
fixed specularMask = tex2D(_SpecularMask, i.uv).r * _SpecularScale;
// Compute specular term with the specular mask
fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(max(0, dot(tangentNormal, halfDir)), _Gloss) * specularMask;
  • 其实看到这里我们已经发现了,我们想逐像素的控制表面属性。就把对应像素的参数都填充在一个纹理里,在shader中参与计算就行了。通常,我们可以充分利用一张纹理的RGBA四个通道,用于储存不同的表面属性参数。

引用

  • 如何创建法线贴图

  • Unity Shader入门精要 阅读笔记十

Unity 基础纹理相关推荐

  1. 着色器编程_unity中的基础纹理,使用Unity Shader实现基础纹理的渲染效果

    学习通过使用Unity Shader实现基础纹理的渲染效果 目录 学习通过使用Unity Shader实现基础纹理的渲染效果 问1:详细描述一下漫反射纹理.高度纹理.法线纹理.渐变纹理和遮罩纹理? 问 ...

  2. 第一阶段unity基础

    第一阶段unity基础 引言 注意: 1.重点:1.适用性(什么时候用,怎么用)<记脑子里>  2.作用(能够解决什么问题) 3.定义  4.操作/语法 2.每天练习必须会独立完成 3.形 ...

  3. Unity 面试题汇总(三)Unity 基础相关

    Unity 面试题汇总(三)Unity 基础相关 目录 Unity 面试题汇总(三)Unity 基础相关 0.FSM(状态机).HFSM(分层状态机).BT(行为树)的区别 1.什么是协同程序? 2. ...

  4. Unity基础——动画编辑Animations、Animator

    Unity基础--动画编辑Animations.Animator 2014-01-10 20:08:32|  分类: Unity3D自学笔记 |  标签:unity  指南  动画  animatio ...

  5. 基础纹理 --Shader入门精要学习(6)

    基础纹理 纹理,即使用纹理映射(texture mapping)技术来控制模型的外观,将一张图片黏在模型表面,逐纹素(用于和像素区分)地控制模型模型颜色.通常会在建模软件中利用纹理展开技术把纹理**映 ...

  6. 大白话版 UnityShader学习(1)-基础纹理研究(一)

    大白话版 UnityShader学习(1)-基础纹理研究(一) 根据冯乐乐大小姐的书来进行学习,总结学习经验,分享心得. 基础纹理 针对于纹理,说白了就是,"啪"的一声,你的妈妈在 ...

  7. Unity基础射线判定以及编辑自定义模型

    Unity基础射线判定以及编辑自定义模型 Unity射线基础解析 Unity UI射线检测 射线判定生成自定义模型 代码很简单没有难度,自己看一下应该就能明白. OK 老规矩,直接上代码: Unity ...

  8. Unity中纹理启用SRGB的坑

    Unity中纹理启用SRGB的坑 __先说结论,在shader中不使用SRGB与Linear的转换函数的前提下,如果该纹理是Albedo.Emissive.Ramp或者其它颜色贴图,建议勾上SRGB, ...

  9. Unity基础学习路线

        Unity基础 C#程序设计 第001课初识unity 第002课初始unity场景树_渲染体系_物理体系 第003课初识Unity C#的基本结构_类_成员_类的函数 第004课Unity ...

  10. Unity 基础 之 xml 使用 Office Excel 轻松编辑保存 xml 数据,并解析读取数据

    Unity 基础 之 xml  使用 Office Excel 轻松编辑保存 xml 数据 目录 Unity 基础 之 xml  使用 Office Excel 轻松编辑保存 xml 数据 一.简单介 ...

最新文章

  1. WinAPI: midiOutGetNumDevs - 获取 MIDI 输出设备的数目
  2. ByteBuffer用法小结
  3. SAP ABAP实用技巧介绍系列之 获得webservice的schema node
  4. dev GridControl双击行事件
  5. Spring——IOC(控制反转)
  6. python三方库之paramiko
  7. 参考的datalist分页helper
  8. C语言如何实现模拟栈
  9. 标定_基于全景基础设施的多摄像机和3D激光雷达校准
  10. jquery 文档就绪函数_jQuery文档准备就绪
  11. 使用apipost工具快速生成在线接口文档
  12. BigDecimal.ROUND_HALF_EVEN (银行家算法)
  13. java char表_char码值对应列表大全
  14. 程序员颈椎疼调整办法
  15. EPICS记录参考3 -- 所有记录都有的字段
  16. GDOI2021自闭记
  17. 使用Python玩转高等数学(2):幂函数
  18. [行人重识别论文阅读]无监督学习发展与小结
  19. 20款漂亮的免费英文字体下载
  20. 坑挺多 | 联邦学习FATE:训练模型(二)

热门文章

  1. EasyUI美化界面项目系统(整合EasyUI_Insdep皮肤)
  2. 软考中级数据库系统工程师复习资料
  3. 【PHP大马】定义、下载、使用、源码
  4. HashKey TokenGazer | 去中心化身份(DID)研究报告
  5. 网页视频流m3u8/ts视频下载
  6. 顶级分区软件Acronis Disk Director 11最新版官方下载
  7. matlab2016数模a,2016年全国数学建模竞赛A题国家一等奖.pdf
  8. 重读模电教材一_童诗白、华成英
  9. 啦啦外卖独立版42.0至尊版全开源含vue代码修复app没声音
  10. Word高效指南 - WORD的自带模板