WebGPU 纹理与纹理类型基础 (D3D对纹理的描述比较详细)

news2024/11/27 1:40:23

纹理与纹理类型,D3D 官方文档描述的比较详细: 

介绍  Direct3D 11 纹理

纹理资源是一个结构化的数据集合,用纹素的形式存储。纹素texel代表纹理的最小单位,可以被管线读写。与缓冲区不同,纹理可以在着色器中被纹理采样器过滤。纹理的类型影响纹理的过滤方式。每个纹素包含1到4个分量。

纹理被创建为具有已知大小的结构化资源。然而,当创建资源时,每个纹理可以是有类型的或无类型的,只要在纹理绑定到管线时使用指定类型的视图对纹理进行访问。

纹理类型

纹理有几种类型:1D, 2D, 3D,每种纹理都可以使用或不使用mipmaps创建。纹理还有纹理数组和多重采样纹理。

1D Textures

一维纹理是最简单的纹理形式,可以用一维空间坐标的形式访问,一维纹理是纹素的数组,如下图所示:

每个texel包含许多颜色分量,这取决于所存储数据的格式。 复杂一点的纹理形式,你可以创建带有细节等级的一维纹理:

细节等级是这样一种纹理,它的大小是上一级的二分之一(power of two), 最上层的细节等级包含最多的细节, 连续的等级越来越小。对一个具有细节等级的一维纹理来说,最小的细节等级层只包含一个纹素。如果纹理的大小是奇数, 那么下一个细节等级纹理的大小总是偶数,除了最后一级纹理(它的大小总是1)。

1D Texture Arrays

一维纹理数组,顾名思义,它是连续的一维纹理的数组形式,每个纹理都包括相应的细节等级。如下图所示, 每个纹理包含3层细节等级子纹理:

纹理数组中的纹理是同性质的,也就是格式,大小,细节等级都一样。

2D Textures and 2D Texture Arrays

一个Texture2D资源包含一个二维网格的纹素。每个纹素都可以通过u, v向量寻址。它可能包含mipmap级别和子资源。一个完整的2D纹理资源如下图所示:

这个纹理资源包含一个具有三个mipmap级别的3x5纹理。

二维纹理数组资源是二维纹理的同性质的数组;也就是说,每个纹理都有相同的数据格式和维度(包括mipmap级别)。它的布局与1D纹理数组相似,除了纹理现在包含2D数据,如下图所示:

Using a 2D Texture Array as a Texture Cube

立方体纹理是包含六个二维纹理的纹理数组, 每个纹理对应一个面, 立方体纹理看起来如下图: 

这个纹理数组当以纹理视图的形式绑定到管线上时,在着色器中被立方体纹理映射函数访问,在着色器中,使用由立方体纹理中心发出的三维向量寻址。

纹理立方体的数组,其中纹理的数量等于数组中纹理立方体的数量乘以6(每个立方体6个面)。

3D Textures

三维纹理资源是有三维体纹素组成的,因为它也是纹理资源,也有mipmap 层级(也就是一般纹理都有mipmap层级),体纹理由下图所示:

当三维纹理的 mipmap 切片 绑定到渲染目标时, 三维纹理等同于二维纹理数组的形式。 没有三维纹理数组的概 , 因此,一个三维纹理子资源是一个单一的 mipmap 级别。


这里也介绍下 subresource 的概念:

子资源是指资源的子集,buffer 被定义为单个子资源。纹理有点复杂,因为有几种不同的纹理类型(1D, 2D等),其中一些支持mipmap级别 和/或 纹理数组。我们从最简单的情况开始了解其定义,一维纹理被定义为单个子资源,如下图所示:

这意味着,由纹素数组组成的一维纹理包含在单个子资源中。如果我们将带有三个细节等级的一维纹理展开, 如下图所示:

可以将其视为由三个子资源组成的单个纹理。子资源可以使用单个纹理的细节级别(LOD)进行索引。当使用纹理数组时,访问特定的子资源需要LOD和特定的纹理。或者,API将这两条信息组合成一个从零开始的子资源索引,如下图所示。

也就是纹理可以包含一个或多个子资源,每个mipmap是一个子资源,纹理数组中的每一个纹理可以看成纹理数组的切片: 

数组切片

给定一个纹理数组,每个纹理都有mipmaps,一个数组切片(由白色矩形表示)包括一个纹理和它所有的子资源,如下图所示:

细节等级切片

一个mipmap切片(用白色矩形表示)包含一个mipmap级别,用于数组中的每个纹理,如下图所示:


WebGPU 纹理拷贝注意事项(稍微没注意就容易犯错):

当我们使用 图像拷贝函数 copyTextureToTexture 对纹理进行复制时,需要指定 source, destination ,coyeSize 三个参数。

dictionary GPUImageCopyTexture {
    required GPUTexture texture;
    GPUIntegerCoordinate mipLevel = 0;
    GPUOrigin3D origin = {};
    GPUTextureAspect aspect = "all";
};

origin:

Defines the origin of the copy - the minimum corner of the texture sub-region to copy to/from. Together with copySize, defines the full copy sub-region.

CopySize:

width,  the width of the extent.

height, the height of the extent,   defaulting to 1

depthOrArrayLayers, defaulting to 1

The depth of the extent or the number of array layers it contains. If used with a GPUTexture with a GPUTextureDimension of "3d" defines the depth of the texture. If used with a GPUTexture with a GPUTextureDimension of "2d" defines the number of array layers in the texture.

CopySize 一定要填正确, 它只的是拷贝大小, 尤其 depthOrArrayLayers, 即使指定了 origin 的 z 值, depthOrArryaLayers 也不能认为是 0,应该最小是 1, 它是一个拷贝 范围 , 就如 width, height 一样 ,这很容易弄错, 切记 ...

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

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

相关文章

中国电源管理芯片上市企业研发投入占比超10%,上海贝岭产品品类持续增加

近年来,中国电源管理芯片市场规模一直保持增长趋势,尽管中国电源管理芯片厂商起步较晚,但是在政策扶持背景下,集成电路国产产品对进口产品的替代效应明显,中国集成电路产品的品质和市场认可度日渐提升,部分…

而立之年——回顾我的渗透测试之路

为什么要转行 因为混得不好。 在成为渗透测试工程师之前,我干过很多工作。由于上学的时候天天打没戏摸鱼啥也不会,我的工作基本上都是体力活。包括但不限于:工厂普工、销售(没有干销售的才能)、搬运工、摆地摊等&…

JMeter性能测试系列一初识JMeter

1.JMeter介绍 Apache组织的Stefano Mazzocchi是JMeter项目的创始人。编写JMeter最初的目的是为了测试server的性能(后期被Tomcat替代)。随后,JMeter在Apache组织内部开始被其他项目所使用,并最终推广出来,成为独立的软件项目并不断更新&…

sa-token多端登陆实现,PC,APP登陆分别设置token过期时间

sa-token多端登陆实现,PC,APP登陆分别设置token过期时间 Sa-Token 介绍 Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。…

hive on spark亲自编译,详细教程

hive on spark 进行编译操作 软件 hive 2.3.6 spark 2.0.0版本 hadoop-2.7.6版本 操作流程: hadoop-2.7.6 1、安装hadoop不说了。简单。 spark-2.0.0 2、下载spark-2.0.0的源码. https://archive.apache.org/dist/spark/spark-2.1.0/ 这个下载spark各个版本…

Logback自定义DBAppender保存系统日志到数据库

在系统中采用了spring boot logback+slf4j的日志框架,将系统日志记录到数据库。 相关参考来源: 官方文档-DBAppender Logback输出日志到自定义MySQL数据库(重写DBAppender) logback日志框架中filter的使用 1. 添加依…

【新版】系统架构设计师 - 系统配置与性能评价

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 系统配置与性能评价考点摘要系统性能概述性能指标性能调整阿姆达尔解决方案性能评价方法 架构 - 系统配置与性能评价 考点摘要 性能指标(★★)阿姆达尔解决方案&#xff…

java SSM 教师管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM 教师管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和 数据库,系统主要采用B…

工业深度学习软件 从标注 训练 到测试 再到现场部署

工业深度学习软件 从标注 训练 到测试 再到现场部署 M7000技术规格表 Producer Specification 影像系统 Imaging Sys 适配相机 supported cameras 支持海康,迈德威视,度申2D相机(可根据需求增加适配其他厂家相机) Support for Hi…

22AP30 H.265 编解码处理器

22AP30 H.265 编解码处理器 主要特点 SVP(Smart Vision Processing)  图像分析工具推理引擎(NNIE) − 支持多种图像分析工具 − 1.2Tops运算性能 处理器内核  ARM Cortex A53 四核1.15GHz − 32KB L1 I-Cache,32KB…

小程序页面事件与wxs脚本

文章和代码已经归档至【Github仓库:https://github.com/timerring/front-end-tutorial 】或者公众号【AIShareLab】回复 小程序 也可获取。 文章目录 小程序视图与逻辑页面导航声明式导航编程式导航导航传参 页面事件下拉刷新事件上拉触底事件上拉触底案例 自定义编…

一级建造师执业资格考试--工程管理--速学36记--联想法

第一记:项目管理 第二记:项目管理的核心 第三记:项目总承包方的工作程序 第四记:项目质量控制体系建立 第五记:项目质量控制体系运行 第六记:施工过程质量验收不合格的处理方法 第七记:装配式混…

33:避免遮掩继承而来的名称

我们都知道在下面的代码中: int x;//global变量 void someFunc() {double x;//local变量cin >> x;//读一个新值赋予local变量x } 上述读取数据的语句指涉的是local变量x,而不是global变量x,因为内层作用域的名称会遮掩外围作用域的名…

提示词工程让儿童编程轻而易举

编写长长的代码时常令人头疼。尤其是小朋友,打字不快,但想象力丰富。 现在借助chatgpt。 一切变得超级简单。 1. https://github.com/roocell/gptCozmo 2. https://github.com/Bhood23/CozmoGPT while True:from pyChatGPT import ChatGPTimport speec…

1427205-93-3,Fmoc-Ser(Ac4Manα1-2Ac3Manα1-2Ac3Manα)-OH:一种糖基化蛋白

Fmoc-Ser(Ac4Manα1-2Ac3Manα1-2Ac3Manα)-OH,其CAS号为1427205-93-3,英文名为Fmoc-Ser(Ac4Manα1-2Ac3Manα1-2Ac3Manα)-OH。分子式为C56H67NO30,分子量为1234.13,纯度标准为95%。外形颜色为固体或粉末,包装规格有1…

重命名文件名 | 一键导出表格,让您的文件快速整理归档

您是否因为大量文件命名混乱、找文件困难而感到苦恼?现在有一个好消息,文件批量改名高手帮你解决!我们提供最简单、最快捷的方式来统一您的文件命名,无论是照片、文档或是音视频文件,只需一键即可完成重命名。而且我们…

华为OD机试真题 Java 实现【观看文艺汇演问题】【2023 B卷 100分】,附详细解题思路

一、题目描述 为庆祝中国共产党成立100周年,某公园将举行多场文艺汇演,很多演出都是同时进行。 一个人只能同时观看一场演出,且不能迟到早退。由于演出分散在不同的演出场地,所以连续观看的演出最少要有15分钟的时间间隔。 小明…

二、Drools WorkBench

一、WorkBench 简介 WorkBench 是 KIE 组件中的元素,也称为 KIE-WB,是 Drools-WB 与 JBPM-WB 的结合体。它是一个可视化的规则编辑器。WorkBench 其实就是一个 war 包,安装到 Tomcat 中就可以运行。使用 WorkBench 可以在浏览器中 创建数据对…

基于jsp+mysql+Spring+mybatis+Springboot的Springboot实现的就业信息管理平台

运行环境: 最好是java jdk 1.8,我在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以,如果编译器的版本太低,需要升级下编译器,不要弄太低的版本 tomcat服务器环…

教你如何使用自定义测试(Minium)进行微信小程序自动化测试

目录 前言: 一、 编写用例 基本操作 处理小程序API 处理小程序原生控件 数据驱动 二、 执行用例 本地执行 云测服务测试 三、 最佳实践 四、总结 前言: 微信小程序自动化测试是保障小程序质量的重要手段,Minium是一个可为微信小程…