textrue坐标到uv的映射

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/leonwei/article/details/78317369

前两天被shader里面一个奇怪的bug困扰了一下,其实就是一个最简单的问题,我有一个rgbafloat的贴图,只能点采样,因为存储的不是颜色是数据不能线性插值,而这时候我已知当前点的texture坐标x y和贴图尺寸w h如何计算这个位置的uv供shader采样?

       我直接使用了x/(w-1),  y/(h-1),结果是有问题的,如果x的取值是【0, w-1】,把他除以w-1,变成了 【0,1】的uv范围难道不对么(实时上它只在w和h是pot的时候是对的,NPOT全都是有问题的),结果我查了半天bug发现这个映射关系是错的,正确的映射应该是(x+0.5)/w  , (y+0.5)/h。为什么?

      这里的原因还是很基础的在gpu上textrue的uv的分布。在gpu上textrue的uv分布是


看到它的左上角中心不是0,而是在左上角的边缘处!

而在cpu上我们通常认为texture的像素的xy分布是


它的左上角的0位于中心处!


所以你拿着一个算好的贴图的x,y的像素坐标,要找他的u,v要往后面多挪0.5的像素,最后除整个尺寸!不是x/(w-1)也不是x/w而是(x+ 0.5)/w,当然uv返回xy 就变成了 w*u -0.5.

展开阅读全文

dx12如何传递uv坐标

05-21

假设一个box有8个顶点,12个三角形。rn如果使用index来渲染的话,如何构建vertex资源呢?rn顶点只有8个,但是uv面有12个,怎么办呢?rnrn数据如下:rnrnVertices Count="8"> -44.500526 0.000000 -32.448845 44.500526 0.000000 -32.448845 -44.500526 0.000000 32.448845 44.500526 0.000000 32.448845 -44.500526 35.663357 -32.448845 44.500526 35.663357 -32.448845 -44.500526 35.663357 32.448845 44.500526 35.663357 32.448845 rnrn 0.000000 -1.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 1.000000 0.000000 0.000000 1.000000 0.000000 0.000000 1.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 -1.000000 1.000000 0.000000 0.000000 1.000000 0.000000 0.000000 1.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 1.000000 0.000000 0.000000 1.000000 0.000000 0.000000 1.000000 -1.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 rnrnrn-rnrn 0 3 2 3 0 1 4 7 5 7 4 6 0 5 1 5 0 4 1 7 3 7 1 5 3 6 2 6 3 7 2 4 0 4 2 6 rnrn 0 2 1 2 0 3 4 6 5 6 4 7 8 10 9 10 8 11 12 14 13 14 12 15 16 18 17 18 16 19 20 22 21 22 20 23 rnrn 1 1 0 0 4 4 3 3 5 5 2 2 rnrn 2 2 4 4 8 8 16 16 32 32 64 64 rnrn 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 rnrnrnrnrn-rnrnrn-rnrn 0.617626 0.790554 0.000000 0.989379 0.790554 0.000000 0.617626 0.994844 0.000000 0.989379 0.994844 0.000000 0.479802 0.006789 0.000000 0.989626 0.006789 0.000000 0.479803 0.211078 0.000000 0.989626 0.211078 0.000000 0.020000 0.020000 0.000000 0.455348 0.020000 0.000000 0.020000 0.455348 0.000000 0.455348 0.455348 0.000000 0.385141 0.996621 0.000000 0.013389 0.996621 0.000000 0.385141 0.792331 0.000000 0.013389 0.792331 0.000000 0.528876 0.760481 0.000000 0.019053 0.760481 0.000000 0.528876 0.556192 0.000000 0.019053 0.556192 0.000000 0.020000 0.455348 0.000000 0.455348 0.455348 0.000000 rnrn 9 10 11 10 9 8 8 21 9 21 8 20 4 7 5 7 4 6 0 3 1 3 0 2 16 19 17 19 16 18 12 15 13 15 12 14 论坛

没有更多推荐了,返回首页