Games101笔记——Lecture9:Shading3 (Texture Mapping cont.)

Lecture9:Shading3 (Texture Mapping cont.)

  • 前情回顾:略
  • 今日内容
    • 重心坐标
    • 纹理怎么贴?
    • 纹理的应用

Interpolation Across Triangles: Barycentric Coordinates 重心坐标

  • 我们为什么要在三角形内部插值?
    • 为了在三角形内部平滑过渡
  • 我们插值什么内容?
    • 纹理坐标,颜色,法向量。。。
  • 怎么做插值?
    • 重心坐标
  • 重心坐标定义于三角形上
    在这里插入图片描述
    • 重心坐标其实是两个数
    • 这个平面上每个点都可以用重心坐标表示
    • 如果α,β,γ之和为一,表示的坐标在三角形所在平面内
    • 进一步,如果又有α,β,γ都非负,表示的坐标在三角形内
  • A点自己的重心坐标
    在这里插入图片描述
  • 求任一点的重心坐标(通过面积计算)
    在这里插入图片描述
  • 一个特殊的点,重心
  • 求任一点的重心坐标(更容易的方法)
  • 怎么使用重心坐标插值?
    在这里插入图片描述
    • 但是在投影变换下无法保证重心坐标不变!
    • 插值时不应该忽略深度!
  • 怎么使用纹理插值?
    在这里插入图片描述

这么简单做会出什么问题?

  • 问题一:纹理的放大(纹理太小了怎么办?)

    • pixel:画面像素,texel:纹理像素
    • 对于非整数纹理坐标如何得到其值
      在这里插入图片描述
      • 最近 Nearest
      • **双线性插值 Bilinear **
        • 找邻近的四个点
        • 离左下角的水平、数值距离
        • 然后在u、v分别线性插值
          在这里插入图片描述
      • **Bicubic **
        • 周围十六个,每次用四个做三次插值
  • 问题二:纹理太大了怎么办?

    • 引起更严重的问题!
      在这里插入图片描述
    • 走样:远处摩尔纹,近处锯齿
    • 为什么会这样?
      在这里插入图片描述
    • 当像素覆盖的纹理区域大的时候,不能简单使用像素中心进行采样
    • 之前说的超采样好用吗?
      • 好用,但是开销太大了!
      • 一个像素内有很高频的信号,需要更高频的采样方法,似乎就是用更多的采样点
      • 另一个思路,不采样了!
        • 直接告诉一个区域的平均值是多少:点查询问题和范围查询的问题!
    • Mipmap,允许范围查询,快,但不准确的,仅仅是正方形的
      在这里插入图片描述
      在这里插入图片描述
    • mipmap相比于原图引入了多少额外存储?
      • 一个级数求和问题,只多了1/3的存储量
        • 看图理解为啥1/3也可,不好笔记,用2×2的块想
    • 怎么知道查询的区域有多大? 一种近似:
      在这里插入图片描述
    • 通过区域的大小面积去旋转mipmap
    • 去求出其面积在第几层会变成一个像素的大小
      在这里插入图片描述
    • 这个mipmap层数的变化不连续
    • 怎么做1.8层?
      • 三线性插值:两层有两个双线性插值,对这两个值再插值!
        在这里插入图片描述
      • 开销比较小,游戏中常见
        在这里插入图片描述
    • mipmap的缺陷
      在这里插入图片描述
    • 糊掉了远处的细节,overblur
    • 原因之一:只能查询正方形范围!
  • 各向异性过滤

    • 不同长宽比的图(ripmap,额外开销变为原本3倍),mipmap没有这个
    • 为什么需要不同长宽比?
      在这里插入图片描述
    • 但是对于那种斜着的图形,各向异性过滤仍然不够
    • EWA过滤,把形状拆成圆形多次查询,但是代价大
      在这里插入图片描述
  • 各向异性过滤 n x 指:在水平、竖直方向均压缩m次(2的m次方等于n)

    • 因此只要应用了各向异性过滤,n更大对帧率几乎没有影响。
  • 纹理的应用:下节课讲

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值