研究纹理采样器在像素级别的采样位置

2024-09-06 23:38

本文主要是介绍研究纹理采样器在像素级别的采样位置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题

【纹理采样器】是一个基础的概念。假设有一个正方形面片,顶点的UV范围是0.0~1.0,那么在这个正方形面片上采样一张纹理时,会呈现出完整的纹理。

但我现在关注的问题是,在像素级别上,采样的位置是怎样的。具体来讲:对于UV值是(0.0,0.0)的点,它对应的采样位置是纹理最左上角像素的中心?还是纹理最左上角像素的左上角?即,下面左右哪个是正确的情况?
在这里插入图片描述
在宏观上,尤其是像素较多的时候,二者看起来应该差异很小。但,存在一些对像素级别的差异较为敏感的场合,因此需要对这个问题进行明确。

问题的答案是:右者

下面我想通过实验来验证这个答案。不过,就算不做实验,其实也能推理出来左边的情况是有问题的。

实验

我选择在UE4里做实验

测试用方形面片

方形面片直接将Plane拖入场景,可以认为它的UV是范围是0.0~1.0
在这里插入图片描述

测试用纹理

一个4×4像素尺寸的棋盘格状贴图:
在这里插入图片描述
将其拖入UE4中。
在这里插入图片描述

测试用材质

在这里插入图片描述

结果

在这里插入图片描述
这验证了最初的问题里确实右者是答案。因为:假设是左者,那么(0.0,0.0)位置对应了纹理左上角像素的中心,那么它一定是最黑的位置,但显然结果上(0.0,0.0)位置不是最黑的,(0.125,0.125)才是最黑的。

另一个更有说服力的结果

改变贴图的采样方式为Nearest(临近采样)
在这里插入图片描述
然后查看渲染结果:
在这里插入图片描述
假设一开始的问题是左者,那么第一个黑与白的分界线的位置应该是1/6处,但这里是1/4,显然一开始问题答案是右者

不需要实验的推理

首先,从上一部分的【另一个更有说服力的结果】也可以看到,假设采样的方式是按照左者进行,那么最终采样出的结果,势必和原图有较大差异,会是这样:
在这里插入图片描述
这将会一般性的认识相矛盾:在一般性的认识里,我用一个UV范围是0.0~1.0的面片进行采样,得到的结果一定是完整的纹理,而不是看起来“少了一圈”。


不过在我看来,最重要的是:如果使用左者进行采样,那么会使Tilling(重复平铺)出问题。

设想在左者采样方式下:
一个U方向上0.001(趋近于0.0稍微比0.0大)的位置,采样时的值将趋近于最左边像素的值;而一个0.999(趋近于1.0稍微比1.0小)的位置,采样时的值将趋近于最右边像素的值。然而0.0010.999在空间上是趋近的,因此在最左边像素不等于最右边像素时,势必会有颜色的跳变出现。而如果强制最左边像素等于最右边像素,那也意味着资源上的浪费。

而在右者采样方式下:
0.001采样时的值将趋近于最左边像素最右边像素的均值,而0.999也一样。

需要关注此问题的情况

正如开头提到,这个问题在大多数情况下不需要关注。

目前我意识到的需要关注这个问题的情况是:需要将顶点与实际纹理中像素对应起来的时候。
例如,对于n个依次排列的顶点,希望其对应纹理上依次排列的n个像素。那么对于X方向(或者说贴图上的U方向),第0个顶点不是0.0,最后一个顶点也不是1.0。而是比0.0~1.0的这个范围“缩小”一圈。即,第x01-n)个顶点的U值是:
U = x + 0.5 n U=\frac{x+0.5}{n} U=nx+0.5

这篇关于研究纹理采样器在像素级别的采样位置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143445

相关文章

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

Linux Centos 迁移Mysql 数据位置

转自:http://www.tuicool.com/articles/zmqIn2 由于业务量增加导致安装在系统盘(20G)磁盘空间被占满了, 现在进行数据库的迁移. Mysql 是通过 yum 安装的. Centos6.5Mysql5.1 yum 安装的 mysql 服务 查看 mysql 的安装路径 执行查询 SQL show variables like

生信圆桌x生信分析平台:助力生物信息学研究的综合工具

介绍 少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 生物信息学的迅速发展催生了众多生信分析平台,这些平台通过集成各种生物信息学工具和算法,极大地简化了数据处理和分析流程,使研究人员能够更高效地从海量生物数据中提取有价值的信息。这些平台通常具备友好的用户界面和强大的计算能力,支持不同类型的生物数据分析,如基因组、转录组、蛋白质组等。

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不

研究人员在RSA大会上演示利用恶意JPEG图片入侵企业内网

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows服务器的新方法。  攻击流程及漏洞分析 最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上,该Marcus现场展示了攻击流程,

PDFQFZ高效定制:印章位置、大小随心所欲

前言 在科技编织的快节奏时代,我们不仅追求速度,更追求质量,让每一分努力都转化为生活的甜蜜果实——正是在这样的背景下,一款名为PDFQFZ-PDF的实用软件应运而生,它以其独特的功能和高效的处理能力,在PDF文档处理领域脱颖而出。 它的开发,源自于对现代办公效率提升的迫切需求。在数字化办公日益普及的今天,PDF作为一种跨平台、不易被篡改的文档格式,被广泛应用于合同签署、报告提交、证书打印等各个

Science Robotics 首尔国立大学研究团队推出BBEX外骨骼,实现多维力量支持!

重复性举起物体可能会对脊柱和背部肌肉造成损伤,由此引发的腰椎损伤是工业环境等工作场所中一个普遍且令人关注的问题。为了减轻这类伤害,有研究人员已经研发出在举起任务中为工人提供辅助的背部支撑装置。然而,现有的这类装置通常无法在非对称性的举重过程中提供多维度的力量支持。此外,针对整个人体脊柱的设备安全性验证也一直是一个缺失的环节。 据探索前沿科技边界,传递前沿科技成果的X-robot投稿,来自首尔国立

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i

opengl纹理操作

我们在前一课中,学习了简单的像素操作,这意味着我们可以使用各种各样的BMP文件来丰富程序的显示效果,于是我们的OpenGL图形程序也不再像以前总是只显示几个多边形那样单调了。——但是这还不够。虽然我们可以将像素数据按照矩形进行缩小和放大,但是还不足以满足我们的要求。例如要将一幅世界地图绘制到一个球体表面,只使用glPixelZoom这样的函数来进行缩放显然是不够的。OpenGL纹理映射功能支持将