1.3纹理介绍

纹理是什么?

纹理的概念

一种可供着色器读写的结构化存储形式

任何图片都可以作为纹理

(但纹理就是图片并不正确,因为纹理并不一定是图片,处理包含具体储存的信息以外,还会包含纹理采样的一些设置)

纹理为何重要?

因为纹理很划算

牺牲几何细节 = 建模工作量 ⬇⬇

                          存储空间 ⬇

                          读取速度 ⬆

纹理管线

纹理管线的工作流程

模型空间位置=>投影函数=>纹理映射=>纹理坐标=>通讯函数=>新纹理坐标=>纹理采样(避免依赖纹理读取)=>纹理值

投影函数:获取要渲染的位置,将它从模型空间投影到纹理坐标空间中,转化成纹理坐标,也就是UV坐标(这里的投影与摄像机投影是完全不同的,这里是纹理投影。投影函数通常在建模流程中俗称“展UV”的阶段使用,将投影的结构存储在顶点数据中,一般情况下我们是不会用到这个东西的)

纹理采样设置之wrap Mode(包装模式)

决定UV值在[0,1]以外的表现

OpenGL--“包装模式”(Wrapping Model)

Directx--“纹理寻址模式”(Texture Addressing Mode)

Wrap Mode包装模式

Repeat:重复

Mirror:在重复的同时加镜像或反转的效果(左右镜像,上下反转)

Clamp:超出范围坐标的颜色值在该设置下为图形的边缘

Border:使用一个定值给超出范围的部分进行填充

纹理采样设置之Filter Mode(过滤设置)

放大Magnification

Falter Mode滤波模式

【最近邻nearest neighbor】滤波

最近邻:取最临近的1个像素,
a)    由于多个像素可能取到同一个临近像素,会造成像素化
b)    省消耗

【Bilinear双线性】滤波

双线性插值:取最临近的4个像素

【Trilinear立方卷积】滤波

立方卷积:不仅取最临近的4个像素,还有它们的变化率

Quilez光滑曲线

光滑曲线插值:在纹理坐标输入双线性插值之前额外处理,2和3的折中

兰索思插值:8×8像素

纹理缩小导致的颜色丢失和闪烁情况

MipMap多级渐远纹理

Mipmap:金字塔,上一层是下一层4个像素的均值
a)    占用内存只增加三分之一
b)    过度模糊

MipMap:如何选择正确的Level

各向异性过滤Anisotropic Filtering

积分图 Summed-Area Table

unity/UE4对于异性过滤后纹理内存的问题

为什么在Unity/UE4上,开启各向异性过滤之后纹理内存不是3倍而仅仅是1/3而已呢?

优化与纹理应用

CPU渲染优化常见方式 — 纹理图集/数组

GPU渲染优化常见方式 — 纹理压缩

减少了资源在CPU中进行解压缩的过程

减小了包体大小,减少了数据量级,减轻了带宽计算的压力

内存的使用效率更高

Cubemap立方体贴图

使用三维纹理坐标对立方体映射进行采样

根据OPENGL

+x代表右,-x代表左

+y代表上,-y代表下

+z代表后,-z代表前

假设这个矢量是(-3.2,5.1,-8.4),那我们就用-z面,坐标(-3.2/8.4,5.1/8.4),再转化为[0,1]的范围,所以最后用来索引纹理的坐标就是((-3.2/8.4+1)/2,(5.1/8.4+1)/2)。

凹凸贴图 Bump Mapping

在不增加顶点的情况下

通过改变几何体表面各点的法线

使本来是平的东西看起来有凹凸的效果

整个过程我们并没有真正改变顶点的高度

而是定义了一个虚拟的高度

位移贴图 Displacement Mapping

凹凸贴图是模拟,虚假的移动

而位移贴图是真的把顶点作了位置的移动

作业

Filter Mode : 
1、最近邻:取最临近的像素
2、双线性插值:取2x2线性插值
3、立方卷积:取4x4,加变化率
4、光滑曲线:效果介于2、3之间

纹理优化方式和原理:
1、CPU优化:纹理图集、纹理数组,减少DrawCall
2、GPU优化:纹理压缩,降低带宽

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

只刷题可以通过PMP考试吗?

咱们都知道,PMBOK那本书,哎呀,读起来确实有点费劲。所以,有些人就想了,干脆我就刷题吧,题海战术,没准儿也能过。这话啊,听起来似乎有点道理,但咱们得好好琢磨琢磨。 刷题…

卷积常用网络

目录 1.AlexNet2.VGG3.GoogleNet4.ResNet5.MobileNet 1.AlexNet AlexNet是2012年ISLVRC 2012(ImageNet Large Scale Visual Recognition Challenge)竞赛的冠军网络。 首次利用 GPU 进行网络加速训练。使用了 ReLU 激活函数,而不是传统的 Si…

音视频开发—FFmpeg 音频重采样详解

音频重采样(audio resampling)是指改变音频信号的采样率的过程。采样率(sample rate)是指每秒钟采集的音频样本数,通常以赫兹(Hz)或每秒样本数(samples per second)表示。…

如何理解和使用 this 关键字

this 关键字是许多编程语言中的一个核心概念,在面向对象编程(OOP)中尤为重要。在JavaScript、Java、C、C#等语言中,this 扮演着至关重要的角色。理解 this 的意义和用法,对于编写清晰、有效的代码至关重要。 什么是th…

OrangePi Kunpeng Pro体验——安装Hass与驱动SPI小屏幕

OrangePi Kunpeng Pro 是一款面向开发者和爱好者的高性能开发板。在本次测评中,主要将以前的一些代码在该开发板上实现,包括docker部署hass,引脚驱动SPI小屏幕。中间遇到了一些小小问题,但都成功了,一起来试试吧~ 一、…

wifi贴码推广哪家靠谱?

如今越来越多的人想轻资产创业,WIFI贴码是共享行业最无成本的创业项目了,而在选择厂商的时候,大家就想要知道哪家公司靠谱,更好、更便宜、可靠。那么wifi贴码推广哪家靠谱?别急,下面小编将带你一起了解。 目…

LLM - 模型下载与 git-lfs 安装

目录 一.引言 二.安装 git lfs 1.使用 apt-get 安装 2.使用 Brew 安装 3.LFS 验证 三.总结 一.引言 在 HuggingFace 上下载模型时提供一个 git clone 的指令,执行后可以下载对应模型的模型文件: 但是本机还没有 git lfs 命令: git: lfs is not a git comman…

CPU对代码执行效率的优化,CPU的缓存、指令重排序

目录 一、CPU对代码执行效率的优化 1. 指令流水线(Instruction Pipelining) 2. 超标量架构(Superscalar Architecture) 3. 动态指令重排序(Dynamic Instruction Reordering) 4. 分支预测(…

文献解读-群体基因组第二期|《中国人群中PAX2新生突变的检测及表型分析:一项单中心研究》

关键词:应用遗传流行病学;群体测序;群体基因组;基因组变异检测; 文献简介 标题(英文):Detection of De Novo PAX2 Variants and Phenotypes in Chinese Population: A Single-Cente…

下一代 CI/CD:利用 Tekton 和 ArgoCD 实现云原生自动化

一、回顾目标 背景: ​ 部门业务上云,之前服务采用传统的部署方式,这种方式简单,但是不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响。随着互联网时代的到来&#xff…

【Chrono Engine学习总结】6-创建自定义场景-6.1-3D场景获取

由于Chrono的官方教程在一些细节方面解释的并不清楚,自己做了一些尝试,做学习总结。 Chrono可以导入自定义的三维模型,所以想自己搭建一个3D仿真环境。过程中遇到了一些问题,记录与整理。 1、3D环境的创建方法 Chrono的Irrlich…

2024年6月1日(星期六)骑行禹都甸

2024年6月1日 (星期六)骑行禹都甸(韭葱花),早8:30到9:00,昆明氧气厂门口集合,9:30准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:昆明氧气厂门口集合 ,…

视频监控业务平台LntonCVS运用国标协议对接视频汇聚管理综合平台应用方案

为了实现“以信息化推动应急管理能力现代化”的目标,应急管理部提出了加速现代信息技术与应急管理业务深度融合的计划。这一计划是国家加强和改进应急管理工作的关键举措,也是满足日益严峻的应急管理形势和人民群众不断增长的公共安全需求的紧迫需求。 为…

12个好用的视频自动加字幕工具

多个提供视频字幕生成及翻译服务的工具和平台,涵盖了从自动识别到翻译、配音等多种功能,适合不同需求的用户选择使用。 网易见外: 支持视频智能字幕功能,转换正确率高,转换后的字幕可以直接导入Pr和会声会影等主流剪辑工具&#…

【Axure教程】拖动换位选择器

拖动换位选择器通常用于从一个列表中选择项目并将其移动到另一个列表中。用户可以通过拖动选项来实现选择和移动。这种交互方式在许多Web应用程序中很常见,特别是在需要对项目分组的情况下。 所以今天作者就教大家怎么在Axure用中继器制作一个拖动换位选择器的原型…

【Linux】初识Linux和Linux环境配置

1.什么是Linux操作系统 说到电脑系统 我想有大多数人会脱口而出:windows、mac 是的,这也是如今市场上主流的两种操作系统。 但是对于IT相关的人士来说,还有一种系统也是必须有姓名 那就是Linux Linux,Linux Is Not UniX 的…

Java_认识String类

在 C 语言中已经涉及到字符串了,但是在 C 语言中要表示字符串只能使用字符数组或者字符指针, 可以使用标准库提 供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开 的方式不符合面相对象的思想,而字符串应用又…

VI 使用替换命令快速注释多行

使用替换命令快速注释多行: 按下 Esc 键确保你在普通模式下。输入 :起始行号,结束行号s/^/#/ 并按 Enter 键。 :起始行号 和 结束行号 分别是你要注释的起始行和结束行的行号。 关于正则 s/^/#/各个部分解释: s/: 这是vi编辑器中的替换命令的开头。s 表…

【Linux】centos7编写C语言程序,补充:使用yum安装软件包组

确保已安装gcc编译器 C语言程序,一般使用gcc进行编译,需确保已安装gcc。 若没有,可以使用yum安装gcc(版本4.8.5),也可以使用SCL源安装gcc(例如:版本9.3)。 安装gcc&am…