Direct3D 12——纹理——纹理缩小

news2025/9/16 0:01:54

纹理缩小(miniflcation )是纹理放大的逆运算。在缩小的过程中,大量纹素将被映射到少数纹理之 上 。例如,考虑下列情景:假设有一堵被256x256纹理所映射的墙壁,玩家的观察视角正紧盯着它,并 逐渐向后退却。在此过程中,这堵墙会看上去越来越小,直至它在屏幕上只覆盖大小为64x64像素的区 域。此时,我们就应当将256x256纹素映射到64x64屏幕像素。在这种情况下,像素的纹理坐标处往 往不会有与之对应的纹理图纹素,因此还需要将常数插值过滤器与线性插值过滤器运用于纹理缩小的情形。然而,在执行纹理缩小操作时还有更多的 工作要做。

在透视投影做简单纹理操作后,会变成摩尔纹
在这里插入图片描述

纹理中的屏幕像素
在这里插入图片描述
使用超级采样,就是用多个采样点进行采样,效果是没啥问题,但开销变大了
在这里插入图片描述
从直观上来讲,通过平均下采样 (average downsampling )应当可以使 256x 256 纹素减少到64x64纹素。而mipmap技术则以 占用一些额外的内存为代价来实现与之相似的 功能。在初始化期间(或资源创建时期),通过 对图像下采样来创建mipmap链便可制作出缩 小版的纹理。

因此,这里所指的 求平均值所做的工作实际上就是针对mipmap 的大小执行预计算(提前制作岀不同规格的纹 理)。

mipmap允许(快速、近似、正方形)范围查询
“Mip”来自拉丁语“multum in parvo”,意思是小空间中的群体
在这里插入图片描述

Mip层次结构

在这里插入图片描述
MipMap的存储量比原来多了1/3

使用MipMap做一个近似的在一个正方行形区域内做范围查询,立刻得到这个区域内的平均值是多少
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Mipmap级别的可视化

每个像素都算它会投影到纹理上对应多大的区域,然后把多大的区域计算成我们在第几层Mipmap上找平均值。在这里插入图片描述
如果查询到我们在第1.5层,那怎么办?使用三线性插值,就是在第一层做插值,在第二层做插值然后合起来再做一次插值
在这里插入图片描述
经过三线性插值得到的可视化结果
在这里插入图片描述
在运行时,图形硬件将根据程序员的设定, 从以下两种不同的执行方案中择一而行:

1.在纹理贴图时,选择与待投影到屏幕上的几何体分辨率最为匹配的mipmap层级,并根据具体 需求选用常数插值或线性插值。这便是针对mipmap的点过滤(point filtering ),该名称的由 来是因为此种方法与常数插值很相似一我们仅选取与目标分辨率最邻近的那个mipmap层 级并用它进行纹理贴图。

2.在纹理贴图时,选取与待投影到屏幕上的几何体分辨率最为匹配的两个邻近的mipmap层级(一 个稍大于屏幕上几何体的分辨率,一个稍小于屏幕上几何体的分辨率)。接下来,对这两种mipmap 层级分别应用常量过滤或线性过滤,以生成它们各自相应的纹理颜色。最后,在这两种插值纹理 之间再次进行颜色的插值计算。这个过程称为mipmap的线性过滤(linear filtering ),原因是这种 方法与线性插值比较相似一一我们需要对目标分辨率最邻近的两个mipmap层级进行插值计算。

通过从mipmap链中选取恰当的纹理细节级别,可大大减少纹理缩小的运算次数。

但Mipmap还存在一个问题就是在远处的细节模糊的过分了。
在这里插入图片描述
解决办法:各向异性过滤
Mipmap计算是对角线线上的图,但有一些不同的长宽比做运算。下图轴上做了不均匀的压缩
在这里插入图片描述
屏幕上的任何一个像素映射到纹理上可不一定是一个规律的形状,引用各向异性过滤允许我们对长条形的区域做一个快速的范围查询,但是对斜着的矩形区域还是不行。所已引用了EWA过滤

在这里插入图片描述
EWA过滤
就是可以把不规则的形状拆成很多个圆形,进行多次查询覆盖这个不规则形状.
1.使用多个查找
2.加权平均值
3.Mipmap层次结构仍然有帮助
4.可以处理不规则
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QML控件--Drawer

文章目录一、控件基本信息二、控件使用三、属性成员一、控件基本信息 Import Statement:import QtQuick.Controls 2.14 Since:Qt 5.7 Inherits:Popup 二、控件使用 Drawer:提供一个可以使用滑动手势打开和关闭的侧面板&#xff…

简述内网渗透中常用的隧道工具

frp 项目地址 https://github.com/fatedier/frp/ 简介 frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。 跨平台支持linux,win&a…

【cmake教程】find_path、find_library、find_program

目录 1、find_path 2、find_library 3、find_program find_path 参考文章:CMake中find_path的使用-CSDN博客 find_library 参考文章:CMake中find_library的使用 1、find_path find_path 一般用于在某个目录下查找一个或者多个头文件,命令…

ASP.NET Core - 依赖注入(一)

1. Ioc 与 DI Ioc 和DI 这两个词大家都应该比较熟悉,这两者已经在各种开发语言各种框架中普遍使用,成为框架中的一种基本设施了。 Ioc 是控制反转, Inversion of Control 的缩写,DI 是依赖注入,Inject Dependency 的…

WebSpider蓝蜘蛛网页抓取工具5.1用户手册

概述 关于网页抓取工具 本工具可以抓取互联网上的任何网页,包括需要登录后才能访问的页面。对抓取到页面内容进行解析,得到结构化的信息,比如:新闻标题、作者、来源、正文等。支持列表页的自动翻页抓取,支持正文页多页…

《Vue3实战》 第二章 创建项目和目录结构

1、创建项目 1.1、命令格式:vue create 项目名称 vue create vue3_example0011.2、运行项目 npm run serve1.2.1、增加run命令 启动时想修改命令,例如: npm run dev1、找到项目根路径下的package.json文件; 2、找到【scripts…

webgl-根据鼠标点击而移动

html <!DOCTYPE html> <head> <style> *{ margin: 0px; padding: 0px; } </style> </head> <body> <canvas id webgl> 您的浏览器不支持HTML5,请更换浏览器 </canvas> <script src"./main.js"></script&g…

DDoS攻击实验笔记

DoS&DDoS简介 DoS(Denial of Service)&#xff0c;拒绝服务攻击是通过一些方法影响服务的可用性&#xff0c;比如早期主要基于系统和应用程序的漏洞&#xff0c;只需要几个请求或数据包就能导致长时间的服务不可用&#xff0c;但易被入侵检测系统发现。 DDoS(Distributed D…

大数据Flink进阶(十八):Flink执行图和TaskSlot问题思考

文章目录 Flink执行图和TaskSlot问题思考 一、Flink执行图 二、TaskSlot问题思考 Flink执行图和TaskSlot问题思考 一、Flink执行图 Flink代码提交到集群执行时最终会被转换成task分布式的在各个节点上运行,在前面我们学习到DataFlow数据流图

【中级软件设计师】—操作系统考点总结篇(二)

【中级软件设计师】—操作系统考点总结篇&#xff08;二&#xff09; 1.操作系统概述 1.1操作系统的功能 1.2 特殊的操作系统 1.3 进程的概念和状态 进程与程序的区别&#xff1a; 进程是程序的一次执行过程&#xff0c;没有程序就没有进程 程序是一个静态的概念&#xff0c;…

【网络编程】TCP,UDP协议详解

前言 小亭子正在努力的学习编程&#xff0c;接下来将开启javaEE的学习~~ 分享的文章都是学习的笔记和感悟&#xff0c;如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话&#xff0c;烦请点赞关注支持一波, 感激不尽~~ 目录 前言 TCP协议 TCP协议特点 TCP协议通…

Python 小型项目大全 1~5

一、百吉饼 原文&#xff1a;http://inventwithpython.com/bigbookpython/project1.html 在百吉饼这种演绎逻辑游戏中&#xff0c;你必须根据线索猜出一个秘密的三位数。该游戏提供以下提示之一来响应您的猜测&#xff1a;"Pico"&#xff0c;当您的猜测在错误的位置有…

询问ChatGPT的高质量答案艺术——提示工程指南(更新中……)

目录前言一、提示工程简介二、提示技巧2-1、生成法律文件2-2、添加提示技巧三、角色扮演3-1、智能手机产品描述3-2、添加角色扮演四、标准提示4-1、写一篇有关于新智能手机的评论4-2、添加标准提示、角色提示、种子词提示等等五、示例很少、或者没有示例5-1、生成一个手机配置六…

深度理解PyTorch的WeightedRandomSampler处理图像分类任务的类别不平衡问题

最近做活体检测任务&#xff0c;将其看成是一个图像二分类问题&#xff0c;然而面临的一个很大问题就是正负样本的不平衡问题&#xff0c;也就是正样本&#xff08;活体&#xff09;很多&#xff0c;而负样本&#xff08;假体&#xff09;很少&#xff0c;如何处理好数据集的类…

springboot实现邮箱验证码功能

引言 邮箱验证码是一个常见的功能&#xff0c;常用于邮箱绑定、修改密码等操作上&#xff0c;这里我演示一下如何使用springboot实现验证码的发送功能&#xff1b; 这里用qq邮箱进行演示&#xff0c;其他都差不多&#xff1b; 准备工作 首先要在设置->账户中开启邮箱POP…

ChatAudio 通过TTS + STT + GPT 实现语音对话(低仿微信聊天)

效果图什么是 STT 和 TTS&#xff1f;STT 是语音转文字&#xff08;Speech To Text&#xff09;TTS 是文字转语音&#xff08;Text To Speech&#xff09;为什么要使用 SST TTS 如果用户直接输入音频&#xff0c;OpenAI 的 API 中并没有直接使用语音和 GPT 进行对话的功能。所…

(C++)模板分离编译面对的问题

什么是分离编译模板的分离编译什么是分离编译 一个程序&#xff08;项目&#xff09;由若干个源文件共同实现&#xff0c;而每个源文件单独编译生成目标文件&#xff0c;最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。 模板的分离编译 假如有以下…

Java锁机制

Java锁机制1. 什么是锁JVM运行时内存结构2. 对象、对象头结构Mark Word中的字段3. synchronizedMonitor原理四种锁状态的由来4. 锁的4种状态4.1 无锁CAS&#xff08;Compare and Swap&#xff09;4.2 偏向锁实现原理4.3 轻量级锁如何判断线程和锁之间的绑定关系自旋4.4 重量级锁…

【计算机视觉·OpenCV】使用Haar+Cascade实现人脸检测

前言 人脸检测的目标是找出图像中所有的人脸对应的位置&#xff0c;算法的输出是人脸的外接矩形在图像中的坐标。使用 haar 特征和 cascade 检测器进行人脸检测是一种传统的方式&#xff0c;下面将给出利用 OpenCV 中的 haarcascade 进行人脸检测的代码。 程序流程 代码 impo…

摩兽Pesgo plus首发爆卖,全网关注度破亿!中国潮玩跨骑电自浪潮已至?

2023年4月11日&#xff0c;TROMOX摩兽圆满举办了“跨骑潮电&#xff0c;大有所玩”Pesgo plus新品发布会。发布会在抖音、天猫、视频号平台进行了同步直播并开启线上预定。发布会直播当晚&#xff0c;摩兽Pesgo plus即狂揽线上订单&#xff0c;全网各大平台相关话题累计热度已破…