首页 > 其他分享 >纹理采样及应用

纹理采样及应用

时间:2022-10-19 11:34:08浏览次数:60  
标签:采样 贴图 uv 像素 应用 纹理 texel

【纹理采样】
三角面映射到在屏幕上每一个像素,都在纹理上采样一个texel。
核心方法:重心坐标。从obj文件可知三角面每个顶点在纹理上的uv值Va/Vb/Vc,三角面上任意点都可以表示成 αVa + βVb + γVc,而α/β/γ正是顶点对面三角形的面积比例(α+β+γ=1)。
具体步骤:
1.遍历三角面上所有像素;
2.找到它的三维坐标;
3.根据公式求出α/β/γ;
4.用αVa + βVb + γVc得到对应的uv值;
5.用texture.sample采样得到color。

【纹理抗锯齿】
当分辨率远大于贴图大小时(如4k分辨率贴256*256的纹理),常规的采样会导致不同颜色的像素间边缘过于明显。
核心方法:双线性插值。取该像素对应uv周围的几个texel,u和v维度各做一次线性插值,得到平滑过渡的color。

【纹理走样/摩尔纹】
当分辨率远小于贴图大小时(如交叉延伸至远处的线),常规的采样会导致摩尔纹。
原因:一个像素覆盖多个texel,仅用一个中心texel代表这个像素便会走样;而如果用多重采样虽然能解决走样问题,但是计算量过大,不适合用于实时渲染。
核心方法:范围查询(Mipmap/各向异性过滤/EWA过滤),先生成各种不同精度的过渡色纹理存起来,采样的时候直接查询。
Mipmap步骤:
1.根据原纹理生成logN张纹理图,每张精度为上一张的1/4(如128*128的问题,则额外生成64*64、32*32、16*16、4*4、2*2、1共7张纹理,只会额外多出1/3的存储空间);
2.根据目标像素点及邻近像素点uv,估算出这个像素点大概在纹理上占据的矩形范围;
3.根据矩形的size直接查询对应精度的纹理。

【纹理的用途】
纹理实际就是一串连续的数据,可以用uv两个维度获取数据的值;
1.在光照模型中赋予像素color值(如phong模型的kd值);
2.镜面反射/光照贴图:把周围环境物放到球面上作为贴图,可模拟镜面材质看到环境物体的效果
3.凹凸贴图:通过改变法线造成明暗差,让人看起来像有凹凸感,但在边缘会露馅,且缺乏自遮挡时应该有的阴影;
4.位移贴图:改变顶点的位置,比凹凸贴图效果真实,但需要模型面足够精细;
5.三维贴图:三维纹理,医学扫描骨骼信息等;
6.阴影贴图:一些自遮挡的阴影(如眼轮廓、皱纹)。

标签:采样,贴图,uv,像素,应用,纹理,texel
From: https://www.cnblogs.com/alphaGo/p/16805654.html

相关文章

  • 音视频开发进阶——YUV与RGB的采样与存储格式
    在上一篇文章中,我们带大家了解了视频、图像、像素和色彩之间的关系,还初步认识了两种常用的色彩空间,分别是大家比较熟悉的RGB,以及更受视频领域青睐的YUV。今天,我们将继续深......
  • CPU host-passthrough技术与应用
    为了保证虚拟机在不同宿主机之间迁移的时候的兼容性,Libvirt对CPU提炼出标准的几种类型,在/usr/share/libvirt/cpu_map.xml中可以查到。cpu_map.xml不仅是CPU型号,还有生产商......
  • 【高等数学基础进阶】微分中值定理及导数应用
    一、微分中值定理定理1(费马引理):如果函数$f(x)$在$x_{0}$处可导,且在$x_{0}$处取得极值,那么$f'(x_{0})=0$ 定理2(罗尔定理):若$f(x)$在$[a,b]$上连续$f(x)$在$(a,b)$......
  • LProtector对你的.NET应用的程序进行加密
    LProtector对你的.NET应用的程序进行加密,防止反编译软件对你的软件进行破解,使用它可以有效地防止别人对你的软件进行反编译。它将不会被反汇编器或反编译器如IL DASM, .N......
  • 采样1
    #include<stdio.h>#include<math.h>#include<time.h>#include<stdlib.h>#defineN5intmain(){ intnumber; inti; srand(time(0)); for(i=0;i<N;++i){ number=......
  • .NET遗留应用改造
    浅议.NET遗留应用改造 浅议.NET遗留应用改造TLDR:本文介绍了遗留应用改造中的一些常见问题,并对改造所能开展的目标、原则、策略进行了概述。一、背景概述1、概述或......
  • EtherCAT转PROFINET应用与汇川GL10伺服器
    西门子S7-1200/1500系列的PLC,需要连接带EtherCAT的通讯功能的伺服驱动器等设备。西门子的PLC采用PROFINET实时以太网通讯协议,要连接EtherCAT的设备,就必须进行通讯协议转换......
  • Qt | QRectF的使用以及应用场景
    1简介官方文档QRectFQRectF中保存(x,y,width,height),常常用于记录图形项在局部坐标系中的位置以及图形项的宽高:QRectFrect=this->rect();2位置与宽高的设定与......
  • 04.大型数据库应用技术课堂测试05-日志数据分析-错误总结
    错误总结:1.ExpressionnotinGROUPBYkey'id'解决:在groupby子句中,select查询的列,要么需要是groupby中的列,要么得是用聚合函数(比如sum、count等)加工过的列。不......
  • 大型数据库应用技术课堂测试05
    题目:Result文件数据说明:Ip:106.39.41.166,(城市)Date:10/Nov/2016:00:01:02+0800,(日期)Day:10,(天数)Traffic:54,(流量)Type:video,(类型:视频video或文章article)Id:8701(视......