texture_texturepacker - CSDN
  • Texture 是什么?

    千次阅读 2017-05-21 09:55:55
    OpenGL 时代的 Texture 是一种名词 从应用开发者来看,texture 是一个名词,在物理上指的是 GPU 显存中一段连续的空间。 这张图是一款 N 卡,最中间的是核心部分 GPU - GP104,texture 的物理位置就在 GPU 周围的...

    OpenGL 时代的 Texture 是一种名词

    从应用开发者来看,texture 是一个名词,在物理上指的是 GPU 显存中一段连续的空间。

    这张图是一款 N 卡,最中间的是核心部分 GPU - GP104,texture 的物理位置就在 GPU 周围的 1-2-3-4-5-6-7-8 个显存颗粒里,这个 GPU 配着 8G 显存。

    作为名词,texture 有着一些属性,比如宽度、高度、色彩通道数量,这部分属性和图片的属性相同的。

    作为名词,texture 还有一些特殊的属性,比如 mipmap。当我们创建一张 texture 的时候,我们创建的通常是一组大小不一致的 texture。

    这感觉就好像星巴克。

    通常意义上 texture 是一个对 GPU 只读的资源,想写 texture 需要在它之上创建一个 fbo,这在逻辑上其实说不通。

    D3D10+ 时代的 Texture 是另一种名词

    D3D10 中引入了 view 的概念,和 texture 相关的 view 有

    • 只读的 view,SRV
    • 可写的 view,RTV

    这个创新点就很赞了,texture 本身变成了一个读写权限无关的资源,你既可以去读它,也可以去写它。

    texture 依然是名词,SRV 和 RTV 是副词。View 这个名字取得很好——观点。创建了资源之后需要告诉 GPU 怎么去访问这个资源。

    名词和副词,细细体会。

    这里提出第一个令人困惑的观点,D3D10 的 SRV 其实是 opengl 里的 texture。既然 SRV 是副词,那么 texture 也应该是副词?

    Vulkan 里的 Texture 是什么?

    Vulkan 的函数里并没有 Texture 这个词,取而代之的是 Image 和 ImageView。
    Vulkan 的编程模型里所有资源分为两种,Buffer 和 Image。

    Image 是 D3D10 中的 Texture,但是逻辑上更贴近 GPU 的实现,以后有空再说。光有 Image 是不行的,和 D3D10 一样,需要 View,不过这里没有区分 SRV 和 RTV。针对 Image 的所有的 View,都叫做 ImageView。

    Vulkan 里的编程模型里,已经没有 Texture 这个名词。OpenGL 时代的 Texture 和 FBO,现在变成了 Image 和 ImageView。

    在 GPU 内部 Texture 既是名词也是动词

    这张图是 N 卡内部运行 shader 的核心单元——streaming multiprocessor (SM),每个 SM 内部有固定的子单元,就叫做 Tex。

    怕你们不信,再看下 A 卡内部执行 shader 的单元 —— compute unit (CU),它也有固定单元执行类似指令。

    所以对 GPU 而言 Texture 是名词,是实实在在的硬件单元。

    但是我要提出第二个令人困惑的观点,Texture 还是动词,当 SM / CU 运行的 shader 中需要读写显存中的资源时,读操作也叫做 TEX。

    Texture 到底是什么?

    它是名词、副词,也是动词,正确答案取决于上下文,以及是谁在问你。

    转载请保留作者名、注明源自微信公众号“黑客与画家”(HackerAndPainter),关注 AI Computing / Visual Computing。


    展开全文
  • 本文是自己学习texture过程中进行总结的相关知识,方便后期浏览查阅。如有遗漏、不足、错误之处欢迎大家批评指出。 节点 note If you’re used to working with views, you already know how to use、 nodes. Most ...

    本文是自己学习texture过程中进行总结的相关知识,方便后期浏览查阅。如有遗漏、不足、错误之处欢迎大家批评指出。

    节点 note

    If you’re used to working with views, you already know how to use、 nodes. Most methods have a node equivalent and most UIView and CALayer properties are available as well. In any case where there is a naming discrepancy (such as .clipsToBounds vs .masksToBounds), nodes will default to the UIView name. The only exception is that nodes use position instead of center.

    这是官方文档关于节点的原文。大体意思是:如果我们能够熟练的使用视图的话呢么也同样的能够熟练的使用note。但又有些许不同,如UIViewCALayer在存在命名差异的时候默认的使用UIView的属性名称,例如:.clipsToBounds vs .masksToBounds;其次是节点使用的是位置而不是中心。

    节点容器node Containers

    说白了就像是杯子装水一样。杯子就是个node Containers(节点容器),而水对应的就是note(节点)。node Containers中的所有note的布局、数据获取、解码、渲染都将异步完成。这也是为什么推荐使用node Containers装在note的原因,此处需要注意一下note虽然可以直接添加在视图层级结构中(如添加在UIView上而不是添加在node Containers),但当页面刷新频繁时几乎可以保证note会出现渲染时闪烁的效果,类似我们刷新tableView会出现的效果。下面是常用的节点容器。

    texture节点容器 UIKit等效
    ASCollectionNode 取代UIKit的 UICollectionView
    ASPagerNode 取代UIKit的 UIPageViewController
    ASTableNode 取代UIKit的 UITableView
    ASViewController 取代UIKit的 UIViewController
    ASNavigationController 取代UIKit的UINavigationController
    ASTabBarController 取代UIKit的UITabBarController

    其中 ASNavigationController、ASTabBarController 使用的是ASVisibility协议。

    布局引擎Layout Engine

    texture的布局引擎是其最强大的功能之一,也是最独特的功能之一。是基于CSS FlexBox模型建造的。通过ASLayoutSpec对每个节点进行异步测量和布局。

    官方文档给出的相关资源:

    影片

    使用Texture构建流畅且响应灵敏的UI [CocoaHeadsNL 2017]

    AsyncDisplayKit 2.0:定义第7个抽象层 [Pinterest HQ 2016]

    使用AsyncDisplayKit 2.0进行规模布局 [NSMeetup 2016]

    ASCollectionNode [Pinterest HQ 2016]

    AsyncDisplayKit代码状态 [WWDC 2016]

    AsyncDisplayKit 2.0:智能用户界面 [NSSpain 2015]

    使用AsyncDisplayKit轻松响应 [MCE 2015]

    异步UI [NSLondon 2014]

    教程/文章

    使用AsyncDisplayKit在iOS中开发响应式UI [Ziad Tamim,12.29.2016]

    AsyncDisplayKit 2.0教程:自动布局 [Luke Parham,12.19.2016]

    AsyncDisplayKit 2.0教程:入门 [Luke Parham,12.5.2016]

    用于iOS的iOS平滑滚动:我们如何(以及为什么)实施AsyncDisplayKit [Andy Yates,11.4.2016]

    布局资源

    Texture强大的布局系统基于CSS FlexBox模型。这些站点对于学习该系统的基础知识非常有用。

    ASStackLayout游戏

    CSS3 Flexbox的可视指南

    FlexBox模式


    未完待续

    官方文档地址

    展开全文
  • [Texture]详解Texture2D

    万次阅读 2017-06-27 11:54:01
    详解Unity中的Texture2D,实现绘制贴图的功能

    什么是Texture2D


    如上图,Texture2D是一张二维图片
    是由一颗一颗像素组成的。
    通常是由低到高,由左到右排列的。
    如果想要通过代码操作像素,我们必须要知道像素的坐标位置,现在我们来验证下是否真的如此排列。

    我们通过简短的代码,NEW一个图片,并且根据X,Y轴对应R,G通道,逐像素赋值。我们将得到一张红绿渐变图,如下。

    根据图片的颜色渐变过程,我们可以确信,像素排列顺序是和我们预测的一样。

    TextureFormat是什么

    TextureFormat为贴图的类型,ARGB32位,代表有ARGB4个通道,每个通道的颜色有8位,对应的还有A8,RGB24等。任何图片从本质上就是这样的。
    而常见的JPG,PNG等是操作系统采用的压缩/非压缩读取格式,ETC/DDS为图形接口读取的压缩格式。

    赋值完后为什么要Apply

    因为在贴图更改像素时并不是直接对显存进行更改,而是在另外一个内存空间中更改,这时候GPU还会实时读取旧的贴图位置。
    当Apply后,CPU会告诉GPU你要换个地方读贴图了。

    所有的图片的像素排列顺序都一样吗?

    事实上OpenGL和DX在UV方向和取值上是不同的,在此我们应该感谢Unity3D为我们做的那些事,让一切变得简单。

    制作一个简单的笔刷

    最终效果


    实现轮廓


    我们对上面的代码稍作修改。
    我们在第一个红线引入一张贴图,第二个红线,将像素乘以这张贴图对应位置的alpha通道。
    在色阶上每个通道是8位,0-255,但在计算时为浮点数。0~1。
    所以如果alpha为0,任何颜色乘以他,结果都为0。
    通过以上代码,我们实现如下效果:

    这张贴图是张Alpha通道为0和1的通道,1为有颜色,0自然就没有颜色。也可以通过0-1之间的值实现渐变。
    同样的,因为只用到一个通道,我们可以将它压缩为一张Alpha8的单通道8位贴图,来节省空间。

    实现纹理


    我们再次对上述代码进行更改,同样引入一张贴图来做纹理。
    这次我们进行颜色相乘,因为颜色为浮点值,所以他们乘后的结果不会大于1,也不会小于0。
    而重载运算符,在*的过程中,帮我们把RGBA通道一一对应的运算。
    这里我们用到了相乘,很多人在用图像软件时,会遇到,相乘,相加,相除,相减等词汇。
    一开始会很纳闷,为什么要这样命名。现在我们知道了,他们是在像素之间的数学运算关系。

    通过以上简短的代码,我们就实现了一个比较复杂且完整的功能。
    展开全文
  • texture

    2013-08-21 16:05:14
    OK下面我们将材质绑定在刚刚创建的Simple Texture身上。如下图所示,Transform中是名对象的变换。 P:X、Y、Z坐标 R:X、Y、Z轴的旋转 S :X可理解为图片宽,Y理解为图片高

    OK下面我们将材质绑定在刚刚创建的Simple Texture身上。如下图所示,Transform中是名对象的变换。

    P:X、Y、Z坐标

    R:X、Y、Z轴的旋转

    S :X可理解为图片宽,Y理解为图片高

    展开全文
  • 纹理 Texture

    2018-08-18 16:35:49
    [Toc] 1. 纹理的理论 纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节;可以想象纹理是一张绘有砖块的纸,无缝折叠贴合到你的3D的房子上,这样你的房子看起来就像有砖墙外表了。...
  • Texture

    千次阅读 2012-09-06 11:13:57
    如果你创建了一个 Image 对象,那你必须为其传入一个 Texture 对象作为外观。这两者的关 系就像原生Flash中Bitmap和BitmapData的关系【PS:嗯……有基情】。下面来看看Texture 对象提供的 API: * base : 该...
  • ///////////////////一些Texture的设置Unity2019.4新特性//////////////////////////// HDR Textures When importing from an EXR orHDRfile containingHDRinformation, theTexture Importerautomatically chooses...
  • 纹理映射(Texture Mapping)

    万次阅读 2019-05-17 10:27:59
    纹理映射技术,是一种将图形绘制(映射)到表面的技术,可以显著地增加所绘制场景的细节和真实感。 如: 纹理坐标 纹理实际上是一个二维数组,它的元素是一些颜色值。单个的颜色值被称为纹理元素或纹理像素。...
  • OpenGL Texture 纹理

    千次阅读 2017-05-18 01:10:53
    Texture 纹理纹理是一个2D图片(也可以是一个1D和3D的纹理) 效果如下(https://github.com/curtain521517/learnOpenGL)为了能够映射到三角形上,需要三角形的每个顶点对应各自的**纹理坐标(**Texture Coordinate...
  • 论文笔记-Person Re-identification Past, Present and Future

    万次阅读 多人点赞 2016-12-19 16:18:53
    2016_Person Re-identification Past, Present and Future re-ID变得越来越important。早期,主要是有关hand-crafted算法与小规模的evaluation的文章。近些年,large-scale datasets 与 deep learning系统兴起。...
  • Unity Texture Texture2D RenderTexture

    万次阅读 2020-04-21 23:09:54
    http://fargesportfolio.com/unity-texture-texture2d-rendertexture/ (1) Texture 基于GPU ...(3)Texture2D基于CPU Texture2D.Apply将CPU数据传递给GPU /// Pass a GPU RenderTexture to CPU...
  • Unity 之 TextureTexture2D部分使用相关

    千次阅读 2019-03-05 21:24:11
    Unity 之 TextureTexture2D 分享几个实用的方法,,, Unity Texture转换成Texture2D: 使用Texture2D 的形式截图 将Texture保存到本地 将本地图片转换为Byte[]数组
  • 文章目录一、加载Texture2D显示图片二、案例三、内存分析四、如何释放内存1、错误示范2、正确示范 一、加载Texture2D显示图片 游戏项目中,我们经常需要通过网络加载图片,比如用户头像、背景图,也可能是加载本地的...
  • Unity中TextureTexture2D格式互相转换

    千次阅读 2019-01-07 20:14:15
    在网络小游戏中有时候会有这样的需求的就是TextureTexture2D类型的转换,例如:本地选择头像更换,背包图片的更新等.当然这方法只适用于小量级的小需求,大的需求会使用专门的处理类完成处理. 小游戏一般会使用更省...
  • Unity TextureTexture2D

    千次阅读 2019-09-12 17:56:07
    图片的动态转换 分为两种模式: 编辑器时,可以直接as后,然后保存; 运行时,需要拿RenderTexture来进行一次像素的转化 (编辑器模式下 ) /// 编辑器模式下Texture转换成... Texture2D texture2d = texture as...
  • 再一次感叹国内网上资料是真的匮乏,很多概念在网上都找不到相关的中文解释,就比如说Unity中的Texture2DArray网上只有一些所谓的使用方法,却没有人解释它到底是个什么东西,原理是什么,为什么要用它。在知乎看到...
  • HALCON: texture_laws用法解析 纹理分析是图像处理中的一种典型任务,texture_laws是Halcon中纹理分析的重要算子,其本质原理是利用不同的kernel与图像进行卷积运算,提取出图像的高频部分或低频部分。 纹理...
  • public static void textureToTexture2D (Texture texture, Texture2D texture2D) { if (texture == null) throw new ArgumentNullException ("texture"); if (te...
  • TextureTexture2D

    2019-07-02 15:46:27
    private Texture2D TextureToTexture2D(Texture texture) { Texture2D texture2D = new Texture2D(texture.width, texture.height, TextureFormat.RGBA32, false); RenderTexture curren...
  • 我们通过Three.js提供的VideoTexture来实现创建视频纹理。 案例实现 首先还是需要有一个video标签,我们将video放到左下角: <video id="video" autoplay controls...
1 2 3 4 5 ... 20
收藏数 78,575
精华内容 31,430
关键字:

texture